[Mesa-dev] [PATCH] i965/compiler: Clean up GLSL compiler option setup

Jordan Justen jordan.l.justen at intel.com
Mon Sep 21 12:21:12 PDT 2015


Reviewed-by: Jordan Justen <jordan.l.justen at 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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list