Re: [Mesa-dev] [PATCH 2/6] glsl: correctly validate component layout qualifier for dvec{3, 4}

2019-02-11 Thread Andres Gomez
On Sat, 2019-02-02 at 10:49 +1100, Timothy Arceri wrote:
> On 2/2/19 5:05 am, Andres Gomez wrote:
> >  From page 62 (page 68 of the PDF) of the GLSL 4.50 v.7 spec:
> > 
> >" A dvec3 or dvec4 can only be declared without specifying a
> >  component."
> > 
> > Therefore, using the "component" qualifier with a dvec3 or dvec4
> > should result in a compiling error.
> > 
> > Fixes: 94438578d21 ("glsl: validate and store component layout qualifier in 
> > GLSL IR")
> > Cc: Timothy Arceri 
> > Cc: Kenneth Graunke 
> > Signed-off-by: Andres Gomez 
> > ---
> >   src/compiler/glsl/ast_to_hir.cpp | 3 +++
> >   1 file changed, 3 insertions(+)
> > 
> > diff --git a/src/compiler/glsl/ast_to_hir.cpp 
> > b/src/compiler/glsl/ast_to_hir.cpp
> > index 620153e6a34..6d060fd94cd 100644
> > --- a/src/compiler/glsl/ast_to_hir.cpp
> > +++ b/src/compiler/glsl/ast_to_hir.cpp
> > @@ -3698,6 +3698,9 @@ apply_layout_qualifier_to_variable(const struct 
> > ast_type_qualifier *qual,
> >   "cannot be applied to a matrix, a 
> > structure, "
> >   "a block, or an array containing any of "
> >   "these.");
> > +} else if (components > 4 && type->is_64bit()) {
> > +   _mesa_glsl_error(loc, state, "component layout qualifier "
> > +"cannot be applied to dvec3 nor dvec4.");
> 
> maybe:
> 
> "cannot be applied to dvec%u", components / 2)

I'll update this locally.

> 
> Otherwise:
> 
> Reviewed-by: Timothy Arceri 
> 
> >   } else if (qual_component != 0 &&
> >   (qual_component + components - 1) > 3) {
> >  _mesa_glsl_error(loc, state, "component overflow (%u > 3)",
> > 
-- 
Br,

Andres

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH 2/6] glsl: correctly validate component layout qualifier for dvec{3, 4}

2019-02-01 Thread Timothy Arceri

On 2/2/19 5:05 am, Andres Gomez wrote:

 From page 62 (page 68 of the PDF) of the GLSL 4.50 v.7 spec:

   " A dvec3 or dvec4 can only be declared without specifying a
 component."

Therefore, using the "component" qualifier with a dvec3 or dvec4
should result in a compiling error.

Fixes: 94438578d21 ("glsl: validate and store component layout qualifier in GLSL 
IR")
Cc: Timothy Arceri 
Cc: Kenneth Graunke 
Signed-off-by: Andres Gomez 
---
  src/compiler/glsl/ast_to_hir.cpp | 3 +++
  1 file changed, 3 insertions(+)

diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp
index 620153e6a34..6d060fd94cd 100644
--- a/src/compiler/glsl/ast_to_hir.cpp
+++ b/src/compiler/glsl/ast_to_hir.cpp
@@ -3698,6 +3698,9 @@ apply_layout_qualifier_to_variable(const struct 
ast_type_qualifier *qual,
  "cannot be applied to a matrix, a structure, "
  "a block, or an array containing any of "
  "these.");
+} else if (components > 4 && type->is_64bit()) {
+   _mesa_glsl_error(loc, state, "component layout qualifier "
+"cannot be applied to dvec3 nor dvec4.");


maybe:

"cannot be applied to dvec%u", components / 2)

Otherwise:

Reviewed-by: Timothy Arceri 


  } else if (qual_component != 0 &&
  (qual_component + components - 1) > 3) {
 _mesa_glsl_error(loc, state, "component overflow (%u > 3)",


___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev