mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 15:20:10 +01:00
glsl: move default layout qualifier rules out of the parser
Acked-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
This commit is contained in:
parent
fd612e4547
commit
a0a93470e3
2 changed files with 23 additions and 28 deletions
|
|
@ -296,8 +296,28 @@ ast_type_qualifier::merge_out_qualifier(YYLTYPE *loc,
|
|||
void *mem_ctx = state;
|
||||
const bool r = this->merge_qualifier(loc, state, q);
|
||||
|
||||
if (state->stage == MESA_SHADER_TESS_CTRL) {
|
||||
if (state->stage == MESA_SHADER_GEOMETRY) {
|
||||
if (q.flags.q.prim_type) {
|
||||
/* Make sure this is a valid output primitive type. */
|
||||
switch (q.prim_type) {
|
||||
case GL_POINTS:
|
||||
case GL_LINE_STRIP:
|
||||
case GL_TRIANGLE_STRIP:
|
||||
break;
|
||||
default:
|
||||
_mesa_glsl_error(loc, state, "invalid geometry shader output "
|
||||
"primitive type");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Allow future assigments of global out's stream id value */
|
||||
this->flags.q.explicit_stream = 0;
|
||||
} else if (state->stage == MESA_SHADER_TESS_CTRL) {
|
||||
node = new(mem_ctx) ast_tcs_output_layout(*loc);
|
||||
} else {
|
||||
_mesa_glsl_error(loc, state, "out layout qualifiers only valid in "
|
||||
"tessellation control or geometry shaders");
|
||||
}
|
||||
|
||||
return r;
|
||||
|
|
|
|||
|
|
@ -2786,33 +2786,8 @@ layout_out_defaults:
|
|||
layout_qualifier OUT_TOK ';'
|
||||
{
|
||||
$$ = NULL;
|
||||
if (state->stage == MESA_SHADER_GEOMETRY) {
|
||||
if ($1.flags.q.prim_type) {
|
||||
/* Make sure this is a valid output primitive type. */
|
||||
switch ($1.prim_type) {
|
||||
case GL_POINTS:
|
||||
case GL_LINE_STRIP:
|
||||
case GL_TRIANGLE_STRIP:
|
||||
break;
|
||||
default:
|
||||
_mesa_glsl_error(&@1, state, "invalid geometry shader output "
|
||||
"primitive type");
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!state->out_qualifier->merge_qualifier(& @1, state, $1))
|
||||
YYERROR;
|
||||
|
||||
/* Allow future assigments of global out's stream id value */
|
||||
state->out_qualifier->flags.q.explicit_stream = 0;
|
||||
} else if (state->stage == MESA_SHADER_TESS_CTRL) {
|
||||
if (!state->out_qualifier->merge_out_qualifier(& @1, state, $1, $$))
|
||||
YYERROR;
|
||||
} else {
|
||||
_mesa_glsl_error(& @1, state,
|
||||
"out layout qualifiers only valid in "
|
||||
"tessellation control or geometry shaders");
|
||||
}
|
||||
if (!state->out_qualifier->merge_out_qualifier(& @1, state, $1, $$))
|
||||
YYERROR;
|
||||
}
|
||||
;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue