From cc571a367ed7b9aa7379d3b58b115de5e1c6dcea Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Fri, 7 Sep 2012 09:12:51 -0400 Subject: radeonsi: Pass shader type to the compiler MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Michel Dänzer --- src/gallium/drivers/radeonsi/radeonsi_shader.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/gallium/drivers/radeonsi') diff --git a/src/gallium/drivers/radeonsi/radeonsi_shader.c b/src/gallium/drivers/radeonsi/radeonsi_shader.c index 9fc344607cb..0994fac6f21 100644 --- a/src/gallium/drivers/radeonsi/radeonsi_shader.c +++ b/src/gallium/drivers/radeonsi/radeonsi_shader.c @@ -476,6 +476,17 @@ static void si_llvm_init_export_args(struct lp_build_tgsi_context *bld_base, * stage. */ } +static void si_llvm_emit_prologue(struct lp_build_tgsi_context *bld_base) +{ + struct si_shader_context *si_shader_ctx = si_shader_context(bld_base); + struct gallivm_state *gallivm = bld_base->base.gallivm; + lp_build_intrinsic_unary(gallivm->builder, + "llvm.AMDGPU.shader.type", + LLVMVoidTypeInContext(gallivm->context), + lp_build_const_int32(gallivm, si_shader_ctx->type)); +} + + /* XXX: This is partially implemented for VS only at this point. It is not complete */ static void si_llvm_emit_epilogue(struct lp_build_tgsi_context * bld_base) { @@ -705,6 +716,7 @@ int si_pipe_shader_create( tgsi_scan_shader(sel->tokens, &shader_info); bld_base->info = &shader_info; bld_base->emit_fetch_funcs[TGSI_FILE_CONSTANT] = fetch_constant; + bld_base->emit_prologue = si_llvm_emit_prologue; bld_base->emit_epilogue = si_llvm_emit_epilogue; bld_base->op_actions[TGSI_OPCODE_TEX] = tex_action; -- cgit v1.2.1