summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2013-07-18 15:10:49 -0700
committerKenneth Graunke <kenneth@whitecape.org>2013-07-18 16:57:24 -0700
commit4da1504c0fd0cfccbff514ed03c4dc5deb24cf73 (patch)
treef7f5475ead39c5734c9f9ec17821ee7ec57f573f
parent5e5e12040beb40ff93797d55c913ebe6cd00c2ae (diff)
glsl: Add ir_variable fields for explicit bindings.
These are not used yet, but they exist and are copied appropriately. v2: Add an explicit "int binding" variable rather than reusing constant_value, as suggested by Paul Berry. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Paul Berry <stereotype441@gmail.com>
-rw-r--r--src/glsl/ir.h15
-rw-r--r--src/glsl/ir_clone.cpp2
2 files changed, 17 insertions, 0 deletions
diff --git a/src/glsl/ir.h b/src/glsl/ir.h
index 1f0dc0906a1..7ac291cf40e 100644
--- a/src/glsl/ir.h
+++ b/src/glsl/ir.h
@@ -471,6 +471,14 @@ public:
unsigned explicit_index:1;
/**
+ * Was an initial binding explicitly set in the shader?
+ *
+ * If so, constant_value contains an integer ir_constant representing the
+ * initial binding point.
+ */
+ unsigned explicit_binding:1;
+
+ /**
* Does this variable have an initializer?
*
* This is used by the linker to cross-validiate initializers of global
@@ -528,6 +536,13 @@ public:
int index;
/**
+ * Initial binding point for a sampler or UBO.
+ *
+ * For array types, this represents the binding point for the first element.
+ */
+ int binding;
+
+ /**
* Built-in state that backs this uniform
*
* Once set at variable creation, \c state_slots must remain invariant.
diff --git a/src/glsl/ir_clone.cpp b/src/glsl/ir_clone.cpp
index 5b42935f8e8..9d4178de8b1 100644
--- a/src/glsl/ir_clone.cpp
+++ b/src/glsl/ir_clone.cpp
@@ -50,11 +50,13 @@ ir_variable::clone(void *mem_ctx, struct hash_table *ht) const
var->interpolation = this->interpolation;
var->location = this->location;
var->index = this->index;
+ var->binding = this->binding;
var->warn_extension = this->warn_extension;
var->origin_upper_left = this->origin_upper_left;
var->pixel_center_integer = this->pixel_center_integer;
var->explicit_location = this->explicit_location;
var->explicit_index = this->explicit_index;
+ var->explicit_binding = this->explicit_binding;
var->has_initializer = this->has_initializer;
var->depth_layout = this->depth_layout;