mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 06:58:05 +02:00
anv: add a check for depthStencilState before using it
v2: move the code under existing correct check! Fixes:e4590c0750("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> (cherry picked from commit2d010d3dc5)
This commit is contained in:
parent
0ba14f96fc
commit
6e5874416d
2 changed files with 35 additions and 41 deletions
|
|
@ -67,7 +67,7 @@
|
|||
"description": "anv: add a check for depthStencilState before using it",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": "e4590c07500941ae1afa82db5e4fea2111a68604"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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 =
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue