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 <tarceri@itsqueeze.com>
This commit is contained in:
Neil Roberts
2018-02-23 17:07:52 +01:00
committed by Alejandro Piñeiro
parent 386f09be9b
commit b995bda9bc
2 changed files with 3 additions and 0 deletions

View File

@@ -456,6 +456,7 @@ struct vtn_variable {
unsigned descriptor_set; unsigned descriptor_set;
unsigned binding; unsigned binding;
bool explicit_binding;
unsigned input_attachment_index; unsigned input_attachment_index;
bool patch; bool patch;

View File

@@ -1507,6 +1507,7 @@ var_decoration_cb(struct vtn_builder *b, struct vtn_value *val, int member,
switch (dec->decoration) { switch (dec->decoration) {
case SpvDecorationBinding: case SpvDecorationBinding:
vtn_var->binding = dec->literals[0]; vtn_var->binding = dec->literals[0];
vtn_var->explicit_binding = true;
return; return;
case SpvDecorationDescriptorSet: case SpvDecorationDescriptorSet:
vtn_var->descriptor_set = dec->literals[0]; 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. * for these. We should fix that.
*/ */
var->var->data.binding = var->binding; 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.descriptor_set = var->descriptor_set;
var->var->data.index = var->input_attachment_index; var->var->data.index = var->input_attachment_index;