radv: rework the TC-compat HTILE hardware bug with COND_EXEC
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Mon, 3 Dec 2018 21:45:03 +0000 (22:45 +0100)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 5 Dec 2018 08:26:31 +0000 (09:26 +0100)
commit824cfc1ee5e0aba15b676b9363ff32046d96eb42
tree70a59a4cf0c3f29a6db55c597aa2d8dc90b135bf
parent2669dbf8810c534025ca0dd10942eb416a94fe4d
radv: rework the TC-compat HTILE hardware bug with COND_EXEC

After investigating on this, it appears that COND_WRITE doesn't
work correctly in some situations. I don't know exactly why does
it fail to update DB_Z_INFO.ZRANGE_PRECISION, but as AMDVLK
also uses COND_EXEC I think there is a reason.

Now the driver stores a new metadata value in order to reflect
the last fast depth clear state. If a TC-compat HTILE is fast cleared
with 0.0f, we have to update ZRANGE_PRECISION to 0 in order to
work around that hardware bug.

This fixes rendering issues with The Forest and DXVK and doesn't
seem to introduce any regressions.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108914
Fixes: 68dead112e7 ("radv: update the ZRANGE_PRECISION value for the TC-compat bug")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_cmd_buffer.c
src/amd/vulkan/radv_image.c
src/amd/vulkan/radv_private.h