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

```Patches 5-12, 14 are

Reviewed-by: Nicolai Hähnle <nicolai.haeh...@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.ol...@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
--- 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
*/
true;

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);

/* 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
*/
{
/** 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
options, ctx->Const.NativeIntegers)
|| progress;

progress = lower_quadop_vector(ir, true) || progress;

if (options->MaxIfDepth == 0)

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 =

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);

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 =
options->EmitNoLoops =
```_______________________________________________