Mesa (main): microsoft/compiler: Add support for arrays to image_store

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jul 29 02:10:41 UTC 2021


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

Author: Enrico Galli <enrico.galli at intel.com>
Date:   Wed Jul 28 17:04:16 2021 -0700

microsoft/compiler: Add support for arrays to image_store

Reviewed-by: Jesse Natalie <jenatali at microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12119>

---

 src/microsoft/compiler/nir_to_dxil.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/microsoft/compiler/nir_to_dxil.c b/src/microsoft/compiler/nir_to_dxil.c
index fe1d63a9561..d0bc4b9db26 100644
--- a/src/microsoft/compiler/nir_to_dxil.c
+++ b/src/microsoft/compiler/nir_to_dxil.c
@@ -3029,12 +3029,15 @@ static bool
 emit_image_store(struct ntd_context *ctx, nir_intrinsic_instr *intr)
 {
    const struct dxil_value *handle;
+   bool is_array = false;
    if (ctx->opts->vulkan_environment) {
       assert(intr->intrinsic == nir_intrinsic_image_deref_store);
       handle = get_src_ssa(ctx, intr->src[0].ssa, 0);
+      is_array = glsl_sampler_type_is_array(nir_src_as_deref(intr->src[0])->type);
    } else {
       assert(intr->intrinsic == nir_intrinsic_image_store);
       int binding = nir_src_as_int(intr->src[0]);
+      is_array = nir_intrinsic_image_array(intr);
       handle = ctx->uav_handles[binding];
    }
    if (!handle)
@@ -3049,6 +3052,9 @@ emit_image_store(struct ntd_context *ctx, nir_intrinsic_instr *intr)
       nir_intrinsic_image_dim(intr) :
       glsl_get_sampler_dim(nir_src_as_deref(intr->src[0])->type);
    unsigned num_coords = glsl_get_sampler_dim_coordinate_components(image_dim);
+   if (is_array)
+      ++num_coords;
+
    assert(num_coords <= nir_src_num_components(intr->src[1]));
    for (unsigned i = 0; i < num_coords; ++i) {
       coord[i] = get_src(ctx, &intr->src[1], i, nir_type_uint);



More information about the mesa-commit mailing list