intel/fs: Fix horiz_offset() to handle FIXED_GRFs with non-trivial 2D regions.
Reviewed-by: Caio Oliveira <caio.oliveira@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18157>
This commit is contained in:

committed by
Marge Bot

parent
61a77c9ce2
commit
6f33b22495
@@ -121,8 +121,16 @@ horiz_offset(const fs_reg ®, unsigned delta)
|
||||
if (reg.is_null()) {
|
||||
return reg;
|
||||
} else {
|
||||
const unsigned stride = reg.hstride ? 1 << (reg.hstride - 1) : 0;
|
||||
return byte_offset(reg, delta * stride * type_sz(reg.type));
|
||||
const unsigned hstride = reg.hstride ? 1 << (reg.hstride - 1) : 0;
|
||||
const unsigned vstride = reg.vstride ? 1 << (reg.vstride - 1) : 0;
|
||||
const unsigned width = 1 << reg.width;
|
||||
|
||||
if (delta % width == 0) {
|
||||
return byte_offset(reg, delta / width * vstride * type_sz(reg.type));
|
||||
} else {
|
||||
assert(vstride == hstride * width);
|
||||
return byte_offset(reg, delta * hstride * type_sz(reg.type));
|
||||
}
|
||||
}
|
||||
}
|
||||
unreachable("Invalid register file");
|
||||
|
Reference in New Issue
Block a user