aco: Use radv_shader_args in aco_compile_shader()
authorConnor Abbott <cwabbott0@gmail.com>
Mon, 11 Nov 2019 17:27:25 +0000 (18:27 +0100)
committerConnor Abbott <cwabbott0@gmail.com>
Mon, 25 Nov 2019 13:17:51 +0000 (14:17 +0100)
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
src/amd/compiler/aco_interface.cpp
src/amd/compiler/aco_interface.h
src/amd/vulkan/radv_shader.c

index ad18101eb8e434f8ae5936cb7b9a71a1179729b2..fe22b9647250f60150e7e99f43c1d24a96bf1e1a 100644 (file)
@@ -24,6 +24,7 @@
 #include "aco_interface.h"
 #include "aco_ir.h"
 #include "vulkan/radv_shader.h"
+#include "vulkan/radv_shader_args.h"
 #include "c11/threads.h"
 #include "util/debug.h"
 
@@ -56,8 +57,7 @@ static void init()
 void aco_compile_shader(unsigned shader_count,
                         struct nir_shader *const *shaders,
                         struct radv_shader_binary **binary,
-                        struct radv_shader_info *info,
-                        struct radv_nir_compiler_options *options)
+                        struct radv_shader_args *args)
 {
    call_once(&aco::init_once_flag, aco::init);
 
@@ -65,8 +65,9 @@ void aco_compile_shader(unsigned shader_count,
    std::unique_ptr<aco::Program> program{new aco::Program};
 
    /* Instruction Selection */
-   aco::select_program(program.get(), shader_count, shaders, &config, info, options);
-   if (options->dump_preoptir) {
+   aco::select_program(program.get(), shader_count, shaders, &config,
+                       args->shader_info, args->options);
+   if (args->options->dump_preoptir) {
       std::cerr << "After Instruction Selection:\n";
       aco_print_program(program.get(), stderr);
    }
@@ -88,15 +89,15 @@ void aco_compile_shader(unsigned shader_count,
    aco::insert_exec_mask(program.get());
    aco::validate(program.get(), stderr);
 
-   aco::live live_vars = aco::live_var_analysis(program.get(), options);
-   aco::spill(program.get(), live_vars, options);
+   aco::live live_vars = aco::live_var_analysis(program.get(), args->options);
+   aco::spill(program.get(), live_vars, args->options);
 
    //std::cerr << "Before Schedule:\n";
    //aco_print_program(program.get(), stderr);
    aco::schedule_program(program.get(), live_vars);
 
    std::string llvm_ir;
-   if (options->record_ir) {
+   if (args->options->record_ir) {
       char *data = NULL;
       size_t size = 0;
       FILE *f = open_memstream(&data, &size);
@@ -112,12 +113,12 @@ void aco_compile_shader(unsigned shader_count,
 
    /* Register Allocation */
    aco::register_allocation(program.get(), live_vars.live_out);
-   if (options->dump_shader) {
+   if (args->options->dump_shader) {
       std::cerr << "After RA:\n";
       aco_print_program(program.get(), stderr);
    }
 
-   if (aco::validate_ra(program.get(), options, stderr)) {
+   if (aco::validate_ra(program.get(), args->options, stderr)) {
       std::cerr << "Program after RA validation failure:\n";
       aco_print_program(program.get(), stderr);
       abort();
@@ -140,7 +141,7 @@ void aco_compile_shader(unsigned shader_count,
    std::vector<uint32_t> code;
    unsigned exec_size = aco::emit_program(program.get(), code);
 
-   bool get_disasm = options->dump_shader || options->record_ir;
+   bool get_disasm = args->options->dump_shader || args->options->record_ir;
 
    size_t size = llvm_ir.size();
 
index 1425a0997a02a3a2fde90db0607d953c97f10f87..12139378feb06f7fef9b8275c8e859b962b00a5f 100644 (file)
@@ -35,8 +35,7 @@ struct ac_shader_config;
 void aco_compile_shader(unsigned shader_count,
                         struct nir_shader *const *shaders,
                         struct radv_shader_binary** binary,
-                        struct radv_shader_info *info,
-                        struct radv_nir_compiler_options *options);
+                        struct radv_shader_args *args);
 
 #ifdef __cplusplus
 }
index 8ba83ff77c799f7e44594e07a2e0816c0eee73a2..81526c7eca0d2542275ede62ba2879b726a14e9f 100644 (file)
@@ -1111,7 +1111,7 @@ shader_variant_compile(struct radv_device *device,
                ac_init_llvm_once();
 
        if (use_aco) {
-               aco_compile_shader(shader_count, shaders, &binary, info, options);
+               aco_compile_shader(shader_count, shaders, &binary, &args);
                binary->info = *info;
        } else {
                enum ac_target_machine_options tm_options = 0;