compiler/types: Fix deserializing structs with >= 15 members
authorJason Ekstrand <jason@jlekstrand.net>
Fri, 4 Sep 2020 19:06:29 +0000 (14:06 -0500)
committerMarge Bot <eric+marge@anholt.net>
Fri, 4 Sep 2020 20:12:12 +0000 (20:12 +0000)
This was a typo in a0b82c24b6d08c where we used the wrong struct member
to decide whether or not to read the explicit_alignment.

Fixes: a0b82c24b6d08c "nir/glsl: Add an explicit_alignment field to glsl_type"
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3487
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6605>

src/compiler/glsl_types.cpp

index 288ddcf5dea9ac39e10d6119f2dc531cdbf688cd..2a77b075c28f4c8b570a504befaa0e3e446daaba 100644 (file)
@@ -2858,7 +2858,7 @@ encode_type_to_blob(struct blob *blob, const glsl_type *type)
       /* If we don't have enough bits for length, store it separately. */
       if (encoded.strct.length == 0xfffff)
          blob_write_uint32(blob, type->length);
       /* If we don't have enough bits for length, store it separately. */
       if (encoded.strct.length == 0xfffff)
          blob_write_uint32(blob, type->length);
-      if (encoded.strct.length == 0xf)
+      if (encoded.strct.explicit_alignment == 0xf)
          blob_write_uint32(blob, type->explicit_alignment);
 
       for (unsigned i = 0; i < type->length; i++)
          blob_write_uint32(blob, type->explicit_alignment);
 
       for (unsigned i = 0; i < type->length; i++)