zink: add unsized array type to get_glsl_type_element() handling

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9624>
This commit is contained in:
Mike Blumenkrantz 2020-12-02 14:37:31 -05:00 committed by Marge Bot
parent 6399906843
commit 5783298027

View file

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