glsl_to_nir: don't allocate 0-sized arrays for Uniform/ShaderStorageBlocks

Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36728>
This commit is contained in:
Marek Olšák
2025-08-11 11:18:48 -04:00
committed by Marge Bot
parent 2ab6b275bd
commit f34fa80f0d
+10 -4
View File
@@ -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];