#include "program/prog_parameter.h" /* For union gl_constant_value. */
+/**
+ * Used by GL_ARB_explicit_uniform_location extension code in the linker
+ * and glUniform* functions to identify inactive explicit uniform locations.
+ */
+#define INACTIVE_UNIFORM_EXPLICIT_LOCATION ((gl_uniform_storage *) -1)
#ifdef __cplusplus
extern "C" {
enum PACKED gl_uniform_driver_format {
uniform_native = 0, /**< Store data in the native format. */
uniform_int_float, /**< Store integer data as floats. */
- uniform_bool_float, /**< Store boolean data as floats. */
-
- /**
- * Store boolean data as integer using 1 for \c true.
- */
- uniform_bool_int_0_1,
-
- /**
- * Store boolean data as integer using ~0 for \c true.
- */
- uniform_bool_int_0_not0
};
struct gl_uniform_driver_storage {
*/
bool initialized;
- struct gl_opaque_uniform_index sampler[MESA_SHADER_STAGES];
-
- struct gl_opaque_uniform_index image[MESA_SHADER_STAGES];
+ struct gl_opaque_uniform_index opaque[MESA_SHADER_STAGES];
/**
* Storage used by the driver for the uniform
/** @} */
+ /**
+ * This is a compiler-generated uniform that should not be advertised
+ * via the API.
+ */
+ bool hidden;
+
+ /**
+ * This is a built-in uniform that should not be modified through any gl API.
+ */
+ bool builtin;
+
+ /**
+ * This is a shader storage buffer variable, not an uniform.
+ */
+ bool is_shader_storage;
+
/**
* Index within gl_shader_program::AtomicBuffers[] of the atomic
* counter buffer this uniform is stored in, or -1 if this is not
/**
* The 'base location' for this uniform in the uniform remap table. For
* arrays this is the first element in the array.
+ * for subroutines this is in shader subroutine uniform remap table.
*/
unsigned remap_location;
+
+ /**
+ * The number of compatible subroutines with this subroutine uniform.
+ */
+ unsigned num_compatible_subroutines;
+
+ /**
+ * A single integer identifying the number of active array elements of
+ * the top-level shader storage block member (GL_TOP_LEVEL_ARRAY_SIZE).
+ */
+ unsigned top_level_array_size;
+
+ /**
+ * A single integer identifying the stride between array elements of the
+ * top-level shader storage block member. (GL_TOP_LEVEL_ARRAY_STRIDE).
+ */
+ unsigned top_level_array_stride;
};
#ifdef __cplusplus