| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- using System;
- using System.Runtime.InteropServices;
- namespace Ryujinx.HLE.HOS.Services.Nv
- {
- [StructLayout(LayoutKind.Sequential)]
- struct NvIoctl
- {
- public const int NvHostCustomMagic = 0x00;
- public const int NvMapCustomMagic = 0x01;
- public const int NvGpuAsMagic = 0x41;
- public const int NvGpuMagic = 0x47;
- public const int NvHostMagic = 0x48;
- private const int NumberBits = 8;
- private const int TypeBits = 8;
- private const int SizeBits = 14;
- private const int DirectionBits = 2;
- private const int NumberShift = 0;
- private const int TypeShift = NumberShift + NumberBits;
- private const int SizeShift = TypeShift + TypeBits;
- private const int DirectionShift = SizeShift + SizeBits;
- private const int NumberMask = (1 << NumberBits) - 1;
- private const int TypeMask = (1 << TypeBits) - 1;
- private const int SizeMask = (1 << SizeBits) - 1;
- private const int DirectionMask = (1 << DirectionBits) - 1;
- [Flags]
- public enum Direction : uint
- {
- None = 0,
- Read = 1,
- Write = 2,
- }
- public uint RawValue;
- public uint Number => (RawValue >> NumberShift) & NumberMask;
- public uint Type => (RawValue >> TypeShift) & TypeMask;
- public uint Size => (RawValue >> SizeShift) & SizeMask;
- public Direction DirectionValue => (Direction)((RawValue >> DirectionShift) & DirectionMask);
- }
- }
|