mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 04:48:08 +02:00
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>
(cherry picked from commit 21c7b55f6f)
This commit is contained in:
parent
cb9d82bc2a
commit
28f89e96cd
2 changed files with 2 additions and 2 deletions
|
|
@ -184,7 +184,7 @@
|
|||
"description": "intel/fs: fix size_read() for LOAD_PAYLOAD",
|
||||
"nominated": true,
|
||||
"nomination_type": 0,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": null
|
||||
},
|
||||
|
|
|
|||
|
|
@ -877,7 +877,7 @@ fs_inst::size_read(int arg) const
|
|||
|
||||
case SHADER_OPCODE_LOAD_PAYLOAD:
|
||||
if (arg < this->header_size)
|
||||
return REG_SIZE;
|
||||
return retype(src[arg], BRW_REGISTER_TYPE_UD).component_size(8);
|
||||
break;
|
||||
|
||||
case CS_OPCODE_CS_TERMINATE:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue