summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorJason Ekstrand <jason@jlekstrand.net>2020-07-10 15:58:39 -0500
committerEric Engestrom <eric@engestrom.ch>2020-07-22 22:30:04 +0200
commitfd3caf582843dfe4bf70b51d05890affa8830e6c (patch)
treef74aaf2942bb0bf8785f33c3774ee399f917fe42 /src/compiler
parent32d2431a553945ccf44edb419a003c1070eb4694 (diff)
spirv: Allow block-decorated struct types for constants
Whenever a struct type is decorated Block or BufferBlock we turn that into a GLSL_TYPE_INTERFACE. Since these decorations can end up random places, we should allow them for constants. Closes: #3252 Fixes: 9d0ae777dd6 "spirv: Use interface type for block and buffer..." Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5855> (cherry picked from commit 351b5137d71b8dc944bad6dcb83cd93e6d38c44e)
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/nir/nir_print.c1
-rw-r--r--src/compiler/spirv/spirv_to_nir.c3
2 files changed, 3 insertions, 1 deletions
diff --git a/src/compiler/nir/nir_print.c b/src/compiler/nir/nir_print.c
index 6fc8fc9b5c1..d1959d4d5f5 100644
--- a/src/compiler/nir/nir_print.c
+++ b/src/compiler/nir/nir_print.c
@@ -399,6 +399,7 @@ print_constant(nir_constant *c, const struct glsl_type *type, print_state *state
break;
case GLSL_TYPE_STRUCT:
+ case GLSL_TYPE_INTERFACE:
for (i = 0; i < c->num_elements; i++) {
if (i > 0) fprintf(fp, ", ");
fprintf(fp, "{ ");
diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c
index 795f4c8bdcf..ed11b19e6b7 100644
--- a/src/compiler/spirv/spirv_to_nir.c
+++ b/src/compiler/spirv/spirv_to_nir.c
@@ -256,7 +256,8 @@ vtn_const_ssa_value(struct vtn_builder *b, nir_constant *constant,
break;
}
- case GLSL_TYPE_STRUCT: {
+ case GLSL_TYPE_STRUCT:
+ case GLSL_TYPE_INTERFACE: {
unsigned elems = glsl_get_length(val->type);
val->elems = ralloc_array(b, struct vtn_ssa_value *, elems);
for (unsigned i = 0; i < elems; i++) {