Module: Mesa Branch: main Commit: 62d81245225f75996582c8e4edab9a1863cec256 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=62d81245225f75996582c8e4edab9a1863cec256
Author: Emma Anholt <[email protected]> Date: Tue Sep 13 16:09:15 2022 -0700 turnip: Don't look at RB.Z_READ_ENABLE for setting LRZ.Z_TEST_ENABLE. It will always be set in HW when RB.Z_WRITE_ENABLE is set (since that implies RB.Z_TEST_ENABLE), but in the case of dynamic Z the flag gets computed at emit time and not stored to cmd->state.rb_depth_cntl. This bug effectively disabled LRZ for zink. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18606> --- src/freedreno/vulkan/tu_lrz.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/freedreno/vulkan/tu_lrz.c b/src/freedreno/vulkan/tu_lrz.c index 737b5c9485f..be487a4377f 100644 --- a/src/freedreno/vulkan/tu_lrz.c +++ b/src/freedreno/vulkan/tu_lrz.c @@ -640,7 +640,6 @@ tu6_calculate_lrz_state(struct tu_cmd_buffer *cmd, struct tu_pipeline *pipeline = cmd->state.pipeline; bool z_test_enable = cmd->state.rb_depth_cntl & A6XX_RB_DEPTH_CNTL_Z_TEST_ENABLE; bool z_write_enable = cmd->state.rb_depth_cntl & A6XX_RB_DEPTH_CNTL_Z_WRITE_ENABLE; - bool z_read_enable = cmd->state.rb_depth_cntl & A6XX_RB_DEPTH_CNTL_Z_READ_ENABLE; bool z_bounds_enable = cmd->state.rb_depth_cntl & A6XX_RB_DEPTH_CNTL_Z_BOUNDS_ENABLE; VkCompareOp depth_compare_op = (cmd->state.rb_depth_cntl & A6XX_RB_DEPTH_CNTL_ZFUNC__MASK) >> A6XX_RB_DEPTH_CNTL_ZFUNC__SHIFT; @@ -668,7 +667,7 @@ tu6_calculate_lrz_state(struct tu_cmd_buffer *cmd, gras_lrz_cntl.lrz_write = z_write_enable && !(pipeline->lrz.force_disable_mask & TU_LRZ_FORCE_DISABLE_WRITE); - gras_lrz_cntl.z_test_enable = z_read_enable && z_write_enable; + gras_lrz_cntl.z_test_enable = z_write_enable; gras_lrz_cntl.z_bounds_enable = z_bounds_enable; gras_lrz_cntl.fc_enable = cmd->state.lrz.fast_clear; gras_lrz_cntl.dir_write = cmd->state.lrz.gpu_dir_tracking;
