From 3659934862e71bd9f3741cdcd17ab28e3feb0fcb Mon Sep 17 00:00:00 2001 From: Caio Oliveira Date: Fri, 6 Dec 2024 16:17:46 -0800 Subject: [PATCH] intel/brw: Add brw_generator.h header Reviewed-by: Kenneth Graunke Part-of: --- src/intel/compiler/brw_compile_bs.cpp | 1 + src/intel/compiler/brw_compile_cs.cpp | 1 + src/intel/compiler/brw_compile_fs.cpp | 1 + src/intel/compiler/brw_compile_gs.cpp | 1 + src/intel/compiler/brw_compile_mesh.cpp | 1 + src/intel/compiler/brw_compile_tcs.cpp | 1 + src/intel/compiler/brw_compile_tes.cpp | 1 + src/intel/compiler/brw_compile_vs.cpp | 1 + src/intel/compiler/brw_fs.h | 74 ---------------------- src/intel/compiler/brw_generator.cpp | 1 + src/intel/compiler/brw_generator.h | 82 +++++++++++++++++++++++++ src/intel/compiler/meson.build | 1 + 12 files changed, 92 insertions(+), 74 deletions(-) create mode 100644 src/intel/compiler/brw_generator.h diff --git a/src/intel/compiler/brw_compile_bs.cpp b/src/intel/compiler/brw_compile_bs.cpp index f4986e5ccbf..e2f8015088a 100644 --- a/src/intel/compiler/brw_compile_bs.cpp +++ b/src/intel/compiler/brw_compile_bs.cpp @@ -5,6 +5,7 @@ #include "brw_fs.h" #include "brw_fs_live_variables.h" +#include "brw_generator.h" #include "brw_nir.h" #include "brw_cfg.h" #include "brw_private.h" diff --git a/src/intel/compiler/brw_compile_cs.cpp b/src/intel/compiler/brw_compile_cs.cpp index f73970c20f2..056c04af311 100644 --- a/src/intel/compiler/brw_compile_cs.cpp +++ b/src/intel/compiler/brw_compile_cs.cpp @@ -6,6 +6,7 @@ #include "brw_fs.h" #include "brw_fs_builder.h" #include "brw_fs_live_variables.h" +#include "brw_generator.h" #include "brw_nir.h" #include "brw_cfg.h" #include "brw_private.h" diff --git a/src/intel/compiler/brw_compile_fs.cpp b/src/intel/compiler/brw_compile_fs.cpp index 66c2525ab60..be1dc70ccd8 100644 --- a/src/intel/compiler/brw_compile_fs.cpp +++ b/src/intel/compiler/brw_compile_fs.cpp @@ -7,6 +7,7 @@ #include "brw_fs.h" #include "brw_fs_builder.h" #include "brw_fs_live_variables.h" +#include "brw_generator.h" #include "brw_nir.h" #include "brw_cfg.h" #include "brw_private.h" diff --git a/src/intel/compiler/brw_compile_gs.cpp b/src/intel/compiler/brw_compile_gs.cpp index 2137e1582f6..f55876897f5 100644 --- a/src/intel/compiler/brw_compile_gs.cpp +++ b/src/intel/compiler/brw_compile_gs.cpp @@ -6,6 +6,7 @@ #include "brw_eu.h" #include "brw_fs.h" #include "brw_fs_builder.h" +#include "brw_generator.h" #include "brw_prim.h" #include "brw_nir.h" #include "brw_private.h" diff --git a/src/intel/compiler/brw_compile_mesh.cpp b/src/intel/compiler/brw_compile_mesh.cpp index fa184b70f71..3f91a493809 100644 --- a/src/intel/compiler/brw_compile_mesh.cpp +++ b/src/intel/compiler/brw_compile_mesh.cpp @@ -26,6 +26,7 @@ #include "brw_compiler.h" #include "brw_fs.h" #include "brw_fs_builder.h" +#include "brw_generator.h" #include "brw_nir.h" #include "brw_private.h" #include "compiler/nir/nir_builder.h" diff --git a/src/intel/compiler/brw_compile_tcs.cpp b/src/intel/compiler/brw_compile_tcs.cpp index 99a2a3b8e10..96a3b1fb4e8 100644 --- a/src/intel/compiler/brw_compile_tcs.cpp +++ b/src/intel/compiler/brw_compile_tcs.cpp @@ -8,6 +8,7 @@ #include "brw_nir.h" #include "brw_fs.h" #include "brw_fs_builder.h" +#include "brw_generator.h" #include "brw_private.h" #include "dev/intel_debug.h" diff --git a/src/intel/compiler/brw_compile_tes.cpp b/src/intel/compiler/brw_compile_tes.cpp index 0116a43bd95..aae83e2ae2f 100644 --- a/src/intel/compiler/brw_compile_tes.cpp +++ b/src/intel/compiler/brw_compile_tes.cpp @@ -6,6 +6,7 @@ #include "brw_cfg.h" #include "brw_eu.h" #include "brw_fs.h" +#include "brw_generator.h" #include "brw_nir.h" #include "brw_private.h" #include "dev/intel_debug.h" diff --git a/src/intel/compiler/brw_compile_vs.cpp b/src/intel/compiler/brw_compile_vs.cpp index a2d1adb6142..0955ccec2a1 100644 --- a/src/intel/compiler/brw_compile_vs.cpp +++ b/src/intel/compiler/brw_compile_vs.cpp @@ -4,6 +4,7 @@ */ #include "brw_fs.h" +#include "brw_generator.h" #include "brw_eu.h" #include "brw_nir.h" #include "brw_private.h" diff --git a/src/intel/compiler/brw_fs.h b/src/intel/compiler/brw_fs.h index 45cead11dd3..6cf590ebb19 100644 --- a/src/intel/compiler/brw_fs.h +++ b/src/intel/compiler/brw_fs.h @@ -477,80 +477,6 @@ sample_mask_flag_subreg(const fs_visitor &s) return 2; } -/** - * The fragment shader code generator. - * - * Translates FS IR to actual i965 assembly code. - */ -class fs_generator -{ -public: - fs_generator(const struct brw_compiler *compiler, - const struct brw_compile_params *params, - struct brw_stage_prog_data *prog_data, - gl_shader_stage stage); - ~fs_generator(); - - void enable_debug(const char *shader_name); - int generate_code(const cfg_t *cfg, int dispatch_width, - struct brw_shader_stats shader_stats, - const brw::performance &perf, - struct brw_compile_stats *stats, - unsigned max_polygons = 0); - void add_const_data(void *data, unsigned size); - void add_resume_sbt(unsigned num_resume_shaders, uint64_t *sbt); - const unsigned *get_assembly(); - -private: - void generate_send(fs_inst *inst, - struct brw_reg dst, - struct brw_reg desc, - struct brw_reg ex_desc, - struct brw_reg payload, - struct brw_reg payload2); - void generate_barrier(fs_inst *inst, struct brw_reg src); - void generate_ddx(const fs_inst *inst, - struct brw_reg dst, struct brw_reg src); - void generate_ddy(const fs_inst *inst, - struct brw_reg dst, struct brw_reg src); - void generate_scratch_header(fs_inst *inst, - struct brw_reg dst, struct brw_reg src); - - void generate_halt(fs_inst *inst); - - void generate_mov_indirect(fs_inst *inst, - struct brw_reg dst, - struct brw_reg reg, - struct brw_reg indirect_byte_offset); - - void generate_shuffle(fs_inst *inst, - struct brw_reg dst, - struct brw_reg src, - struct brw_reg idx); - - void generate_quad_swizzle(const fs_inst *inst, - struct brw_reg dst, struct brw_reg src, - unsigned swiz); - - bool patch_halt_jumps(); - - const struct brw_compiler *compiler; - const struct brw_compile_params *params; - - const struct intel_device_info *devinfo; - - struct brw_codegen *p; - struct brw_stage_prog_data * const prog_data; - - unsigned dispatch_width; /**< 8, 16 or 32 */ - - exec_list discard_halt_patches; - bool debug_flag; - const char *shader_name; - gl_shader_stage stage; - void *mem_ctx; -}; - namespace brw { brw_reg fetch_payload_reg(const brw::fs_builder &bld, uint8_t regs[2], diff --git a/src/intel/compiler/brw_generator.cpp b/src/intel/compiler/brw_generator.cpp index 5ec03dc24cf..cc198ee8b73 100644 --- a/src/intel/compiler/brw_generator.cpp +++ b/src/intel/compiler/brw_generator.cpp @@ -30,6 +30,7 @@ #include "brw_eu.h" #include "brw_disasm_info.h" #include "brw_fs.h" +#include "brw_generator.h" #include "brw_cfg.h" #include "dev/intel_debug.h" #include "util/mesa-sha1.h" diff --git a/src/intel/compiler/brw_generator.h b/src/intel/compiler/brw_generator.h new file mode 100644 index 00000000000..f9e9d8879fc --- /dev/null +++ b/src/intel/compiler/brw_generator.h @@ -0,0 +1,82 @@ +/* + * Copyright © 2010 Intel Corporation + * SPDX-License-Identifier: MIT + */ + +#pragma once + +#include "brw_fs.h" + +/** + * The fragment shader code generator. + * + * Translates FS IR to actual i965 assembly code. + */ +class fs_generator +{ +public: + fs_generator(const struct brw_compiler *compiler, + const struct brw_compile_params *params, + struct brw_stage_prog_data *prog_data, + gl_shader_stage stage); + ~fs_generator(); + + void enable_debug(const char *shader_name); + int generate_code(const cfg_t *cfg, int dispatch_width, + struct brw_shader_stats shader_stats, + const brw::performance &perf, + struct brw_compile_stats *stats, + unsigned max_polygons = 0); + void add_const_data(void *data, unsigned size); + void add_resume_sbt(unsigned num_resume_shaders, uint64_t *sbt); + const unsigned *get_assembly(); + +private: + void generate_send(fs_inst *inst, + struct brw_reg dst, + struct brw_reg desc, + struct brw_reg ex_desc, + struct brw_reg payload, + struct brw_reg payload2); + void generate_barrier(fs_inst *inst, struct brw_reg src); + void generate_ddx(const fs_inst *inst, + struct brw_reg dst, struct brw_reg src); + void generate_ddy(const fs_inst *inst, + struct brw_reg dst, struct brw_reg src); + void generate_scratch_header(fs_inst *inst, + struct brw_reg dst, struct brw_reg src); + + void generate_halt(fs_inst *inst); + + void generate_mov_indirect(fs_inst *inst, + struct brw_reg dst, + struct brw_reg reg, + struct brw_reg indirect_byte_offset); + + void generate_shuffle(fs_inst *inst, + struct brw_reg dst, + struct brw_reg src, + struct brw_reg idx); + + void generate_quad_swizzle(const fs_inst *inst, + struct brw_reg dst, struct brw_reg src, + unsigned swiz); + + bool patch_halt_jumps(); + + const struct brw_compiler *compiler; + const struct brw_compile_params *params; + + const struct intel_device_info *devinfo; + + struct brw_codegen *p; + struct brw_stage_prog_data * const prog_data; + + unsigned dispatch_width; /**< 8, 16 or 32 */ + + exec_list discard_halt_patches; + bool debug_flag; + const char *shader_name; + gl_shader_stage stage; + void *mem_ctx; +}; diff --git a/src/intel/compiler/meson.build b/src/intel/compiler/meson.build index 6bd81abf4fc..50179f7a646 100644 --- a/src/intel/compiler/meson.build +++ b/src/intel/compiler/meson.build @@ -55,6 +55,7 @@ libintel_compiler_brw_files = files( 'brw_fs_thread_payload.cpp', 'brw_fs_visitor.cpp', 'brw_generator.cpp', + 'brw_generator.h', 'brw_ir.h', 'brw_ir_allocator.h', 'brw_ir_analysis.h',