microsoft/compiler: Handle nested arrays correctly for emitting global consts
authorJesse Natalie <jenatali@microsoft.com>
Thu, 1 Dec 2022 19:10:47 +0000 (11:10 -0800)
committerJesse Natalie <jenatali@microsoft.com>
Fri, 2 Dec 2022 17:53:09 +0000 (09:53 -0800)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20111>

src/microsoft/compiler/nir_to_dxil.c

index 00720f9..09143ae 100644 (file)
@@ -1274,13 +1274,13 @@ var_fill_const_array(struct ntd_context *ctx, const struct nir_constant *c,
                                                  offset);
    } else if (glsl_type_is_array(type)) {
       assert(!glsl_type_is_unsized_array(type));
-      const struct glsl_type *without = glsl_without_array(type);
-      unsigned stride = glsl_get_explicit_stride(without);
+      const struct glsl_type *without = glsl_get_array_element(type);
+      unsigned stride = glsl_get_explicit_stride(type);
 
       for (unsigned elt = 0; elt < glsl_get_length(type); elt++) {
          var_fill_const_array(ctx, c->elements[elt], without,
-                              const_vals, offset + (elt * stride));
-         offset += glsl_get_cl_size(without);
+                              const_vals, offset);
+         offset += stride;
       }
    } else if (glsl_type_is_struct(type)) {
       for (unsigned int elt = 0; elt < glsl_get_length(type); elt++) {