nir: Add a nir_shader_compiler_options struct pointed to by the shaders.

This will be used to give the optimization passes a chance to customize
behavior for the particular target device.

v2: Rebase to master (no TGSI->NIR present)

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> (v1)
This commit is contained in:
Eric Anholt
2015-02-02 16:13:49 -08:00
parent 4a95be9772
commit f90bb54734
4 changed files with 40 additions and 4 deletions

View File

@@ -124,11 +124,32 @@ private:
}; /* end of anonymous namespace */
static const nir_shader_compiler_options default_options = {
};
nir_shader *
glsl_to_nir(exec_list *ir, _mesa_glsl_parse_state *state,
bool native_integers)
{
nir_shader *shader = nir_shader_create(NULL);
const nir_shader_compiler_options *options;
if (state) {
struct gl_context *ctx = state->ctx;
struct gl_shader_compiler_options *gl_options =
&ctx->Const.ShaderCompilerOptions[state->stage];
if (!gl_options->NirOptions) {
nir_shader_compiler_options *new_options =
rzalloc(ctx, nir_shader_compiler_options);
options = gl_options->NirOptions = new_options;
} else {
options = gl_options->NirOptions;
}
} else {
options = &default_options;
}
nir_shader *shader = nir_shader_create(NULL, options);
if (state) {
shader->num_user_structures = state->num_user_structures;