summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTapani Pälli <tapani.palli@intel.com>2020-08-08 10:28:43 +0300
committerTapani Pälli <tapani.palli@intel.com>2020-08-11 11:36:11 +0300
commit2d010d3dc5f210336d283caaf6453c52cbab6c31 (patch)
tree5a3743bfb324bc1a9ec5f75d411ae1d74188a9f2
parentffc8f2ba4c2cc38c5612ef20235b90b648c4feff (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.c74
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 =