From ae652a469dcae827d1317a65b1f51aa3c6ba6f50 Mon Sep 17 00:00:00 2001 From: Michael Lentine Date: Tue, 24 Nov 2015 09:48:23 -0600 Subject: Update param checker. Verify that the app isn't making an empty draw. --- layers/param_checker.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'layers/param_checker.cpp') 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); -- cgit v1.2.3