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);