aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Gpu/Memory/BufferBounds.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2023-12-04 16:30:19 -0300
committerGitHub <noreply@github.com>2023-12-04 20:30:19 +0100
commit1df6c07f78c4c3b8c7fc679d7466f79a10c2d496 (patch)
treeb80d247e199503274054259cb2707f44cc072993 /src/Ryujinx.Graphics.Gpu/Memory/BufferBounds.cs
parent0531c16326c8215bff1c0a98f3ed217f01065446 (diff)
Implement support for multi-range buffers using Vulkan sparse mappings (#5427)1.1.1098
* Pass MultiRange to BufferManager * Implement support for multi-range buffers using Vulkan sparse mappings * Use multi-range for remaining buffers, delete old methods * Assume that more buffers are contiguous * Dispose multi-range buffers after they are removed from the list * Properly init BufferBounds for constant and storage buffers * Do not try reading zero bytes data from an unmapped address on the shader cache + PR feedback * Fix misaligned sparse buffer offsets * Null check can be simplified * PR feedback
Diffstat (limited to 'src/Ryujinx.Graphics.Gpu/Memory/BufferBounds.cs')
-rw-r--r--src/Ryujinx.Graphics.Gpu/Memory/BufferBounds.cs21
1 files changed, 10 insertions, 11 deletions
diff --git a/src/Ryujinx.Graphics.Gpu/Memory/BufferBounds.cs b/src/Ryujinx.Graphics.Gpu/Memory/BufferBounds.cs
index a9ea04ce..aed3268a 100644
--- a/src/Ryujinx.Graphics.Gpu/Memory/BufferBounds.cs
+++ b/src/Ryujinx.Graphics.Gpu/Memory/BufferBounds.cs
@@ -1,4 +1,5 @@
using Ryujinx.Graphics.Shader;
+using Ryujinx.Memory.Range;
namespace Ryujinx.Graphics.Gpu.Memory
{
@@ -8,30 +9,28 @@ namespace Ryujinx.Graphics.Gpu.Memory
readonly struct BufferBounds
{
/// <summary>
- /// Region virtual address.
+ /// Physical memory ranges where the buffer is mapped.
/// </summary>
- public ulong Address { get; }
+ public MultiRange Range { get; }
/// <summary>
- /// Region size in bytes.
+ /// Buffer usage flags.
/// </summary>
- public ulong Size { get; }
+ public BufferUsageFlags Flags { get; }
/// <summary>
- /// Buffer usage flags.
+ /// Indicates that the backing memory for the buffer does not exist.
/// </summary>
- public BufferUsageFlags Flags { get; }
+ public bool IsUnmapped => Range.IsUnmapped;
/// <summary>
/// Creates a new buffer region.
/// </summary>
- /// <param name="address">Region address</param>
- /// <param name="size">Region size</param>
+ /// <param name="range">Physical memory ranges where the buffer is mapped</param>
/// <param name="flags">Buffer usage flags</param>
- public BufferBounds(ulong address, ulong size, BufferUsageFlags flags = BufferUsageFlags.None)
+ public BufferBounds(MultiRange range, BufferUsageFlags flags = BufferUsageFlags.None)
{
- Address = address;
- Size = size;
+ Range = range;
Flags = flags;
}
}