aboutsummaryrefslogtreecommitdiffstats
path: root/src/compiler/spirv/vtn_variables.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/spirv/vtn_variables.c')
-rw-r--r--src/compiler/spirv/vtn_variables.c43
1 files changed, 12 insertions, 31 deletions
diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c
index 6b30263645d..225b088ecbc 100644
--- a/src/compiler/spirv/vtn_variables.c
+++ b/src/compiler/spirv/vtn_variables.c
@@ -1548,9 +1548,7 @@ var_decoration_cb(struct vtn_builder *b, struct vtn_value *val, int member,
vtn_var->mode == vtn_variable_mode_output) {
is_vertex_input = false;
location += vtn_var->patch ? VARYING_SLOT_PATCH0 : VARYING_SLOT_VAR0;
- } else if (vtn_var->mode != vtn_variable_mode_uniform &&
- vtn_var->mode != vtn_variable_mode_sampler &&
- vtn_var->mode != vtn_variable_mode_image) {
+ } else if (vtn_var->mode != vtn_variable_mode_uniform) {
vtn_warn("Location must be on input, output, uniform, sampler or "
"image variable");
return;
@@ -1628,12 +1626,7 @@ vtn_storage_class_to_mode(struct vtn_builder *b,
nir_mode = 0;
break;
case SpvStorageClassUniformConstant:
- if (glsl_type_is_image(interface_type->type))
- mode = vtn_variable_mode_image;
- else if (glsl_type_is_sampler(interface_type->type))
- mode = vtn_variable_mode_sampler;
- else
- mode = vtn_variable_mode_uniform;
+ mode = vtn_variable_mode_uniform;
nir_mode = nir_var_uniform;
break;
case SpvStorageClassPushConstant:
@@ -1776,11 +1769,11 @@ vtn_create_variable(struct vtn_builder *b, struct vtn_value *val,
case vtn_variable_mode_ssbo:
b->shader->info.num_ssbos++;
break;
- case vtn_variable_mode_image:
- b->shader->info.num_images++;
- break;
- case vtn_variable_mode_sampler:
- b->shader->info.num_textures++;
+ case vtn_variable_mode_uniform:
+ if (glsl_type_is_image(without_array->type))
+ b->shader->info.num_images++;
+ else if (glsl_type_is_sampler(without_array->type))
+ b->shader->info.num_textures++;
break;
case vtn_variable_mode_push_constant:
b->shader->num_uniforms = vtn_type_block_size(b, type);
@@ -1800,8 +1793,6 @@ vtn_create_variable(struct vtn_builder *b, struct vtn_value *val,
switch (var->mode) {
case vtn_variable_mode_local:
case vtn_variable_mode_global:
- case vtn_variable_mode_image:
- case vtn_variable_mode_sampler:
case vtn_variable_mode_uniform:
/* For these, we create the variable normally */
var->var = rzalloc(b->shader, nir_variable);
@@ -1809,16 +1800,7 @@ vtn_create_variable(struct vtn_builder *b, struct vtn_value *val,
var->var->type = var->type->type;
var->var->data.mode = nir_mode;
var->var->data.location = -1;
-
- switch (var->mode) {
- case vtn_variable_mode_image:
- case vtn_variable_mode_sampler:
- var->var->interface_type = without_array->type;
- break;
- default:
- var->var->interface_type = NULL;
- break;
- }
+ var->var->interface_type = NULL;
break;
case vtn_variable_mode_workgroup:
@@ -1943,8 +1925,7 @@ vtn_create_variable(struct vtn_builder *b, struct vtn_value *val,
vtn_foreach_decoration(b, val, var_decoration_cb, var);
- if (var->mode == vtn_variable_mode_image ||
- var->mode == vtn_variable_mode_sampler) {
+ if (var->mode == vtn_variable_mode_uniform) {
/* XXX: We still need the binding information in the nir_variable
* for these. We should fix that.
*/
@@ -1952,7 +1933,7 @@ vtn_create_variable(struct vtn_builder *b, struct vtn_value *val,
var->var->data.descriptor_set = var->descriptor_set;
var->var->data.index = var->input_attachment_index;
- if (var->mode == vtn_variable_mode_image)
+ if (glsl_type_is_image(without_array->type))
var->var->data.image.format = without_array->image_format;
}
@@ -2092,8 +2073,8 @@ vtn_handle_variables(struct vtn_builder *b, SpvOp opcode,
vtn_assert_types_equal(b, opcode, res_type, src_val->type->deref);
- if (src->mode == vtn_variable_mode_image ||
- src->mode == vtn_variable_mode_sampler) {
+ if (glsl_type_is_image(res_type->type) ||
+ glsl_type_is_sampler(res_type->type)) {
vtn_push_value(b, w[2], vtn_value_type_pointer)->pointer = src;
return;
}