Allow arrays of floats as varyings.

The comment just above the code said arrays were OK, then it didn't
handle arrays.  Whoops.  Partially fixes CorrectUnsizedArray.frat.
This commit is contained in:
Eric Anholt
2010-05-19 13:38:15 -07:00
parent cd512b0063
commit 0ca171908d

View File

@@ -1426,10 +1426,19 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual,
* float, vec2, vec3, vec4, mat2, mat3, and mat4, or arrays of * float, vec2, vec3, vec4, mat2, mat3, and mat4, or arrays of
* these." * these."
*/ */
if (qual->varying && var->type->base_type != GLSL_TYPE_FLOAT) { if (qual->varying) {
var->type = glsl_type::error_type; const glsl_type *non_array_type;
_mesa_glsl_error(loc, state,
"varying variables must be of base type float"); if (var->type && var->type->is_array())
non_array_type = var->type->fields.array;
else
non_array_type = var->type;
if (non_array_type && non_array_type->base_type != GLSL_TYPE_FLOAT) {
var->type = glsl_type::error_type;
_mesa_glsl_error(loc, state,
"varying variables must be of base type float");
}
} }
if (qual->in && qual->out) if (qual->in && qual->out)