summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeil Roberts <[email protected]>2018-02-23 17:07:52 +0100
committerAlejandro PiƱeiro <[email protected]>2018-06-21 14:25:05 +0200
commitb995bda9bca0d368f1433b153b64e5200d39bc1d (patch)
tree1f4f502ff8c9dc3a567d017738c224b007af115a
parent386f09be9b7984d99d7106b2ec10ba25d5cf2673 (diff)
spirv: Set nir_variable->explicit_binding
When SpvDecorationBinding is encountered in the SPIR-V source it now sets explicit_binding on the nir_variable. This will be used to determine whether to initialise sampler and image uniforms with the binding value. Reviewed-by: Timothy Arceri <[email protected]>
-rw-r--r--src/compiler/spirv/vtn_private.h1
-rw-r--r--src/compiler/spirv/vtn_variables.c2
2 files changed, 3 insertions, 0 deletions
diff --git a/src/compiler/spirv/vtn_private.h b/src/compiler/spirv/vtn_private.h
index 232396775df..bef82dfb5b5 100644
--- a/src/compiler/spirv/vtn_private.h
+++ b/src/compiler/spirv/vtn_private.h
@@ -456,6 +456,7 @@ struct vtn_variable {
unsigned descriptor_set;
unsigned binding;
+ bool explicit_binding;
unsigned input_attachment_index;
bool patch;
diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c
index 225b088ecbc..df88abdbd63 100644
--- a/src/compiler/spirv/vtn_variables.c
+++ b/src/compiler/spirv/vtn_variables.c
@@ -1507,6 +1507,7 @@ var_decoration_cb(struct vtn_builder *b, struct vtn_value *val, int member,
switch (dec->decoration) {
case SpvDecorationBinding:
vtn_var->binding = dec->literals[0];
+ vtn_var->explicit_binding = true;
return;
case SpvDecorationDescriptorSet:
vtn_var->descriptor_set = dec->literals[0];
@@ -1930,6 +1931,7 @@ vtn_create_variable(struct vtn_builder *b, struct vtn_value *val,
* for these. We should fix that.
*/
var->var->data.binding = var->binding;
+ var->var->data.explicit_binding = var->explicit_binding;
var->var->data.descriptor_set = var->descriptor_set;
var->var->data.index = var->input_attachment_index;