diff options
author | Tapani Pälli <tapani.palli@intel.com> | 2020-08-08 10:28:43 +0300 |
---|---|---|
committer | Tapani Pälli <tapani.palli@intel.com> | 2020-08-11 11:36:11 +0300 |
commit | 2d010d3dc5f210336d283caaf6453c52cbab6c31 (patch) | |
tree | 5a3743bfb324bc1a9ec5f75d411ae1d74188a9f2 | |
parent | ffc8f2ba4c2cc38c5612ef20235b90b648c4feff (diff) |
anv: add a check for depthStencilState before using it
v2: move the code under existing correct check!
Fixes: e4590c075009 ("anv: depth/stencil dynamic state support")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3375
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Tested-by: Brian Paul <brianp@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6240>
-rw-r--r-- | src/intel/vulkan/anv_pipeline.c | 74 |
1 files changed, 34 insertions, 40 deletions
diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c index bd2714f849b..1b7c09f35a5 100644 --- a/src/intel/vulkan/anv_pipeline.c +++ b/src/intel/vulkan/anv_pipeline.c @@ -1883,46 +1883,6 @@ copy_non_dynamic_state(struct anv_graphics_pipeline *pipeline, pCreateInfo->pRasterizationState->frontFace; } - if (states & ANV_CMD_DIRTY_DYNAMIC_DEPTH_TEST_ENABLE && - subpass->depth_stencil_attachment) { - dynamic->depth_test_enable = - pCreateInfo->pDepthStencilState->depthTestEnable; - } - - if (states & ANV_CMD_DIRTY_DYNAMIC_DEPTH_WRITE_ENABLE && - subpass->depth_stencil_attachment) { - dynamic->depth_write_enable = - pCreateInfo->pDepthStencilState->depthWriteEnable; - } - - if (states & ANV_CMD_DIRTY_DYNAMIC_DEPTH_COMPARE_OP && - subpass->depth_stencil_attachment) { - dynamic->depth_compare_op = - pCreateInfo->pDepthStencilState->depthCompareOp; - } - - if (states & ANV_CMD_DIRTY_DYNAMIC_DEPTH_BOUNDS_TEST_ENABLE && - subpass->depth_stencil_attachment) { - dynamic->depth_bounds_test_enable = - pCreateInfo->pDepthStencilState->depthBoundsTestEnable; - } - - if (states & ANV_CMD_DIRTY_DYNAMIC_STENCIL_TEST_ENABLE && - subpass->depth_stencil_attachment) { - dynamic->stencil_test_enable = - pCreateInfo->pDepthStencilState->stencilTestEnable; - } - - if (states & ANV_CMD_DIRTY_DYNAMIC_STENCIL_OP && - subpass->depth_stencil_attachment) { - const VkPipelineDepthStencilStateCreateInfo *info = - pCreateInfo->pDepthStencilState; - memcpy(&dynamic->stencil_op.front, &info->front, - sizeof(dynamic->stencil_op.front)); - memcpy(&dynamic->stencil_op.back, &info->back, - sizeof(dynamic->stencil_op.back)); - } - if (states & ANV_CMD_DIRTY_DYNAMIC_PRIMITIVE_TOPOLOGY) { assert(pCreateInfo->pInputAssemblyState); bool has_tess = false; @@ -2007,6 +1967,40 @@ copy_non_dynamic_state(struct anv_graphics_pipeline *pipeline, dynamic->stencil_reference.back = pCreateInfo->pDepthStencilState->back.reference; } + + if (states & ANV_CMD_DIRTY_DYNAMIC_DEPTH_TEST_ENABLE) { + dynamic->depth_test_enable = + pCreateInfo->pDepthStencilState->depthTestEnable; + } + + if (states & ANV_CMD_DIRTY_DYNAMIC_DEPTH_WRITE_ENABLE) { + dynamic->depth_write_enable = + pCreateInfo->pDepthStencilState->depthWriteEnable; + } + + if (states & ANV_CMD_DIRTY_DYNAMIC_DEPTH_COMPARE_OP) { + dynamic->depth_compare_op = + pCreateInfo->pDepthStencilState->depthCompareOp; + } + + if (states & ANV_CMD_DIRTY_DYNAMIC_DEPTH_BOUNDS_TEST_ENABLE) { + dynamic->depth_bounds_test_enable = + pCreateInfo->pDepthStencilState->depthBoundsTestEnable; + } + + if (states & ANV_CMD_DIRTY_DYNAMIC_STENCIL_TEST_ENABLE) { + dynamic->stencil_test_enable = + pCreateInfo->pDepthStencilState->stencilTestEnable; + } + + if (states & ANV_CMD_DIRTY_DYNAMIC_STENCIL_OP) { + const VkPipelineDepthStencilStateCreateInfo *info = + pCreateInfo->pDepthStencilState; + memcpy(&dynamic->stencil_op.front, &info->front, + sizeof(dynamic->stencil_op.front)); + memcpy(&dynamic->stencil_op.back, &info->back, + sizeof(dynamic->stencil_op.back)); + } } const VkPipelineRasterizationLineStateCreateInfoEXT *line_state = |