Mesa (master): glsl: Add an ir_variable::reinit_interface_type() function.

Paul Berry stereotype441 at kemper.freedesktop.org
Thu Oct 10 21:46:57 UTC 2013


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

Author: Paul Berry <stereotype441 at gmail.com>
Date:   Sat Sep 28 10:04:41 2013 -0700

glsl: Add an ir_variable::reinit_interface_type() function.

This will be used by future patches to change an ir_variable's
interface type when the gl_PerVertex built-in interface block is
redeclared.

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

---

 src/glsl/ir.h |   25 +++++++++++++++++++++++++
 1 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/src/glsl/ir.h b/src/glsl/ir.h
index 0f8e9a1..aac8cbb 100644
--- a/src/glsl/ir.h
+++ b/src/glsl/ir.h
@@ -420,6 +420,31 @@ public:
       this->interface_type = type;
    }
 
+   /**
+    * Change this->interface_type on a variable that previously had a
+    * different, and incompatible, interface_type. This is used during
+    * compilation to handle redeclaration of the built-in gl_PerVertex
+    * interface block.
+    */
+   void reinit_interface_type(const struct glsl_type *type)
+   {
+      if (this->max_ifc_array_access != NULL) {
+#ifndef _NDEBUG
+         /* Redeclaring gl_PerVertex is only allowed if none of the built-ins
+          * it defines have been accessed yet; so it's safe to throw away the
+          * old max_ifc_array_access pointer, since all of its values are
+          * zero.
+          */
+         for (unsigned i = 0; i < this->interface_type->length; i++)
+            assert(this->max_ifc_array_access[i] == 0);
+#endif
+         ralloc_free(this->max_ifc_array_access);
+         this->max_ifc_array_access = NULL;
+      }
+      this->interface_type = NULL;
+      init_interface_type(type);
+   }
+
    const glsl_type *get_interface_type() const
    {
       return this->interface_type;




More information about the mesa-commit mailing list