kk: Avoid Metal validation error due to empty calls
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run

Reviewed-by: Arcady Goldmints-Orlov <arcady@lunarg.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38174>
This commit is contained in:
Aitor Camacho 2025-10-31 08:58:21 +09:00 committed by Marge Bot
parent cc60a7a39d
commit e44a776f47
2 changed files with 12 additions and 0 deletions

View file

@ -60,6 +60,10 @@ VKAPI_ATTR void VKAPI_CALL
kk_CmdDispatch(VkCommandBuffer commandBuffer, uint32_t groupCountX, kk_CmdDispatch(VkCommandBuffer commandBuffer, uint32_t groupCountX,
uint32_t groupCountY, uint32_t groupCountZ) uint32_t groupCountY, uint32_t groupCountZ)
{ {
/* Metal validation dislikes empty disptaches */
if (groupCountX * groupCountY * groupCountZ == 0)
return;
kk_CmdDispatchBase(commandBuffer, 0, 0, 0, groupCountX, groupCountY, kk_CmdDispatchBase(commandBuffer, 0, 0, 0, groupCountX, groupCountY,
groupCountZ); groupCountZ);
} }

View file

@ -849,6 +849,10 @@ VKAPI_ATTR void VKAPI_CALL
kk_CmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount, kk_CmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount,
uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance) uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance)
{ {
/* Metal validation dislikes empty calls */
if (instanceCount == 0 || vertexCount == 0)
return;
VK_FROM_HANDLE(kk_cmd_buffer, cmd, commandBuffer); VK_FROM_HANDLE(kk_cmd_buffer, cmd, commandBuffer);
kk_flush_draw_state(cmd); kk_flush_draw_state(cmd);
@ -891,6 +895,10 @@ kk_CmdDrawIndexed(VkCommandBuffer commandBuffer, uint32_t indexCount,
uint32_t instanceCount, uint32_t firstIndex, uint32_t instanceCount, uint32_t firstIndex,
int32_t vertexOffset, uint32_t firstInstance) int32_t vertexOffset, uint32_t firstInstance)
{ {
/* Metal validation dislikes empty calls */
if (instanceCount == 0 || indexCount == 0)
return;
VK_FROM_HANDLE(kk_cmd_buffer, cmd, commandBuffer); VK_FROM_HANDLE(kk_cmd_buffer, cmd, commandBuffer);
kk_flush_draw_state(cmd); kk_flush_draw_state(cmd);