diff options
author | Nicolai Hähnle <nicolai.haehnle@amd.com> | 2017-05-19 18:37:49 +0200 |
---|---|---|
committer | Nicolai Hähnle <nicolai.haehnle@amd.com> | 2017-07-05 12:33:49 +0200 |
commit | 966870ed56d668934355408eaa8262e0e9644fe5 (patch) | |
tree | 28ec7f56962dae8c3734e4d404f07a1936a2d80c | |
parent | d2bf709776209acf840d0d8cf1b30774a98e72e5 (diff) |
ac/nir: use ac_shader_abi::emit_outputs
-rw-r--r-- | src/amd/common/ac_nir_to_llvm.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c index 1ef7460f6c..9456b8d7e6 100644 --- a/src/amd/common/ac_nir_to_llvm.c +++ b/src/amd/common/ac_nir_to_llvm.c @@ -185,6 +185,13 @@ struct nir_to_llvm_context { uint64_t tess_patch_outputs_written; }; +static inline struct nir_to_llvm_context * +nir_to_llvm_context_from_abi(struct ac_shader_abi *abi) +{ + struct nir_to_llvm_context *ctx = NULL; + return container_of(abi, ctx, abi); +} + static LLVMValueRef get_sampler_desc(struct nir_to_llvm_context *ctx, const nir_deref_var *deref, enum desc_type desc_type); @@ -5802,8 +5809,11 @@ emit_gs_epilogue(struct nir_to_llvm_context *ctx) } static void -handle_shader_outputs_post(struct nir_to_llvm_context *ctx) +handle_shader_outputs_post(struct ac_shader_abi *abi, unsigned max_outputs, + LLVMValueRef *addrs) { + struct nir_to_llvm_context *ctx = nir_to_llvm_context_from_abi(abi); + switch (ctx->stage) { case MESA_SHADER_VERTEX: if (ctx->options->key.vs.as_ls) @@ -5985,7 +5995,8 @@ void ac_nir_translate(struct ac_llvm_context *ac, struct ac_shader_abi *abi, visit_cf_list(&ctx, &func->impl->body); phi_post_pass(&ctx); - handle_shader_outputs_post(nctx); + ctx.abi->emit_outputs(ctx.abi, RADEON_LLVM_MAX_OUTPUTS, + ctx.outputs); free(ctx.locals); ralloc_free(ctx.defs); @@ -6081,6 +6092,7 @@ LLVMModuleRef ac_translate_nir_to_llvm(LLVMTargetMachineRef tm, handle_fs_inputs_pre(&ctx, nir); ctx.abi.inputs = &ctx.inputs[0]; + ctx.abi.emit_outputs = handle_shader_outputs_post; ac_nir_translate(&ctx.ac, &ctx.abi, nir, &ctx); |