diff options
| author | Chris Forbes <chrisforbes@google.com> | 2017-08-15 15:07:37 -0700 |
|---|---|---|
| committer | Chris Forbes <chrisf@ijw.co.nz> | 2017-08-16 10:39:46 -0700 |
| commit | 07df15f3f8e096d245f33211d2e7376b7a9c5f8c (patch) | |
| tree | 910715fcf7f6f86b4eaca6d93656cad702d20683 | |
| parent | 41ab73b6458cf91f47c564b589f1126e94fdceb2 (diff) | |
| download | usermoji-07df15f3f8e096d245f33211d2e7376b7a9c5f8c.tar.xz | |
layers: Check cb::static_status for most dynamic state setters
| -rw-r--r-- | layers/core_validation.cpp | 75 | ||||
| -rw-r--r-- | layers/vk_validation_error_database.txt | 8 |
2 files changed, 67 insertions, 16 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index c1310754..c210180f 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -5172,7 +5172,9 @@ VKAPI_ATTR void VKAPI_CALL CmdSetViewport(VkCommandBuffer commandBuffer, uint32_ if (pCB) { skip |= ValidateCmdQueueFlags(dev_data, pCB, "vkCmdSetViewport()", VK_QUEUE_GRAPHICS_BIT, VALIDATION_ERROR_1e002415); skip |= ValidateCmd(dev_data, pCB, CMD_SETVIEWPORTSTATE, "vkCmdSetViewport()"); - pCB->viewportMask |= ((1u << viewportCount) - 1u) << firstViewport; + if (!skip) { + pCB->viewportMask |= ((1u << viewportCount) - 1u) << firstViewport; + } } lock.unlock(); if (!skip) dev_data->dispatch_table.CmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports); @@ -5187,7 +5189,9 @@ VKAPI_ATTR void VKAPI_CALL CmdSetScissor(VkCommandBuffer commandBuffer, uint32_t if (pCB) { skip |= ValidateCmdQueueFlags(dev_data, pCB, "vkCmdSetScissor()", VK_QUEUE_GRAPHICS_BIT, VALIDATION_ERROR_1d802415); skip |= ValidateCmd(dev_data, pCB, CMD_SETSCISSORSTATE, "vkCmdSetScissor()"); - pCB->scissorMask |= ((1u << scissorCount) - 1u) << firstScissor; + if (!skip) { + pCB->scissorMask |= ((1u << scissorCount) - 1u) << firstScissor; + } } lock.unlock(); if (!skip) dev_data->dispatch_table.CmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors); @@ -5201,19 +5205,20 @@ VKAPI_ATTR void VKAPI_CALL CmdSetLineWidth(VkCommandBuffer commandBuffer, float if (pCB) { skip |= ValidateCmdQueueFlags(dev_data, pCB, "vkCmdSetLineWidth()", VK_QUEUE_GRAPHICS_BIT, VALIDATION_ERROR_1d602415); skip |= ValidateCmd(dev_data, pCB, CMD_SETLINEWIDTHSTATE, "vkCmdSetLineWidth()"); - pCB->status |= CBSTATUS_LINE_WIDTH_SET; - PIPELINE_STATE *pPipeTrav = pCB->lastBound[VK_PIPELINE_BIND_POINT_GRAPHICS].pipeline_state; - if (pPipeTrav != NULL && !isDynamic(pPipeTrav, VK_DYNAMIC_STATE_LINE_WIDTH)) { - skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_WARNING_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + if (pCB->static_status & CBSTATUS_LINE_WIDTH_SET) { + skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1d600626, "DS", "vkCmdSetLineWidth called but pipeline was created without VK_DYNAMIC_STATE_LINE_WIDTH " - "flag. This is undefined behavior and could be ignored. %s", + "flag. %s", validation_error_map[VALIDATION_ERROR_1d600626]); } else { skip |= verifyLineWidth(dev_data, DRAWSTATE_INVALID_SET, kVulkanObjectTypeCommandBuffer, HandleToUint64(commandBuffer), lineWidth); } + if (!skip) { + pCB->status |= CBSTATUS_LINE_WIDTH_SET; + } } lock.unlock(); if (!skip) dev_data->dispatch_table.CmdSetLineWidth(commandBuffer, lineWidth); @@ -5228,6 +5233,12 @@ VKAPI_ATTR void VKAPI_CALL CmdSetDepthBias(VkCommandBuffer commandBuffer, float if (pCB) { skip |= ValidateCmdQueueFlags(dev_data, pCB, "vkCmdSetDepthBias()", VK_QUEUE_GRAPHICS_BIT, VALIDATION_ERROR_1cc02415); skip |= ValidateCmd(dev_data, pCB, CMD_SETDEPTHBIASSTATE, "vkCmdSetDepthBias()"); + if (pCB->static_status & CBSTATUS_DEPTH_BIAS_SET) { + skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1cc0062a, "DS", + "vkCmdSetDepthBias(): pipeline was created without VK_DYNAMIC_STATE_DEPTH_BIAS flag. %s.", + validation_error_map[VALIDATION_ERROR_1cc0062a]); + } if ((depthBiasClamp != 0.0) && (!dev_data->enabled_features.depthBiasClamp)) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1cc0062c, "DS", @@ -5252,7 +5263,15 @@ VKAPI_ATTR void VKAPI_CALL CmdSetBlendConstants(VkCommandBuffer commandBuffer, c if (pCB) { skip |= ValidateCmdQueueFlags(dev_data, pCB, "vkCmdSetBlendConstants()", VK_QUEUE_GRAPHICS_BIT, VALIDATION_ERROR_1ca02415); skip |= ValidateCmd(dev_data, pCB, CMD_SETBLENDSTATE, "vkCmdSetBlendConstants()"); - pCB->status |= CBSTATUS_BLEND_CONSTANTS_SET; + if (pCB->static_status & CBSTATUS_BLEND_CONSTANTS_SET) { + skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1ca004c8, "DS", + "vkCmdSetBlendConstants(): pipeline was created without VK_DYNAMIC_STATE_BLEND_CONSTANTS flag. %s.", + validation_error_map[VALIDATION_ERROR_1ca004c8]); + } + if (!skip) { + pCB->status |= CBSTATUS_BLEND_CONSTANTS_SET; + } } lock.unlock(); if (!skip) dev_data->dispatch_table.CmdSetBlendConstants(commandBuffer, blendConstants); @@ -5266,7 +5285,15 @@ VKAPI_ATTR void VKAPI_CALL CmdSetDepthBounds(VkCommandBuffer commandBuffer, floa if (pCB) { skip |= ValidateCmdQueueFlags(dev_data, pCB, "vkCmdSetDepthBounds()", VK_QUEUE_GRAPHICS_BIT, VALIDATION_ERROR_1ce02415); skip |= ValidateCmd(dev_data, pCB, CMD_SETDEPTHBOUNDSSTATE, "vkCmdSetDepthBounds()"); - pCB->status |= CBSTATUS_DEPTH_BOUNDS_SET; + if (pCB->static_status & CBSTATUS_DEPTH_BOUNDS_SET) { + skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1ce004ae, "DS", + "vkCmdSetDepthBounds(): pipeline was created without VK_DYNAMIC_STATE_DEPTH_BOUNDS flag. %s.", + validation_error_map[VALIDATION_ERROR_1ce004ae]); + } + if (!skip) { + pCB->status |= CBSTATUS_DEPTH_BOUNDS_SET; + } } lock.unlock(); if (!skip) dev_data->dispatch_table.CmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds); @@ -5282,7 +5309,15 @@ VKAPI_ATTR void VKAPI_CALL CmdSetStencilCompareMask(VkCommandBuffer commandBuffe skip |= ValidateCmdQueueFlags(dev_data, pCB, "vkCmdSetStencilCompareMask()", VK_QUEUE_GRAPHICS_BIT, VALIDATION_ERROR_1da02415); skip |= ValidateCmd(dev_data, pCB, CMD_SETSTENCILREADMASKSTATE, "vkCmdSetStencilCompareMask()"); - pCB->status |= CBSTATUS_STENCIL_READ_MASK_SET; + if (pCB->static_status & CBSTATUS_STENCIL_READ_MASK_SET) { + skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1da004b4, "DS", + "vkCmdSetStencilCompareMask(): pipeline was created without VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK flag. %s.", + validation_error_map[VALIDATION_ERROR_1da004b4]); + } + if (!skip) { + pCB->status |= CBSTATUS_STENCIL_READ_MASK_SET; + } } lock.unlock(); if (!skip) dev_data->dispatch_table.CmdSetStencilCompareMask(commandBuffer, faceMask, compareMask); @@ -5297,7 +5332,15 @@ VKAPI_ATTR void VKAPI_CALL CmdSetStencilWriteMask(VkCommandBuffer commandBuffer, skip |= ValidateCmdQueueFlags(dev_data, pCB, "vkCmdSetStencilWriteMask()", VK_QUEUE_GRAPHICS_BIT, VALIDATION_ERROR_1de02415); skip |= ValidateCmd(dev_data, pCB, CMD_SETSTENCILWRITEMASKSTATE, "vkCmdSetStencilWriteMask()"); - pCB->status |= CBSTATUS_STENCIL_WRITE_MASK_SET; + if (pCB->static_status & CBSTATUS_STENCIL_WRITE_MASK_SET) { + skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1de004b6, "DS", + "vkCmdSetStencilWriteMask(): pipeline was created without VK_DYNAMIC_STATE_STENCIL_WRITE_MASK flag. %s.", + validation_error_map[VALIDATION_ERROR_1de004b6]); + } + if (!skip) { + pCB->status |= CBSTATUS_STENCIL_WRITE_MASK_SET; + } } lock.unlock(); if (!skip) dev_data->dispatch_table.CmdSetStencilWriteMask(commandBuffer, faceMask, writeMask); @@ -5312,7 +5355,15 @@ VKAPI_ATTR void VKAPI_CALL CmdSetStencilReference(VkCommandBuffer commandBuffer, skip |= ValidateCmdQueueFlags(dev_data, pCB, "vkCmdSetStencilReference()", VK_QUEUE_GRAPHICS_BIT, VALIDATION_ERROR_1dc02415); skip |= ValidateCmd(dev_data, pCB, CMD_SETSTENCILREFERENCESTATE, "vkCmdSetStencilReference()"); - pCB->status |= CBSTATUS_STENCIL_REFERENCE_SET; + if (pCB->static_status & CBSTATUS_STENCIL_REFERENCE_SET) { + skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + HandleToUint64(commandBuffer), __LINE__, VALIDATION_ERROR_1dc004b8, "DS", + "vkCmdSetStencilReference(): pipeline was created without VK_DYNAMIC_STATE_STENCIL_REFERENCE flag. %s.", + validation_error_map[VALIDATION_ERROR_1dc004b8]); + } + if (!skip) { + pCB->status |= CBSTATUS_STENCIL_REFERENCE_SET; + } } lock.unlock(); if (!skip) dev_data->dispatch_table.CmdSetStencilReference(commandBuffer, faceMask, reference); diff --git a/layers/vk_validation_error_database.txt b/layers/vk_validation_error_database.txt index faf68bfd..da7e8ccd 100644 --- a/layers/vk_validation_error_database.txt +++ b/layers/vk_validation_error_database.txt @@ -2244,16 +2244,16 @@ VALIDATION_ERROR_1c821001~^~Y~^~Unknown~^~vkCmdResolveImage~^~VUID-vkCmdResolveI VALIDATION_ERROR_1c82ac1b~^~Y~^~Unknown~^~vkCmdResolveImage~^~VUID-vkCmdResolveImage-regionCount-arraylength~^~core~^~The spec valid usage text states 'regionCount must be greater than 0' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdResolveImage-regionCount-arraylength)~^~implicit VALIDATION_ERROR_1c82ce01~^~Y~^~None~^~vkCmdResolveImage~^~VUID-vkCmdResolveImage-srcImage-parameter~^~core~^~The spec valid usage text states 'srcImage must be a valid VkImage handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdResolveImage-srcImage-parameter)~^~implicit VALIDATION_ERROR_1c82d001~^~Y~^~Unknown~^~vkCmdResolveImage~^~VUID-vkCmdResolveImage-srcImageLayout-parameter~^~core~^~The spec valid usage text states 'srcImageLayout must be a valid VkImageLayout value' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdResolveImage-srcImageLayout-parameter)~^~implicit -VALIDATION_ERROR_1ca004c8~^~N~^~Unknown~^~vkCmdSetBlendConstants~^~VUID-vkCmdSetBlendConstants-None-00612~^~core~^~The spec valid usage text states 'The currently bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetBlendConstants-None-00612)~^~ +VALIDATION_ERROR_1ca004c8~^~Y~^~Unknown~^~vkCmdSetBlendConstants~^~VUID-vkCmdSetBlendConstants-None-00612~^~core~^~The spec valid usage text states 'The currently bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetBlendConstants-None-00612)~^~ VALIDATION_ERROR_1ca02401~^~Y~^~None~^~vkCmdSetBlendConstants~^~VUID-vkCmdSetBlendConstants-commandBuffer-parameter~^~core~^~The spec valid usage text states 'commandBuffer must be a valid VkCommandBuffer handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetBlendConstants-commandBuffer-parameter)~^~implicit VALIDATION_ERROR_1ca02413~^~N~^~Unknown~^~vkCmdSetBlendConstants~^~VUID-vkCmdSetBlendConstants-commandBuffer-recording~^~core~^~The spec valid usage text states 'commandBuffer must be in the recording state' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetBlendConstants-commandBuffer-recording)~^~implicit VALIDATION_ERROR_1ca02415~^~Y~^~Unknown~^~vkCmdSetBlendConstants~^~VUID-vkCmdSetBlendConstants-commandBuffer-cmdpool~^~core~^~The spec valid usage text states 'The VkCommandPool that commandBuffer was allocated from must support graphics operations' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetBlendConstants-commandBuffer-cmdpool)~^~implicit -VALIDATION_ERROR_1cc0062a~^~N~^~Unknown~^~vkCmdSetDepthBias~^~VUID-vkCmdSetDepthBias-None-00789~^~core~^~The spec valid usage text states 'The currently bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetDepthBias-None-00789)~^~ +VALIDATION_ERROR_1cc0062a~^~Y~^~Unknown~^~vkCmdSetDepthBias~^~VUID-vkCmdSetDepthBias-None-00789~^~core~^~The spec valid usage text states 'The currently bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetDepthBias-None-00789)~^~ VALIDATION_ERROR_1cc0062c~^~Y~^~None~^~vkCmdSetDepthBias~^~VUID-vkCmdSetDepthBias-depthBiasClamp-00790~^~core~^~The spec valid usage text states 'If the depth bias clamping feature is not enabled, depthBiasClamp must be 0.0' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetDepthBias-depthBiasClamp-00790)~^~ VALIDATION_ERROR_1cc02401~^~Y~^~None~^~vkCmdSetDepthBias~^~VUID-vkCmdSetDepthBias-commandBuffer-parameter~^~core~^~The spec valid usage text states 'commandBuffer must be a valid VkCommandBuffer handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetDepthBias-commandBuffer-parameter)~^~implicit VALIDATION_ERROR_1cc02413~^~N~^~Unknown~^~vkCmdSetDepthBias~^~VUID-vkCmdSetDepthBias-commandBuffer-recording~^~core~^~The spec valid usage text states 'commandBuffer must be in the recording state' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetDepthBias-commandBuffer-recording)~^~implicit VALIDATION_ERROR_1cc02415~^~Y~^~Unknown~^~vkCmdSetDepthBias~^~VUID-vkCmdSetDepthBias-commandBuffer-cmdpool~^~core~^~The spec valid usage text states 'The VkCommandPool that commandBuffer was allocated from must support graphics operations' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetDepthBias-commandBuffer-cmdpool)~^~implicit -VALIDATION_ERROR_1ce004ae~^~N~^~Unknown~^~vkCmdSetDepthBounds~^~VUID-vkCmdSetDepthBounds-None-00599~^~core~^~The spec valid usage text states 'The currently bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetDepthBounds-None-00599)~^~ +VALIDATION_ERROR_1ce004ae~^~Y~^~Unknown~^~vkCmdSetDepthBounds~^~VUID-vkCmdSetDepthBounds-None-00599~^~core~^~The spec valid usage text states 'The currently bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetDepthBounds-None-00599)~^~ VALIDATION_ERROR_1ce004b0~^~N~^~Unknown~^~vkCmdSetDepthBounds~^~VUID-vkCmdSetDepthBounds-minDepthBounds-00600~^~!(VK_EXT_depth_range_unrestricted)~^~The spec valid usage text states 'minDepthBounds must be between 0.0 and 1.0, inclusive' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetDepthBounds-minDepthBounds-00600)~^~ VALIDATION_ERROR_1ce004b2~^~N~^~Unknown~^~vkCmdSetDepthBounds~^~VUID-vkCmdSetDepthBounds-maxDepthBounds-00601~^~!(VK_EXT_depth_range_unrestricted)~^~The spec valid usage text states 'maxDepthBounds must be between 0.0 and 1.0, inclusive' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetDepthBounds-maxDepthBounds-00601)~^~ VALIDATION_ERROR_1ce02401~^~Y~^~None~^~vkCmdSetDepthBounds~^~VUID-vkCmdSetDepthBounds-commandBuffer-parameter~^~core~^~The spec valid usage text states 'commandBuffer must be a valid VkCommandBuffer handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetDepthBounds-commandBuffer-parameter)~^~implicit @@ -2308,7 +2308,7 @@ VALIDATION_ERROR_1d802413~^~N~^~Unknown~^~vkCmdSetScissor~^~VUID-vkCmdSetScissor VALIDATION_ERROR_1d802415~^~Y~^~Unknown~^~vkCmdSetScissor~^~VUID-vkCmdSetScissor-commandBuffer-cmdpool~^~core~^~The spec valid usage text states 'The VkCommandPool that commandBuffer was allocated from must support graphics operations' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetScissor-commandBuffer-cmdpool)~^~implicit VALIDATION_ERROR_1d822601~^~Y~^~Unknown~^~vkCmdSetScissor~^~VUID-vkCmdSetScissor-pScissors-parameter~^~core~^~The spec valid usage text states 'pScissors must be a pointer to an array of scissorCount VkRect2D structures' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetScissor-pScissors-parameter)~^~implicit VALIDATION_ERROR_1d82b61b~^~Y~^~Unknown~^~vkCmdSetScissor~^~VUID-vkCmdSetScissor-scissorCount-arraylength~^~core~^~The spec valid usage text states 'scissorCount must be greater than 0' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetScissor-scissorCount-arraylength)~^~implicit -VALIDATION_ERROR_1da004b4~^~N~^~Unknown~^~vkCmdSetStencilCompareMask~^~VUID-vkCmdSetStencilCompareMask-None-00602~^~core~^~The spec valid usage text states 'The currently bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetStencilCompareMask-None-00602)~^~ +VALIDATION_ERROR_1da004b4~^~Y~^~Unknown~^~vkCmdSetStencilCompareMask~^~VUID-vkCmdSetStencilCompareMask-None-00602~^~core~^~The spec valid usage text states 'The currently bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetStencilCompareMask-None-00602)~^~ VALIDATION_ERROR_1da02401~^~Y~^~None~^~vkCmdSetStencilCompareMask~^~VUID-vkCmdSetStencilCompareMask-commandBuffer-parameter~^~core~^~The spec valid usage text states 'commandBuffer must be a valid VkCommandBuffer handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetStencilCompareMask-commandBuffer-parameter)~^~implicit VALIDATION_ERROR_1da02413~^~N~^~Unknown~^~vkCmdSetStencilCompareMask~^~VUID-vkCmdSetStencilCompareMask-commandBuffer-recording~^~core~^~The spec valid usage text states 'commandBuffer must be in the recording state' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetStencilCompareMask-commandBuffer-recording)~^~implicit VALIDATION_ERROR_1da02415~^~Y~^~Unknown~^~vkCmdSetStencilCompareMask~^~VUID-vkCmdSetStencilCompareMask-commandBuffer-cmdpool~^~core~^~The spec valid usage text states 'The VkCommandPool that commandBuffer was allocated from must support graphics operations' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdSetStencilCompareMask-commandBuffer-cmdpool)~^~implicit |
