Mesa (main): radv: use nir_image_deref_{load,store} in the DCC retile compute path

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Oct 11 10:29:57 UTC 2021


Module: Mesa
Branch: main
Commit: ef2e7f765249512658abeda3c36b34d49bb59cca
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ef2e7f765249512658abeda3c36b34d49bb59cca

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Thu Aug 26 09:48:00 2021 +0200

radv: use nir_image_deref_{load,store} in the DCC retile compute path

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12561>

---

 src/amd/vulkan/radv_meta_dcc_retile.c | 33 ++++++++++-----------------------
 1 file changed, 10 insertions(+), 23 deletions(-)

diff --git a/src/amd/vulkan/radv_meta_dcc_retile.c b/src/amd/vulkan/radv_meta_dcc_retile.c
index 0dc41da9bef..943b41ce63f 100644
--- a/src/amd/vulkan/radv_meta_dcc_retile.c
+++ b/src/amd/vulkan/radv_meta_dcc_retile.c
@@ -46,7 +46,8 @@ get_global_ids(nir_builder *b, unsigned num_components)
 static nir_shader *
 build_dcc_retile_compute_shader(struct radv_device *dev, struct radeon_surf *surf)
 {
-   const struct glsl_type *buf_type = glsl_image_type(GLSL_SAMPLER_DIM_BUF, false, GLSL_TYPE_UINT);
+   enum glsl_sampler_dim dim = GLSL_SAMPLER_DIM_BUF;
+   const struct glsl_type *buf_type = glsl_image_type(dim, false, GLSL_TYPE_UINT);
    nir_builder b = nir_builder_init_simple_shader(MESA_SHADER_COMPUTE, NULL, "dcc_retile_compute");
 
    b.shader->info.workgroup_size[0] = 8;
@@ -85,28 +86,14 @@ build_dcc_retile_compute_shader(struct radv_device *dev, struct radeon_surf *sur
       dst_dcc_pitch, dst_dcc_height, zero, nir_channel(&b, coord, 0), nir_channel(&b, coord, 1),
       zero, zero, zero);
 
-   nir_intrinsic_instr *dcc_val =
-      nir_intrinsic_instr_create(b.shader, nir_intrinsic_image_deref_load);
-   dcc_val->num_components = 1;
-   dcc_val->src[0] = nir_src_for_ssa(input_dcc_ref);
-   dcc_val->src[1] = nir_src_for_ssa(nir_vec4(&b, src, src, src, src));
-   dcc_val->src[2] = nir_src_for_ssa(nir_ssa_undef(&b, 1, 32));
-   dcc_val->src[3] = nir_src_for_ssa(nir_imm_int(&b, 0));
-   nir_ssa_dest_init(&dcc_val->instr, &dcc_val->dest, 1, 32, "dcc_val");
-   nir_intrinsic_set_image_dim(dcc_val, GLSL_SAMPLER_DIM_BUF);
-   nir_builder_instr_insert(&b, &dcc_val->instr);
-
-   nir_intrinsic_instr *store =
-      nir_intrinsic_instr_create(b.shader, nir_intrinsic_image_deref_store);
-   store->num_components = 1;
-   store->src[0] = nir_src_for_ssa(output_dcc_ref);
-   store->src[1] = nir_src_for_ssa(nir_vec4(&b, dst, dst, dst, dst));
-   store->src[2] = nir_src_for_ssa(nir_ssa_undef(&b, 1, 32));
-   store->src[3] = nir_src_for_ssa(&dcc_val->dest.ssa);
-   store->src[4] = nir_src_for_ssa(nir_imm_int(&b, 0));
-   nir_intrinsic_set_image_dim(store, GLSL_SAMPLER_DIM_BUF);
-
-   nir_builder_instr_insert(&b, &store->instr);
+   nir_ssa_def *dcc_val = nir_image_deref_load(&b, 1, 32, input_dcc_ref,
+                                               nir_vec4(&b, src, src, src, src),
+                                               nir_ssa_undef(&b, 1, 32), nir_imm_int(&b, 0),
+                                               .image_dim = dim);
+
+   nir_image_deref_store(&b, output_dcc_ref, nir_vec4(&b, dst, dst, dst, dst),
+                         nir_ssa_undef(&b, 1, 32), dcc_val, nir_imm_int(&b, 0), .image_dim = dim);
+
    return b.shader;
 }
 



More information about the mesa-commit mailing list