Reviewed-by: Jordan Justen <jordan.l.jus...@intel.com>
On 2015-09-21 11:24:59, Jason Ekstrand wrote: > The only functional change here is that we now set EmitNoIndirectOutput and > EmitNoIndirectTemp for compute shaders. Compute shaders don't have outputs > per-se and we should have been setting EmitNoIndirectTemp all along. > --- > src/mesa/drivers/dri/i965/brw_shader.cpp | 46 > ++++++++++++++------------------ > 1 file changed, 20 insertions(+), 26 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_shader.cpp > b/src/mesa/drivers/dri/i965/brw_shader.cpp > index eed73fb..c311a03 100644 > --- a/src/mesa/drivers/dri/i965/brw_shader.cpp > +++ b/src/mesa/drivers/dri/i965/brw_shader.cpp > @@ -115,41 +115,35 @@ brw_compiler_create(void *mem_ctx, const struct > brw_device_info *devinfo) > compiler->glsl_compiler_options[i].EmitNoNoise = true; > compiler->glsl_compiler_options[i].EmitNoMainReturn = true; > compiler->glsl_compiler_options[i].EmitNoIndirectInput = true; > - compiler->glsl_compiler_options[i].EmitNoIndirectOutput = > - (i == MESA_SHADER_FRAGMENT); > - compiler->glsl_compiler_options[i].EmitNoIndirectTemp = > - (i == MESA_SHADER_FRAGMENT); > compiler->glsl_compiler_options[i].EmitNoIndirectUniform = false; > compiler->glsl_compiler_options[i].LowerClipDistance = true; > > + bool is_scalar; > + switch (i) { > + case MESA_SHADER_FRAGMENT: > + case MESA_SHADER_COMPUTE: > + is_scalar = true; > + break; > + case MESA_SHADER_VERTEX: > + is_scalar = compiler->scalar_vs; > + break; > + default: > + is_scalar = false; > + break; > + } > + > + compiler->glsl_compiler_options[i].EmitNoIndirectOutput = is_scalar; > + compiler->glsl_compiler_options[i].EmitNoIndirectTemp = is_scalar; > + compiler->glsl_compiler_options[i].OptimizeForAOS = !is_scalar; > + > /* !ARB_gpu_shader5 */ > if (devinfo->gen < 7) > compiler->glsl_compiler_options[i].EmitNoIndirectSampler = true; > - } > > - compiler->glsl_compiler_options[MESA_SHADER_VERTEX].OptimizeForAOS = true; > - compiler->glsl_compiler_options[MESA_SHADER_GEOMETRY].OptimizeForAOS = > true; > - > - if (compiler->scalar_vs || brw_env_var_as_boolean("INTEL_USE_NIR", true)) > { > - if (compiler->scalar_vs) { > - /* If we're using the scalar backend for vertex shaders, we need to > - * configure these accordingly. > - */ > - > compiler->glsl_compiler_options[MESA_SHADER_VERTEX].EmitNoIndirectOutput = > true; > - > compiler->glsl_compiler_options[MESA_SHADER_VERTEX].EmitNoIndirectTemp = true; > - compiler->glsl_compiler_options[MESA_SHADER_VERTEX].OptimizeForAOS > = false; > - } > - > - compiler->glsl_compiler_options[MESA_SHADER_VERTEX].NirOptions = > nir_options; > - } > - > - if (brw_env_var_as_boolean("INTEL_USE_NIR", true)) { > - compiler->glsl_compiler_options[MESA_SHADER_GEOMETRY].NirOptions = > nir_options; > + if (is_scalar || brw_env_var_as_boolean("INTEL_USE_NIR", true)) > + compiler->glsl_compiler_options[i].NirOptions = nir_options; > } > > - compiler->glsl_compiler_options[MESA_SHADER_FRAGMENT].NirOptions = > nir_options; > - compiler->glsl_compiler_options[MESA_SHADER_COMPUTE].NirOptions = > nir_options; > - > return compiler; > } > > -- > 2.5.0.400.gff86faf > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev