radv: update the ZRANGE_PRECISION value for the TC-compat bug
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 13 Jun 2018 12:27:40 +0000 (14:27 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 14 Jun 2018 09:38:29 +0000 (11:38 +0200)
commit68dead112e710b261ad33604175d635dec6afd34
tree7186287af4d7571d25d7911cc42263c571a3c5d6
parent183adc51f8568fcb4f7670bb63e08f1adc77255e
radv: update the ZRANGE_PRECISION value for the TC-compat bug

On GFX8+, there is a bug that affects TC-compatible depth surfaces
when the ZRange is not reset after LateZ kills pixels.

The workaround is to always set DB_Z_INFO.ZRANGE_PRECISION to match
the last fast clear value. Because the value is set to 1 by default,
we only need to update it when clearing Z to 0.0.

We also need to set the depth clear regs and to update
ZRANGE_PRECISION when initializing a TC-compat depth image to 0.

Original patch from James Legg.

This fixes random CTS fails with
dEQP-VK.renderpass.suballocation.formats.d32_sfloat_s8_uint.input.*

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105396
CC: <mesa-stable@lists.freedesktop.org>
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_cmd_buffer.c