Generator: Add struct field remaps and better remap support.

Generate enums from constants as well.
This commit is contained in:
Amer Koleci
2022-09-01 15:20:24 +02:00
parent d4e1960c9c
commit e898628a2e
3 changed files with 139 additions and 50 deletions

View File

@@ -3,6 +3,7 @@
using System.Text; using System.Text;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace Generator; namespace Generator;
@@ -33,6 +34,8 @@ public static class Program
{"IntPtr", "nint" }, {"IntPtr", "nint" },
{"UIntPtr", "nuint" }, {"UIntPtr", "nuint" },
{"Char", "ushort" },
{ "Foundation.BOOL", "Bool32" }, { "Foundation.BOOL", "Bool32" },
{ "Foundation.HRESULT", "HResult" }, { "Foundation.HRESULT", "HResult" },
{ "Foundation.LUID", "Luid" }, { "Foundation.LUID", "Luid" },
@@ -49,7 +52,12 @@ public static class Program
private static readonly Dictionary<string, string> s_knownTypesPrefixes = new() private static readonly Dictionary<string, string> s_knownTypesPrefixes = new()
{ {
{ "DXGI_COLOR_SPACE_TYPE", "DXGI_COLOR_SPACE" }, { "DXGI_COLOR_SPACE_TYPE", "DXGI_COLOR_SPACE" },
{ "DXGI_GRAPHICS_PREEMPTION_GRANULARITY", "DXGI_GRAPHICS_PREEMPTION" },
{ "DXGI_COMPUTE_PREEMPTION_GRANULARITY", "DXGI_COMPUTE_PREEMPTION" }, { "DXGI_COMPUTE_PREEMPTION_GRANULARITY", "DXGI_COMPUTE_PREEMPTION" },
{ "DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS", "DXGI_MULTIPLANE_OVERLAY" },
{ "DXGI_RECLAIM_RESOURCE_RESULTS", "DXGI_RECLAIM_RESOURCE_RESULT" },
{ "DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAGS", "DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG" },
{ "DXGI_DEBUG_RLO_FLAGS", "DXGI_DEBUG_RLO" },
}; };
private static readonly Dictionary<string, string> s_knownEnumValueNames = new() private static readonly Dictionary<string, string> s_knownEnumValueNames = new()
@@ -64,6 +72,26 @@ public static class Program
private static readonly HashSet<string> s_preserveCaps = new(StringComparer.OrdinalIgnoreCase) private static readonly HashSet<string> s_preserveCaps = new(StringComparer.OrdinalIgnoreCase)
{ {
"HW",
"YUV",
"GDI",
};
private static readonly Dictionary<string, string> s_typesNameRemap = new()
{
{ "DXGI_ADAPTER_FLAG", "AdapterFlags" },
{ "DXGI_ADAPTER_FLAG3", "AdapterFlags3" },
{ "DXGI_SWAP_CHAIN_FLAG", "SwapChainFlags" }
};
private static readonly Dictionary<string, string> s_structFieldTypeRemap = new()
{
{ "DXGI_ADAPTER_DESC1::Flags", "DXGI_ADAPTER_FLAG" },
{ "DXGI_ADAPTER_DESC3::Flags", "DXGI_ADAPTER_FLAG3" },
{ "DXGI_SWAP_CHAIN_DESC::BufferUsage", "Usage" },
{ "DXGI_SWAP_CHAIN_DESC::Flags", "DXGI_SWAP_CHAIN_FLAG" },
{ "DXGI_SWAP_CHAIN_DESC1::BufferUsage", "Usage" },
{ "DXGI_SWAP_CHAIN_DESC1::Flags", "DXGI_SWAP_CHAIN_FLAG" },
}; };
public static int Main(string[] args) public static int Main(string[] args)
@@ -109,7 +137,7 @@ public static class Program
string fileName = string.Empty; string fileName = string.Empty;
for (int i = 1; i < splits.Length - 1; i++) for (int i = 1; i < splits.Length - 1; i++)
{ {
if(string.IsNullOrEmpty(fileName) == false) if (string.IsNullOrEmpty(fileName) == false)
{ {
fileName += "."; fileName += ".";
} }
@@ -220,6 +248,12 @@ public static class Program
string fieldTypeName = GetTypeName(field.Type); string fieldTypeName = GetTypeName(field.Type);
//writer.WriteLine($"/// <unmanaged>{field.Name}</unmanaged>"); //writer.WriteLine($"/// <unmanaged>{field.Name}</unmanaged>");
string remapFieldLookUp = $"{structType.Name}::{field.Name}";
if (s_structFieldTypeRemap.TryGetValue(remapFieldLookUp, out string? remapType))
{
fieldTypeName = GetTypeName(remapType);
}
if (fieldTypeName == "Array") if (fieldTypeName == "Array")
{ {
bool canUseFixed = false; bool canUseFixed = false;
@@ -272,7 +306,7 @@ public static class Program
{ {
string unsafePrefix = string.Empty; string unsafePrefix = string.Empty;
fieldTypeName = NormalizeTypeName(writer.Api, fieldTypeName); fieldTypeName = NormalizeTypeName(writer.Api, fieldTypeName);
if(fieldTypeName.EndsWith("*")) if (fieldTypeName.EndsWith("*"))
{ {
unsafePrefix += "unsafe "; unsafePrefix += "unsafe ";
} }
@@ -311,6 +345,11 @@ public static class Program
prefix = knowPrefix!; prefix = knowPrefix!;
} }
if (s_typesNameRemap.TryGetValue(typeName, out string? remapName))
{
return remapName!;
}
string[] parts = typeName.Split(new[] { '_' }, StringSplitOptions.RemoveEmptyEntries); string[] parts = typeName.Split(new[] { '_' }, StringSplitOptions.RemoveEmptyEntries);
var sb = new StringBuilder(); var sb = new StringBuilder();
@@ -331,6 +370,18 @@ public static class Program
{ {
sb.Append("Description"); sb.Append("Description");
} }
else if (part.Equals("DESC1", StringComparison.OrdinalIgnoreCase))
{
sb.Append("Description1");
}
else if (part.Equals("DESC2", StringComparison.OrdinalIgnoreCase))
{
sb.Append("Description2");
}
else if (part.Equals("DESC3", StringComparison.OrdinalIgnoreCase))
{
sb.Append("Description3");
}
else else
{ {
sb.Append(char.ToUpper(part[0])); sb.Append(char.ToUpper(part[0]));
@@ -448,6 +499,12 @@ public static class Program
} }
} }
else else
{
if (part.Equals("NONPREROTATED", StringComparison.OrdinalIgnoreCase))
{
sb.Append("NonPrerotated");
}
else
{ {
sb.Append(char.ToUpper(part[0])); sb.Append(char.ToUpper(part[0]));
for (int i = 1; i < part.Length; i++) for (int i = 1; i < part.Length; i++)
@@ -457,6 +514,7 @@ public static class Program
} }
} }
} }
}
string prettyName = sb.ToString(); string prettyName = sb.ToString();
return (char.IsNumber(prettyName[0])) ? "_" + prettyName : prettyName; return (char.IsNumber(prettyName[0])) ? "_" + prettyName : prettyName;
@@ -507,9 +565,14 @@ public static class Program
private static string GetTypeName(string name) private static string GetTypeName(string name)
{ {
if (s_csNameMappings.TryGetValue(name, out string? mappedName)) string? mappedName;
if (s_csNameMappings.TryGetValue(name, out mappedName))
{ {
return mappedName; return mappedName!;
}
else if (s_typesNameRemap.TryGetValue(name, out mappedName))
{
return mappedName!;
} }
return name; return name;

View File

@@ -132,14 +132,14 @@ public enum SwapEffect : int
} }
/// <unmanaged>DXGI_SWAP_CHAIN_FLAG</unmanaged> /// <unmanaged>DXGI_SWAP_CHAIN_FLAG</unmanaged>
public enum SwapChainFlag : int public enum SwapChainFlags : int
{ {
/// <unmanaged>DXGI_SWAP_CHAIN_FLAG_NONPREROTATED</unmanaged> /// <unmanaged>DXGI_SWAP_CHAIN_FLAG_NONPREROTATED</unmanaged>
Nonprerotated = 1, NonPrerotated = 1,
/// <unmanaged>DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH</unmanaged> /// <unmanaged>DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH</unmanaged>
AllowModeSwitch = 2, AllowModeSwitch = 2,
/// <unmanaged>DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE</unmanaged> /// <unmanaged>DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE</unmanaged>
GdiCompatible = 4, GDICompatible = 4,
/// <unmanaged>DXGI_SWAP_CHAIN_FLAG_RESTRICTED_CONTENT</unmanaged> /// <unmanaged>DXGI_SWAP_CHAIN_FLAG_RESTRICTED_CONTENT</unmanaged>
RestrictedContent = 8, RestrictedContent = 8,
/// <unmanaged>DXGI_SWAP_CHAIN_FLAG_RESTRICT_SHARED_RESOURCE_DRIVER</unmanaged> /// <unmanaged>DXGI_SWAP_CHAIN_FLAG_RESTRICT_SHARED_RESOURCE_DRIVER</unmanaged>
@@ -153,9 +153,9 @@ public enum SwapChainFlag : int
/// <unmanaged>DXGI_SWAP_CHAIN_FLAG_FULLSCREEN_VIDEO</unmanaged> /// <unmanaged>DXGI_SWAP_CHAIN_FLAG_FULLSCREEN_VIDEO</unmanaged>
FullscreenVideo = 256, FullscreenVideo = 256,
/// <unmanaged>DXGI_SWAP_CHAIN_FLAG_YUV_VIDEO</unmanaged> /// <unmanaged>DXGI_SWAP_CHAIN_FLAG_YUV_VIDEO</unmanaged>
YuvVideo = 512, YUVVideo = 512,
/// <unmanaged>DXGI_SWAP_CHAIN_FLAG_HW_PROTECTED</unmanaged> /// <unmanaged>DXGI_SWAP_CHAIN_FLAG_HW_PROTECTED</unmanaged>
HwProtected = 1024, HWProtected = 1024,
/// <unmanaged>DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING</unmanaged> /// <unmanaged>DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING</unmanaged>
AllowTearing = 2048, AllowTearing = 2048,
/// <unmanaged>DXGI_SWAP_CHAIN_FLAG_RESTRICTED_TO_ALL_HOLOGRAPHIC_DISPLAYS</unmanaged> /// <unmanaged>DXGI_SWAP_CHAIN_FLAG_RESTRICTED_TO_ALL_HOLOGRAPHIC_DISPLAYS</unmanaged>
@@ -164,7 +164,7 @@ public enum SwapChainFlag : int
/// <unmanaged>DXGI_ADAPTER_FLAG</unmanaged> /// <unmanaged>DXGI_ADAPTER_FLAG</unmanaged>
[Flags] [Flags]
public enum AdapterFlag : uint public enum AdapterFlags : uint
{ {
/// <unmanaged>DXGI_ADAPTER_FLAG_NONE</unmanaged> /// <unmanaged>DXGI_ADAPTER_FLAG_NONE</unmanaged>
None = 0, None = 0,
@@ -211,15 +211,15 @@ public enum Scaling : int
public enum GraphicsPreemptionGranularity : int public enum GraphicsPreemptionGranularity : int
{ {
/// <unmanaged>DXGI_GRAPHICS_PREEMPTION_DMA_BUFFER_BOUNDARY</unmanaged> /// <unmanaged>DXGI_GRAPHICS_PREEMPTION_DMA_BUFFER_BOUNDARY</unmanaged>
DXGI_GRAPHICS_PREEMPTION_DMA_BUFFER_BOUNDARY = 0, DmaBufferBoundary = 0,
/// <unmanaged>DXGI_GRAPHICS_PREEMPTION_PRIMITIVE_BOUNDARY</unmanaged> /// <unmanaged>DXGI_GRAPHICS_PREEMPTION_PRIMITIVE_BOUNDARY</unmanaged>
DXGI_GRAPHICS_PREEMPTION_PRIMITIVE_BOUNDARY = 1, PrimitiveBoundary = 1,
/// <unmanaged>DXGI_GRAPHICS_PREEMPTION_TRIANGLE_BOUNDARY</unmanaged> /// <unmanaged>DXGI_GRAPHICS_PREEMPTION_TRIANGLE_BOUNDARY</unmanaged>
DXGI_GRAPHICS_PREEMPTION_TRIANGLE_BOUNDARY = 2, TriangleBoundary = 2,
/// <unmanaged>DXGI_GRAPHICS_PREEMPTION_PIXEL_BOUNDARY</unmanaged> /// <unmanaged>DXGI_GRAPHICS_PREEMPTION_PIXEL_BOUNDARY</unmanaged>
DXGI_GRAPHICS_PREEMPTION_PIXEL_BOUNDARY = 3, PixelBoundary = 3,
/// <unmanaged>DXGI_GRAPHICS_PREEMPTION_INSTRUCTION_BOUNDARY</unmanaged> /// <unmanaged>DXGI_GRAPHICS_PREEMPTION_INSTRUCTION_BOUNDARY</unmanaged>
DXGI_GRAPHICS_PREEMPTION_INSTRUCTION_BOUNDARY = 4, InstructionBoundary = 4,
} }
/// <unmanaged>DXGI_COMPUTE_PREEMPTION_GRANULARITY</unmanaged> /// <unmanaged>DXGI_COMPUTE_PREEMPTION_GRANULARITY</unmanaged>
@@ -241,11 +241,11 @@ public enum ComputePreemptionGranularity : int
public enum MultiplaneOverlayYcbcrFlags : int public enum MultiplaneOverlayYcbcrFlags : int
{ {
/// <unmanaged>DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_NOMINAL_RANGE</unmanaged> /// <unmanaged>DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_NOMINAL_RANGE</unmanaged>
DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_NOMINAL_RANGE = 1, YcbcrFlagNominalRange = 1,
/// <unmanaged>DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_BT709</unmanaged> /// <unmanaged>DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_BT709</unmanaged>
DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_BT709 = 2, YcbcrFlagBt709 = 2,
/// <unmanaged>DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_xvYCC</unmanaged> /// <unmanaged>DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_xvYCC</unmanaged>
DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_xvYCC = 4, YcbcrFlagXvycc = 4,
} }
/// <unmanaged>DXGI_FRAME_PRESENTATION_MODE</unmanaged> /// <unmanaged>DXGI_FRAME_PRESENTATION_MODE</unmanaged>
@@ -324,11 +324,11 @@ public enum OfferResourceFlags : int
public enum ReclaimResourceResults : int public enum ReclaimResourceResults : int
{ {
/// <unmanaged>DXGI_RECLAIM_RESOURCE_RESULT_OK</unmanaged> /// <unmanaged>DXGI_RECLAIM_RESOURCE_RESULT_OK</unmanaged>
DXGI_RECLAIM_RESOURCE_RESULT_OK = 0, Ok = 0,
/// <unmanaged>DXGI_RECLAIM_RESOURCE_RESULT_DISCARDED</unmanaged> /// <unmanaged>DXGI_RECLAIM_RESOURCE_RESULT_DISCARDED</unmanaged>
DXGI_RECLAIM_RESOURCE_RESULT_DISCARDED = 1, Discarded = 1,
/// <unmanaged>DXGI_RECLAIM_RESOURCE_RESULT_NOT_COMMITTED</unmanaged> /// <unmanaged>DXGI_RECLAIM_RESOURCE_RESULT_NOT_COMMITTED</unmanaged>
DXGI_RECLAIM_RESOURCE_RESULT_NOT_COMMITTED = 2, NotCommitted = 2,
} }
/// <unmanaged>DXGI_FEATURE</unmanaged> /// <unmanaged>DXGI_FEATURE</unmanaged>
@@ -340,7 +340,7 @@ public enum Feature : int
/// <unmanaged>DXGI_ADAPTER_FLAG3</unmanaged> /// <unmanaged>DXGI_ADAPTER_FLAG3</unmanaged>
[Flags] [Flags]
public enum AdapterFlag3 : uint public enum AdapterFlags3 : uint
{ {
/// <unmanaged>DXGI_ADAPTER_FLAG3_NONE</unmanaged> /// <unmanaged>DXGI_ADAPTER_FLAG3_NONE</unmanaged>
None = 0, None = 0,
@@ -363,11 +363,11 @@ public enum AdapterFlag3 : uint
public enum HardwareCompositionSupportFlags : uint public enum HardwareCompositionSupportFlags : uint
{ {
/// <unmanaged>DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_FULLSCREEN</unmanaged> /// <unmanaged>DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_FULLSCREEN</unmanaged>
DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_FULLSCREEN = 1, Fullscreen = 1,
/// <unmanaged>DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_WINDOWED</unmanaged> /// <unmanaged>DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_WINDOWED</unmanaged>
DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_WINDOWED = 2, Windowed = 2,
/// <unmanaged>DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_CURSOR_STRETCHED</unmanaged> /// <unmanaged>DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_CURSOR_STRETCHED</unmanaged>
DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_CURSOR_STRETCHED = 4, CursorStretched = 4,
} }
/// <unmanaged>DXGI_GPU_PREFERENCE</unmanaged> /// <unmanaged>DXGI_GPU_PREFERENCE</unmanaged>
@@ -386,13 +386,13 @@ public enum GpuPreference : int
public enum DebugRloFlags : uint public enum DebugRloFlags : uint
{ {
/// <unmanaged>DXGI_DEBUG_RLO_SUMMARY</unmanaged> /// <unmanaged>DXGI_DEBUG_RLO_SUMMARY</unmanaged>
DXGI_DEBUG_RLO_SUMMARY = 1, Summary = 1,
/// <unmanaged>DXGI_DEBUG_RLO_DETAIL</unmanaged> /// <unmanaged>DXGI_DEBUG_RLO_DETAIL</unmanaged>
DXGI_DEBUG_RLO_DETAIL = 2, Detail = 2,
/// <unmanaged>DXGI_DEBUG_RLO_IGNORE_INTERNAL</unmanaged> /// <unmanaged>DXGI_DEBUG_RLO_IGNORE_INTERNAL</unmanaged>
DXGI_DEBUG_RLO_IGNORE_INTERNAL = 4, IgnoreInternal = 4,
/// <unmanaged>DXGI_DEBUG_RLO_ALL</unmanaged> /// <unmanaged>DXGI_DEBUG_RLO_ALL</unmanaged>
DXGI_DEBUG_RLO_ALL = 7, All = 7,
} }
/// <unmanaged>DXGI_INFO_QUEUE_MESSAGE_CATEGORY</unmanaged> /// <unmanaged>DXGI_INFO_QUEUE_MESSAGE_CATEGORY</unmanaged>
@@ -1136,7 +1136,7 @@ public partial struct MappedRect
/// <unmanaged>DXGI_ADAPTER_DESC</unmanaged> /// <unmanaged>DXGI_ADAPTER_DESC</unmanaged>
public partial struct AdapterDescription public partial struct AdapterDescription
{ {
public unsafe fixed Char Description[128]; public unsafe fixed ushort Description[128];
public uint VendorId; public uint VendorId;
public uint DeviceId; public uint DeviceId;
public uint SubSysId; public uint SubSysId;
@@ -1150,7 +1150,7 @@ public partial struct AdapterDescription
/// <unmanaged>DXGI_OUTPUT_DESC</unmanaged> /// <unmanaged>DXGI_OUTPUT_DESC</unmanaged>
public partial struct OutputDescription public partial struct OutputDescription
{ {
public unsafe fixed Char DeviceName[32]; public unsafe fixed ushort DeviceName[32];
public RawRect DesktopCoordinates; public RawRect DesktopCoordinates;
public Bool32 AttachedToDesktop; public Bool32 AttachedToDesktop;
public Common.ModeRotation Rotation; public Common.ModeRotation Rotation;
@@ -1177,18 +1177,18 @@ public partial struct SwapChainDescription
{ {
public Common.ModeDescription BufferDesc; public Common.ModeDescription BufferDesc;
public Common.SampleDescription SampleDesc; public Common.SampleDescription SampleDesc;
public uint BufferUsage; public Usage BufferUsage;
public uint BufferCount; public uint BufferCount;
public IntPtr OutputWindow; public IntPtr OutputWindow;
public Bool32 Windowed; public Bool32 Windowed;
public SwapEffect SwapEffect; public SwapEffect SwapEffect;
public uint Flags; public SwapChainFlags Flags;
} }
/// <unmanaged>DXGI_ADAPTER_DESC1</unmanaged> /// <unmanaged>DXGI_ADAPTER_DESC1</unmanaged>
public partial struct AdapterDesc1 public partial struct AdapterDescription1
{ {
public unsafe fixed Char Description[128]; public unsafe fixed ushort Description[128];
public uint VendorId; public uint VendorId;
public uint DeviceId; public uint DeviceId;
public uint SubSysId; public uint SubSysId;
@@ -1197,7 +1197,7 @@ public partial struct AdapterDesc1
public nuint DedicatedSystemMemory; public nuint DedicatedSystemMemory;
public nuint SharedSystemMemory; public nuint SharedSystemMemory;
public Luid AdapterLuid; public Luid AdapterLuid;
public uint Flags; public AdapterFlags Flags;
} }
/// <unmanaged>DXGI_DISPLAY_COLOR_SPACE</unmanaged> /// <unmanaged>DXGI_DISPLAY_COLOR_SPACE</unmanaged>
@@ -1253,7 +1253,7 @@ public partial struct OutduplFrameInfo
} }
/// <unmanaged>DXGI_MODE_DESC1</unmanaged> /// <unmanaged>DXGI_MODE_DESC1</unmanaged>
public partial struct ModeDesc1 public partial struct ModeDescription1
{ {
public uint Width; public uint Width;
public uint Height; public uint Height;
@@ -1265,19 +1265,19 @@ public partial struct ModeDesc1
} }
/// <unmanaged>DXGI_SWAP_CHAIN_DESC1</unmanaged> /// <unmanaged>DXGI_SWAP_CHAIN_DESC1</unmanaged>
public partial struct SwapChainDesc1 public partial struct SwapChainDescription1
{ {
public uint Width; public uint Width;
public uint Height; public uint Height;
public Common.Format Format; public Common.Format Format;
public Bool32 Stereo; public Bool32 Stereo;
public Common.SampleDescription SampleDesc; public Common.SampleDescription SampleDesc;
public uint BufferUsage; public Usage BufferUsage;
public uint BufferCount; public uint BufferCount;
public Scaling Scaling; public Scaling Scaling;
public SwapEffect SwapEffect; public SwapEffect SwapEffect;
public Common.AlphaMode AlphaMode; public Common.AlphaMode AlphaMode;
public uint Flags; public SwapChainFlags Flags;
} }
/// <unmanaged>DXGI_SWAP_CHAIN_FULLSCREEN_DESC</unmanaged> /// <unmanaged>DXGI_SWAP_CHAIN_FULLSCREEN_DESC</unmanaged>
@@ -1299,9 +1299,9 @@ public partial struct PresentParameters
} }
/// <unmanaged>DXGI_ADAPTER_DESC2</unmanaged> /// <unmanaged>DXGI_ADAPTER_DESC2</unmanaged>
public partial struct AdapterDesc2 public partial struct AdapterDescription2
{ {
public unsafe fixed Char Description[128]; public unsafe fixed ushort Description[128];
public uint VendorId; public uint VendorId;
public uint DeviceId; public uint DeviceId;
public uint SubSysId; public uint SubSysId;
@@ -1373,9 +1373,9 @@ public partial struct HdrMetadataHdr10plus
} }
/// <unmanaged>DXGI_ADAPTER_DESC3</unmanaged> /// <unmanaged>DXGI_ADAPTER_DESC3</unmanaged>
public partial struct AdapterDesc3 public partial struct AdapterDescription3
{ {
public unsafe fixed Char Description[128]; public unsafe fixed ushort Description[128];
public uint VendorId; public uint VendorId;
public uint DeviceId; public uint DeviceId;
public uint SubSysId; public uint SubSysId;
@@ -1384,15 +1384,15 @@ public partial struct AdapterDesc3
public nuint DedicatedSystemMemory; public nuint DedicatedSystemMemory;
public nuint SharedSystemMemory; public nuint SharedSystemMemory;
public Luid AdapterLuid; public Luid AdapterLuid;
public AdapterFlag3 Flags; public AdapterFlags3 Flags;
public GraphicsPreemptionGranularity GraphicsPreemptionGranularity; public GraphicsPreemptionGranularity GraphicsPreemptionGranularity;
public ComputePreemptionGranularity ComputePreemptionGranularity; public ComputePreemptionGranularity ComputePreemptionGranularity;
} }
/// <unmanaged>DXGI_OUTPUT_DESC1</unmanaged> /// <unmanaged>DXGI_OUTPUT_DESC1</unmanaged>
public partial struct OutputDesc1 public partial struct OutputDescription1
{ {
public unsafe fixed Char DeviceName[32]; public unsafe fixed ushort DeviceName[32];
public RawRect DesktopCoordinates; public RawRect DesktopCoordinates;
public Bool32 AttachedToDesktop; public Bool32 AttachedToDesktop;
public Common.ModeRotation Rotation; public Common.ModeRotation Rotation;

View File

@@ -0,0 +1,26 @@
// Copyright © Amer Koleci and Contributors.
// Licensed under the MIT License (MIT). See LICENSE in the repository root for more information.
using static Win32.Graphics.Dxgi.Apis;
namespace Win32.Graphics.Dxgi;
[Flags]
public enum Usage : uint
{
ShaderInput = DXGI_USAGE_SHADER_INPUT,
RenderTargetOutput = DXGI_USAGE_RENDER_TARGET_OUTPUT,
Backbuffer = DXGI_USAGE_BACK_BUFFER,
Shared = DXGI_USAGE_SHARED,
ReadOnly = DXGI_USAGE_READ_ONLY,
DiscardOnPresent = DXGI_USAGE_DISCARD_ON_PRESENT,
UnorderedAccess = DXGI_USAGE_UNORDERED_ACCESS
}
[Flags]
public enum MapFlags : uint
{
Read = DXGI_MAP_READ,
Write = DXGI_MAP_WRITE,
Discard = DXGI_MAP_DISCARD
}