radv/winsys: Fix inequality for sparse buffer remapping.
Found a case where we mapped a range too many.
Per the comment the constraint is:
/* [first, last] is exactly the range of ranges that either overlap the
* new parent, or are adjacent to it. This corresponds to the bind ranges
* that may change.
*/
So that means that after the ++last we the ranges[last] should still
be adjacent. So we need to test the post-increment value to see whether
it is adjacent.
Failure case:
ranges:
0: 0 - ffff
1: 10000 - 1ffff
2: 20000 - 2ffff
3: 30000 - 3ffff
new range: 10000 - 1ffff
wrong first, last: 0,3
However range 3 clearly isn't adjacent at all.
Fixes: 715df30a4e
"radv/amdgpu: Add winsys implementation of virtual buffers."
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7953>
This commit is contained in:
parent
f56a28daa4
commit
2b12e6931e
|
@ -194,7 +194,7 @@ radv_amdgpu_winsys_bo_virtual_bind(struct radeon_winsys_bo *_parent,
|
|||
++first;
|
||||
|
||||
last = first;
|
||||
while(last + 1 < parent->range_count && parent->ranges[last].offset <= offset + size)
|
||||
while(last + 1 < parent->range_count && parent->ranges[last + 1].offset <= offset + size)
|
||||
++last;
|
||||
|
||||
/* Whether the first or last range are going to be totally removed or just
|
||||
|
|
Loading…
Reference in New Issue