glsl/nir: Add a pass to lower UBO and SSBO access
[mesa.git] / src / compiler / glsl / ir_uniform.h
index 1854279925bf4ff8aea55a6ad6bcba3a643fc96a..9770790cb260f1ef97f1e00a9e6aa62818b2439a 100644 (file)
@@ -21,7 +21,6 @@
  * DEALINGS IN THE SOFTWARE.
  */
 
-#pragma once
 #ifndef IR_UNIFORM_H
 #define IR_UNIFORM_H
 
@@ -29,7 +28,7 @@
 /* stdbool.h is necessary because this file is included in both C and C++ code.
  */
 #include <stdbool.h>
-
+#include "util/macros.h"
 #include "program/prog_parameter.h"  /* For union gl_constant_value. */
 
 /**
@@ -105,12 +104,12 @@ struct gl_uniform_storage {
     */
    unsigned array_elements;
 
+   struct gl_opaque_uniform_index opaque[MESA_SHADER_STAGES];
+
    /**
-    * Has this uniform ever been set?
+    * Mask of shader stages (1 << MESA_SHADER_xxx) where this uniform is used.
     */
-   bool initialized;
-
-   struct gl_opaque_uniform_index opaque[MESA_SHADER_STAGES];
+   unsigned active_shader_mask;
 
    /**
     * Storage used by the driver for the uniform
@@ -207,6 +206,12 @@ struct gl_uniform_storage {
     * top-level shader storage block member. (GL_TOP_LEVEL_ARRAY_STRIDE).
     */
    unsigned top_level_array_stride;
+
+   /**
+    * Whether this uniform variable has the bindless_sampler or bindless_image
+    * layout qualifier as specified by ARB_bindless_texture.
+    */
+   bool is_bindless;
 };
 
 #ifdef __cplusplus