diff options
| author | Thomas Guillemard <thog@protonmail.com> | 2019-01-05 22:26:16 +0100 |
|---|---|---|
| committer | Ac_K <Acoustik666@gmail.com> | 2019-01-05 22:26:16 +0100 |
| commit | b4d91402c676035cf574983148c2d8682b3cf6f3 (patch) | |
| tree | 9d7acea69d148031c9afa6f92c5d091836348ddd /Ryujinx.Common/StructIOExtension.cs | |
| parent | 290f5e812e68e47d95aba0cc3789a4bc6d04c7ce (diff) | |
Some improvements for nvnflinger (#555)
* Initial fixes for last release of libnx
For now, the framebuffer aren't okay but it will not crash/
* Improve code reaadability in NvFlinger parsing
* Make surfaces access more userfriendly
* Add ColorFormat
* Fix code style in ColorFormat.cs
* Add multiple framebuffer support in nvnflinger
This fix libnx console rendering
* Move ReadStruct/WriteStruct to Ryujinx.Common
* fix the last nit
* Fix inverted color for R5G6B5
Also add some other format that libnx might uses.
* Remove hardcoded BlockHeight in nvflinger
Diffstat (limited to 'Ryujinx.Common/StructIOExtension.cs')
| -rw-r--r-- | Ryujinx.Common/StructIOExtension.cs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/Ryujinx.Common/StructIOExtension.cs b/Ryujinx.Common/StructIOExtension.cs new file mode 100644 index 00000000..8671b192 --- /dev/null +++ b/Ryujinx.Common/StructIOExtension.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Runtime.InteropServices; +using System.Text; + +namespace Ryujinx.Common +{ + public static class StructIOExtension + { + public unsafe static T ReadStruct<T>(this BinaryReader reader) where T : struct + { + int size = Marshal.SizeOf<T>(); + + byte[] data = reader.ReadBytes(size); + + fixed (byte* ptr = data) + { + return Marshal.PtrToStructure<T>((IntPtr)ptr); + } + } + + public unsafe static void WriteStruct<T>(this BinaryWriter writer, T value) where T : struct + { + long size = Marshal.SizeOf<T>(); + + byte[] data = new byte[size]; + + fixed (byte* ptr = data) + { + Marshal.StructureToPtr<T>(value, (IntPtr)ptr, false); + } + + writer.Write(data); + } + } +} |
