From: Mike Blumenkrantz Date: Wed, 2 Dec 2020 19:37:31 +0000 (-0500) Subject: zink: add unsized array type to get_glsl_type_element() handling X-Git-Tag: upstream/21.2.3~6429 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=578329802743c14fc019b2f1d66a79e3d17caec0;p=platform%2Fupstream%2Fmesa.git zink: add unsized array type to get_glsl_type_element() handling Reviewed-by: Adam Jackson Part-of: --- 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);