}
struct brw_compile_stats *stats = params->stats;
+ uint32_t max_dispatch_width = 0;
if (simd8_cfg) {
prog_data->dispatch_8 = true;
g.generate_code(simd8_cfg, 8, v8->shader_stats,
v8->performance_analysis.require(), stats);
stats = stats ? stats + 1 : NULL;
+ max_dispatch_width = 8;
}
if (simd16_cfg) {
simd16_cfg, 16, v16->shader_stats,
v16->performance_analysis.require(), stats);
stats = stats ? stats + 1 : NULL;
+ max_dispatch_width = 16;
}
if (simd32_cfg) {
simd32_cfg, 32, v32->shader_stats,
v32->performance_analysis.require(), stats);
stats = stats ? stats + 1 : NULL;
+ max_dispatch_width = 32;
}
+ for (struct brw_compile_stats *s = params->stats; s != NULL && s != stats; s++)
+ s->max_dispatch_width = max_dispatch_width;
+
g.add_const_data(nir->constant_data, nir->constant_data_size);
return g.get_assembly();
}
g.enable_debug(name);
}
+ uint32_t max_dispatch_width = 8u << (util_last_bit(prog_data->prog_mask) - 1);
+
struct brw_compile_stats *stats = params->stats;
for (unsigned simd = 0; simd < 3; simd++) {
if (prog_data->prog_mask & (1u << simd)) {
prog_data->prog_offset[simd] =
g.generate_code(v[simd]->cfg, 8u << simd, v[simd]->shader_stats,
v[simd]->performance_analysis.require(), stats);
+ if (stats)
+ stats->max_dispatch_width = max_dispatch_width;
stats = stats ? stats + 1 : NULL;
+ max_dispatch_width = 8u << simd;
}
}