diff --git a/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.c b/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.c index a413c551d06..1254f4cd19b 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.c +++ b/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.c @@ -1086,6 +1086,17 @@ spirv_builder_type_matrix(struct spirv_builder *b, SpvId component_type, return get_type_def(b, SpvOpTypeMatrix, args, ARRAY_SIZE(args)); } +SpvId +spirv_builder_type_runtime_array(struct spirv_builder *b, SpvId component_type) +{ + SpvId type = spirv_builder_new_id(b); + spirv_buffer_prepare(&b->types_const_defs, b->mem_ctx, 3); + spirv_buffer_emit_word(&b->types_const_defs, SpvOpTypeRuntimeArray | (3 << 16)); + spirv_buffer_emit_word(&b->types_const_defs, type); + spirv_buffer_emit_word(&b->types_const_defs, component_type); + return type; +} + SpvId spirv_builder_type_array(struct spirv_builder *b, SpvId component_type, SpvId length) diff --git a/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.h b/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.h index 632f196733f..6f0281212a7 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.h +++ b/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.h @@ -336,6 +336,9 @@ SpvId spirv_builder_type_matrix(struct spirv_builder *b, SpvId component_type, unsigned component_count); +SpvId +spirv_builder_type_runtime_array(struct spirv_builder *b, SpvId component_type); + SpvId spirv_builder_type_array(struct spirv_builder *b, SpvId component_type, SpvId length);