intel/brw: Take shader in the brw_generator::generate_code() parameters

Simplify the calls in all the stage compile functions.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33541>
This commit is contained in:
Caio Oliveira 2025-02-13 21:56:22 -08:00 committed by Marge Bot
parent c19a4150b5
commit 84963d6833
10 changed files with 27 additions and 47 deletions

View file

@ -109,8 +109,7 @@ compile_single_bs(const struct brw_compiler *compiler,
return 0;
}
int offset = g->generate_code(s.cfg, s.dispatch_width, s.shader_stats,
s.performance_analysis.require(), stats);
int offset = g->generate_code(s, stats);
if (prog_offset)
*prog_offset = offset;
else

View file

@ -285,9 +285,7 @@ brw_compile_cs(const struct brw_compiler *compiler,
for (unsigned simd = 0; simd < 3; simd++) {
if (prog_data->prog_mask & (1u << simd)) {
assert(v[simd]);
prog_data->prog_offset[simd] =
g.generate_code(v[simd]->cfg, 8u << simd, v[simd]->shader_stats,
v[simd]->performance_analysis.require(), stats);
prog_data->prog_offset[simd] = g.generate_code(*v[simd], stats);
if (stats)
stats->max_dispatch_width = max_dispatch_width;
stats = stats ? stats + 1 : NULL;

View file

@ -1911,33 +1911,26 @@ brw_compile_fs(const struct brw_compiler *compiler,
if (vmulti) {
prog_data->dispatch_multi = vmulti->dispatch_width;
prog_data->max_polygons = vmulti->max_polygons;
g.generate_code(vmulti->cfg, vmulti->dispatch_width, vmulti->shader_stats,
vmulti->performance_analysis.require(),
stats, vmulti->max_polygons);
g.generate_code(*vmulti, stats);
stats = stats ? stats + 1 : NULL;
max_dispatch_width = vmulti->dispatch_width;
} else if (v8) {
prog_data->dispatch_8 = true;
g.generate_code(v8->cfg, 8, v8->shader_stats,
v8->performance_analysis.require(), stats, 1);
g.generate_code(*v8, stats);
stats = stats ? stats + 1 : NULL;
max_dispatch_width = 8;
}
if (v16) {
prog_data->dispatch_16 = true;
prog_data->prog_offset_16 = g.generate_code(
v16->cfg, 16, v16->shader_stats,
v16->performance_analysis.require(), stats, 1);
prog_data->prog_offset_16 = g.generate_code(*v16, stats);
stats = stats ? stats + 1 : NULL;
max_dispatch_width = 16;
}
if (v32) {
prog_data->dispatch_32 = true;
prog_data->prog_offset_32 = g.generate_code(
v32->cfg, 32, v32->shader_stats,
v32->performance_analysis.require(), stats, 1);
prog_data->prog_offset_32 = g.generate_code(*v32, stats);
stats = stats ? stats + 1 : NULL;
max_dispatch_width = 32;
}

View file

@ -384,8 +384,7 @@ brw_compile_gs(const struct brw_compiler *compiler,
label, nir->info.name);
g.enable_debug(name);
}
g.generate_code(v.cfg, v.dispatch_width, v.shader_stats,
v.performance_analysis.require(), params->base.stats);
g.generate_code(v, params->base.stats);
g.add_const_data(nir->constant_data, nir->constant_data_size);
return g.get_assembly();
}

View file

@ -442,10 +442,10 @@ brw_compile_task(const struct brw_compiler *compiler,
return NULL;
}
brw_shader *selected = v[selected_simd].get();
brw_shader &selected = *v[selected_simd];
prog_data->base.prog_mask = 1 << selected_simd;
prog_data->base.base.grf_used = MAX2(prog_data->base.base.grf_used,
selected->grf_used);
selected.grf_used);
if (unlikely(debug_enabled)) {
fprintf(stderr, "Task Output ");
@ -462,8 +462,7 @@ brw_compile_task(const struct brw_compiler *compiler,
nir->info.name));
}
g.generate_code(selected->cfg, selected->dispatch_width, selected->shader_stats,
selected->performance_analysis.require(), params->base.stats);
g.generate_code(selected, params->base.stats);
g.add_const_data(nir->constant_data, nir->constant_data_size);
return g.get_assembly();
}
@ -1297,10 +1296,10 @@ brw_compile_mesh(const struct brw_compiler *compiler,
return NULL;
}
brw_shader *selected = v[selected_simd].get();
brw_shader &selected = *v[selected_simd];
prog_data->base.prog_mask = 1 << selected_simd;
prog_data->base.base.grf_used = MAX2(prog_data->base.base.grf_used,
selected->grf_used);
selected.grf_used);
if (unlikely(debug_enabled)) {
if (params->tue_map) {
@ -1321,8 +1320,7 @@ brw_compile_mesh(const struct brw_compiler *compiler,
nir->info.name));
}
g.generate_code(selected->cfg, selected->dispatch_width, selected->shader_stats,
selected->performance_analysis.require(), params->base.stats);
g.generate_code(selected, params->base.stats);
if (prog_data->map.wa_18019110168_active) {
int8_t remap_table[VARYING_SLOT_TESS_MAX];
memset(remap_table, -1, sizeof(remap_table));

View file

@ -304,9 +304,7 @@ brw_compile_tcs(const struct brw_compiler *compiler,
nir->info.name));
}
g.generate_code(v.cfg, dispatch_width, v.shader_stats,
v.performance_analysis.require(), params->base.stats);
g.generate_code(v, params->base.stats);
g.add_const_data(nir->constant_data, nir->constant_data_size);
return g.get_assembly();

