mirror of
https://git.naxdy.org/Mirror/Ryujinx.git
synced 2025-12-16 12:09:51 +00:00
fix inherited buffers still syncing
when a buffer with a scheduled sync is inherited the new buffer automatically schedules itself, but doesn't unschedule the old buffer. combining the reuse of buffer ranges with the old buffer still having a sync scheduled causes the old buffer to sometimes try to sync with ranges that extend beyond its bounds. fix: stop syncing old buffers, the new buffers already sync the same areas.
This commit is contained in:
parent
01f43cafea
commit
6e002bea07
@ -90,6 +90,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
|
||||
|
||||
private readonly bool _useGranular;
|
||||
private bool _syncActionRegistered;
|
||||
private bool _bufferInherited;
|
||||
|
||||
private int _referenceCount = 1;
|
||||
|
||||
@ -429,10 +430,13 @@ namespace Ryujinx.Graphics.Gpu.Memory
|
||||
{
|
||||
_syncActionRegistered = false;
|
||||
|
||||
if (_bufferInherited)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (_useGranular)
|
||||
{
|
||||
|
||||
|
||||
_modifiedRanges?.GetRanges(Address, Size, _syncRangeAction);
|
||||
}
|
||||
else
|
||||
@ -456,6 +460,8 @@ namespace Ryujinx.Graphics.Gpu.Memory
|
||||
/// <param name="from">The buffer to inherit from</param>
|
||||
public void InheritModifiedRanges(Buffer from)
|
||||
{
|
||||
from._bufferInherited = true;
|
||||
|
||||
if (from._modifiedRanges is { HasRanges: true })
|
||||
{
|
||||
if (from._syncActionRegistered && !_syncActionRegistered)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user