Mesa (master): glsl: Fix semantic checks on precision qualifiers

Chad Versace chadversary at kemper.freedesktop.org
Tue Jan 18 23:25:17 UTC 2011


Module: Mesa
Branch: master
Commit: 45e8e6c6b1b7f3bc00a578fa6809c9bc719c171a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=45e8e6c6b1b7f3bc00a578fa6809c9bc719c171a

Author: Chad Versace <chad.versace at intel.com>
Date:   Mon Jan 17 15:28:39 2011 -0800

glsl: Fix semantic checks on precision qualifiers

The check for
   Precision qualifiers only apply to floating point and integer types.
was incomplete. It rejected only type 'bool' and structures.

---

 src/glsl/ast_to_hir.cpp |   17 ++++++++---------
 1 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
index e3164d8..477efad 100644
--- a/src/glsl/ast_to_hir.cpp
+++ b/src/glsl/ast_to_hir.cpp
@@ -2363,7 +2363,7 @@ ast_declarator_list::hir(exec_list *instructions,
       }
 
 
-      /* Precision qualifiers do not apply to bools and structs.
+      /* Precision qualifiers only apply to floating point and integer types.
        *
        * From section 4.5.2 of the GLSL 1.30 spec:
        *    "Any floating point or any integer declaration can have the type
@@ -2372,16 +2372,15 @@ ast_declarator_list::hir(exec_list *instructions,
        *    variables.
        */
       if (this->type->specifier->precision != ast_precision_none
-          && this->type->specifier->type_specifier == ast_bool) {
+          && !var->type->is_float()
+          && !var->type->is_integer()
+          && !(var->type->is_array()
+               && (var->type->fields.array->is_float()
+                   || var->type->fields.array->is_integer()))) {
 
          _mesa_glsl_error(&loc, state,
-                          "preicion qualifiers do not apply to type bool");
-      }
-      if (this->type->specifier->precision != ast_precision_none
-          && this->type->specifier->structure != NULL) {
-
-         _mesa_glsl_error(&loc, state,
-                          "precision qualifiers do not apply to structures");
+                          "precision qualifiers apply only to floating point "
+                          "and integer types");
       }
 
       /* Process the initializer and add its instructions to a temporary




More information about the mesa-commit mailing list