From 578329802743c14fc019b2f1d66a79e3d17caec0 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 2 Dec 2020 14:37:31 -0500 Subject: [PATCH] zink: add unsized array type to get_glsl_type_element() handling Reviewed-by: Adam Jackson Part-of: --- src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c index 32cc3d7..5183fae 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c +++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c @@ -336,9 +336,14 @@ get_glsl_type(struct ntv_context *ctx, const struct glsl_type *type) glsl_get_vector_elements(type)); if (glsl_type_is_array(type)) { - SpvId ret = spirv_builder_type_array(&ctx->builder, - get_glsl_type(ctx, glsl_get_array_element(type)), - emit_uint_const(ctx, 32, glsl_get_length(type))); + SpvId ret; + SpvId element_type = get_glsl_type(ctx, glsl_get_array_element(type)); + if (glsl_type_is_unsized_array(type)) + ret = spirv_builder_type_runtime_array(&ctx->builder, element_type); + else + ret = spirv_builder_type_array(&ctx->builder, + element_type, + emit_uint_const(ctx, 32, glsl_get_length(type))); uint32_t stride = glsl_get_explicit_stride(type); if (!stride && glsl_type_is_scalar(glsl_get_array_element(type))) { stride = MAX2(glsl_get_bit_size(glsl_get_array_element(type)) / 8, 1); -- 2.7.4