[Mesa-dev] [PATCH V2] glsl: Validate aux storage qualifier combination with other qualifiers.
Chris Forbes
chrisf at ijw.co.nz
Fri Apr 11 20:48:11 PDT 2014
> This does a little more than the error message says - won't it prevent using
> sample/centroid on, say, vertex shader inputs/fragment shader outputs?
>
> If so, then it seems like you could drop a pile of other code:
>
> /* From section 4.3.4 of the GLSL 1.30 spec:
> * "It is an error to use centroid in in a vertex shader."
> *
> * From section 4.3.4 of the GLSL ES 3.00 spec:
> * "It is an error to use centroid in or interpolation qualifiers in
> * a vertex shader input."
> */
A lot of this could go away, yes -- we'd cover all of these cases. Do
we want to keep distinct error messages for them though? I think
that's fairly valuable.
>
> /* From the GLSL 4.20 specification, section 4.3 "Storage Qualifiers":
> * "[...] structure members do not use storage qualifiers."
> */
>
> presumably this applies to auxiliary storage qualifiers too...it was the
> best I could find. Which, incidentally, makes me wonder...where do we check
> for storage qualifiers? Maybe do it in the same place?
It's all a bit underspecified. 420pack says:
"Some input and output qualified variables can be qualified with at most one
additional auxiliary storage qualifier.
and then describes the cases disallowed above (inputs to VS, outputs from FS).
>
>> + if ((qual->flags.q.uniform || !is_interface) &&
>> + qual->has_auxiliary_storage()) {
>> + _mesa_glsl_error(&loc, state,
>> + "auxiliary storage qualifiers cannot be used "
>> + "in uniform blocks or structures.");
>> + }
>> +
>> if (field_type->is_matrix() ||
>> (field_type->is_array() && field_type->fields.array->is_matrix())) {
>> fields[i].row_major = block_row_major;
>>
>
More information about the mesa-dev
mailing list