From f34fa80f0dcc60751c649605aad8b607e7661ab3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Mon, 11 Aug 2025 11:18:48 -0400 Subject: [PATCH] glsl_to_nir: don't allocate 0-sized arrays for Uniform/ShaderStorageBlocks Reviewed-by: Gert Wollny Acked-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/compiler/glsl/gl_nir_link_uniform_blocks.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/compiler/glsl/gl_nir_link_uniform_blocks.c b/src/compiler/glsl/gl_nir_link_uniform_blocks.c index 797ff9eb814..486d2abdf6e 100644 --- a/src/compiler/glsl/gl_nir_link_uniform_blocks.c +++ b/src/compiler/glsl/gl_nir_link_uniform_blocks.c @@ -1291,8 +1291,11 @@ gl_nir_link_uniform_blocks(const struct gl_constants *consts, prog->data->linked_stages |= 1 << stage; /* Copy ubo blocks to linked shader list */ - linked->Program->sh.UniformBlocks = - ralloc_array(linked, struct gl_uniform_block *, num_ubo_blocks); + linked->Program->sh.UniformBlocks = NULL; + if (num_ubo_blocks) { + linked->Program->sh.UniformBlocks = + ralloc_array(linked, struct gl_uniform_block *, num_ubo_blocks); + } ralloc_steal(linked, ubo_blocks); linked->Program->sh.NumUniformBlocks = num_ubo_blocks; for (unsigned i = 0; i < num_ubo_blocks; i++) { @@ -1307,8 +1310,11 @@ gl_nir_link_uniform_blocks(const struct gl_constants *consts, linked->Program->info.num_ubos = num_ubo_blocks; /* Copy ssbo blocks to linked shader list */ - linked->Program->sh.ShaderStorageBlocks = - ralloc_array(linked, struct gl_uniform_block *, num_ssbo_blocks); + linked->Program->sh.ShaderStorageBlocks = NULL; + if (num_ssbo_blocks) { + linked->Program->sh.ShaderStorageBlocks = + ralloc_array(linked, struct gl_uniform_block *, num_ssbo_blocks); + } ralloc_steal(linked, ssbo_blocks); for (unsigned i = 0; i < num_ssbo_blocks; i++) { linked->Program->sh.ShaderStorageBlocks[i] = &ssbo_blocks[i];