From: Jason Ekstrand Date: Mon, 11 Apr 2016 06:43:34 +0000 (-0700) Subject: nir/lower_system_values: Simplify the computation of LocalInvocationIndex X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3aa1a5ee8841fa93da5617630601e8110d428e8a;p=mesa.git nir/lower_system_values: Simplify the computation of LocalInvocationIndex --- diff --git a/src/compiler/nir/nir_lower_system_values.c b/src/compiler/nir/nir_lower_system_values.c index c1cd1398aa1..2d3ccd7d0f9 100644 --- a/src/compiler/nir/nir_lower_system_values.c +++ b/src/compiler/nir/nir_lower_system_values.c @@ -83,7 +83,7 @@ convert_block(nir_block *block, void *void_state) case SYSTEM_VALUE_LOCAL_INVOCATION_INDEX: { /* From the GLSL man page for gl_LocalInvocationIndex: * - * ?The value of gl_LocalInvocationIndex is equal to + * "The value of gl_LocalInvocationIndex is equal to * gl_LocalInvocationID.z * gl_WorkGroupSize.x * * gl_WorkGroupSize.y + gl_LocalInvocationID.y * * gl_WorkGroupSize.x + gl_LocalInvocationID.x" @@ -91,15 +91,14 @@ convert_block(nir_block *block, void *void_state) nir_ssa_def *local_id = nir_load_system_value(b, nir_intrinsic_load_local_invocation_id, 0); - unsigned stride_y = b->shader->info.cs.local_size[0]; - unsigned stride_z = b->shader->info.cs.local_size[0] * - b->shader->info.cs.local_size[1]; + nir_ssa_def *size_x = nir_imm_int(b, b->shader->info.cs.local_size[0]); + nir_ssa_def *size_y = nir_imm_int(b, b->shader->info.cs.local_size[1]); - sysval = nir_iadd(b, nir_imul(b, nir_channel(b, local_id, 2), - nir_imm_int(b, stride_z)), - nir_iadd(b, nir_imul(b, nir_channel(b, local_id, 1), - nir_imm_int(b, stride_y)), - nir_channel(b, local_id, 0))); + sysval = nir_imul(b, nir_channel(b, local_id, 2), + nir_imul(b, size_x, size_y)); + sysval = nir_iadd(b, sysval, + nir_imul(b, nir_channel(b, local_id, 1), size_x)); + sysval = nir_iadd(b, sysval, nir_channel(b, local_id, 0)); break; }