From 1239c82d2f2fa59a42561a4a278a9cdca5eca462 Mon Sep 17 00:00:00 2001
From: riperiperi <rhy3756547@hotmail.com>
Date: Wed, 7 Apr 2021 13:19:02 +0100
Subject: Forcibly enable threaded optimization on boot.

---
 .../GraphicsDriver/NVAPI/NvapiUnicodeString.cs     | 42 ++++++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100644 Ryujinx.Common/GraphicsDriver/NVAPI/NvapiUnicodeString.cs

(limited to 'Ryujinx.Common/GraphicsDriver/NVAPI/NvapiUnicodeString.cs')

diff --git a/Ryujinx.Common/GraphicsDriver/NVAPI/NvapiUnicodeString.cs b/Ryujinx.Common/GraphicsDriver/NVAPI/NvapiUnicodeString.cs
new file mode 100644
index 00000000..bfa039b8
--- /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
+    {
+        public 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);
+            }
+        }
+    }
+}
-- 
cgit v1.2.3-70-g09d2