brw: Fix emit_a64_oword_block_header UNIFORM -> VGRF copies
This was triggering an assertion in the fs_builder::MOV helper that the destination stride can't be 0 when dispatch_width > 1. What we want to do is copy the single 64-bit channel of data from the UNIFORM file to a VGRF. We can use a SIMD1 builder for that. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31995>
This commit is contained in:
committed by
Marge Bot
parent
d0560f59ce
commit
0a376a672a
@@ -1589,9 +1589,13 @@ emit_a64_oword_block_header(const fs_builder &bld, const brw_reg &addr)
|
||||
brw_reg expanded_addr = addr;
|
||||
if (addr.file == UNIFORM) {
|
||||
/* We can't do stride 1 with the UNIFORM file, it requires stride 0 */
|
||||
expanded_addr = ubld.vgrf(BRW_TYPE_UQ);
|
||||
expanded_addr.stride = 0;
|
||||
ubld.MOV(expanded_addr, retype(addr, BRW_TYPE_UQ));
|
||||
fs_builder ubld1 = ubld.group(1, 0);
|
||||
|
||||
brw_reg tmp = ubld1.vgrf(BRW_TYPE_UQ);
|
||||
ubld1.UNDEF(tmp);
|
||||
|
||||
expanded_addr = component(tmp, 0);
|
||||
ubld1.MOV(expanded_addr, retype(addr, BRW_TYPE_UQ));
|
||||
}
|
||||
|
||||
brw_reg header = ubld.vgrf(BRW_TYPE_UD);
|
||||
|
||||
Reference in New Issue
Block a user