nir/spirv: Patch through image qualifiers

This commit is contained in:
Jason Ekstrand
2016-01-18 16:01:00 -08:00
parent 56c8a5f2b8
commit c2a6f4302e
2 changed files with 19 additions and 0 deletions
+16
View File
@@ -717,6 +717,11 @@ vtn_handle_type(struct vtn_builder *b, SpvOp opcode,
unsigned sampled = w[7];
SpvImageFormat format = w[8];
if (count > 9)
val->type->access_qualifier = w[9];
else
val->type->access_qualifier = SpvAccessQualifierReadWrite;
assert(!multisampled && "FIXME: Handl multi-sampled textures");
val->type->image_format = translate_image_format(format);
@@ -1915,6 +1920,17 @@ vtn_handle_variables(struct vtn_builder *b, SpvOp opcode,
if (glsl_type_is_image(interface_type->type)) {
b->shader->info.num_images++;
var->data.image.format = interface_type->image_format;
switch (interface_type->access_qualifier) {
case SpvAccessQualifierReadOnly:
var->data.image.read_only = true;
break;
case SpvAccessQualifierWriteOnly:
var->data.image.write_only = true;
break;
default:
break;
}
} else if (glsl_type_is_sampler(interface_type->type)) {
b->shader->info.num_textures++;
} else {
+3
View File
@@ -216,6 +216,9 @@ struct vtn_type {
/* Image format for image_load_store type images */
unsigned image_format;
/* Access qualifier for storage images */
SpvAccessQualifier access_qualifier;
/* for arrays and matrices, the array stride */
unsigned stride;