glsl: remove unecessary flags.q.subroutine_def
This bit is definitely not necessary because subroutine_list can be used instead. This frees one more bit in the flags.q struct which is nice because arb_bindless_texture will need 4 bits for the new layout qualifiers. No piglit regressions found (including compiler tests) with "-t subroutine". v2: set the subroutine flag for validating illegal flags Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
@@ -607,7 +607,6 @@ struct ast_type_qualifier {
|
||||
/** \name Qualifiers for GL_ARB_shader_subroutine */
|
||||
/** \{ */
|
||||
unsigned subroutine:1; /**< Is this marked 'subroutine' */
|
||||
unsigned subroutine_def:1; /**< Is this marked 'subroutine' with a list of types */
|
||||
/** \} */
|
||||
|
||||
/** \name Qualifiers for GL_KHR_blend_equation_advanced */
|
||||
|
@@ -3510,7 +3510,7 @@ apply_layout_qualifier_to_variable(const struct ast_type_qualifier *qual,
|
||||
}
|
||||
}
|
||||
} else if (qual->flags.q.explicit_index) {
|
||||
if (!qual->flags.q.subroutine_def)
|
||||
if (!qual->subroutine_list)
|
||||
_mesa_glsl_error(loc, state,
|
||||
"explicit index requires explicit location");
|
||||
} else if (qual->flags.q.explicit_component) {
|
||||
@@ -5576,7 +5576,7 @@ ast_function::hir(exec_list *instructions,
|
||||
* "Subroutine declarations cannot be prototyped. It is an error to prepend
|
||||
* subroutine(...) to a function declaration."
|
||||
*/
|
||||
if (this->return_type->qualifier.flags.q.subroutine_def && !is_definition) {
|
||||
if (this->return_type->qualifier.subroutine_list && !is_definition) {
|
||||
YYLTYPE loc = this->get_location();
|
||||
_mesa_glsl_error(&loc, state,
|
||||
"function declaration `%s' cannot have subroutine prepended",
|
||||
@@ -5724,7 +5724,7 @@ ast_function::hir(exec_list *instructions,
|
||||
sig->replace_parameters(&hir_parameters);
|
||||
signature = sig;
|
||||
|
||||
if (this->return_type->qualifier.flags.q.subroutine_def) {
|
||||
if (this->return_type->qualifier.subroutine_list) {
|
||||
int idx;
|
||||
|
||||
if (this->return_type->qualifier.flags.q.explicit_index) {
|
||||
|
@@ -44,7 +44,6 @@ ast_fully_specified_type::has_qualifiers(_mesa_glsl_parse_state *state) const
|
||||
ast_type_qualifier subroutine_only;
|
||||
subroutine_only.flags.i = 0;
|
||||
subroutine_only.flags.q.subroutine = 1;
|
||||
subroutine_only.flags.q.subroutine_def = 1;
|
||||
if (state->has_explicit_uniform_location()) {
|
||||
subroutine_only.flags.q.explicit_index = 1;
|
||||
}
|
||||
@@ -285,8 +284,8 @@ ast_type_qualifier::merge_qualifier(YYLTYPE *loc,
|
||||
}
|
||||
}
|
||||
|
||||
if (q.flags.q.subroutine_def) {
|
||||
if (this->flags.q.subroutine_def) {
|
||||
if (q.subroutine_list) {
|
||||
if (this->subroutine_list) {
|
||||
_mesa_glsl_error(loc, state,
|
||||
"conflicting subroutine qualifiers used");
|
||||
} else {
|
||||
@@ -772,7 +771,6 @@ ast_type_qualifier::validate_flags(YYLTYPE *loc,
|
||||
bad.flags.q.point_mode ? " point_mode" : "",
|
||||
bad.flags.q.vertices ? " vertices" : "",
|
||||
bad.flags.q.subroutine ? " subroutine" : "",
|
||||
bad.flags.q.subroutine_def ? " subroutine_def" : "",
|
||||
bad.flags.q.blend_support ? " blend_support" : "",
|
||||
bad.flags.q.inner_coverage ? " inner_coverage" : "",
|
||||
bad.flags.q.post_depth_coverage ? " post_depth_coverage" : "");
|
||||
|
@@ -1812,7 +1812,7 @@ subroutine_qualifier:
|
||||
| SUBROUTINE '(' subroutine_type_list ')'
|
||||
{
|
||||
memset(& $$, 0, sizeof($$));
|
||||
$$.flags.q.subroutine_def = 1;
|
||||
$$.flags.q.subroutine = 1;
|
||||
$$.subroutine_list = $3;
|
||||
}
|
||||
;
|
||||
|
@@ -1075,7 +1075,7 @@ _mesa_ast_type_qualifier_print(const struct ast_type_qualifier *q)
|
||||
if (q->flags.q.subroutine)
|
||||
printf("subroutine ");
|
||||
|
||||
if (q->flags.q.subroutine_def) {
|
||||
if (q->subroutine_list) {
|
||||
printf("subroutine (");
|
||||
q->subroutine_list->print();
|
||||
printf(")");
|
||||
|
Reference in New Issue
Block a user