diff --git a/src/kosmickrisp/vulkan/kk_cmd_dispatch.c b/src/kosmickrisp/vulkan/kk_cmd_dispatch.c index 338766ef12d..640d4970a1d 100644 --- a/src/kosmickrisp/vulkan/kk_cmd_dispatch.c +++ b/src/kosmickrisp/vulkan/kk_cmd_dispatch.c @@ -60,6 +60,10 @@ VKAPI_ATTR void VKAPI_CALL kk_CmdDispatch(VkCommandBuffer commandBuffer, uint32_t groupCountX, 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, groupCountZ); } diff --git a/src/kosmickrisp/vulkan/kk_cmd_draw.c b/src/kosmickrisp/vulkan/kk_cmd_draw.c index f3c6e3c6e77..b66d992e8e7 100644 --- a/src/kosmickrisp/vulkan/kk_cmd_draw.c +++ b/src/kosmickrisp/vulkan/kk_cmd_draw.c @@ -849,6 +849,10 @@ VKAPI_ATTR void VKAPI_CALL kk_CmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount, 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); kk_flush_draw_state(cmd); @@ -891,6 +895,10 @@ kk_CmdDrawIndexed(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, 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); kk_flush_draw_state(cmd);