intel/fs: fix size_read() for LOAD_PAYLOAD
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Fri, 19 May 2023 08:10:01 +0000 (11:10 +0300)
committerMarge Bot <emma+marge@anholt.net>
Tue, 23 May 2023 12:39:08 +0000 (12:39 +0000)
commit21c7b55f6fdb91b1312423844e4d6d036dc2f09c
tree161bf05121dacc748c4a3fecac51232455b985a3
parent1546a9de99dd8b23ef91631d50e7978f58b12470
intel/fs: fix size_read() for LOAD_PAYLOAD

With Anv/Zink, the piglit test :

  arb_shader_storage_buffer_object-max-ssbo-size -auto -fbo fsexceed

is failing validation after copy propagation :

load_payload(8) vgrf15:F, vgrf1+0.12<0>:F, vgrf1+0.0<0>:F, vgrf1+0.4<0>:F, vgrf1+0.8<0>:F, vgrf1+0.12<0>:F
../src/intel/compiler/brw_fs_validate.cpp:191: A <= B failed
  A = inst->src[i].offset / REG_SIZE + regs_read(inst, i) = 2
  B = alloc.sizes[inst->src[i].nr] = 1

In most cases it works because src[0] would be at offset 0 and so
reading a full reg passes validation, but Anv/Zink started emitting
slightly different code adding an offset maybe the size read 2 GRFs.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23126>
src/intel/compiler/brw_fs.cpp