glsl: simplified ast_type_qualifier::merge_into_[in|out]_qualifier API
Since we modified the way in which multiple repetitions of the same layout-qualifier-name in a single declaration collapse into the ast_type_qualifier class, we can simplify the merge_into_[in|out]_qualifier APIs through removing the create_node parameter. Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com> Signed-off-by: Andres Gomez <agomez@igalia.com>
This commit is contained in:
@@ -767,7 +767,7 @@ struct ast_type_qualifier {
|
|||||||
*/
|
*/
|
||||||
bool merge_into_out_qualifier(YYLTYPE *loc,
|
bool merge_into_out_qualifier(YYLTYPE *loc,
|
||||||
_mesa_glsl_parse_state *state,
|
_mesa_glsl_parse_state *state,
|
||||||
ast_node* &node, bool create_node);
|
ast_node* &node);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validate current qualifier against the global in one.
|
* Validate current qualifier against the global in one.
|
||||||
@@ -780,7 +780,7 @@ struct ast_type_qualifier {
|
|||||||
*/
|
*/
|
||||||
bool merge_into_in_qualifier(YYLTYPE *loc,
|
bool merge_into_in_qualifier(YYLTYPE *loc,
|
||||||
_mesa_glsl_parse_state *state,
|
_mesa_glsl_parse_state *state,
|
||||||
ast_node* &node, bool create_node);
|
ast_node* &node);
|
||||||
|
|
||||||
bool validate_flags(YYLTYPE *loc,
|
bool validate_flags(YYLTYPE *loc,
|
||||||
_mesa_glsl_parse_state *state,
|
_mesa_glsl_parse_state *state,
|
||||||
|
@@ -514,7 +514,7 @@ ast_type_qualifier::validate_out_qualifier(YYLTYPE *loc,
|
|||||||
bool
|
bool
|
||||||
ast_type_qualifier::merge_into_out_qualifier(YYLTYPE *loc,
|
ast_type_qualifier::merge_into_out_qualifier(YYLTYPE *loc,
|
||||||
_mesa_glsl_parse_state *state,
|
_mesa_glsl_parse_state *state,
|
||||||
ast_node* &node, bool create_node)
|
ast_node* &node)
|
||||||
{
|
{
|
||||||
const bool r = state->out_qualifier->merge_qualifier(loc, state,
|
const bool r = state->out_qualifier->merge_qualifier(loc, state,
|
||||||
*this, false);
|
*this, false);
|
||||||
@@ -525,7 +525,6 @@ ast_type_qualifier::merge_into_out_qualifier(YYLTYPE *loc,
|
|||||||
state->out_qualifier->flags.q.explicit_stream = 0;
|
state->out_qualifier->flags.q.explicit_stream = 0;
|
||||||
break;
|
break;
|
||||||
case MESA_SHADER_TESS_CTRL:
|
case MESA_SHADER_TESS_CTRL:
|
||||||
if (create_node)
|
|
||||||
node = new(state->linalloc) ast_tcs_output_layout(*loc);
|
node = new(state->linalloc) ast_tcs_output_layout(*loc);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -627,7 +626,7 @@ ast_type_qualifier::validate_in_qualifier(YYLTYPE *loc,
|
|||||||
bool
|
bool
|
||||||
ast_type_qualifier::merge_into_in_qualifier(YYLTYPE *loc,
|
ast_type_qualifier::merge_into_in_qualifier(YYLTYPE *loc,
|
||||||
_mesa_glsl_parse_state *state,
|
_mesa_glsl_parse_state *state,
|
||||||
ast_node* &node, bool create_node)
|
ast_node* &node)
|
||||||
{
|
{
|
||||||
bool r = true;
|
bool r = true;
|
||||||
void *lin_ctx = state->linalloc;
|
void *lin_ctx = state->linalloc;
|
||||||
@@ -636,8 +635,7 @@ ast_type_qualifier::merge_into_in_qualifier(YYLTYPE *loc,
|
|||||||
* more repeated nodes will be created as we will have the flag set.
|
* more repeated nodes will be created as we will have the flag set.
|
||||||
*/
|
*/
|
||||||
if (state->stage == MESA_SHADER_GEOMETRY
|
if (state->stage == MESA_SHADER_GEOMETRY
|
||||||
&& this->flags.q.prim_type && !state->in_qualifier->flags.q.prim_type
|
&& this->flags.q.prim_type && !state->in_qualifier->flags.q.prim_type) {
|
||||||
&& create_node) {
|
|
||||||
node = new(lin_ctx) ast_gs_input_layout(*loc, this->prim_type);
|
node = new(lin_ctx) ast_gs_input_layout(*loc, this->prim_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -653,8 +651,8 @@ ast_type_qualifier::merge_into_in_qualifier(YYLTYPE *loc,
|
|||||||
* into HIR.
|
* into HIR.
|
||||||
*/
|
*/
|
||||||
if (state->in_qualifier->flags.q.local_size) {
|
if (state->in_qualifier->flags.q.local_size) {
|
||||||
if (create_node)
|
node = new(lin_ctx) ast_cs_input_layout(*loc,
|
||||||
node = new(lin_ctx) ast_cs_input_layout(*loc, state->in_qualifier->local_size);
|
state->in_qualifier->local_size);
|
||||||
state->in_qualifier->flags.q.local_size = 0;
|
state->in_qualifier->flags.q.local_size = 0;
|
||||||
for (int i = 0; i < 3; i++)
|
for (int i = 0; i < 3; i++)
|
||||||
state->in_qualifier->local_size[i] = NULL;
|
state->in_qualifier->local_size[i] = NULL;
|
||||||
|
@@ -2957,14 +2957,14 @@ layout_defaults:
|
|||||||
| layout_in_defaults
|
| layout_in_defaults
|
||||||
{
|
{
|
||||||
$$ = NULL;
|
$$ = NULL;
|
||||||
if (!$1.merge_into_in_qualifier(& @1, state, $$, true)) {
|
if (!$1.merge_into_in_qualifier(& @1, state, $$)) {
|
||||||
YYERROR;
|
YYERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
| layout_out_defaults
|
| layout_out_defaults
|
||||||
{
|
{
|
||||||
$$ = NULL;
|
$$ = NULL;
|
||||||
if (!$1.merge_into_out_qualifier(& @1, state, $$, true)) {
|
if (!$1.merge_into_out_qualifier(& @1, state, $$)) {
|
||||||
YYERROR;
|
YYERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user