summaryrefslogtreecommitdiffstats
path: root/src/mesa/program
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2015-12-29 09:56:44 -0800
committerJason Ekstrand <[email protected]>2015-12-29 13:44:05 -0800
commit0119773ffca586c9e51fa19248c3dfaab0500b25 (patch)
tree8a2fc7dd315a956146e69c41115cf7e17a5b1e2d /src/mesa/program
parent55ca5b0e74dff2b2f7df57af332b73e2a1b7d081 (diff)
nir/builder: Add an init function that creates a simple shader for you
A hugely common case when using nir_builder is to have a shader with a single function called main. This adds a helper that gives you just that. This commit also makes us use it in the NIR control-flow unit tests as well as tgsi_to_nir and prog_to_nir. Reviewed-by: Eric Anholt <[email protected]> Reviewed-by: Connor Abbott <[email protected]> Acked-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/mesa/program')
-rw-r--r--src/mesa/program/prog_to_nir.c13
1 files changed, 3 insertions, 10 deletions
diff --git a/src/mesa/program/prog_to_nir.c b/src/mesa/program/prog_to_nir.c
index c5d4f273fc8..ce6f6997d2f 100644
--- a/src/mesa/program/prog_to_nir.c
+++ b/src/mesa/program/prog_to_nir.c
@@ -1082,11 +1082,11 @@ prog_to_nir(const struct gl_program *prog,
c = rzalloc(NULL, struct ptn_compile);
if (!c)
return NULL;
- s = nir_shader_create(NULL, stage, options);
- if (!s)
- goto fail;
c->prog = prog;
+ nir_builder_init_simple_shader(&c->build, NULL, stage, options);
+ s = c->build.shader;
+
if (prog->Parameters->NumParameters > 0) {
c->parameters = rzalloc(s, nir_variable);
c->parameters->type =
@@ -1097,13 +1097,6 @@ prog_to_nir(const struct gl_program *prog,
exec_list_push_tail(&s->uniforms, &c->parameters->node);
}
- nir_function *func = nir_function_create(s, "main");
- nir_function_impl *impl = nir_function_impl_create(func);
-
- c->build.shader = s;
- c->build.impl = impl;
- c->build.cursor = nir_after_cf_list(&impl->body);
-
setup_registers_and_variables(c);
if (unlikely(c->error))
goto fail;