diff --git a/src/amd/common/nir/ac_nir.h b/src/amd/common/nir/ac_nir.h index 56e6d43d6ca..940e5f14ea0 100644 --- a/src/amd/common/nir/ac_nir.h +++ b/src/amd/common/nir/ac_nir.h @@ -337,6 +337,7 @@ typedef struct { /* Exports. */ bool uses_discard; + bool dcc_decompress_gfx11; bool alpha_to_coverage_via_mrtz; bool dual_src_blend_swizzle; unsigned spi_shader_col_format; diff --git a/src/amd/common/nir/ac_nir_lower_ps_late.c b/src/amd/common/nir/ac_nir_lower_ps_late.c index 0c633ddc40d..b28707c7d6c 100644 --- a/src/amd/common/nir/ac_nir_lower_ps_late.c +++ b/src/amd/common/nir/ac_nir_lower_ps_late.c @@ -564,8 +564,11 @@ emit_ps_null_export(nir_builder *b, lower_ps_state *s) * for discard. * In Primitive Ordered Pixel Shading, however, GFX11+ explicitly uses the `done` export to exit * the ordered section, and before GFX11, shaders with POPS also need an export. + * GFX11 DCC decompression also needs an export. */ - if (s->options->gfx_level >= GFX10 && !s->options->uses_discard && !pops) + if (s->options->gfx_level >= GFX10 && !pops && + !s->options->uses_discard && + !s->options->dcc_decompress_gfx11) return; /* The `done` export exits the POPS ordered section on GFX11+, make sure UniformMemory and