Mesa (master): glsl: mark variable as loop constant when it is set read only

Tapani Pälli tpalli at kemper.freedesktop.org
Thu Sep 11 07:11:36 UTC 2014


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

Author: Tapani Pälli <tapani.palli at intel.com>
Date:   Tue Sep  9 14:56:06 2014 +0300

glsl: mark variable as loop constant when it is set read only

Patch modifies is_loop_constant() to take advantage of 'read_only' bit
in ir_variable to detect a loop constant. Variables marked read-only
are loop constant like mentioned by a comment in the function.

v2: remove unnecessary comment (Francisco)

Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82537
Tested-by: Michel Dänzer <michel.daenzer at amd.com>
Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>
Reviewed-by: Francisco Jerez <currojerez at riseup.net>

---

 src/glsl/loop_analysis.h |    9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/src/glsl/loop_analysis.h b/src/glsl/loop_analysis.h
index 295dc79..31be4f3 100644
--- a/src/glsl/loop_analysis.h
+++ b/src/glsl/loop_analysis.h
@@ -205,10 +205,10 @@ public:
    inline bool is_loop_constant() const
    {
       const bool is_const = (this->num_assignments == 0)
-	 || ((this->num_assignments == 1)
+         || (((this->num_assignments == 1)
 	     && !this->conditional_or_nested_assignment
 	     && !this->read_before_write
-	     && this->rhs_clean);
+             && this->rhs_clean) || this->var->data.read_only);
 
       /* If the RHS of *the* assignment is clean, then there must be exactly
        * one assignment of the variable.
@@ -216,11 +216,6 @@ public:
       assert((this->rhs_clean && (this->num_assignments == 1))
 	     || !this->rhs_clean);
 
-      /* Variables that are marked read-only *MUST* be loop constant.
-       */
-      assert(!this->var->data.read_only
-            || (this->var->data.read_only && is_const));
-
       return is_const;
    }
 




More information about the mesa-commit mailing list