diff options
author | EmulationFanatic <62343878+EmulationFanatic@users.noreply.github.com> | 2021-05-19 11:39:19 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-19 11:39:19 -0700 |
commit | b5c72b44dee2fd977d7cca5aa3c29ef1e2286aa7 (patch) | |
tree | ae064aca256cb6193f6908cc9698660043754008 /Ryujinx.Common/GraphicsDriver/NVAPI/NvapiUnicodeString.cs | |
parent | 0129250c2e169c7386f7e2868cc055f8ec55c005 (diff) | |
parent | 778011c12ae7905173e02665f397a96686863b89 (diff) |
Merge pull request #2177 from riperiperi/feature/parallel-shader-cache
Allow parallel shader compilation when loading a shader cache
Diffstat (limited to 'Ryujinx.Common/GraphicsDriver/NVAPI/NvapiUnicodeString.cs')
-rw-r--r-- | Ryujinx.Common/GraphicsDriver/NVAPI/NvapiUnicodeString.cs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/Ryujinx.Common/GraphicsDriver/NVAPI/NvapiUnicodeString.cs b/Ryujinx.Common/GraphicsDriver/NVAPI/NvapiUnicodeString.cs new file mode 100644 index 00000000..6bbff2de --- /dev/null +++ b/Ryujinx.Common/GraphicsDriver/NVAPI/NvapiUnicodeString.cs @@ -0,0 +1,42 @@ +using System.Runtime.InteropServices; +using System.Text; + +namespace Ryujinx.Common.GraphicsDriver.NVAPI +{ + [StructLayout(LayoutKind.Sequential, Pack = 4)] + public unsafe struct NvapiUnicodeString + { + private fixed byte _data[4096]; + + public NvapiUnicodeString(string text) + { + Set(text); + } + + public string Get() + { + fixed (byte* data = _data) + { + string text = Encoding.Unicode.GetString(data, 4096); + + int index = text.IndexOf('\0'); + if (index > -1) + { + text = text.Remove(index); + } + + return text; + } + } + + public void Set(string text) + { + text += '\0'; + fixed (char* textPtr = text) + fixed (byte* data = _data) + { + int written = Encoding.Unicode.GetBytes(textPtr, text.Length, data, 4096); + } + } + } +} |