diff options
Diffstat (limited to 'Ryujinx.Graphics.GAL/Multithreading/Model/PinnedSpan.cs')
-rw-r--r-- | Ryujinx.Graphics.GAL/Multithreading/Model/PinnedSpan.cs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/Ryujinx.Graphics.GAL/Multithreading/Model/PinnedSpan.cs b/Ryujinx.Graphics.GAL/Multithreading/Model/PinnedSpan.cs new file mode 100644 index 00000000..16e148c2 --- /dev/null +++ b/Ryujinx.Graphics.GAL/Multithreading/Model/PinnedSpan.cs @@ -0,0 +1,23 @@ +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace Ryujinx.Graphics.GAL.Multithreading.Model +{ + unsafe struct PinnedSpan<T> where T : unmanaged + { + private void* _ptr; + private int _size; + + public PinnedSpan(ReadOnlySpan<T> span) + { + _ptr = Unsafe.AsPointer(ref MemoryMarshal.GetReference(span)); + _size = span.Length; + } + + public ReadOnlySpan<T> Get() + { + return new ReadOnlySpan<T>(_ptr, _size * Unsafe.SizeOf<T>()); + } + } +} |