glsl: remove unecessary flags.q.subroutine_def
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Tue, 28 Feb 2017 23:31:20 +0000 (00:31 +0100)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 1 Mar 2017 13:15:31 +0000 (14:15 +0100)
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>
src/compiler/glsl/ast.h
src/compiler/glsl/ast_to_hir.cpp
src/compiler/glsl/ast_type.cpp
src/compiler/glsl/glsl_parser.yy
src/compiler/glsl/glsl_parser_extras.cpp

index 11a092e41c27bfd20c0c16e9b48c5a7597f34b9a..d27b9407440af12d798ee1aead09b16366272595 100644 (file)
@@ -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 */
index 0c00585a050e452ec2b7e00b9c890fa8088f5477..a90813033fbab3b3f009d83886df47982c1c99de 100644 (file)
@@ -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) {
index 96d20c10af4a8627178a33b85d986fb92460fa28..5f868a81f21e90d22dd287fce56916207e2628f6 100644 (file)
@@ -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" : "");
index 7777d703f8cd79d9cac17004aa2427c76faa047a..59453d72f649aca348ea72b9d84749479200481d 100644 (file)
@@ -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;
    }
    ;
index 375a99a49dacf7002a9842e7e621dc97d016297f..e88dd071b3a501ed1ca2489348396cfb020cd2aa 100644 (file)
@@ -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(")");