mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 18:18:06 +02:00
nir: Don't lower the local work group size if it's variable.
If the local work group size is variable it won't be available at compile time so we can't lower it in nir_lower_system_values(). Signed-off-by: Plamena Manolova <plamena.n.manolova@gmail.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Karol Herbst <kherbst@redhat.com>
This commit is contained in:
parent
efb1ccadca
commit
c5f3013cba
1 changed files with 18 additions and 6 deletions
|
|
@ -31,12 +31,24 @@
|
|||
static nir_ssa_def*
|
||||
build_local_group_size(nir_builder *b)
|
||||
{
|
||||
nir_const_value local_size;
|
||||
memset(&local_size, 0, sizeof(local_size));
|
||||
local_size.u32[0] = b->shader->info.cs.local_size[0];
|
||||
local_size.u32[1] = b->shader->info.cs.local_size[1];
|
||||
local_size.u32[2] = b->shader->info.cs.local_size[2];
|
||||
return nir_build_imm(b, 3, 32, local_size);
|
||||
nir_ssa_def *local_size;
|
||||
|
||||
/*
|
||||
* If the local work group size is variable it can't be lowered at this
|
||||
* point, but its intrinsic can still be used.
|
||||
*/
|
||||
if (b->shader->info.cs.local_size_variable) {
|
||||
local_size = nir_load_local_group_size(b);
|
||||
} else {
|
||||
nir_const_value local_size_const;
|
||||
memset(&local_size_const, 0, sizeof(local_size_const));
|
||||
local_size_const.u32[0] = b->shader->info.cs.local_size[0];
|
||||
local_size_const.u32[1] = b->shader->info.cs.local_size[1];
|
||||
local_size_const.u32[2] = b->shader->info.cs.local_size[2];
|
||||
local_size = nir_build_imm(b, 3, 32, local_size_const);
|
||||
}
|
||||
|
||||
return local_size;
|
||||
}
|
||||
|
||||
static bool
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue