intel/compiler: Move spill/fill tracking to the register allocator
Originally, we had virtual opcodes for scratch access, and let the generator count spills/fills separately from other sends. Later, we started using the generic SHADER_OPCODE_SEND for spills/fills on some generations of hardware, and simply detected stateless messages there. But then we started using stateless messages for other things: - anv uses stateless messages for the buffer device address feature. - nir_opt_large_constants generates stateless messages. - XeHP curbe setup can generate stateless messages. So counting stateless messages is not accurate. Instead, we move the spill/fill accounting to the register allocator, as it generates such things, as well as the load/store_scratch intrinsic handling, as those are basically spill/fills, just at a higher level. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16691>
This commit is contained in:

committed by
Marge Bot

parent
4896e136b6
commit
9886615958
@@ -1172,6 +1172,8 @@ fs_visitor::init()
|
||||
|
||||
this->shader_stats.scheduler_mode = NULL;
|
||||
this->shader_stats.promoted_constants = 0,
|
||||
this->shader_stats.spill_count = 0,
|
||||
this->shader_stats.fill_count = 0,
|
||||
|
||||
this->grf_used = 0;
|
||||
this->spilled_any_registers = false;
|
||||
|
Reference in New Issue
Block a user