diff options
author | Dave Airlie <[email protected]> | 2017-01-17 08:41:03 +1000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2017-01-18 06:21:05 +1000 |
commit | 788610081198260d6974f86ed62a4b9aaf59b8c4 (patch) | |
tree | bb988bee2de033c56244ad25aa98ce28b8ba9953 /src/amd/common | |
parent | 5dadd7ca27da6cd5bbac95c8e09130ec4a384e2b (diff) |
radv/ac: split part of llvm compile into a separate function
This is needed to have common code for gs copy shader emission.
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Reviewed-by: Edward O'Callaghan <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/amd/common')
-rw-r--r-- | src/amd/common/ac_nir_to_llvm.c | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c index 6d98fde11bf..26b87e8782b 100644 --- a/src/amd/common/ac_nir_to_llvm.c +++ b/src/amd/common/ac_nir_to_llvm.c @@ -4557,17 +4557,14 @@ out: return retval; } -void ac_compile_nir_shader(LLVMTargetMachineRef tm, - struct ac_shader_binary *binary, - struct ac_shader_config *config, - struct ac_shader_variant_info *shader_info, - struct nir_shader *nir, - const struct ac_nir_compiler_options *options, - bool dump_shader) +static void ac_compile_llvm_module(LLVMTargetMachineRef tm, + LLVMModuleRef llvm_module, + struct ac_shader_binary *binary, + struct ac_shader_config *config, + struct ac_shader_variant_info *shader_info, + gl_shader_stage stage, + bool dump_shader) { - - LLVMModuleRef llvm_module = ac_translate_nir_to_llvm(tm, nir, shader_info, - options); if (dump_shader) LLVMDumpModule(llvm_module); @@ -4586,7 +4583,7 @@ void ac_compile_nir_shader(LLVMTargetMachineRef tm, LLVMDisposeModule(llvm_module); LLVMContextDispose(ctx); - if (nir->stage == MESA_SHADER_FRAGMENT) { + if (stage == MESA_SHADER_FRAGMENT) { shader_info->num_input_vgprs = 0; if (G_0286CC_PERSP_SAMPLE_ENA(config->spi_ps_input_addr)) shader_info->num_input_vgprs += 2; @@ -4626,7 +4623,21 @@ void ac_compile_nir_shader(LLVMTargetMachineRef tm, /* +3 for scratch wave offset and VCC */ config->num_sgprs = MAX2(config->num_sgprs, shader_info->num_input_sgprs + 3); +} + +void ac_compile_nir_shader(LLVMTargetMachineRef tm, + struct ac_shader_binary *binary, + struct ac_shader_config *config, + struct ac_shader_variant_info *shader_info, + struct nir_shader *nir, + const struct ac_nir_compiler_options *options, + bool dump_shader) +{ + + LLVMModuleRef llvm_module = ac_translate_nir_to_llvm(tm, nir, shader_info, + options); + ac_compile_llvm_module(tm, llvm_module, binary, config, shader_info, nir->stage, dump_shader); switch (nir->stage) { case MESA_SHADER_COMPUTE: for (int i = 0; i < 3; ++i) |