This removes the radv shader info type from aco completely.
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16342>
void
select_program(Program* program, unsigned shader_count, struct nir_shader* const* shaders,
ac_shader_config* config, const struct radv_nir_compiler_options* options,
- const struct radv_shader_info* info,
+ const struct aco_shader_info* info,
const struct radv_shader_args* args)
{
isel_context ctx = setup_isel_context(program, shader_count, shaders, config, options, info, args, false);
void
select_gs_copy_shader(Program* program, struct nir_shader* gs_shader, ac_shader_config* config,
const struct radv_nir_compiler_options* options,
- const struct radv_shader_info* info,
+ const struct aco_shader_info* info,
const struct radv_shader_args* args)
{
isel_context ctx = setup_isel_context(program, 1, &gs_shader, config, options, info, args, true);
void
select_trap_handler_shader(Program* program, struct nir_shader* shader, ac_shader_config* config,
const struct radv_nir_compiler_options* options,
- const struct radv_shader_info* info,
+ const struct aco_shader_info* info,
const struct radv_shader_args* args)
{
assert(options->chip_class == GFX8);
void
select_vs_prolog(Program* program, const struct radv_vs_prolog_key* key, ac_shader_config* config,
const struct radv_nir_compiler_options* options,
- const struct radv_shader_info* info,
+ const struct aco_shader_info* info,
const struct radv_shader_args* args, unsigned* num_preserved_sgprs)
{
assert(key->num_attributes > 0);
isel_context setup_isel_context(Program* program, unsigned shader_count,
struct nir_shader* const* shaders, ac_shader_config* config,
const struct radv_nir_compiler_options* options,
- const struct radv_shader_info* info,
+ const struct aco_shader_info* info,
const struct radv_shader_args* args, bool is_gs_copy_shader);
} // namespace aco
isel_context
setup_isel_context(Program* program, unsigned shader_count, struct nir_shader* const* shaders,
ac_shader_config* config, const struct radv_nir_compiler_options* options,
- const struct radv_shader_info* info,
+ const struct aco_shader_info* info,
const struct radv_shader_args* args, bool is_gs_copy_shader)
{
SWStage sw_stage = SWStage::None;
void
aco_compile_shader(const struct radv_nir_compiler_options* options,
- const struct radv_shader_info* info,
+ const struct aco_shader_info* info,
unsigned shader_count, struct nir_shader* const* shaders,
const struct radv_shader_args *args,
struct radv_shader_binary** binary)
void
aco_compile_vs_prolog(const struct radv_nir_compiler_options* options,
- const struct radv_shader_info* info,
+ const struct aco_shader_info* info,
const struct radv_vs_prolog_key* key,
const struct radv_shader_args* args,
struct radv_prolog_binary** binary)
#endif
struct ac_shader_config;
+struct aco_shader_info;
struct aco_compiler_statistic_info {
char name[32];
extern const struct aco_compiler_statistic_info* aco_statistic_infos;
void aco_compile_shader(const struct radv_nir_compiler_options* options,
- const struct radv_shader_info* info,
+ const struct aco_shader_info* info,
unsigned shader_count, struct nir_shader* const* shaders,
const struct radv_shader_args *args,
struct radv_shader_binary** binary);
void aco_compile_vs_prolog(const struct radv_nir_compiler_options* options,
- const struct radv_shader_info* info,
+ const struct aco_shader_info* info,
const struct radv_vs_prolog_key* key,
const struct radv_shader_args* args,
struct radv_prolog_binary** binary);
#include "c11/threads.h"
-#include "vulkan/radv_aco_shader_info.h"
-
namespace aco {
uint64_t debug_flags = 0;
}
void
-init_program(Program* program, Stage stage, const struct radv_shader_info* info,
+init_program(Program* program, Stage stage, const struct aco_shader_info* info,
enum chip_class chip_class, enum radeon_family family, bool wgp_mode,
ac_shader_config* config)
{
program->stage = stage;
program->config = config;
- radv_aco_convert_shader_info(&program->info, info);
+ program->info = *info;
program->chip_class = chip_class;
if (family == CHIP_UNKNOWN) {
switch (chip_class) {
#include <vector>
struct radv_shader_args;
-struct radv_shader_info;
struct radv_vs_prolog_key;
namespace aco {
void init();
-void init_program(Program* program, Stage stage, const struct radv_shader_info* info,
+void init_program(Program* program, Stage stage, const struct aco_shader_info* info,
enum chip_class chip_class, enum radeon_family family, bool wgp_mode,
ac_shader_config* config);
void select_program(Program* program, unsigned shader_count, struct nir_shader* const* shaders,
ac_shader_config* config, const struct radv_nir_compiler_options* options,
- const struct radv_shader_info* info,
+ const struct aco_shader_info* info,
const struct radv_shader_args* args);
void select_gs_copy_shader(Program* program, struct nir_shader* gs_shader, ac_shader_config* config,
const struct radv_nir_compiler_options* options,
- const struct radv_shader_info* info,
+ const struct aco_shader_info* info,
const struct radv_shader_args* args);
void select_trap_handler_shader(Program* program, struct nir_shader* shader,
ac_shader_config* config,
const struct radv_nir_compiler_options* options,
- const struct radv_shader_info* info,
+ const struct aco_shader_info* info,
const struct radv_shader_args* args);
void select_vs_prolog(Program* program, const struct radv_vs_prolog_key* key,
ac_shader_config* config,
const struct radv_nir_compiler_options* options,
- const struct radv_shader_info* info,
+ const struct aco_shader_info* info,
const struct radv_shader_args* args,
unsigned* num_preserved_sgprs);
#define ACO_SHADER_INFO_H
#include "shader_enums.h"
-/* temporary */
-#include "vulkan/radv_shader.h"
#ifdef __cplusplus
extern "C" {
#endif
+#define ACO_MAX_SO_OUTPUTS 64
+#define ACO_MAX_SO_BUFFERS 4
+
struct aco_vp_output_info {
uint8_t vs_output_param_offset[VARYING_SLOT_MAX];
uint8_t clip_dist_mask;
struct aco_streamout_info {
uint16_t num_outputs;
- struct aco_stream_output outputs[MAX_SO_OUTPUTS];
- uint16_t strides[MAX_SO_BUFFERS];
+ struct aco_stream_output outputs[ACO_MAX_SO_OUTPUTS];
+ uint16_t strides[ACO_MAX_SO_BUFFERS];
};
struct aco_shader_info {
}
ac_shader_config config;
-radv_shader_info info;
+aco_shader_info info;
std::unique_ptr<Program> program;
Builder bld(NULL);
Temp inputs[16];
return false;
memset(&info, 0, sizeof(info));
- info.cs.block_size[0] = 1;
- info.cs.block_size[1] = 1;
- info.cs.block_size[2] = 1;
-
create_program(chip_class, compute_cs, wave_size, family);
if (input_spec) {
};
extern ac_shader_config config;
-extern radv_shader_info info;
+extern aco_shader_info info;
extern std::unique_ptr<aco::Program> program;
extern aco::Builder bld;
extern aco::Temp inputs[16];
#include "sid.h"
#include "vk_format.h"
+#include "aco_shader_info.h"
+#include "radv_aco_shader_info.h"
#ifdef LLVM_AVAILABLE
#include "ac_llvm_util.h"
#endif
if (false) {
#endif
} else {
- aco_compile_shader(options, info, shader_count, shaders, args, &binary);
+ struct aco_shader_info ac_info;
+ radv_aco_convert_shader_info(&ac_info, info);
+ aco_compile_shader(options, &ac_info, shader_count, shaders, args, &binary);
}
binary->info = *info;
#endif
struct radv_prolog_binary *binary = NULL;
- aco_compile_vs_prolog(&options, &info, key, &args, &binary);
+ struct aco_shader_info ac_info;
+ radv_aco_convert_shader_info(&ac_info, &info);
+ aco_compile_vs_prolog(&options, &ac_info, key, &args, &binary);
struct radv_shader_prolog *prolog = upload_vs_prolog(device, binary, info.wave_size);
if (prolog) {
prolog->nontrivial_divisors = key->state->nontrivial_divisors;