[Mesa-dev] [PATCH] spirv: Fix structure splitting with per-vertex interface arrays.
Kenneth Graunke
kenneth at whitecape.org
Tue Mar 15 04:13:04 UTC 2016
On Monday, March 14, 2016 5:23:44 PM PDT Jason Ekstrand wrote:
> On Sun, Mar 13, 2016 at 6:08 PM, Kenneth Graunke <kenneth at whitecape.org>
> wrote:
>
> > We want to use interface_type, not vtn_var->type. They're normally
> > equivalent, but for geometry/tessellation per-vertex interface arrays,
> > we need to unwrap a level.
> >
> > Otherwise, we tried to iterate a structure members but instead used
> > an array length. If the array length was longer than the number of
> > fields in the structure, we'd crash.
> > ---
> > src/compiler/nir/spirv/vtn_variables.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/src/compiler/nir/spirv/vtn_variables.c
> > b/src/compiler/nir/spirv/vtn_variables.c
> > index 31bf416..1628042 100644
> > --- a/src/compiler/nir/spirv/vtn_variables.c
> > +++ b/src/compiler/nir/spirv/vtn_variables.c
> > @@ -923,7 +923,7 @@ var_decoration_cb(struct vtn_builder *b, struct
> > vtn_value *val, int member,
> > vtn_var->var->data.explicit_location = true;
> > } else {
> > assert(vtn_var->members);
> > - unsigned length = glsl_get_length(vtn_var->type->type);
> > + unsigned length = glsl_get_length(val->type->type);
> >
>
> Good catch. What I think we really want here though is a "without_array"
> helper. I'm not a huge fan of grabbing the type from the value because
> that comes in from the client and I don't really trust it.
Hmm...okay. I suppose that would work, because vtn_var->members
existing means that it's a struct...or array of structs.
(I was afraid that we'd have to replicate the logic for deciding
whether it's a normal varying array, or arrayed-interface...but
I guess we don't...)
--Ken
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160314/0f67d8bf/attachment.sig>
More information about the mesa-dev
mailing list