On Thu, Jul 23, 2015 at 3:16 AM, Eduardo Lima Mitev <el...@igalia.com> wrote: > The NIR->vec4 pass will be activated if both the following conditions are met: > > * INTEL_USE_NIR environment variable is defined and is positive (1 or true) > * The stage is vertex shader (support for geometry shaders and > ARB_vertex_program will be added later). > --- > src/mesa/drivers/dri/i965/brw_shader.cpp | 14 ++++++++------ > src/mesa/drivers/dri/i965/brw_vec4.cpp | 18 ++++++++++++++---- > 2 files changed, 22 insertions(+), 10 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_shader.cpp > b/src/mesa/drivers/dri/i965/brw_shader.cpp > index 9d60543..cb04d8a 100644 > --- a/src/mesa/drivers/dri/i965/brw_shader.cpp > +++ b/src/mesa/drivers/dri/i965/brw_shader.cpp > @@ -122,12 +122,14 @@ brw_compiler_create(void *mem_ctx, const struct > brw_device_info *devinfo) > compiler->glsl_compiler_options[MESA_SHADER_VERTEX].OptimizeForAOS = true; > compiler->glsl_compiler_options[MESA_SHADER_GEOMETRY].OptimizeForAOS = > 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; > + if (compiler->scalar_vs || brw_env_var_as_boolean("INTEL_USE_NIR", > false)) { > + 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; > diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp > b/src/mesa/drivers/dri/i965/brw_vec4.cpp > index 53270fb..ce04f1b 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp > +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp > @@ -1709,6 +1709,9 @@ vec4_visitor::emit_shader_time_write(int > shader_time_subindex, src_reg value) > bool > vec4_visitor::run(gl_clip_plane *clip_planes) > { > + bool use_vec4_nir = > + compiler->glsl_compiler_options[MESA_SHADER_VERTEX].NirOptions != NULL; > + > sanity_param_count = prog->Parameters->NumParameters; > > if (shader_time_index >= 0) > @@ -1718,11 +1721,18 @@ vec4_visitor::run(gl_clip_plane *clip_planes) > > emit_prolog(); > > - /* Generate VS IR for main(). (the visitor only descends into > - * functions called "main"). > - */ > if (shader) { > - visit_instructions(shader->base.ir); > + if (use_vec4_nir) {
We could put the compiler_options[].NirOptions check here. I don't care too much though. > + assert(prog->nir != NULL); > + emit_nir_code(); > + if (failed) > + return false; > + } else { > + /* Generate VS IR for main(). (the visitor only descends into > + * functions called "main"). > + */ > + visit_instructions(shader->base.ir); > + } > } else { > emit_program_code(); > } > -- > 2.1.4 > > _______________________________________________ > 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