From 14d2b12390bec3ecab578f21f4319165814e2df7 Mon Sep 17 00:00:00 2001 From: Qiang Yu Date: Wed, 12 Apr 2023 14:53:47 +0800 Subject: [PATCH] radeonsi: add shader info for frag coord and sample pos read MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To construct spi_ps_input when ACO compilation. Reviewed-by: Marek Olšák Signed-off-by: Qiang Yu Part-of: --- src/gallium/drivers/radeonsi/si_shader.h | 4 ++++ src/gallium/drivers/radeonsi/si_shader_info.c | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/src/gallium/drivers/radeonsi/si_shader.h b/src/gallium/drivers/radeonsi/si_shader.h index b4f0c42c14f..9a53b40128f 100644 --- a/src/gallium/drivers/radeonsi/si_shader.h +++ b/src/gallium/drivers/radeonsi/si_shader.h @@ -496,6 +496,10 @@ struct si_shader_info { * texunit + 1. */ uint8_t writes_1_if_tex_is_1; + + /* frag coord and sample pos per component read mask. */ + uint8_t reads_frag_coord_mask; + uint8_t reads_sample_pos_mask; }; /* A shader selector is a gallium CSO and contains shader variants and diff --git a/src/gallium/drivers/radeonsi/si_shader_info.c b/src/gallium/drivers/radeonsi/si_shader_info.c index 483777e0f22..65e00668143 100644 --- a/src/gallium/drivers/radeonsi/si_shader_info.c +++ b/src/gallium/drivers/radeonsi/si_shader_info.c @@ -557,6 +557,12 @@ static void scan_instruction(const struct nir_shader *nir, struct si_shader_info if (intr->intrinsic == nir_intrinsic_load_barycentric_at_sample) info->uses_interp_at_sample = true; break; + case nir_intrinsic_load_frag_coord: + info->reads_frag_coord_mask |= nir_ssa_def_components_read(&intr->dest.ssa); + break; + case nir_intrinsic_load_sample_pos: + info->reads_sample_pos_mask |= nir_ssa_def_components_read(&intr->dest.ssa); + break; case nir_intrinsic_load_input: case nir_intrinsic_load_per_vertex_input: case nir_intrinsic_load_input_vertex: