summaryrefslogtreecommitdiffstats
path: root/src/compiler/spirv
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/spirv')
-rw-r--r--src/compiler/spirv/spirv_to_nir.c4
-rw-r--r--src/compiler/spirv/vtn_cfg.c4
-rw-r--r--src/compiler/spirv/vtn_private.h2
-rw-r--r--src/compiler/spirv/vtn_variables.c43
4 files changed, 16 insertions, 37 deletions
diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c
index 363be1c4a05..badbae10bfd 100644
--- a/src/compiler/spirv/spirv_to_nir.c
+++ b/src/compiler/spirv/spirv_to_nir.c
@@ -3742,10 +3742,10 @@ vtn_handle_body_instruction(struct vtn_builder *b, SpvOp opcode,
case SpvOpImageQuerySize: {
struct vtn_pointer *image =
vtn_value(b, w[3], vtn_value_type_pointer)->pointer;
- if (image->mode == vtn_variable_mode_image) {
+ if (glsl_type_is_image(image->type->type)) {
vtn_handle_image(b, opcode, w, count);
} else {
- vtn_assert(image->mode == vtn_variable_mode_sampler);
+ vtn_assert(glsl_type_is_sampler(image->type->type));
vtn_handle_texture(b, opcode, w, count);
}
break;
diff --git a/src/compiler/spirv/vtn_cfg.c b/src/compiler/spirv/vtn_cfg.c
index ad4374112e1..cea40cefc85 100644
--- a/src/compiler/spirv/vtn_cfg.c
+++ b/src/compiler/spirv/vtn_cfg.c
@@ -124,10 +124,10 @@ vtn_cfg_handle_prepass_instruction(struct vtn_builder *b, SpvOp opcode,
without_array = without_array->array_element;
if (glsl_type_is_image(without_array->type)) {
- vtn_var->mode = vtn_variable_mode_image;
+ vtn_var->mode = vtn_variable_mode_uniform;
param->interface_type = without_array->type;
} else if (glsl_type_is_sampler(without_array->type)) {
- vtn_var->mode = vtn_variable_mode_sampler;
+ vtn_var->mode = vtn_variable_mode_uniform;
param->interface_type = without_array->type;
} else {
vtn_var->mode = vtn_variable_mode_param;
diff --git a/src/compiler/spirv/vtn_private.h b/src/compiler/spirv/vtn_private.h
index 98b326a8830..232396775df 100644
--- a/src/compiler/spirv/vtn_private.h
+++ b/src/compiler/spirv/vtn_private.h
@@ -410,8 +410,6 @@ enum vtn_variable_mode {
vtn_variable_mode_ubo,
vtn_variable_mode_ssbo,
vtn_variable_mode_push_constant,
- vtn_variable_mode_image,
- vtn_variable_mode_sampler,
vtn_variable_mode_workgroup,
vtn_variable_mode_input,
vtn_variable_mode_output,
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;
}