diff options
author | Timothy Arceri <[email protected]> | 2020-02-06 12:49:10 +1100 |
---|---|---|
committer | Marge Bot <[email protected]> | 2020-02-28 23:48:46 +0000 |
commit | e0aa0a839f9c168784a1f50013c83877cc876094 (patch) | |
tree | 4e8f8c8eeb35e8394a99ba79a93985489e8f54be /src/compiler | |
parent | 190a1ed170231d6f1db0526a1867a6766ccd4823 (diff) |
glsl: fix resizing of the uniform remap table
In the NIR linker we were not resizing the remap table correctly
for explicit locations when it was needed.
Reviewed-by: Alejandro PiƱeiro <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3992>
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/glsl/gl_nir_link_uniforms.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/compiler/glsl/gl_nir_link_uniforms.c b/src/compiler/glsl/gl_nir_link_uniforms.c index 7196d8b2c1f..7249829c564 100644 --- a/src/compiler/glsl/gl_nir_link_uniforms.c +++ b/src/compiler/glsl/gl_nir_link_uniforms.c @@ -105,16 +105,20 @@ nir_setup_uniform_remap_tables(struct gl_context *ctx, unsigned location = link_util_find_empty_block(prog, &prog->data->UniformStorage[i]); - if (location == -1) { - location = prog->NumUniformRemapTable; + if (location == -1 || location + entries >= prog->NumUniformRemapTable) { + unsigned new_entries = entries; + if (location == -1) + location = prog->NumUniformRemapTable; + else + new_entries = location - prog->NumUniformRemapTable + entries; /* resize remap table to fit new entries */ prog->UniformRemapTable = reralloc(prog, prog->UniformRemapTable, struct gl_uniform_storage *, - prog->NumUniformRemapTable + entries); - prog->NumUniformRemapTable += entries; + prog->NumUniformRemapTable + new_entries); + prog->NumUniformRemapTable += new_entries; } /* set the base location in remap table for the uniform */ |