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