Commit c5f3013c authored by Plamena Manolova's avatar Plamena Manolova

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's avatarPlamena Manolova <plamena.n.manolova@gmail.com>
Reviewed-by: Jason Ekstrand's avatarJason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Karol Herbst's avatarKarol Herbst <kherbst@redhat.com>
parent efb1ccad
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment