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()) {
|
if (reg.is_null()) {
|
||||||
return reg;
|
return reg;
|
||||||
} else {
|
} else {
|
||||||
const unsigned stride = reg.hstride ? 1 << (reg.hstride - 1) : 0;
|
const unsigned hstride = reg.hstride ? 1 << (reg.hstride - 1) : 0;
|
||||||
return byte_offset(reg, delta * stride * type_sz(reg.type));
|
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");
|
unreachable("Invalid register file");
|
||||||
|
Reference in New Issue
Block a user