GPU: Fix errors handling texture remapping (#4745)

* GPU: Fix errors handling texture remapping

- Fixes an error where a pool entry and memory mapping changing at the same time could cause a texture to rebind its data from the wrong GPU VA (data swaps)
- Fixes an error where the texture pool could act on a mapping change before the mapping has actually been changed ("Unmapped" event happens before change, we need to signal it changed _after_ it completes)

TODO: remove textures from partially mapped list... if they aren't.

* Add Remap actions for handling post-mapping behaviours

* Remove unused code.

* Address feedback

* Nit
This commit is contained in:
riperiperi
2023-05-01 19:32:32 +01:00
committed by GitHub
parent 680e548022
commit 36f10df775
7 changed files with 135 additions and 19 deletions

View File

@ -57,5 +57,19 @@
return thisAddress < otherEndAddress && otherAddress < thisEndAddress;
}
/// <summary>
/// Returns a string summary of the memory range.
/// </summary>
/// <returns>A string summary of the memory range</returns>
public override string ToString()
{
if (Address == ulong.MaxValue)
{
return $"[Unmapped 0x{Size:X}]";
}
return $"[0x{Address:X}, 0x{EndAddress:X})";
}
}
}

View File

@ -319,5 +319,14 @@ namespace Ryujinx.Memory.Range
return hash.ToHashCode();
}
/// <summary>
/// Returns a string summary of the ranges contained in the MultiRange.
/// </summary>
/// <returns>A string summary of the ranges contained within</returns>
public override string ToString()
{
return HasSingleRange ? _singleRange.ToString() : string.Join(", ", _ranges);
}
}
}