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 <apinheiro@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3992>
This commit is contained in:
parent
190a1ed170
commit
e0aa0a839f
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue