summaryrefslogtreecommitdiffstats
path: root/src/glsl/nir/nir_builder.h
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/glsl/nir/nir_builder.h
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/glsl/nir/nir_builder.h')
-rw-r--r--src/glsl/nir/nir_builder.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/glsl/nir/nir_builder.h b/src/glsl/nir/nir_builder.h
index ee6131a089f..cfaaf8e03e3 100644
--- a/src/glsl/nir/nir_builder.h
+++ b/src/glsl/nir/nir_builder.h
@@ -44,6 +44,17 @@ nir_builder_init(nir_builder *build, nir_function_impl *impl)
}
static inline void
+nir_builder_init_simple_shader(nir_builder *build, void *mem_ctx,
+ gl_shader_stage stage,
+ const nir_shader_compiler_options *options)
+{
+ build->shader = nir_shader_create(mem_ctx, stage, options);
+ nir_function *func = nir_function_create(build->shader, "main");
+ build->impl = nir_function_impl_create(func);
+ build->cursor = nir_after_cf_list(&build->impl->body);
+}
+
+static inline void
nir_builder_instr_insert(nir_builder *build, nir_instr *instr)
{
nir_instr_insert(build->cursor, instr);