From 1afdfc3e6e022a4e5e9701b365c4f92554be999a Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Sat, 5 Mar 2016 09:19:01 -0800 Subject: [PATCH] anv/pipeline: Implement the depth compare EQUAL workaround on gen8+ --- src/intel/vulkan/gen8_pipeline.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/intel/vulkan/gen8_pipeline.c b/src/intel/vulkan/gen8_pipeline.c index e8a067851cc..4a5e8674189 100644 --- a/src/intel/vulkan/gen8_pipeline.c +++ b/src/intel/vulkan/gen8_pipeline.c @@ -238,6 +238,14 @@ emit_ds_state(struct anv_pipeline *pipeline, .BackfaceStencilTestFunction = vk_to_gen_compare_op[info->back.compareOp], }; + /* From the Broadwell PRM: + * + * "If Depth_Test_Enable = 1 AND Depth_Test_func = EQUAL, the + * Depth_Write_Enable must be set to 0." + */ + if (info->depthTestEnable && info->depthCompareOp == VK_COMPARE_OP_EQUAL) + wm_depth_stencil.DepthBufferWriteEnable = false; + GENX(3DSTATE_WM_DEPTH_STENCIL_pack)(NULL, dw, &wm_depth_stencil); } -- 2.30.2