aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Common/GraphicsDriver/NVAPI/NvapiUnicodeString.cs
diff options
context:
space:
mode:
authorriperiperi <rhy3756547@hotmail.com>2021-04-07 13:19:02 +0100
committerriperiperi <rhy3756547@hotmail.com>2021-04-18 17:34:00 +0100
commit1239c82d2f2fa59a42561a4a278a9cdca5eca462 (patch)
tree2885fc1498de539d9c27878ed9788bb6ecf081c5 /Ryujinx.Common/GraphicsDriver/NVAPI/NvapiUnicodeString.cs
parentb1c3e01691507709bc4a6a23f02396f3b97803e5 (diff)
Forcibly enable threaded optimization on boot.
Diffstat (limited to 'Ryujinx.Common/GraphicsDriver/NVAPI/NvapiUnicodeString.cs')
-rw-r--r--Ryujinx.Common/GraphicsDriver/NVAPI/NvapiUnicodeString.cs42
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..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);
+ }
+ }
+ }
+}