mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
ac/radv: change api to create target machine
This just modifies the API to make it easier to add other flags to target machine creation. Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
076faf8764
commit
9d9f051390
3 changed files with 14 additions and 7 deletions
|
|
@ -118,11 +118,11 @@ static const char *ac_get_llvm_processor_name(enum radeon_family family)
|
|||
}
|
||||
}
|
||||
|
||||
LLVMTargetMachineRef ac_create_target_machine(enum radeon_family family, bool supports_spill)
|
||||
LLVMTargetMachineRef ac_create_target_machine(enum radeon_family family, enum ac_target_machine_options tm_options)
|
||||
{
|
||||
assert(family >= CHIP_TAHITI);
|
||||
|
||||
const char *triple = supports_spill ? "amdgcn-mesa-mesa3d" : "amdgcn--";
|
||||
const char *triple = (tm_options & AC_TM_SUPPORTS_SPILL) ? "amdgcn-mesa-mesa3d" : "amdgcn--";
|
||||
LLVMTargetRef target = ac_get_llvm_target(triple);
|
||||
LLVMTargetMachineRef tm = LLVMCreateTargetMachine(
|
||||
target,
|
||||
|
|
|
|||
|
|
@ -54,7 +54,10 @@ enum ac_func_attr {
|
|||
AC_FUNC_ATTR_LEGACY = (1u << 31),
|
||||
};
|
||||
|
||||
LLVMTargetMachineRef ac_create_target_machine(enum radeon_family family, bool supports_spill);
|
||||
enum ac_target_machine_options {
|
||||
AC_TM_SUPPORTS_SPILL = (1 << 0),
|
||||
};
|
||||
LLVMTargetMachineRef ac_create_target_machine(enum radeon_family family, enum ac_target_machine_options tm_options);
|
||||
|
||||
void ac_add_attr_dereferenceable(LLVMValueRef val, uint64_t bytes);
|
||||
bool ac_is_sgpr_param(LLVMValueRef param);
|
||||
|
|
|
|||
|
|
@ -460,12 +460,14 @@ static struct radv_shader_variant *radv_shader_variant_create(struct radv_device
|
|||
options.key = *key;
|
||||
|
||||
struct ac_shader_binary binary;
|
||||
|
||||
enum ac_target_machine_options tm_options = 0;
|
||||
options.unsafe_math = !!(device->debug_flags & RADV_DEBUG_UNSAFE_MATH);
|
||||
options.family = chip_family;
|
||||
options.chip_class = device->physical_device->rad_info.chip_class;
|
||||
options.supports_spill = device->llvm_supports_spill;
|
||||
tm = ac_create_target_machine(chip_family, options.supports_spill);
|
||||
if (options.supports_spill)
|
||||
tm_options |= AC_TM_SUPPORTS_SPILL;
|
||||
tm = ac_create_target_machine(chip_family, tm_options);
|
||||
ac_compile_nir_shader(tm, &binary, &variant->config,
|
||||
&variant->info, shader, &options, dump);
|
||||
LLVMDisposeTargetMachine(tm);
|
||||
|
|
@ -501,10 +503,12 @@ radv_pipeline_create_gs_copy_shader(struct radv_pipeline *pipeline,
|
|||
|
||||
struct ac_nir_compiler_options options = {0};
|
||||
struct ac_shader_binary binary;
|
||||
enum ac_target_machine_options tm_options = 0;
|
||||
options.family = chip_family;
|
||||
options.chip_class = pipeline->device->physical_device->rad_info.chip_class;
|
||||
options.supports_spill = pipeline->device->llvm_supports_spill;
|
||||
tm = ac_create_target_machine(chip_family, options.supports_spill);
|
||||
if (options.supports_spill)
|
||||
tm_options |= AC_TM_SUPPORTS_SPILL;
|
||||
tm = ac_create_target_machine(chip_family, tm_options);
|
||||
ac_create_gs_copy_shader(tm, nir, &binary, &variant->config, &variant->info, &options, dump_shader);
|
||||
LLVMDisposeTargetMachine(tm);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue