On Wed, Jul 11, 2018 at 2:29 PM Karol Herbst <[email protected]> wrote:
> we already have this code duplicated and we will need it for the global > group size as well > > Signed-off-by: Karol Herbst <[email protected]> > --- > src/compiler/nir/nir_lower_system_values.c | 29 +++++++++++----------- > 1 file changed, 14 insertions(+), 15 deletions(-) > > diff --git a/src/compiler/nir/nir_lower_system_values.c > b/src/compiler/nir/nir_lower_system_values.c > index f315b7ae96f..2a1be8fdd45 100644 > --- a/src/compiler/nir/nir_lower_system_values.c > +++ b/src/compiler/nir/nir_lower_system_values.c > @@ -28,6 +28,17 @@ > #include "nir.h" > #include "nir_builder.h" > > +static nir_ssa_def* > +handle_local_group_size(nir_builder *b) > How about build_local_group_size_imm or something like that? "handle" is a bit of an odd name. > +{ > + 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); > +} > + > static bool > convert_block(nir_block *block, nir_builder *b) > { > @@ -66,18 +77,11 @@ convert_block(nir_block *block, nir_builder *b) > * "The value of gl_GlobalInvocationID is equal to > * gl_WorkGroupID * gl_WorkGroupSize + gl_LocalInvocationID" > */ > - > - 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]; > - > + nir_ssa_def *group_size = handle_local_group_size(b); > nir_ssa_def *group_id = nir_load_work_group_id(b); > nir_ssa_def *local_id = nir_load_local_invocation_id(b); > > - sysval = nir_iadd(b, nir_imul(b, group_id, > - nir_build_imm(b, 3, 32, > local_size)), > + sysval = nir_iadd(b, nir_imul(b, group_id, group_size), > local_id); > Can this fit on one line now? Not that it matters much. 4 and 5 are Reviewed-by: Jason Ekstrand <[email protected]> > break; > } > @@ -112,12 +116,7 @@ convert_block(nir_block *block, nir_builder *b) > } > > case SYSTEM_VALUE_LOCAL_GROUP_SIZE: { > - 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]; > - sysval = nir_build_imm(b, 3, 32, local_size); > + sysval = handle_local_group_size(b); > break; > } > > -- > 2.17.1 > > _______________________________________________ > mesa-dev mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
