i965: Clean up GLSL compiler option setup

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.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
Jason Ekstrand 2015-09-21 11:18:23 -07:00
parent 6dfc5e28f7
commit 60befc6347
1 changed files with 21 additions and 27 deletions

View File

@ -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;
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_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;
}
compiler->glsl_compiler_options[MESA_SHADER_FRAGMENT].NirOptions = nir_options;
compiler->glsl_compiler_options[MESA_SHADER_COMPUTE].NirOptions = nir_options;
return compiler;
}