radv: always export MRTZ in FS epilogs with ESO on GFX11

Alpha to coverage is special on RDNA3 and it needs to be emitted
through MRTZ in some situations. Because we can't know this at compile
time when everything is dynamic, we have to always emit MRTZ in PS
epilogs.

This fixes remaining failures on NAVI31 with Zink/ESO/RADV like
spec@ext_packed_depth_stencil@fbo-depthstencil-gl_depth24_stencil8-drawpixels-float-and-ushort.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28297>
This commit is contained in:
Samuel Pitoiset 2024-03-20 12:35:54 +01:00 committed by Marge Bot
parent 1900617baf
commit 53ec57d42d

View file

@ -150,7 +150,7 @@ radv_shader_object_init_graphics(struct radv_shader_object *shader_obj, struct r
gfx_state.dynamic_line_rast_mode = true;
if (device->physical_device->rad_info.gfx_level >= GFX11)
gfx_state.ms.alpha_to_coverage_via_mrtz = true;
gfx_state.ps.exports_mrtz_via_epilog = true;
struct radv_shader *shader = NULL;
struct radv_shader_binary *binary = NULL;
@ -426,7 +426,7 @@ radv_shader_object_create_linked(VkDevice _device, uint32_t createInfoCount, con
gfx_state.dynamic_line_rast_mode = true;
if (device->physical_device->rad_info.gfx_level >= GFX11)
gfx_state.ms.alpha_to_coverage_via_mrtz = true;
gfx_state.ps.exports_mrtz_via_epilog = true;
for (unsigned i = 0; i < createInfoCount; i++) {
const VkShaderCreateInfoEXT *pCreateInfo = &pCreateInfos[i];