aco: fix missing uses of MRT output flags

Fixes regressions on GFX6 and the RAGE2 workaround.

Fixes: a297ac10a4 ("radv,aco: stop lowering FS outputs in NIR")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20154>
This commit is contained in:
Samuel Pitoiset 2022-12-05 11:34:40 +01:00 committed by Marge Bot
parent 40f09f4e1c
commit da32cbb5c6
3 changed files with 9 additions and 0 deletions

View file

@ -11504,6 +11504,9 @@ create_fs_exports(isel_context* ctx)
out.slot = compacted_mrt_index; out.slot = compacted_mrt_index;
out.write_mask = ctx->outputs.mask[i]; out.write_mask = ctx->outputs.mask[i];
out.col_format = (ctx->options->key.ps.col_format >> (4 * idx)) & 0xf; out.col_format = (ctx->options->key.ps.col_format >> (4 * idx)) & 0xf;
out.is_int8 = (ctx->options->key.ps.is_int8 >> idx) & 1;
out.is_int10 = (ctx->options->key.ps.is_int10 >> idx) & 1;
out.enable_mrt_output_nan_fixup = (ctx->options->key.ps.enable_mrt_output_nan_fixup >> idx) & 1;
for (unsigned c = 0; c < 4; ++c) { for (unsigned c = 0; c < 4; ++c) {
if (out.write_mask & (1 << c)) { if (out.write_mask & (1 << c)) {

View file

@ -157,6 +157,9 @@ struct aco_stage_input {
struct { struct {
uint32_t col_format; uint32_t col_format;
uint32_t is_int8;
uint32_t is_int10;
uint8_t enable_mrt_output_nan_fixup;
/* Used to export alpha through MRTZ for alpha-to-coverage (GFX11+). */ /* Used to export alpha through MRTZ for alpha-to-coverage (GFX11+). */
bool alpha_to_coverage_via_mrtz; bool alpha_to_coverage_via_mrtz;

View file

@ -135,6 +135,9 @@ radv_aco_convert_pipe_key(struct aco_stage_input *aco_info,
ASSIGN_FIELD_CP(vs.vertex_binding_align); ASSIGN_FIELD_CP(vs.vertex_binding_align);
ASSIGN_FIELD(tcs.tess_input_vertices); ASSIGN_FIELD(tcs.tess_input_vertices);
ASSIGN_FIELD(ps.col_format); ASSIGN_FIELD(ps.col_format);
ASSIGN_FIELD(ps.is_int8);
ASSIGN_FIELD(ps.is_int10);
ASSIGN_FIELD(ps.enable_mrt_output_nan_fixup);
ASSIGN_FIELD(ps.alpha_to_coverage_via_mrtz); ASSIGN_FIELD(ps.alpha_to_coverage_via_mrtz);
ASSIGN_FIELD(ps.mrt0_is_dual_src); ASSIGN_FIELD(ps.mrt0_is_dual_src);
} }