[Mesa-dev] [PATCH 14/14] mesa: remove gl_shader_compiler_options::EmitNoNoise

Nicolai Hähnle nhaehnle at gmail.com
Tue Oct 18 09:37:08 UTC 2016


Patches 5-12, 14 are

Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

Those inline-explosion tests have been bugging me as well, but 
realistically speaking, the compiler needs to be at least robust enough 
to just not blow up and instead refuse compilation before any work on 
proper subroutines.

Cheers,
Nicolai

On 17.10.2016 15:39, Marek Olšák wrote:
> From: Marek Olšák <marek.olsak at amd.com>
>
> it's always true
> ---
>  src/mesa/drivers/dri/i915/i915_context.c | 1 -
>  src/mesa/drivers/dri/i965/brw_compiler.c | 1 -
>  src/mesa/main/mtypes.h                   | 1 -
>  src/mesa/program/ir_to_mesa.cpp          | 3 +--
>  src/mesa/state_tracker/st_extensions.c   | 2 --
>  5 files changed, 1 insertion(+), 7 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i915/i915_context.c b/src/mesa/drivers/dri/i915/i915_context.c
> index a7604a1..05a2ad1 100644
> --- a/src/mesa/drivers/dri/i915/i915_context.c
> +++ b/src/mesa/drivers/dri/i915/i915_context.c
> @@ -253,21 +253,20 @@ i915CreateContext(int api,
>
>     /* FINISHME: Are there other options that should be enabled for software
>      * FINISHME: vertex shaders?
>      */
>     ctx->Const.ShaderCompilerOptions[MESA_SHADER_VERTEX].EmitNoIndirectSampler =
>        true;
>
>     struct gl_shader_compiler_options *const fs_options =
>        & ctx->Const.ShaderCompilerOptions[MESA_SHADER_FRAGMENT];
>     fs_options->MaxIfDepth = 0;
> -   fs_options->EmitNoNoise = true;
>     fs_options->EmitNoPow = true;
>     fs_options->EmitNoIndirectInput = true;
>     fs_options->EmitNoIndirectOutput = true;
>     fs_options->EmitNoIndirectUniform = true;
>     fs_options->EmitNoIndirectTemp = true;
>     fs_options->EmitNoIndirectSampler = true;
>
>     ctx->Const.MaxDrawBuffers = 1;
>     ctx->Const.QueryCounterBits.SamplesPassed = 0;
>
> diff --git a/src/mesa/drivers/dri/i965/brw_compiler.c b/src/mesa/drivers/dri/i965/brw_compiler.c
> index 27cbd40..4fcc51b 100644
> --- a/src/mesa/drivers/dri/i965/brw_compiler.c
> +++ b/src/mesa/drivers/dri/i965/brw_compiler.c
> @@ -116,21 +116,20 @@ brw_compiler_create(void *mem_ctx, const struct gen_device_info *devinfo)
>        devinfo->gen >= 8 && env_var_as_boolean("INTEL_SCALAR_GS", true);
>     compiler->scalar_stage[MESA_SHADER_FRAGMENT] = true;
>     compiler->scalar_stage[MESA_SHADER_COMPUTE] = true;
>
>     /* We want the GLSL compiler to emit code that uses condition codes */
>     for (int i = 0; i < MESA_SHADER_STAGES; i++) {
>        compiler->glsl_compiler_options[i].MaxUnrollIterations = 32;
>        compiler->glsl_compiler_options[i].MaxIfDepth =
>           devinfo->gen < 6 ? 16 : UINT_MAX;
>
> -      compiler->glsl_compiler_options[i].EmitNoNoise = true;
>        compiler->glsl_compiler_options[i].EmitNoIndirectInput = true;
>        compiler->glsl_compiler_options[i].EmitNoIndirectUniform = false;
>        compiler->glsl_compiler_options[i].LowerCombinedClipCullDistance = true;
>
>        bool is_scalar = compiler->scalar_stage[i];
>
>        compiler->glsl_compiler_options[i].EmitNoIndirectOutput = is_scalar;
>        compiler->glsl_compiler_options[i].EmitNoIndirectTemp = is_scalar;
>        compiler->glsl_compiler_options[i].OptimizeForAOS = !is_scalar;
>
> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
> index 701f055..f2ecd6e 100644
> --- a/src/mesa/main/mtypes.h
> +++ b/src/mesa/main/mtypes.h
> @@ -2990,21 +2990,20 @@ struct gl_pipeline_shader_state
>  };
>
>  /**
>   * Compiler options for a single GLSL shaders type
>   */
>  struct gl_shader_compiler_options
>  {
>     /** Driver-selectable options: */
>     GLboolean EmitNoLoops;
>     GLboolean EmitNoCont;                  /**< Emit CONT opcode? */
> -   GLboolean EmitNoNoise;                 /**< Emit NOISE opcodes? */
>     GLboolean EmitNoPow;                   /**< Emit POW opcodes? */
>     GLboolean EmitNoSat;                   /**< Emit SAT opcodes? */
>     GLboolean LowerCombinedClipCullDistance; /** Lower gl_ClipDistance and
>                                                * gl_CullDistance together from
>                                                * float[8] to vec4[2]
>                                                **/
>
>     /**
>      * \name Forms of indirect addressing the driver cannot do.
>      */
> diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp
> index d0e83cc..be10432 100644
> --- a/src/mesa/program/ir_to_mesa.cpp
> +++ b/src/mesa/program/ir_to_mesa.cpp
> @@ -2989,22 +2989,21 @@ _mesa_ir_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
>                                             options, ctx->Const.NativeIntegers)
>  	   || progress;
>
>  	 progress = lower_quadop_vector(ir, true) || progress;
>
>  	 if (options->MaxIfDepth == 0)
>  	    progress = lower_discard(ir) || progress;
>
>  	 progress = lower_if_to_cond_assign(ir, options->MaxIfDepth) || progress;
>
> -	 if (options->EmitNoNoise)
> -	    progress = lower_noise(ir) || progress;
> +         progress = lower_noise(ir) || progress;
>
>  	 /* If there are forms of indirect addressing that the driver
>  	  * cannot handle, perform the lowering pass.
>  	  */
>  	 if (options->EmitNoIndirectInput || options->EmitNoIndirectOutput
>  	     || options->EmitNoIndirectTemp || options->EmitNoIndirectUniform)
>  	   progress =
>  	     lower_variable_index_to_cond_assign(prog->_LinkedShaders[i]->Stage, ir,
>  						 options->EmitNoIndirectInput,
>  						 options->EmitNoIndirectOutput,
> diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
> index 238e279..6cc7ca9 100644
> --- a/src/mesa/state_tracker/st_extensions.c
> +++ b/src/mesa/state_tracker/st_extensions.c
> @@ -256,22 +256,20 @@ void st_init_limits(struct pipe_screen *screen,
>        pc->MaxLocalParams = MIN2(pc->MaxParameters, MAX_PROGRAM_LOCAL_PARAMS);
>        pc->MaxEnvParams = MIN2(pc->MaxParameters, MAX_PROGRAM_ENV_PARAMS);
>
>        if (screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_INTEGERS)) {
>           pc->LowInt.RangeMin = 31;
>           pc->LowInt.RangeMax = 30;
>           pc->LowInt.Precision = 0;
>           pc->MediumInt = pc->HighInt = pc->LowInt;
>        }
>
> -      options->EmitNoNoise = TRUE;
> -
>        /* TODO: make these more fine-grained if anyone needs it */
>        options->MaxIfDepth =
>           screen->get_shader_param(screen, sh,
>                                    PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH);
>        options->EmitNoLoops =
>           !screen->get_shader_param(screen, sh,
>                                     PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH);
>
>        options->EmitNoCont =
>           !screen->get_shader_param(screen, sh,
>


More information about the mesa-dev mailing list