I think we still want to skip the lowering of SYSTEM_VALUE_LOCAL_GROUP_SIZE when that flag is set. I think this works, but we'll end up deleting one load_local_group_size intrinsic and replacing it with another which is pointless.
--Jason On Mon, Nov 12, 2018 at 4:02 PM Plamena Manolova < plamena.n.manol...@gmail.com> wrote: > 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.manol...@gmail.com> > --- > src/compiler/nir/nir_lower_system_values.c | 24 ++++++++++++++++++------ > 1 file changed, 18 insertions(+), 6 deletions(-) > > diff --git a/src/compiler/nir/nir_lower_system_values.c > b/src/compiler/nir/nir_lower_system_values.c > index bde7eb1180..fbc4057357 100644 > --- a/src/compiler/nir/nir_lower_system_values.c > +++ b/src/compiler/nir/nir_lower_system_values.c > @@ -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 > -- > 2.11.0 > >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev