| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- using Silk.NET.Vulkan;
- using System;
- namespace Ryujinx.Graphics.Vulkan
- {
- readonly struct MemoryAllocation : IDisposable
- {
- private readonly MemoryAllocatorBlockList _owner;
- private readonly MemoryAllocatorBlockList.Block _block;
- private readonly HostMemoryAllocator _hostMemory;
- public DeviceMemory Memory { get; }
- public IntPtr HostPointer { get; }
- public ulong Offset { get; }
- public ulong Size { get; }
- public MemoryAllocation(
- MemoryAllocatorBlockList owner,
- MemoryAllocatorBlockList.Block block,
- DeviceMemory memory,
- IntPtr hostPointer,
- ulong offset,
- ulong size)
- {
- _owner = owner;
- _block = block;
- Memory = memory;
- HostPointer = hostPointer;
- Offset = offset;
- Size = size;
- }
- public MemoryAllocation(
- HostMemoryAllocator hostMemory,
- DeviceMemory memory,
- IntPtr hostPointer,
- ulong offset,
- ulong size)
- {
- _hostMemory = hostMemory;
- Memory = memory;
- HostPointer = hostPointer;
- Offset = offset;
- Size = size;
- }
- public void Dispose()
- {
- if (_hostMemory != null)
- {
- _hostMemory.Free(Memory, Offset, Size);
- }
- else
- {
- _owner.Free(_block, Offset, Size);
- }
- }
- }
- }
|