diff options
Diffstat (limited to 'layers/param_checker.cpp')
| -rw-r--r-- | layers/param_checker.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp index 4f0d3cc6..c94ce8f5 100644 --- a/layers/param_checker.cpp +++ b/layers/param_checker.cpp @@ -5209,6 +5209,28 @@ VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers( PostCmdBindVertexBuffers(commandBuffer, startBinding, bindingCount); } +bool PreCmdDraw( + VkCommandBuffer commandBuffer, + uint32_t vertexCount, + uint32_t instanceCount, + uint32_t firstVertex, + uint32_t firstInstance) +{ + if (vertexCount == 0) { + log_msg(mdd(commandBuffer), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCmdDraw parameter, uint32_t vertexCount, is 0"); + return false; + } + + if (instanceCount == 0) { + log_msg(mdd(commandBuffer), VK_DBG_REPORT_WARN_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", + "vkCmdDraw parameter, uint32_t instanceCount, is 0"); + return false; + } + + return true; +} + bool PostCmdDraw( VkCommandBuffer commandBuffer, uint32_t firstVertex, @@ -5231,6 +5253,8 @@ VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdDraw( uint32_t firstVertex, uint32_t firstInstance) { + PreCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance); + get_dispatch_table(pc_device_table_map, commandBuffer)->CmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance); PostCmdDraw(commandBuffer, firstVertex, vertexCount, firstInstance, instanceCount); |
