mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 09:28:07 +02:00
i965/fs: Teach regions_overlap() about COMPR4 MRF regions.
Cc: "12.0" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
(cherry picked from commit 88f380a2dd)
This commit is contained in:
parent
665f57c513
commit
2d83aad693
1 changed files with 17 additions and 3 deletions
|
|
@ -204,9 +204,23 @@ reg_offset(const fs_reg &r)
|
|||
static inline bool
|
||||
regions_overlap(const fs_reg &r, unsigned dr, const fs_reg &s, unsigned ds)
|
||||
{
|
||||
return reg_space(r) == reg_space(s) &&
|
||||
!(reg_offset(r) + dr <= reg_offset(s) ||
|
||||
reg_offset(s) + ds <= reg_offset(r));
|
||||
if (r.file == MRF && (r.nr & BRW_MRF_COMPR4)) {
|
||||
fs_reg t = r;
|
||||
t.nr &= ~BRW_MRF_COMPR4;
|
||||
/* COMPR4 regions are translated by the hardware during decompression
|
||||
* into two separate half-regions 4 MRFs apart from each other.
|
||||
*/
|
||||
return regions_overlap(t, dr / 2, s, ds) ||
|
||||
regions_overlap(byte_offset(t, 4 * REG_SIZE), dr / 2, s, ds);
|
||||
|
||||
} else if (s.file == MRF && (s.nr & BRW_MRF_COMPR4)) {
|
||||
return regions_overlap(s, ds, r, dr);
|
||||
|
||||
} else {
|
||||
return reg_space(r) == reg_space(s) &&
|
||||
!(reg_offset(r) + dr <= reg_offset(s) ||
|
||||
reg_offset(s) + ds <= reg_offset(r));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue