Re: [Mesa-dev] [PATCH 6/7] glsl: Allow non-constant expression initializers of const-qualified vars.

2013-07-07 Thread Kenneth Graunke

On 05/24/2013 06:28 PM, Matt Turner wrote:

Required by ARB_shading_language_420pack.
---
  src/glsl/ast_to_hir.cpp | 30 +++---
  1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
index 6e689b4..6b56e87 100644
--- a/src/glsl/ast_to_hir.cpp
+++ b/src/glsl/ast_to_hir.cpp
@@ -2337,17 +2337,25 @@ process_initializer(ir_variable *var, ast_declaration 
*decl,

 ir_constant *constant_value = rhs-constant_expression_value();
 if (!constant_value) {
-   _mesa_glsl_error( initializer_loc, state,
-initializer of %s variable `%s' must be a 
-constant expression,
-(type-qualifier.flags.q.constant)
-? const : uniform,
-decl-identifier);
-   if (var-type-is_numeric()) {
-  /* Reduce cascading errors. */
-  var-constant_value = ir_constant::zero(state, var-type);
-   }
-} else {
+/* If ARB_shading_language_420pack is enabled, initializers of
+ * const-qualified local variables do not have to be constant
+ * expressions. Const-qualified global variables must still be
+ * initialized with constant expressions.
+ */
+if (!state-ARB_shading_language_420pack_enable
+|| state-current_function == NULL) {
+   _mesa_glsl_error( initializer_loc, state,
+initializer of %s variable `%s' must be a 
+constant expression,
+(type-qualifier.flags.q.constant)
+? const : uniform,
+decl-identifier);
+   if (var-type-is_numeric()) {
+  /* Reduce cascading errors. */
+  var-constant_value = ir_constant::zero(state, var-type);
+   }
+}
+ } else {
rhs = constant_value;
var-constant_value = constant_value;
 }


On actual inspection, this looks okay to me.

This patch is:
Reviewed-by: Kenneth Graunke kenn...@whitecape.org
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH 6/7] glsl: Allow non-constant expression initializers of const-qualified vars.

2013-07-05 Thread Matt Turner
On Sat, Jun 29, 2013 at 7:42 PM, Matt Turner matts...@gmail.com wrote:
 Ping.

 Check out the piglit tests:
const-var-non-constant-expr.shader_test
global-const-var-non-const-expr.frag

 Those confirm that this change is correct.

I'm completely satisfied with the change. I'll push it on Monday.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH 6/7] glsl: Allow non-constant expression initializers of const-qualified vars.

2013-06-29 Thread Matt Turner
On Fri, May 24, 2013 at 6:28 PM, Matt Turner matts...@gmail.com wrote:
 Required by ARB_shading_language_420pack.
 ---
  src/glsl/ast_to_hir.cpp | 30 +++---
  1 file changed, 19 insertions(+), 11 deletions(-)

 diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
 index 6e689b4..6b56e87 100644
 --- a/src/glsl/ast_to_hir.cpp
 +++ b/src/glsl/ast_to_hir.cpp
 @@ -2337,17 +2337,25 @@ process_initializer(ir_variable *var, ast_declaration 
 *decl,

  ir_constant *constant_value = rhs-constant_expression_value();
  if (!constant_value) {
 -   _mesa_glsl_error( initializer_loc, state,
 -initializer of %s variable `%s' must be a 
 -constant expression,
 -(type-qualifier.flags.q.constant)
 -? const : uniform,
 -decl-identifier);
 -   if (var-type-is_numeric()) {
 -  /* Reduce cascading errors. */
 -  var-constant_value = ir_constant::zero(state, var-type);
 -   }
 -} else {
 +/* If ARB_shading_language_420pack is enabled, initializers of
 + * const-qualified local variables do not have to be constant
 + * expressions. Const-qualified global variables must still be
 + * initialized with constant expressions.
 + */
 +if (!state-ARB_shading_language_420pack_enable
 +|| state-current_function == NULL) {
 +   _mesa_glsl_error( initializer_loc, state,
 +initializer of %s variable `%s' must be a 
 +constant expression,
 +(type-qualifier.flags.q.constant)
 +? const : uniform,
 +decl-identifier);
 +   if (var-type-is_numeric()) {
 +  /* Reduce cascading errors. */
 +  var-constant_value = ir_constant::zero(state, var-type);
 +   }
 +}
 + } else {
 rhs = constant_value;
 var-constant_value = constant_value;
  }
 --
 1.8.1.5


Ping.

Check out the piglit tests:
   const-var-non-constant-expr.shader_test
   global-const-var-non-const-expr.frag

Those confirm that this change is correct.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH 6/7] glsl: Allow non-constant expression initializers of const-qualified vars.

2013-05-24 Thread Matt Turner
Required by ARB_shading_language_420pack.
---
 src/glsl/ast_to_hir.cpp | 30 +++---
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
index 6e689b4..6b56e87 100644
--- a/src/glsl/ast_to_hir.cpp
+++ b/src/glsl/ast_to_hir.cpp
@@ -2337,17 +2337,25 @@ process_initializer(ir_variable *var, ast_declaration 
*decl,
 
 ir_constant *constant_value = rhs-constant_expression_value();
 if (!constant_value) {
-   _mesa_glsl_error( initializer_loc, state,
-initializer of %s variable `%s' must be a 
-constant expression,
-(type-qualifier.flags.q.constant)
-? const : uniform,
-decl-identifier);
-   if (var-type-is_numeric()) {
-  /* Reduce cascading errors. */
-  var-constant_value = ir_constant::zero(state, var-type);
-   }
-} else {
+/* If ARB_shading_language_420pack is enabled, initializers of
+ * const-qualified local variables do not have to be constant
+ * expressions. Const-qualified global variables must still be
+ * initialized with constant expressions.
+ */
+if (!state-ARB_shading_language_420pack_enable
+|| state-current_function == NULL) {
+   _mesa_glsl_error( initializer_loc, state,
+initializer of %s variable `%s' must be a 
+constant expression,
+(type-qualifier.flags.q.constant)
+? const : uniform,
+decl-identifier);
+   if (var-type-is_numeric()) {
+  /* Reduce cascading errors. */
+  var-constant_value = ir_constant::zero(state, var-type);
+   }
+}
+ } else {
rhs = constant_value;
var-constant_value = constant_value;
 }
-- 
1.8.1.5

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