View file

@ -190,9 +190,7 @@ brw_compile_tes(const struct brw_compiler *compiler,
nir->info.name));
}
g.generate_code(v.cfg, dispatch_width, v.shader_stats,
v.performance_analysis.require(), params->base.stats);
g.generate_code(v, params->base.stats);
g.add_const_data(nir->constant_data, nir->constant_data_size);
return g.get_assembly();

View file

@ -374,8 +374,7 @@ brw_compile_vs(const struct brw_compiler *compiler,
g.enable_debug(debug_name);
}
g.generate_code(v.cfg, dispatch_width, v.shader_stats,
v.performance_analysis.require(), params->base.stats);
g.generate_code(v, params->base.stats);
g.add_const_data(nir->constant_data, nir->constant_data_size);
return g.get_assembly();

View file

@ -732,12 +732,13 @@ brw_generator::enable_debug(const char *shader_name)
}
int
brw_generator::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)
brw_generator::generate_code(const brw_shader &s,
struct brw_compile_stats *stats)
{
const int dispatch_width = s.dispatch_width;
struct brw_shader_stats shader_stats = s.shader_stats;
const brw_performance &perf = s.performance_analysis.require();
/* align to 64 byte boundary. */
brw_realign(p, 64);
@ -748,10 +749,10 @@ brw_generator::generate_code(const cfg_t *cfg, int dispatch_width,
int loop_count = 0, send_count = 0, nop_count = 0, sync_nop_count = 0;
bool is_accum_used = false;
struct disasm_info *disasm_info = disasm_initialize(p->isa, cfg);
struct disasm_info *disasm_info = disasm_initialize(p->isa, s.cfg);
brw_inst *prev_inst = NULL;
foreach_block_and_inst (block, brw_inst, inst, cfg) {
foreach_block_and_inst (block, brw_inst, inst, s.cfg) {
if (inst->opcode == SHADER_OPCODE_UNDEF)
continue;
@ -1488,7 +1489,7 @@ brw_generator::generate_code(const cfg_t *cfg, int dispatch_width,
before_size, after_size);
if (stats) {
stats->dispatch_width = dispatch_width;
stats->max_polygons = max_polygons;
stats->max_polygons = s.max_polygons;
stats->max_dispatch_width = dispatch_width;
stats->instructions = before_size / 16 - nop_count - sync_nop_count;
stats->sends = send_count;

View file

@ -18,11 +18,8 @@ public:
~brw_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);
int generate_code(const brw_shader &s,
struct brw_compile_stats *stats);
void add_const_data(void *data, unsigned size);
void add_resume_sbt(unsigned num_resume_shaders, uint64_t *sbt);
const unsigned *get_assembly();