intel/isl: Implement D16_UNORM workarounds.
authorRafael Antognolli <rafael.antognolli@intel.com>
Fri, 21 Feb 2020 20:03:05 +0000 (12:03 -0800)
committerMarge Bot <eric+marge@anholt.net>
Tue, 3 Mar 2020 16:25:54 +0000 (16:25 +0000)
commitcd40110420b48b3005c9d1d4ea30e2cbcc9a3d40
tree068eec7958a10d06cd47f67f7f00dc09ac5d7e6b
parent9fea90ad5170dd64376d22a14ac88c392813c96c
intel/isl: Implement D16_UNORM workarounds.

GEN:BUG:14010455700 (lineage 1808121037):

   "To avoid sporadic corruptions “Set 0x7010[9] when Depth Buffer
   Surface Format is D16_UNORM , surface type is not NULL & 1X_MSAA"

Required for fixing ttps://gitlab.freedesktop.org/mesa/mesa/issues/2501.

GEN:BUG:1806527549:

   "Set HIZ_CHICKEN (7018h) bit 13 = 1 when depth buffer is D16_UNORM."

This one could fix a GPU hang in some workloads.

v2: Implement WA in isl and add another similar WA (Jason).
v3: Add flushes before changing chicken registers (Jason)
v4: Depth flush and stall + end of pipe sync when changing registers
(Jason).

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3801>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3801>
src/gallium/drivers/iris/iris_state.c
src/intel/genxml/gen12.xml
src/intel/isl/isl.c
src/intel/isl/isl_emit_depth_stencil.c
src/intel/vulkan/genX_cmd_buffer.c