Tapani Pälli <[email protected]> writes: > Patch provides new compiler option for backend to force unroll loops > that have non-constant expression indexing on sampler arrays. > > This makes sure that we can never end up with a shader that uses loop > induction variable as sampler array index but does not unroll because > of having too much instructions. This would not work without dynamic > indexing support. > > Signed-off-by: Tapani Pälli <[email protected]> > --- > src/glsl/loop_unroll.cpp | 10 ++++++++++ > src/mesa/main/mtypes.h | 6 ++++++ > 2 files changed, 16 insertions(+) > > diff --git a/src/glsl/loop_unroll.cpp b/src/glsl/loop_unroll.cpp > index 635e1dd..b9de51d 100644 > --- a/src/glsl/loop_unroll.cpp > +++ b/src/glsl/loop_unroll.cpp > @@ -100,6 +100,16 @@ public: > > virtual ir_visitor_status visit_enter(ir_dereference_array *ir) > { > + /* Force unroll in case of dynamic indexing with sampler arrays. */ > + if (options->UnrollSamplerArrayDynamicIndexing) { > + if ((ir->array->type->is_array() && > + ir->array->type->contains_sampler()) && > + !ir->array_index->constant_expression_value()) { > + unsupported_variable_indexing = true; > + return visit_continue; > + } > + } > + > /* Check for arrays variably-indexed by a loop induction variable. > * Unrolling the loop may convert that access into constant-indexing. > * > diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h > index 1598e2c..61d1dfb 100644 > --- a/src/mesa/main/mtypes.h > +++ b/src/mesa/main/mtypes.h > @@ -2896,6 +2896,12 @@ struct gl_shader_compiler_options > */ > GLboolean OptimizeForAOS; > > + /** > + * Unroll any loops with dynamic indexing to sampler array. This can be > used > + * to force loop unroll from the backend for GLSL <= 1.20 and GLSL ES > 1.00. > + */ > + GLboolean UnrollSamplerArrayDynamicIndexing; > +
Maybe it would be more consistent with the EmitNoIndirectSomething flags above to name this flag EmitNoIndirectSampler? Other than that looks okay to me: Reviewed-by: Francisco Jerez <[email protected]> > const struct nir_shader_compiler_options *NirOptions; > }; > > -- > 2.1.0
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
