diff --git a/src/Generator/ApiData.cs b/src/Generator/ApiData.cs index 364db46..083e53c 100644 --- a/src/Generator/ApiData.cs +++ b/src/Generator/ApiData.cs @@ -3,6 +3,8 @@ #nullable disable +using System.Text; + namespace Generator; public class ApiDataArrayShape @@ -20,6 +22,11 @@ public class ApiDataType // Kind == Array public ApiDataArrayShape Shape { get; set; } public ApiDataType Child { get; set; } + + // Kind == LPArray + public bool NullNullTerm { get; set; } + public int CountParamIndex { get; set; } + public int CountConst { get; set; } } public class ApiDataConstant @@ -46,6 +53,7 @@ public class ApiParameter { public string Name { get; set; } public ApiDataType Type { get; set; } + public List Attrs { get; set; } = new(); } public class ApiFunction @@ -55,6 +63,34 @@ public class ApiFunction public ApiDataType ReturnType { get; set; } public IList Params { get; set; } = new List(); public List Attrs { get; set; } + + private string _toString = default; + + public override string ToString() + { + if (string.IsNullOrEmpty(_toString)) + { + StringBuilder builder = new(); + builder.Append(ReturnType.Name).Append(' '); + builder.Append(Name).Append('('); + int parameterIndex = 0; + foreach (var parameter in Params) + { + // TODO: Handle PointerTo, Array etc + builder.Append(parameter.Type.Name).Append(' ').Append(parameter.Name); + if (parameterIndex < Params.Count - 1) + { + builder.Append(", "); + } + parameterIndex++; + } + + builder.Append(')'); + _toString = builder.ToString(); + } + + return _toString; + } } public class ApiType diff --git a/src/Generator/CodeWriter.cs b/src/Generator/CodeWriter.cs index 80847e8..826b296 100644 --- a/src/Generator/CodeWriter.cs +++ b/src/Generator/CodeWriter.cs @@ -1,14 +1,17 @@ // Copyright © Amer Koleci and Contributors. // Licensed under the MIT License (MIT). See LICENSE in the repository root for more information. +using System.Text; + namespace Generator; public sealed class CodeWriter : IDisposable { + private readonly string _fileName; private bool _shouldIndent = true; private readonly string[] _indentStrings; private string _indentString = ""; - private readonly StreamWriter _writer; + private readonly StringBuilder _builder = new(); public int IndentLevel { get; private set; } public string Api { get; } @@ -16,6 +19,7 @@ public sealed class CodeWriter : IDisposable public CodeWriter(string fileName, string api, string docFileName, string ns, params string[] usingNamespaces) { + _fileName = fileName; Api = api; DocFileName = docFileName; @@ -25,40 +29,40 @@ public sealed class CodeWriter : IDisposable _indentStrings[i] = new string('\t', i); } - _writer = File.CreateText(fileName); - _writer.WriteLine("// ------------------------------------------------------------------------------"); - _writer.WriteLine("// "); - _writer.WriteLine("// This code was generated by a tool."); - _writer.WriteLine("//"); - _writer.WriteLine("// Changes to this file may cause incorrect behavior and will be lost if"); - _writer.WriteLine("// the code is regenerated."); - _writer.WriteLine("// "); - _writer.WriteLine("// ------------------------------------------------------------------------------"); - _writer.WriteLine(); + _builder.AppendLine("// ------------------------------------------------------------------------------"); + _builder.AppendLine("// "); + _builder.AppendLine("// This code was generated by a tool."); + _builder.AppendLine("//"); + _builder.AppendLine("// Changes to this file may cause incorrect behavior and will be lost if"); + _builder.AppendLine("// the code is regenerated."); + _builder.AppendLine("// "); + _builder.AppendLine("// ------------------------------------------------------------------------------"); + _builder.AppendLine(); - _writer.WriteLine($"using System;"); - _writer.WriteLine($"using System.Diagnostics;"); - _writer.WriteLine($"using System.Runtime.CompilerServices;"); - _writer.WriteLine($"using System.Diagnostics.CodeAnalysis;"); + _builder.AppendLine($"using System;"); + _builder.AppendLine($"using System.Diagnostics;"); + _builder.AppendLine($"using System.Runtime.CompilerServices;"); + _builder.AppendLine($"using System.Diagnostics.CodeAnalysis;"); foreach (string usingNamespace in usingNamespaces) { - _writer.WriteLine($"using {usingNamespace};"); + _builder.AppendLine($"using {usingNamespace};"); } - _writer.WriteLine(); + _builder.AppendLine(); - _writer.WriteLine("#if !NET6_0_OR_GREATER"); - _writer.WriteLine("using MemoryMarshal = Win32.MemoryMarshal;"); - _writer.WriteLine("#endif"); - _writer.WriteLine(); + _builder.AppendLine("#if !NET6_0_OR_GREATER"); + _builder.AppendLine("using MemoryMarshal = Win32.MemoryMarshal;"); + _builder.AppendLine("#endif"); + _builder.AppendLine(); - _writer.WriteLine($"namespace {ns};"); - _writer.WriteLine(); + _builder.AppendLine($"namespace {ns};"); + _builder.AppendLine(); } public void Dispose() { - _writer.Dispose(); + string content = _builder.ToString(); + File.WriteAllText(_fileName, content); } public void Write(char chr) @@ -73,20 +77,20 @@ public sealed class CodeWriter : IDisposable public void WriteLine() { - _writer.WriteLine(); + _builder.AppendLine(); _shouldIndent = true; } public void WriteLine(string @string) { WriteIndented(@string); - _writer.WriteLine(); + _builder.AppendLine(); _shouldIndent = true; } public void WriteLineUndindented(string @string) { - _writer.WriteLine(@string); + _builder.AppendLine(@string); _shouldIndent = true; } @@ -139,22 +143,22 @@ public sealed class CodeWriter : IDisposable { if (_shouldIndent) { - _writer.Write(_indentString); + _builder.Append(_indentString); _shouldIndent = false; } - _writer.Write(chr); + _builder.Append(chr); } private void WriteIndented(string @string) { if (_shouldIndent) { - _writer.Write(_indentString); + _builder.Append(_indentString); _shouldIndent = false; } - _writer.Write(@string); + _builder.Append(@string); } private class CodeBlock : IDisposable diff --git a/src/Generator/Program.cs b/src/Generator/Program.cs index db68967..c6c7e3d 100644 --- a/src/Generator/Program.cs +++ b/src/Generator/Program.cs @@ -1,6 +1,7 @@ // Copyright © Amer Koleci and Contributors. // Licensed under the MIT License (MIT). See LICENSE in the repository root for more information. +using System.ComponentModel.DataAnnotations; using System.Text; using System.Text.RegularExpressions; using System.Xml; @@ -66,6 +67,7 @@ public static class Program { "Foundation.SIZE", "System.Drawing.Size" }, { "Graphics.Gdi.HMONITOR", "IntPtr" }, + { "Graphics.Gdi.HDC", "IntPtr" }, }; private static readonly Dictionary s_knownTypesPrefixes = new() @@ -130,6 +132,9 @@ public static class Program { "DXGI_SWAP_CHAIN_DESC1::Flags", "DXGI_SWAP_CHAIN_FLAG" }, }; + private static readonly HashSet s_visitedEnums = new(); + private static readonly HashSet s_visitedStructs = new(); + private static bool s_generateUnmanagedDocs = true; public static int Main(string[] args) @@ -443,7 +448,10 @@ public static class Program foreach (ApiType enumType in api.Types.Where(item => item.Kind.ToLowerInvariant() == "enum")) { GenerateEnum(writer, enumType, false); + + s_visitedEnums.Add($"{writer.Api}.{enumType.Name}"); } + writer.WriteLine($"#endregion Enums"); writer.WriteLine(); @@ -504,6 +512,8 @@ public static class Program foreach (ApiType structType in api.Types.Where(item => item.Kind.ToLowerInvariant() == "struct")) { GenerateStruct(writer, structType); + + s_visitedStructs.Add($"{writer.Api}.{structType.Name}"); } writer.WriteLine($"#endregion Structs"); writer.WriteLine(); @@ -512,10 +522,35 @@ public static class Program writer.WriteLine($"#region COM Types"); foreach (ApiType comType in api.Types.Where(item => item.Kind.ToLowerInvariant() == "com")) { - GenerateComType(writer, comType); + //if (comType.Name != "IDXGIObject" && + // comType.Name != "IDXGIDeviceSubObject") + //{ + // break; + //} + + // Generate methods + List> methodsToGenerate = new(); + ApiType iterateType = comType; + while (iterateType.Interface != null && iterateType.Interface.Name != "IUnknown") + { + iterateType = api.Types.First(item => item.Name == iterateType.Interface.Name); + + foreach (var method in iterateType.Methods) + { + methodsToGenerate.Add(new(method, iterateType.Name)); + } + + } + + foreach (var method in comType.Methods) + { + methodsToGenerate.Add(new(method, comType.Name)); + } + + GenerateComType(api, writer, comType, methodsToGenerate); } - writer.WriteLine($"#endregion COM Types"); - writer.WriteLine(); + + writer.WriteLine($"#endregion Com Types"); } private static void GenerateEnum(CodeWriter writer, ApiType enumType, bool autoGenerated) @@ -671,20 +706,20 @@ public static class Program writer.WriteLine($"public {unsafePrefix}{fieldTypeName} {fieldValueName};"); } + + writer.WriteLine(); } } writer.WriteLine(); } - private static void GenerateComType(CodeWriter writer, ApiType comType) + private static void GenerateComType( + ApiData api, + CodeWriter writer, + ApiType comType, + List> methodsToGenerate) { - if (comType.Name != "IDXGIObject" /*&& - comType.Name != "IDXGIDeviceSubObject"*/) - { - return; - } - string csTypeName = comType.Name; //AddCsMapping(writer.Api, comType.Name, csTypeName); @@ -701,7 +736,6 @@ public static class Program using (writer.PushBlock($"public unsafe partial struct {csTypeName} : {csTypeName}.Interface")) { // Generate IID - writer.WriteLine($"[NativeTypeName(\"const GUID\")]"); using (writer.PushBlock($"public static ref readonly Guid IID_{csTypeName}")) { writer.WriteLine("[MethodImpl(MethodImplOptions.AggressiveInlining)]"); @@ -756,7 +790,17 @@ public static class Program writer.WriteLine(); int vtblIndex = 0; - if (comType.Interface.Name == "IUnknown") + + bool generateIUnknown = false; + var iterateType = comType; + + while (iterateType != null) + { + generateIUnknown = iterateType.Interface.Name == "IUnknown"; + iterateType = api.Types.FirstOrDefault(item => item.Name == iterateType.Interface.Name); + } + + if (generateIUnknown) { writer.WriteLine("/// "); writer.WriteLine("[MethodImpl(MethodImplOptions.AggressiveInlining)]"); @@ -791,8 +835,11 @@ public static class Program vtblIndex = 3; } - foreach (var method in comType.Methods) + foreach (var methodPair in methodsToGenerate) { + var method = methodPair.Key; + string docName = methodPair.Value; + // TODO: Handle inherit string returnType = GetTypeName(method.ReturnType); @@ -801,12 +848,43 @@ public static class Program StringBuilder argumentsNameBuilder = new(); int parameterIndex = 0; + if (method.Name == "SetEvictionPriority") + { + Console.WriteLine(); + } + foreach (var parameter in method.Params) { - string parameterType = GetTypeName(parameter.Type); + bool asPointer = false; + if (parameter.Type.Kind == "ApiRef") + { + string fullTypeName = $"{parameter.Type.Api}.{parameter.Type.Name}"; + if (!IsEnum(fullTypeName)) + { + asPointer = true; + } + //string typeName = GetTypeName($"{dataType.Api}.{dataType.Name}"); + } + + string parameterType = GetTypeName(parameter.Type, asPointer); + parameterType = NormalizeTypeName(writer.Api, parameterType); string parameterName = parameter.Name; + bool isOptional = parameter.Attrs.Any(item => item is string str && str == "Optional"); + if (parameter.Attrs.Any(item => item is string str && str == "ComOutPtr")) + { + if (!IsPrimitive(parameter.Type)) + { + parameterType += "*"; + } + } + argumentBuilder.Append(parameterType).Append(' ').Append(parameterName); + if (isOptional == true) + { + //argumentBuilder.Append(" = default"); + } + argumentsTypesBuilder.Append(parameterType); argumentsNameBuilder.Append(parameterName); @@ -827,13 +905,30 @@ public static class Program returnMarshalType = "int"; } - argumentsTypesBuilder.Append(", ").Append(returnMarshalType); + if (method.Params.Count > 0) + { + argumentsTypesBuilder.Append(", "); + } + + argumentsTypesBuilder.Append(returnMarshalType); string argumentsString = argumentBuilder.ToString(); string argumentTypesString = argumentsTypesBuilder.ToString(); string argumentNamesString = argumentsNameBuilder.ToString(); + if (method.Params.Count > 0) + { + argumentNamesString = ", " + argumentNamesString; + } + + if (comType.Name == docName) + { + writer.WriteLine($"/// "); + } + else + { + writer.WriteLine($"/// "); + } - writer.WriteLine($"/// "); writer.WriteLine("[MethodImpl(MethodImplOptions.AggressiveInlining)]"); writer.WriteLine($"[VtblIndex({vtblIndex})]"); using (writer.PushBlock($"public {returnType} {method.Name}({argumentsString})")) @@ -841,14 +936,13 @@ public static class Program writer.WriteLineUndindented("#if NET6_0_OR_GREATER"); if (returnType != "void") writer.Write("return "); - writer.WriteLine($"((delegate* unmanaged<{comType.Name}*, {argumentTypesString}>)(lpVtbl[{vtblIndex}]))(({comType.Name}*)Unsafe.AsPointer(ref this), {argumentNamesString});"); + writer.WriteLine($"((delegate* unmanaged<{comType.Name}*, {argumentTypesString}>)(lpVtbl[{vtblIndex}]))(({comType.Name}*)Unsafe.AsPointer(ref this){argumentNamesString});"); writer.WriteLineUndindented("#else"); if (returnType != "void") writer.Write("return "); - writer.WriteLine($"((delegate* unmanaged[Stdcall]<{comType.Name}*, {argumentTypesString}>)(lpVtbl[{vtblIndex}]))(({comType.Name}*)Unsafe.AsPointer(ref this), {argumentNamesString});"); + writer.WriteLine($"((delegate* unmanaged[Stdcall]<{comType.Name}*, {argumentTypesString}>)(lpVtbl[{vtblIndex}]))(({comType.Name}*)Unsafe.AsPointer(ref this){argumentNamesString});"); writer.WriteLineUndindented("#endif"); } - writer.WriteLine(); vtblIndex++; @@ -857,7 +951,7 @@ public static class Program using (writer.PushBlock($"public interface Interface : {comType.Interface.Name}.Interface")) { } - writer.WriteLine(); + //writer.WriteLine(); } writer.WriteLine(); @@ -877,7 +971,9 @@ public static class Program private static string NormalizeTypeName(string api, string typeName) { if (!typeName.StartsWith(api)) + { return typeName; + } return typeName.Replace(api + ".", ""); } @@ -1084,17 +1180,21 @@ public static class Program return $"new Guid({a}, {b}, {c}, {d}, {e}, {f}, {g}, {h}, {i}, {j}, {k})"; } - - private static string GetTypeName(ApiDataType dataType) + private static string GetTypeName(ApiDataType dataType, bool asPointer = false) { if (dataType.Kind == "ApiRef") { - return GetTypeName($"{dataType.Api}.{dataType.Name}"); + string typeName = GetTypeName($"{dataType.Api}.{dataType.Name}"); + return asPointer ? typeName + "*" : typeName; } else if (dataType.Kind == "Array") { return "Array"; } + else if (dataType.Kind == "LPArray") + { + return GetTypeName(dataType.Child) + "*"; + } else if (dataType.Kind == "PointerTo") { return GetTypeName(dataType.Child) + "*"; @@ -1103,6 +1203,48 @@ public static class Program return GetTypeName(dataType.Name); } + private static bool IsPrimitive(ApiDataType dataType) + { + if (dataType.Kind == "ApiRef") + { + string apiRefType = GetTypeName($"{dataType.Api}.{dataType.Name}"); + } + else if (dataType.Kind == "PointerTo") + { + return IsPrimitive(dataType.Child); + } + + if (dataType.Kind != "Native") + { + return false; + } + + string typeName = GetTypeName(dataType.Name); + switch (typeName) + { + case "void": + case "int": + case "uint": + return true; + + case "nint": + case "nuint": + return true; + } + + return false; + } + + private static bool IsEnum(string typeName) + { + return s_visitedEnums.Contains(typeName); + } + + private static bool IsStruct(string typeName) + { + return s_visitedStructs.Contains(typeName); + } + private static void AddCsMapping(string api, string typeName, string csTypeName) { s_csNameMappings[$"{api}.{typeName}"] = $"{api}.{csTypeName}"; diff --git a/src/Vortice.Win32/Bool32.cs b/src/Vortice.Win32/Bool32.cs index bd11ff2..a960f3c 100644 --- a/src/Vortice.Win32/Bool32.cs +++ b/src/Vortice.Win32/Bool32.cs @@ -3,7 +3,7 @@ namespace Win32; -public readonly partial struct Bool32 : IComparable, IComparable, IEquatable, IFormattable +public readonly partial struct Bool32 : IComparable, IComparable, IEquatable { public readonly int Value; @@ -93,7 +93,5 @@ public readonly partial struct Bool32 : IComparable, IComparable, IEquat public override int GetHashCode() => Value.GetHashCode(); - public override string ToString() => Value.ToString(); - - public string ToString(string? format, IFormatProvider? formatProvider) => Value.ToString(format, formatProvider); + public override string ToString() => Value != 0 ? "True" : "False"; } diff --git a/src/Vortice.Win32/Generated/Graphics/Dxgi.Common.cs b/src/Vortice.Win32/Generated/Graphics/Dxgi.Common.cs index c708647..27d0a16 100644 --- a/src/Vortice.Win32/Generated/Graphics/Dxgi.Common.cs +++ b/src/Vortice.Win32/Generated/Graphics/Dxgi.Common.cs @@ -577,8 +577,10 @@ public partial struct Rational { /// public uint Numerator; + /// public uint Denominator; + } /// @@ -587,8 +589,10 @@ public partial struct SampleDescription { /// public uint Count; + /// public uint Quality; + } /// @@ -597,10 +601,13 @@ public partial struct Rgb { /// public float Red; + /// public float Green; + /// public float Blue; + } /// @@ -609,8 +616,10 @@ public partial struct GammaControl { /// public Rgb Scale; + /// public Rgb Offset; + /// public GammaCurve__FixedBuffer GammaCurve; @@ -1659,6 +1668,7 @@ public partial struct GammaControl return MemoryMarshal.CreateSpan(ref e0, 1025); } } + } /// @@ -1667,14 +1677,19 @@ public partial struct GammaControlCapabilities { /// public Bool32 ScaleAndOffsetSupported; + /// public float MaxConvertedValue; + /// public float MinConvertedValue; + /// public uint NumGammaControlPoints; + /// public unsafe fixed float ControlPointPositions[1025]; + } /// @@ -1683,16 +1698,22 @@ public partial struct ModeDescription { /// public uint Width; + /// public uint Height; + /// public Rational RefreshRate; + /// public Format Format; + /// public ModeScanlineOrder ScanlineOrdering; + /// public ModeScaling Scaling; + } /// @@ -1701,8 +1722,10 @@ public partial struct JpegDcHuffmanTable { /// public unsafe fixed byte CodeCounts[12]; + /// public unsafe fixed byte CodeValues[12]; + } /// @@ -1711,8 +1734,10 @@ public partial struct JpegAcHuffmanTable { /// public unsafe fixed byte CodeCounts[16]; + /// public unsafe fixed byte CodeValues[162]; + } /// @@ -1721,10 +1746,10 @@ public partial struct JpegQuantizationTable { /// public unsafe fixed byte Elements[64]; + } #endregion Structs #region COM Types -#endregion COM Types - +#endregion Com Types diff --git a/src/Vortice.Win32/Generated/Graphics/Dxgi.cs b/src/Vortice.Win32/Generated/Graphics/Dxgi.cs index c247b85..3d245ab 100644 --- a/src/Vortice.Win32/Generated/Graphics/Dxgi.cs +++ b/src/Vortice.Win32/Generated/Graphics/Dxgi.cs @@ -1643,12 +1643,16 @@ public partial struct Rgba { /// public float r; + /// public float g; + /// public float b; + /// public float a; + } /// @@ -1657,14 +1661,19 @@ public partial struct FrameStatistics { /// public uint PresentCount; + /// public uint PresentRefreshCount; + /// public uint SyncRefreshCount; + /// public LargeInterger SyncQPCTime; + /// public LargeInterger SyncGPUTime; + } /// @@ -1673,8 +1682,10 @@ public partial struct MappedRect { /// public int Pitch; + /// public unsafe byte* pBits; + } /// @@ -1683,22 +1694,31 @@ public partial struct AdapterDescription { /// public unsafe fixed ushort Description[128]; + /// public uint VendorId; + /// public uint DeviceId; + /// public uint SubSysId; + /// public uint Revision; + /// public nuint DedicatedVideoMemory; + /// public nuint DedicatedSystemMemory; + /// public nuint SharedSystemMemory; + /// public Luid AdapterLuid; + } /// @@ -1707,14 +1727,19 @@ public partial struct OutputDescription { /// public unsafe fixed ushort DeviceName[32]; + /// public RawRect DesktopCoordinates; + /// public Bool32 AttachedToDesktop; + /// public Common.ModeRotation Rotation; + /// public IntPtr Monitor; + } /// @@ -1723,6 +1748,7 @@ public partial struct SharedResource { /// public IntPtr Handle; + } /// @@ -1731,12 +1757,16 @@ public partial struct SurfaceDescription { /// public uint Width; + /// public uint Height; + /// public Common.Format Format; + /// public Common.SampleDescription SampleDesc; + } /// @@ -1745,20 +1775,28 @@ public partial struct SwapChainDescription { /// public Common.ModeDescription BufferDesc; + /// public Common.SampleDescription SampleDesc; + /// public Usage BufferUsage; + /// public uint BufferCount; + /// public IntPtr OutputWindow; + /// public Bool32 Windowed; + /// public SwapEffect SwapEffect; + /// public SwapChainFlags Flags; + } /// @@ -1767,24 +1805,34 @@ public partial struct AdapterDescription1 { /// public unsafe fixed ushort Description[128]; + /// public uint VendorId; + /// public uint DeviceId; + /// public uint SubSysId; + /// public uint Revision; + /// public nuint DedicatedVideoMemory; + /// public nuint DedicatedSystemMemory; + /// public nuint SharedSystemMemory; + /// public Luid AdapterLuid; + /// public AdapterFlags Flags; + } /// @@ -1793,8 +1841,10 @@ public partial struct DisplayColorSpace { /// public unsafe fixed float PrimaryCoordinates[16]; + /// public unsafe fixed float WhitePoints[32]; + } /// @@ -1803,8 +1853,10 @@ public partial struct OutduplMoveRect { /// public System.Drawing.Point SourcePoint; + /// public RawRect DestinationRect; + } /// @@ -1813,10 +1865,13 @@ public partial struct OutduplDescription { /// public Common.ModeDescription ModeDesc; + /// public Common.ModeRotation Rotation; + /// public Bool32 DesktopImageInSystemMemory; + } /// @@ -1825,8 +1880,10 @@ public partial struct OutduplPointerPosition { /// public System.Drawing.Point Position; + /// public Bool32 Visible; + } /// @@ -1835,14 +1892,19 @@ public partial struct OutduplPointerShapeInfo { /// public uint Type; + /// public uint Width; + /// public uint Height; + /// public uint Pitch; + /// public System.Drawing.Point HotSpot; + } /// @@ -1851,20 +1913,28 @@ public partial struct OutduplFrameInfo { /// public LargeInterger LastPresentTime; + /// public LargeInterger LastMouseUpdateTime; + /// public uint AccumulatedFrames; + /// public Bool32 RectsCoalesced; + /// public Bool32 ProtectedContentMaskedOut; + /// public OutduplPointerPosition PointerPosition; + /// public uint TotalMetadataBufferSize; + /// public uint PointerShapeBufferSize; + } /// @@ -1873,18 +1943,25 @@ public partial struct ModeDescription1 { /// public uint Width; + /// public uint Height; + /// public Common.Rational RefreshRate; + /// public Common.Format Format; + /// public Common.ModeScanlineOrder ScanlineOrdering; + /// public Common.ModeScaling Scaling; + /// public Bool32 Stereo; + } /// @@ -1893,26 +1970,37 @@ public partial struct SwapChainDescription1 { /// public uint Width; + /// public uint Height; + /// public Common.Format Format; + /// public Bool32 Stereo; + /// public Common.SampleDescription SampleDesc; + /// public Usage BufferUsage; + /// public uint BufferCount; + /// public Scaling Scaling; + /// public SwapEffect SwapEffect; + /// public Common.AlphaMode AlphaMode; + /// public SwapChainFlags Flags; + } /// @@ -1921,12 +2009,16 @@ public partial struct SwapChainFullscreenDescription { /// public Common.Rational RefreshRate; + /// public Common.ModeScanlineOrder ScanlineOrdering; + /// public Common.ModeScaling Scaling; + /// public Bool32 Windowed; + } /// @@ -1935,12 +2027,16 @@ public partial struct PresentParameters { /// public uint DirtyRectsCount; + /// public unsafe RawRect* pDirtyRects; + /// public unsafe RawRect* pScrollRect; + /// public unsafe System.Drawing.Point* pScrollOffset; + } /// @@ -1949,28 +2045,40 @@ public partial struct AdapterDescription2 { /// public unsafe fixed ushort Description[128]; + /// public uint VendorId; + /// public uint DeviceId; + /// public uint SubSysId; + /// public uint Revision; + /// public nuint DedicatedVideoMemory; + /// public nuint DedicatedSystemMemory; + /// public nuint SharedSystemMemory; + /// public Luid AdapterLuid; + /// public uint Flags; + /// public GraphicsPreemptionGranularity GraphicsPreemptionGranularity; + /// public ComputePreemptionGranularity ComputePreemptionGranularity; + } /// @@ -1979,16 +2087,22 @@ public partial struct Matrix3x2F { /// public float _11; + /// public float _12; + /// public float _21; + /// public float _22; + /// public float _31; + /// public float _32; + } /// @@ -1997,6 +2111,7 @@ public partial struct DecodeSwapChainDescription { /// public uint Flags; + } /// @@ -2005,18 +2120,25 @@ public partial struct FrameStatisticsMedia { /// public uint PresentCount; + /// public uint PresentRefreshCount; + /// public uint SyncRefreshCount; + /// public LargeInterger SyncQPCTime; + /// public LargeInterger SyncGPUTime; + /// public FramePresentationMode CompositionMode; + /// public uint ApprovedPresentDuration; + } /// @@ -2025,12 +2147,16 @@ public partial struct QueryVideoMemoryInfo { /// public ulong Budget; + /// public ulong CurrentUsage; + /// public ulong AvailableForReservation; + /// public ulong CurrentReservation; + } /// @@ -2039,20 +2165,28 @@ public partial struct HdrMetadataHdr10 { /// public unsafe fixed ushort RedPrimary[2]; + /// public unsafe fixed ushort GreenPrimary[2]; + /// public unsafe fixed ushort BluePrimary[2]; + /// public unsafe fixed ushort WhitePoint[2]; + /// public uint MaxMasteringLuminance; + /// public uint MinMasteringLuminance; + /// public ushort MaxContentLightLevel; + /// public ushort MaxFrameAverageLightLevel; + } /// @@ -2061,6 +2195,7 @@ public partial struct HdrMetadataHdr10plus { /// public unsafe fixed byte Data[72]; + } /// @@ -2069,28 +2204,40 @@ public partial struct AdapterDescription3 { /// public unsafe fixed ushort Description[128]; + /// public uint VendorId; + /// public uint DeviceId; + /// public uint SubSysId; + /// public uint Revision; + /// public nuint DedicatedVideoMemory; + /// public nuint DedicatedSystemMemory; + /// public nuint SharedSystemMemory; + /// public Luid AdapterLuid; + /// public AdapterFlags3 Flags; + /// public GraphicsPreemptionGranularity GraphicsPreemptionGranularity; + /// public ComputePreemptionGranularity ComputePreemptionGranularity; + } /// @@ -2099,32 +2246,46 @@ public partial struct OutputDescription1 { /// public unsafe fixed ushort DeviceName[32]; + /// public RawRect DesktopCoordinates; + /// public Bool32 AttachedToDesktop; + /// public Common.ModeRotation Rotation; + /// public IntPtr Monitor; + /// public uint BitsPerColor; + /// public Common.ColorSpaceType ColorSpace; + /// public unsafe fixed float RedPrimary[2]; + /// public unsafe fixed float GreenPrimary[2]; + /// public unsafe fixed float BluePrimary[2]; + /// public unsafe fixed float WhitePoint[2]; + /// public float MinLuminance; + /// public float MaxLuminance; + /// public float MaxFullFrameLuminance; + } /// @@ -2133,16 +2294,22 @@ public partial struct InfoQueueMessage { /// public Guid Producer; + /// public InfoQueueMessageCategory Category; + /// public InfoQueueMessageSeverity Severity; + /// public int ID; + /// public unsafe byte* pDescription; + /// public nuint DescriptionByteLength; + } /// @@ -2151,16 +2318,22 @@ public partial struct InfoQueueFilterDescription { /// public uint NumCategories; + /// public unsafe InfoQueueMessageCategory* pCategoryList; + /// public uint NumSeverities; + /// public unsafe InfoQueueMessageSeverity* pSeverityList; + /// public uint NumIDs; + /// public unsafe int* pIDList; + } /// @@ -2169,8 +2342,10 @@ public partial struct InfoQueueFilter { /// public InfoQueueFilterDescription AllowList; + /// public InfoQueueFilterDescription DenyList; + } #endregion Structs @@ -2183,7 +2358,6 @@ public partial struct InfoQueueFilter [NativeInheritance("IUnknown")] public unsafe partial struct IDXGIObject : IDXGIObject.Interface { - [NativeTypeName("const GUID")] public static ref readonly Guid IID_IDXGIObject { [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -2253,12 +2427,12 @@ public unsafe partial struct IDXGIObject : IDXGIObject.Interface /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(4)] - public HResult SetPrivateDataInterface(Guid* Name, IUnknown pUnknown) + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) { #if NET6_0_OR_GREATER - return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIObject*)Unsafe.AsPointer(ref this), Name, pUnknown); + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIObject*)Unsafe.AsPointer(ref this), Name, pUnknown); #else - return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIObject*)Unsafe.AsPointer(ref this), Name, pUnknown); + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIObject*)Unsafe.AsPointer(ref this), Name, pUnknown); #endif } @@ -2289,8 +2463,11766 @@ public unsafe partial struct IDXGIObject : IDXGIObject.Interface public interface Interface : IUnknown.Interface { } - } -#endregion COM Types +/// +/// IDXGIDeviceSubObject +[Guid("3d3e0379-f9de-4d58-bb6c-18d62992f1a6")] +[NativeTypeName("struct IDXGIDeviceSubObject : IDXGIObject")] +[NativeInheritance("IDXGIObject")] +public unsafe partial struct IDXGIDeviceSubObject : IDXGIDeviceSubObject.Interface +{ + public static ref readonly Guid IID_IDXGIDeviceSubObject + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x79, 0x03, 0x3E, 0x3D, + 0xDE, 0xF9, + 0x58, 0x4D, + 0xBB, + 0x6C, + 0x18, + 0xD6, + 0x29, + 0x92, + 0xF1, + 0xA6 + }; + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIDeviceSubObject)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIDeviceSubObject*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIDeviceSubObject*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIDeviceSubObject*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIDeviceSubObject*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIDeviceSubObject*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIDeviceSubObject*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIDeviceSubObject*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIDeviceSubObject*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult GetDevice(Guid* riid, void** ppDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIDeviceSubObject*)Unsafe.AsPointer(ref this), riid, ppDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIDeviceSubObject*)Unsafe.AsPointer(ref this), riid, ppDevice); +#endif + } + + public interface Interface : IDXGIObject.Interface + { + } +} + +/// +/// IDXGIResource +[Guid("035f3ab4-482e-4e50-b41f-8a7f8bd8960b")] +[NativeTypeName("struct IDXGIResource : IDXGIDeviceSubObject")] +[NativeInheritance("IDXGIDeviceSubObject")] +public unsafe partial struct IDXGIResource : IDXGIResource.Interface +{ + public static ref readonly Guid IID_IDXGIResource + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0xB4, 0x3A, 0x5F, 0x03, + 0x2E, 0x48, + 0x50, 0x4E, + 0xB4, + 0x1F, + 0x8A, + 0x7F, + 0x8B, + 0xD8, + 0x96, + 0x0B + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIResource)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult GetDevice(Guid* riid, void** ppDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIResource*)Unsafe.AsPointer(ref this), riid, ppDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIResource*)Unsafe.AsPointer(ref this), riid, ppDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIResource*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIResource*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIResource*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIResource*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIResource*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIResource*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIResource*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIResource*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult GetSharedHandle(IntPtr* pSharedHandle) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIResource*)Unsafe.AsPointer(ref this), pSharedHandle); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIResource*)Unsafe.AsPointer(ref this), pSharedHandle); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult GetUsage(uint* pUsage) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIResource*)Unsafe.AsPointer(ref this), pUsage); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIResource*)Unsafe.AsPointer(ref this), pUsage); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult SetEvictionPriority(ResourcePriority EvictionPriority) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIResource*)Unsafe.AsPointer(ref this), EvictionPriority); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIResource*)Unsafe.AsPointer(ref this), EvictionPriority); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult GetEvictionPriority(uint* pEvictionPriority) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIResource*)Unsafe.AsPointer(ref this), pEvictionPriority); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIResource*)Unsafe.AsPointer(ref this), pEvictionPriority); +#endif + } + + public interface Interface : IDXGIDeviceSubObject.Interface + { + } +} + +/// +/// IDXGIKeyedMutex +[Guid("9d8e1289-d7b3-465f-8126-250e349af85d")] +[NativeTypeName("struct IDXGIKeyedMutex : IDXGIDeviceSubObject")] +[NativeInheritance("IDXGIDeviceSubObject")] +public unsafe partial struct IDXGIKeyedMutex : IDXGIKeyedMutex.Interface +{ + public static ref readonly Guid IID_IDXGIKeyedMutex + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x89, 0x12, 0x8E, 0x9D, + 0xB3, 0xD7, + 0x5F, 0x46, + 0x81, + 0x26, + 0x25, + 0x0E, + 0x34, + 0x9A, + 0xF8, + 0x5D + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIKeyedMutex)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult GetDevice(Guid* riid, void** ppDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIKeyedMutex*)Unsafe.AsPointer(ref this), riid, ppDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIKeyedMutex*)Unsafe.AsPointer(ref this), riid, ppDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIKeyedMutex*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIKeyedMutex*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIKeyedMutex*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIKeyedMutex*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIKeyedMutex*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIKeyedMutex*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIKeyedMutex*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIKeyedMutex*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult AcquireSync(ulong Key, uint dwMilliseconds) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIKeyedMutex*)Unsafe.AsPointer(ref this), Key, dwMilliseconds); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIKeyedMutex*)Unsafe.AsPointer(ref this), Key, dwMilliseconds); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult ReleaseSync(ulong Key) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIKeyedMutex*)Unsafe.AsPointer(ref this), Key); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIKeyedMutex*)Unsafe.AsPointer(ref this), Key); +#endif + } + + public interface Interface : IDXGIDeviceSubObject.Interface + { + } +} + +/// +/// IDXGISurface +[Guid("cafcb56c-6ac3-4889-bf47-9e23bbd260ec")] +[NativeTypeName("struct IDXGISurface : IDXGIDeviceSubObject")] +[NativeInheritance("IDXGIDeviceSubObject")] +public unsafe partial struct IDXGISurface : IDXGISurface.Interface +{ + public static ref readonly Guid IID_IDXGISurface + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x6C, 0xB5, 0xFC, 0xCA, + 0xC3, 0x6A, + 0x89, 0x48, + 0xBF, + 0x47, + 0x9E, + 0x23, + 0xBB, + 0xD2, + 0x60, + 0xEC + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGISurface)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult GetDevice(Guid* riid, void** ppDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGISurface*)Unsafe.AsPointer(ref this), riid, ppDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGISurface*)Unsafe.AsPointer(ref this), riid, ppDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGISurface*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGISurface*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGISurface*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGISurface*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGISurface*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGISurface*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGISurface*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGISurface*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult GetDesc(SurfaceDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGISurface*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGISurface*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult Map(MappedRect* pLockedRect, uint MapFlags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGISurface*)Unsafe.AsPointer(ref this), pLockedRect, MapFlags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGISurface*)Unsafe.AsPointer(ref this), pLockedRect, MapFlags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult Unmap() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGISurface*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGISurface*)Unsafe.AsPointer(ref this)); +#endif + } + + public interface Interface : IDXGIDeviceSubObject.Interface + { + } +} + +/// +/// IDXGISurface1 +[Guid("4ae63092-6327-4c1b-80ae-bfe12ea32b86")] +[NativeTypeName("struct IDXGISurface1 : IDXGISurface")] +[NativeInheritance("IDXGISurface")] +public unsafe partial struct IDXGISurface1 : IDXGISurface1.Interface +{ + public static ref readonly Guid IID_IDXGISurface1 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x92, 0x30, 0xE6, 0x4A, + 0x27, 0x63, + 0x1B, 0x4C, + 0x80, + 0xAE, + 0xBF, + 0xE1, + 0x2E, + 0xA3, + 0x2B, + 0x86 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGISurface1)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult GetDesc(SurfaceDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGISurface1*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGISurface1*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult Map(MappedRect* pLockedRect, uint MapFlags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGISurface1*)Unsafe.AsPointer(ref this), pLockedRect, MapFlags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGISurface1*)Unsafe.AsPointer(ref this), pLockedRect, MapFlags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult Unmap() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGISurface1*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGISurface1*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult GetDevice(Guid* riid, void** ppDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGISurface1*)Unsafe.AsPointer(ref this), riid, ppDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGISurface1*)Unsafe.AsPointer(ref this), riid, ppDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGISurface1*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGISurface1*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGISurface1*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGISurface1*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGISurface1*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGISurface1*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGISurface1*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGISurface1*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult GetDC(Bool32* Discard, IntPtr* phdc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGISurface1*)Unsafe.AsPointer(ref this), Discard, phdc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGISurface1*)Unsafe.AsPointer(ref this), Discard, phdc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult ReleaseDC(RawRect* pDirtyRect) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGISurface1*)Unsafe.AsPointer(ref this), pDirtyRect); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGISurface1*)Unsafe.AsPointer(ref this), pDirtyRect); +#endif + } + + public interface Interface : IDXGISurface.Interface + { + } +} + +/// +/// IDXGIAdapter +[Guid("2411e7e1-12ac-4ccf-bd14-9798e8534dc0")] +[NativeTypeName("struct IDXGIAdapter : IDXGIObject")] +[NativeInheritance("IDXGIObject")] +public unsafe partial struct IDXGIAdapter : IDXGIAdapter.Interface +{ + public static ref readonly Guid IID_IDXGIAdapter + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0xE1, 0xE7, 0x11, 0x24, + 0xAC, 0x12, + 0xCF, 0x4C, + 0xBD, + 0x14, + 0x97, + 0x98, + 0xE8, + 0x53, + 0x4D, + 0xC0 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIAdapter)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIAdapter*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIAdapter*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIAdapter*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIAdapter*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIAdapter*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIAdapter*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIAdapter*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIAdapter*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult EnumOutputs(uint Output, IDXGIOutput** ppOutput) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIAdapter*)Unsafe.AsPointer(ref this), Output, ppOutput); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIAdapter*)Unsafe.AsPointer(ref this), Output, ppOutput); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult GetDesc(AdapterDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIAdapter*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIAdapter*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult CheckInterfaceSupport(Guid* InterfaceName, LargeInterger* pUMDVersion) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIAdapter*)Unsafe.AsPointer(ref this), InterfaceName, pUMDVersion); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIAdapter*)Unsafe.AsPointer(ref this), InterfaceName, pUMDVersion); +#endif + } + + public interface Interface : IDXGIObject.Interface + { + } +} + +/// +/// IDXGIOutput +[Guid("ae02eedb-c735-4690-8d52-5a8dc20213aa")] +[NativeTypeName("struct IDXGIOutput : IDXGIObject")] +[NativeInheritance("IDXGIObject")] +public unsafe partial struct IDXGIOutput : IDXGIOutput.Interface +{ + public static ref readonly Guid IID_IDXGIOutput + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0xDB, 0xEE, 0x02, 0xAE, + 0x35, 0xC7, + 0x90, 0x46, + 0x8D, + 0x52, + 0x5A, + 0x8D, + 0xC2, + 0x02, + 0x13, + 0xAA + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIOutput)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIOutput*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIOutput*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIOutput*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIOutput*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIOutput*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIOutput*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIOutput*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIOutput*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult GetDesc(OutputDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIOutput*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIOutput*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult GetDisplayModeList(Common.Format EnumFormat, uint Flags, uint* pNumModes, Common.ModeDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIOutput*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIOutput*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult FindClosestMatchingMode(Common.ModeDescription* pModeToMatch, Common.ModeDescription* pClosestMatch, IUnknown* pConcernedDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIOutput*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIOutput*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult WaitForVBlank() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIOutput*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIOutput*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult TakeOwnership(IUnknown* pDevice, Bool32* Exclusive) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIOutput*)Unsafe.AsPointer(ref this), pDevice, Exclusive); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIOutput*)Unsafe.AsPointer(ref this), pDevice, Exclusive); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public void ReleaseOwnership() + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[12]))((IDXGIOutput*)Unsafe.AsPointer(ref this)); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIOutput*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult GetGammaControlCapabilities(Common.GammaControlCapabilities* pGammaCaps) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGIOutput*)Unsafe.AsPointer(ref this), pGammaCaps); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIOutput*)Unsafe.AsPointer(ref this), pGammaCaps); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public HResult SetGammaControl(Common.GammaControl* pArray) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGIOutput*)Unsafe.AsPointer(ref this), pArray); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGIOutput*)Unsafe.AsPointer(ref this), pArray); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public HResult GetGammaControl(Common.GammaControl* pArray) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGIOutput*)Unsafe.AsPointer(ref this), pArray); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGIOutput*)Unsafe.AsPointer(ref this), pArray); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public HResult SetDisplaySurface(IDXGISurface* pScanoutSurface) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGIOutput*)Unsafe.AsPointer(ref this), pScanoutSurface); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGIOutput*)Unsafe.AsPointer(ref this), pScanoutSurface); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public HResult GetDisplaySurfaceData(IDXGISurface* pDestination) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[17]))((IDXGIOutput*)Unsafe.AsPointer(ref this), pDestination); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGIOutput*)Unsafe.AsPointer(ref this), pDestination); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(18)] + public HResult GetFrameStatistics(FrameStatistics* pStats) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[18]))((IDXGIOutput*)Unsafe.AsPointer(ref this), pStats); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[18]))((IDXGIOutput*)Unsafe.AsPointer(ref this), pStats); +#endif + } + + public interface Interface : IDXGIObject.Interface + { + } +} + +/// +/// IDXGISwapChain +[Guid("310d36a0-d2e7-4c0a-aa04-6a9d23b8886a")] +[NativeTypeName("struct IDXGISwapChain : IDXGIDeviceSubObject")] +[NativeInheritance("IDXGIDeviceSubObject")] +public unsafe partial struct IDXGISwapChain : IDXGISwapChain.Interface +{ + public static ref readonly Guid IID_IDXGISwapChain + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0xA0, 0x36, 0x0D, 0x31, + 0xE7, 0xD2, + 0x0A, 0x4C, + 0xAA, + 0x04, + 0x6A, + 0x9D, + 0x23, + 0xB8, + 0x88, + 0x6A + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGISwapChain)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult GetDevice(Guid* riid, void** ppDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), riid, ppDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), riid, ppDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult Present(uint SyncInterval, uint Flags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), SyncInterval, Flags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), SyncInterval, Flags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult GetBuffer(uint Buffer, Guid* riid, void** ppSurface) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), Buffer, riid, ppSurface); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), Buffer, riid, ppSurface); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult SetFullscreenState(Bool32* Fullscreen, IDXGIOutput* pTarget) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), Fullscreen, pTarget); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), Fullscreen, pTarget); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult GetFullscreenState(Bool32* pFullscreen, IDXGIOutput** ppTarget) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), pFullscreen, ppTarget); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), pFullscreen, ppTarget); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult GetDesc(SwapChainDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult ResizeBuffers(uint BufferCount, uint Width, uint Height, Common.Format NewFormat, uint SwapChainFlags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), BufferCount, Width, Height, NewFormat, SwapChainFlags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), BufferCount, Width, Height, NewFormat, SwapChainFlags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public HResult ResizeTarget(Common.ModeDescription* pNewTargetParameters) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), pNewTargetParameters); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), pNewTargetParameters); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public HResult GetContainingOutput(IDXGIOutput** ppOutput) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), ppOutput); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), ppOutput); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public HResult GetFrameStatistics(FrameStatistics* pStats) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), pStats); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), pStats); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public HResult GetLastPresentCount(uint* pLastPresentCount) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[17]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), pLastPresentCount); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGISwapChain*)Unsafe.AsPointer(ref this), pLastPresentCount); +#endif + } + + public interface Interface : IDXGIDeviceSubObject.Interface + { + } +} + +/// +/// IDXGIFactory +[Guid("7b7166ec-21c7-44ae-b21a-c9ae321ae369")] +[NativeTypeName("struct IDXGIFactory : IDXGIObject")] +[NativeInheritance("IDXGIObject")] +public unsafe partial struct IDXGIFactory : IDXGIFactory.Interface +{ + public static ref readonly Guid IID_IDXGIFactory + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0xEC, 0x66, 0x71, 0x7B, + 0xC7, 0x21, + 0xAE, 0x44, + 0xB2, + 0x1A, + 0xC9, + 0xAE, + 0x32, + 0x1A, + 0xE3, + 0x69 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIFactory)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIFactory*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIFactory*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIFactory*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIFactory*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIFactory*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIFactory*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIFactory*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIFactory*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult EnumAdapters(uint Adapter, IDXGIAdapter** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIFactory*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIFactory*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult MakeWindowAssociation(IntPtr* WindowHandle, uint Flags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIFactory*)Unsafe.AsPointer(ref this), WindowHandle, Flags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIFactory*)Unsafe.AsPointer(ref this), WindowHandle, Flags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult GetWindowAssociation(IntPtr* pWindowHandle) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIFactory*)Unsafe.AsPointer(ref this), pWindowHandle); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIFactory*)Unsafe.AsPointer(ref this), pWindowHandle); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult CreateSwapChain(IUnknown* pDevice, SwapChainDescription* pDesc, IDXGISwapChain** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIFactory*)Unsafe.AsPointer(ref this), pDevice, pDesc, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIFactory*)Unsafe.AsPointer(ref this), pDevice, pDesc, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult CreateSoftwareAdapter(IntPtr* Module, IDXGIAdapter** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIFactory*)Unsafe.AsPointer(ref this), Module, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIFactory*)Unsafe.AsPointer(ref this), Module, ppAdapter); +#endif + } + + public interface Interface : IDXGIObject.Interface + { + } +} + +/// +/// IDXGIDevice +[Guid("54ec77fa-1377-44e6-8c32-88fd5f44c84c")] +[NativeTypeName("struct IDXGIDevice : IDXGIObject")] +[NativeInheritance("IDXGIObject")] +public unsafe partial struct IDXGIDevice : IDXGIDevice.Interface +{ + public static ref readonly Guid IID_IDXGIDevice + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0xFA, 0x77, 0xEC, 0x54, + 0x77, 0x13, + 0xE6, 0x44, + 0x8C, + 0x32, + 0x88, + 0xFD, + 0x5F, + 0x44, + 0xC8, + 0x4C + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIDevice)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIDevice*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIDevice*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIDevice*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIDevice*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIDevice*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIDevice*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIDevice*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIDevice*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult GetAdapter(IDXGIAdapter** pAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIDevice*)Unsafe.AsPointer(ref this), pAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIDevice*)Unsafe.AsPointer(ref this), pAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult CreateSurface(SurfaceDescription* pDesc, uint NumSurfaces, uint Usage, SharedResource* pSharedResource, IDXGISurface* ppSurface) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIDevice*)Unsafe.AsPointer(ref this), pDesc, NumSurfaces, Usage, pSharedResource, ppSurface); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIDevice*)Unsafe.AsPointer(ref this), pDesc, NumSurfaces, Usage, pSharedResource, ppSurface); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult QueryResourceResidency(IUnknown* ppResources, Residency* pResidencyStatus, uint NumResources) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIDevice*)Unsafe.AsPointer(ref this), ppResources, pResidencyStatus, NumResources); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIDevice*)Unsafe.AsPointer(ref this), ppResources, pResidencyStatus, NumResources); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult SetGPUThreadPriority(int Priority) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIDevice*)Unsafe.AsPointer(ref this), Priority); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIDevice*)Unsafe.AsPointer(ref this), Priority); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult GetGPUThreadPriority(int* pPriority) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIDevice*)Unsafe.AsPointer(ref this), pPriority); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIDevice*)Unsafe.AsPointer(ref this), pPriority); +#endif + } + + public interface Interface : IDXGIObject.Interface + { + } +} + +/// +/// IDXGIFactory1 +[Guid("770aae78-f26f-4dba-a829-253c83d1b387")] +[NativeTypeName("struct IDXGIFactory1 : IDXGIFactory")] +[NativeInheritance("IDXGIFactory")] +public unsafe partial struct IDXGIFactory1 : IDXGIFactory1.Interface +{ + public static ref readonly Guid IID_IDXGIFactory1 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x78, 0xAE, 0x0A, 0x77, + 0x6F, 0xF2, + 0xBA, 0x4D, + 0xA8, + 0x29, + 0x25, + 0x3C, + 0x83, + 0xD1, + 0xB3, + 0x87 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIFactory1)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult EnumAdapters(uint Adapter, IDXGIAdapter** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIFactory1*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIFactory1*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult MakeWindowAssociation(IntPtr* WindowHandle, uint Flags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIFactory1*)Unsafe.AsPointer(ref this), WindowHandle, Flags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIFactory1*)Unsafe.AsPointer(ref this), WindowHandle, Flags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult GetWindowAssociation(IntPtr* pWindowHandle) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIFactory1*)Unsafe.AsPointer(ref this), pWindowHandle); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIFactory1*)Unsafe.AsPointer(ref this), pWindowHandle); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult CreateSwapChain(IUnknown* pDevice, SwapChainDescription* pDesc, IDXGISwapChain** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIFactory1*)Unsafe.AsPointer(ref this), pDevice, pDesc, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIFactory1*)Unsafe.AsPointer(ref this), pDevice, pDesc, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult CreateSoftwareAdapter(IntPtr* Module, IDXGIAdapter** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIFactory1*)Unsafe.AsPointer(ref this), Module, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIFactory1*)Unsafe.AsPointer(ref this), Module, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIFactory1*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIFactory1*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIFactory1*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIFactory1*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIFactory1*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIFactory1*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIFactory1*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIFactory1*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult EnumAdapters1(uint Adapter, IDXGIAdapter1** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGIFactory1*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIFactory1*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public Bool32 IsCurrent() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGIFactory1*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIFactory1*)Unsafe.AsPointer(ref this)); +#endif + } + + public interface Interface : IDXGIFactory.Interface + { + } +} + +/// +/// IDXGIAdapter1 +[Guid("29038f61-3839-4626-91fd-086879011a05")] +[NativeTypeName("struct IDXGIAdapter1 : IDXGIAdapter")] +[NativeInheritance("IDXGIAdapter")] +public unsafe partial struct IDXGIAdapter1 : IDXGIAdapter1.Interface +{ + public static ref readonly Guid IID_IDXGIAdapter1 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x61, 0x8F, 0x03, 0x29, + 0x39, 0x38, + 0x26, 0x46, + 0x91, + 0xFD, + 0x08, + 0x68, + 0x79, + 0x01, + 0x1A, + 0x05 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIAdapter1)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult EnumOutputs(uint Output, IDXGIOutput** ppOutput) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIAdapter1*)Unsafe.AsPointer(ref this), Output, ppOutput); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIAdapter1*)Unsafe.AsPointer(ref this), Output, ppOutput); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult GetDesc(AdapterDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIAdapter1*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIAdapter1*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult CheckInterfaceSupport(Guid* InterfaceName, LargeInterger* pUMDVersion) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIAdapter1*)Unsafe.AsPointer(ref this), InterfaceName, pUMDVersion); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIAdapter1*)Unsafe.AsPointer(ref this), InterfaceName, pUMDVersion); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIAdapter1*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIAdapter1*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIAdapter1*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIAdapter1*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIAdapter1*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIAdapter1*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIAdapter1*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIAdapter1*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult GetDesc1(AdapterDescription1* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIAdapter1*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIAdapter1*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + public interface Interface : IDXGIAdapter.Interface + { + } +} + +/// +/// IDXGIDevice1 +[Guid("77db970f-6276-48ba-ba28-070143b4392c")] +[NativeTypeName("struct IDXGIDevice1 : IDXGIDevice")] +[NativeInheritance("IDXGIDevice")] +public unsafe partial struct IDXGIDevice1 : IDXGIDevice1.Interface +{ + public static ref readonly Guid IID_IDXGIDevice1 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x0F, 0x97, 0xDB, 0x77, + 0x76, 0x62, + 0xBA, 0x48, + 0xBA, + 0x28, + 0x07, + 0x01, + 0x43, + 0xB4, + 0x39, + 0x2C + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIDevice1)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult GetAdapter(IDXGIAdapter** pAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), pAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), pAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult CreateSurface(SurfaceDescription* pDesc, uint NumSurfaces, uint Usage, SharedResource* pSharedResource, IDXGISurface* ppSurface) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), pDesc, NumSurfaces, Usage, pSharedResource, ppSurface); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), pDesc, NumSurfaces, Usage, pSharedResource, ppSurface); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult QueryResourceResidency(IUnknown* ppResources, Residency* pResidencyStatus, uint NumResources) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), ppResources, pResidencyStatus, NumResources); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), ppResources, pResidencyStatus, NumResources); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult SetGPUThreadPriority(int Priority) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), Priority); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), Priority); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult GetGPUThreadPriority(int* pPriority) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), pPriority); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), pPriority); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult SetMaximumFrameLatency(uint MaxLatency) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), MaxLatency); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), MaxLatency); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult GetMaximumFrameLatency(uint* pMaxLatency) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), pMaxLatency); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIDevice1*)Unsafe.AsPointer(ref this), pMaxLatency); +#endif + } + + public interface Interface : IDXGIDevice.Interface + { + } +} + +/// +/// IDXGIDisplayControl +[Guid("ea9dbf1a-c88e-4486-854a-98aa0138f30c")] +[NativeTypeName("struct IDXGIDisplayControl : IUnknown")] +[NativeInheritance("IUnknown")] +public unsafe partial struct IDXGIDisplayControl : IDXGIDisplayControl.Interface +{ + public static ref readonly Guid IID_IDXGIDisplayControl + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x1A, 0xBF, 0x9D, 0xEA, + 0x8E, 0xC8, + 0x86, 0x44, + 0x85, + 0x4A, + 0x98, + 0xAA, + 0x01, + 0x38, + 0xF3, + 0x0C + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIDisplayControl)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public Bool32 IsStereoEnabled() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIDisplayControl*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIDisplayControl*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public void SetStereoEnabled(Bool32* enabled) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[4]))((IDXGIDisplayControl*)Unsafe.AsPointer(ref this), enabled); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIDisplayControl*)Unsafe.AsPointer(ref this), enabled); +#endif + } + + public interface Interface : IUnknown.Interface + { + } +} + +/// +/// IDXGIOutputDuplication +[Guid("191cfac3-a341-470d-b26e-a864f428319c")] +[NativeTypeName("struct IDXGIOutputDuplication : IDXGIObject")] +[NativeInheritance("IDXGIObject")] +public unsafe partial struct IDXGIOutputDuplication : IDXGIOutputDuplication.Interface +{ + public static ref readonly Guid IID_IDXGIOutputDuplication + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0xC3, 0xFA, 0x1C, 0x19, + 0x41, 0xA3, + 0x0D, 0x47, + 0xB2, + 0x6E, + 0xA8, + 0x64, + 0xF4, + 0x28, + 0x31, + 0x9C + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIOutputDuplication)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public void GetDesc(OutduplDescription* pDesc) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[7]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this), pDesc); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult AcquireNextFrame(uint TimeoutInMilliseconds, OutduplFrameInfo* pFrameInfo, IDXGIResource** ppDesktopResource) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this), TimeoutInMilliseconds, pFrameInfo, ppDesktopResource); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this), TimeoutInMilliseconds, pFrameInfo, ppDesktopResource); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult GetFrameDirtyRects(uint DirtyRectsBufferSize, RawRect* pDirtyRectsBuffer, uint* pDirtyRectsBufferSizeRequired) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this), DirtyRectsBufferSize, pDirtyRectsBuffer, pDirtyRectsBufferSizeRequired); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this), DirtyRectsBufferSize, pDirtyRectsBuffer, pDirtyRectsBufferSizeRequired); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult GetFrameMoveRects(uint MoveRectsBufferSize, OutduplMoveRect* pMoveRectBuffer, uint* pMoveRectsBufferSizeRequired) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this), MoveRectsBufferSize, pMoveRectBuffer, pMoveRectsBufferSizeRequired); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this), MoveRectsBufferSize, pMoveRectBuffer, pMoveRectsBufferSizeRequired); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult GetFramePointerShape(uint PointerShapeBufferSize, void* pPointerShapeBuffer, uint* pPointerShapeBufferSizeRequired, OutduplPointerShapeInfo* pPointerShapeInfo) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this), PointerShapeBufferSize, pPointerShapeBuffer, pPointerShapeBufferSizeRequired, pPointerShapeInfo); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this), PointerShapeBufferSize, pPointerShapeBuffer, pPointerShapeBufferSizeRequired, pPointerShapeInfo); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult MapDesktopSurface(MappedRect* pLockedRect) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this), pLockedRect); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this), pLockedRect); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult UnMapDesktopSurface() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public HResult ReleaseFrame() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGIOutputDuplication*)Unsafe.AsPointer(ref this)); +#endif + } + + public interface Interface : IDXGIObject.Interface + { + } +} + +/// +/// IDXGISurface2 +[Guid("aba496dd-b617-4cb8-a866-bc44d7eb1fa2")] +[NativeTypeName("struct IDXGISurface2 : IDXGISurface1")] +[NativeInheritance("IDXGISurface1")] +public unsafe partial struct IDXGISurface2 : IDXGISurface2.Interface +{ + public static ref readonly Guid IID_IDXGISurface2 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0xDD, 0x96, 0xA4, 0xAB, + 0x17, 0xB6, + 0xB8, 0x4C, + 0xA8, + 0x66, + 0xBC, + 0x44, + 0xD7, + 0xEB, + 0x1F, + 0xA2 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGISurface2)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult GetDC(Bool32* Discard, IntPtr* phdc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGISurface2*)Unsafe.AsPointer(ref this), Discard, phdc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGISurface2*)Unsafe.AsPointer(ref this), Discard, phdc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult ReleaseDC(RawRect* pDirtyRect) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGISurface2*)Unsafe.AsPointer(ref this), pDirtyRect); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGISurface2*)Unsafe.AsPointer(ref this), pDirtyRect); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult GetDesc(SurfaceDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGISurface2*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGISurface2*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult Map(MappedRect* pLockedRect, uint MapFlags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGISurface2*)Unsafe.AsPointer(ref this), pLockedRect, MapFlags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGISurface2*)Unsafe.AsPointer(ref this), pLockedRect, MapFlags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult Unmap() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGISurface2*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGISurface2*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult GetDevice(Guid* riid, void** ppDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGISurface2*)Unsafe.AsPointer(ref this), riid, ppDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGISurface2*)Unsafe.AsPointer(ref this), riid, ppDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGISurface2*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGISurface2*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGISurface2*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGISurface2*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGISurface2*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGISurface2*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGISurface2*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGISurface2*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult GetResource(Guid* riid, void** ppParentResource, uint* pSubresourceIndex) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGISurface2*)Unsafe.AsPointer(ref this), riid, ppParentResource, pSubresourceIndex); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGISurface2*)Unsafe.AsPointer(ref this), riid, ppParentResource, pSubresourceIndex); +#endif + } + + public interface Interface : IDXGISurface1.Interface + { + } +} + +/// +/// IDXGIResource1 +[Guid("30961379-4609-4a41-998e-54fe567ee0c1")] +[NativeTypeName("struct IDXGIResource1 : IDXGIResource")] +[NativeInheritance("IDXGIResource")] +public unsafe partial struct IDXGIResource1 : IDXGIResource1.Interface +{ + public static ref readonly Guid IID_IDXGIResource1 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x79, 0x13, 0x96, 0x30, + 0x09, 0x46, + 0x41, 0x4A, + 0x99, + 0x8E, + 0x54, + 0xFE, + 0x56, + 0x7E, + 0xE0, + 0xC1 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIResource1)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult GetSharedHandle(IntPtr* pSharedHandle) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIResource1*)Unsafe.AsPointer(ref this), pSharedHandle); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIResource1*)Unsafe.AsPointer(ref this), pSharedHandle); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult GetUsage(uint* pUsage) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIResource1*)Unsafe.AsPointer(ref this), pUsage); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIResource1*)Unsafe.AsPointer(ref this), pUsage); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult SetEvictionPriority(ResourcePriority EvictionPriority) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIResource1*)Unsafe.AsPointer(ref this), EvictionPriority); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIResource1*)Unsafe.AsPointer(ref this), EvictionPriority); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult GetEvictionPriority(uint* pEvictionPriority) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIResource1*)Unsafe.AsPointer(ref this), pEvictionPriority); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIResource1*)Unsafe.AsPointer(ref this), pEvictionPriority); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult GetDevice(Guid* riid, void** ppDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIResource1*)Unsafe.AsPointer(ref this), riid, ppDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIResource1*)Unsafe.AsPointer(ref this), riid, ppDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIResource1*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIResource1*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIResource1*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIResource1*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIResource1*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIResource1*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIResource1*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIResource1*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult CreateSubresourceSurface(uint index, IDXGISurface2** ppSurface) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGIResource1*)Unsafe.AsPointer(ref this), index, ppSurface); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIResource1*)Unsafe.AsPointer(ref this), index, ppSurface); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult CreateSharedHandle(Security.SECURITY_ATTRIBUTES* pAttributes, uint dwAccess, char** lpName, IntPtr* pHandle) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGIResource1*)Unsafe.AsPointer(ref this), pAttributes, dwAccess, lpName, pHandle); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIResource1*)Unsafe.AsPointer(ref this), pAttributes, dwAccess, lpName, pHandle); +#endif + } + + public interface Interface : IDXGIResource.Interface + { + } +} + +/// +/// IDXGIDevice2 +[Guid("05008617-fbfd-4051-a790-144884b4f6a9")] +[NativeTypeName("struct IDXGIDevice2 : IDXGIDevice1")] +[NativeInheritance("IDXGIDevice1")] +public unsafe partial struct IDXGIDevice2 : IDXGIDevice2.Interface +{ + public static ref readonly Guid IID_IDXGIDevice2 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x17, 0x86, 0x00, 0x05, + 0xFD, 0xFB, + 0x51, 0x40, + 0xA7, + 0x90, + 0x14, + 0x48, + 0x84, + 0xB4, + 0xF6, + 0xA9 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIDevice2)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult SetMaximumFrameLatency(uint MaxLatency) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), MaxLatency); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), MaxLatency); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult GetMaximumFrameLatency(uint* pMaxLatency) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), pMaxLatency); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), pMaxLatency); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult GetAdapter(IDXGIAdapter** pAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), pAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), pAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult CreateSurface(SurfaceDescription* pDesc, uint NumSurfaces, uint Usage, SharedResource* pSharedResource, IDXGISurface* ppSurface) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), pDesc, NumSurfaces, Usage, pSharedResource, ppSurface); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), pDesc, NumSurfaces, Usage, pSharedResource, ppSurface); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult QueryResourceResidency(IUnknown* ppResources, Residency* pResidencyStatus, uint NumResources) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), ppResources, pResidencyStatus, NumResources); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), ppResources, pResidencyStatus, NumResources); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult SetGPUThreadPriority(int Priority) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), Priority); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), Priority); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult GetGPUThreadPriority(int* pPriority) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), pPriority); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), pPriority); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public HResult OfferResources(uint NumResources, IDXGIResource* ppResources, OfferResourcePriority Priority) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), NumResources, ppResources, Priority); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), NumResources, ppResources, Priority); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public HResult ReclaimResources(uint NumResources, IDXGIResource* ppResources, Bool32* pDiscarded) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), NumResources, ppResources, pDiscarded); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), NumResources, ppResources, pDiscarded); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public HResult EnqueueSetEvent(IntPtr* hEvent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), hEvent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGIDevice2*)Unsafe.AsPointer(ref this), hEvent); +#endif + } + + public interface Interface : IDXGIDevice1.Interface + { + } +} + +/// +/// IDXGISwapChain1 +[Guid("790a45f7-0d42-4876-983a-0a55cfe6f4aa")] +[NativeTypeName("struct IDXGISwapChain1 : IDXGISwapChain")] +[NativeInheritance("IDXGISwapChain")] +public unsafe partial struct IDXGISwapChain1 : IDXGISwapChain1.Interface +{ + public static ref readonly Guid IID_IDXGISwapChain1 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0xF7, 0x45, 0x0A, 0x79, + 0x42, 0x0D, + 0x76, 0x48, + 0x98, + 0x3A, + 0x0A, + 0x55, + 0xCF, + 0xE6, + 0xF4, + 0xAA + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGISwapChain1)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult Present(uint SyncInterval, uint Flags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), SyncInterval, Flags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), SyncInterval, Flags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult GetBuffer(uint Buffer, Guid* riid, void** ppSurface) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), Buffer, riid, ppSurface); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), Buffer, riid, ppSurface); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult SetFullscreenState(Bool32* Fullscreen, IDXGIOutput* pTarget) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), Fullscreen, pTarget); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), Fullscreen, pTarget); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult GetFullscreenState(Bool32* pFullscreen, IDXGIOutput** ppTarget) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pFullscreen, ppTarget); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pFullscreen, ppTarget); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult GetDesc(SwapChainDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult ResizeBuffers(uint BufferCount, uint Width, uint Height, Common.Format NewFormat, uint SwapChainFlags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), BufferCount, Width, Height, NewFormat, SwapChainFlags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), BufferCount, Width, Height, NewFormat, SwapChainFlags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult ResizeTarget(Common.ModeDescription* pNewTargetParameters) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pNewTargetParameters); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pNewTargetParameters); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult GetContainingOutput(IDXGIOutput** ppOutput) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), ppOutput); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), ppOutput); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult GetFrameStatistics(FrameStatistics* pStats) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pStats); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pStats); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult GetLastPresentCount(uint* pLastPresentCount) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pLastPresentCount); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pLastPresentCount); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult GetDevice(Guid* riid, void** ppDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), riid, ppDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), riid, ppDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[17]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(18)] + public HResult GetDesc1(SwapChainDescription1* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[18]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[18]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(19)] + public HResult GetFullscreenDesc(SwapChainFullscreenDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[19]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[19]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(20)] + public HResult GetHwnd(IntPtr* pHwnd) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[20]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pHwnd); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[20]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pHwnd); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(21)] + public HResult GetCoreWindow(Guid* refiid, void** ppUnk) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[21]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), refiid, ppUnk); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[21]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), refiid, ppUnk); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(22)] + public HResult Present1(uint SyncInterval, uint PresentFlags, PresentParameters* pPresentParameters) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[22]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), SyncInterval, PresentFlags, pPresentParameters); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[22]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), SyncInterval, PresentFlags, pPresentParameters); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(23)] + public Bool32 IsTemporaryMonoSupported() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[23]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[23]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(24)] + public HResult GetRestrictToOutput(IDXGIOutput* ppRestrictToOutput) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[24]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), ppRestrictToOutput); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[24]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), ppRestrictToOutput); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(25)] + public HResult SetBackgroundColor(Rgba* pColor) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[25]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pColor); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[25]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pColor); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(26)] + public HResult GetBackgroundColor(Rgba* pColor) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[26]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pColor); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[26]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pColor); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(27)] + public HResult SetRotation(Common.ModeRotation Rotation) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[27]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), Rotation); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[27]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), Rotation); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(28)] + public HResult GetRotation(Common.ModeRotation* pRotation) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[28]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pRotation); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[28]))((IDXGISwapChain1*)Unsafe.AsPointer(ref this), pRotation); +#endif + } + + public interface Interface : IDXGISwapChain.Interface + { + } +} + +/// +/// IDXGIFactory2 +[Guid("50c83a1c-e072-4c48-87b0-3630fa36a6d0")] +[NativeTypeName("struct IDXGIFactory2 : IDXGIFactory1")] +[NativeInheritance("IDXGIFactory1")] +public unsafe partial struct IDXGIFactory2 : IDXGIFactory2.Interface +{ + public static ref readonly Guid IID_IDXGIFactory2 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x1C, 0x3A, 0xC8, 0x50, + 0x72, 0xE0, + 0x48, 0x4C, + 0x87, + 0xB0, + 0x36, + 0x30, + 0xFA, + 0x36, + 0xA6, + 0xD0 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIFactory2)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult EnumAdapters1(uint Adapter, IDXGIAdapter1** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public Bool32 IsCurrent() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIFactory2*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIFactory2*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult EnumAdapters(uint Adapter, IDXGIAdapter** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult MakeWindowAssociation(IntPtr* WindowHandle, uint Flags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), WindowHandle, Flags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), WindowHandle, Flags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult GetWindowAssociation(IntPtr* pWindowHandle) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), pWindowHandle); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), pWindowHandle); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult CreateSwapChain(IUnknown* pDevice, SwapChainDescription* pDesc, IDXGISwapChain** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), pDevice, pDesc, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), pDevice, pDesc, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult CreateSoftwareAdapter(IntPtr* Module, IDXGIAdapter** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), Module, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), Module, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public Bool32 IsWindowedStereoEnabled() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGIFactory2*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGIFactory2*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public HResult CreateSwapChainForHwnd(IUnknown* pDevice, IntPtr* hWnd, SwapChainDescription1* pDesc, SwapChainFullscreenDescription* pFullscreenDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), pDevice, hWnd, pDesc, pFullscreenDesc, pRestrictToOutput, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), pDevice, hWnd, pDesc, pFullscreenDesc, pRestrictToOutput, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public HResult CreateSwapChainForCoreWindow(IUnknown* pDevice, IUnknown* pWindow, SwapChainDescription1* pDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), pDevice, pWindow, pDesc, pRestrictToOutput, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), pDevice, pWindow, pDesc, pRestrictToOutput, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public HResult GetSharedResourceAdapterLuid(IntPtr* hResource, Luid* pLuid) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[17]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), hResource, pLuid); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), hResource, pLuid); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(18)] + public HResult RegisterStereoStatusWindow(IntPtr* WindowHandle, uint wMsg, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[18]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[18]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(19)] + public HResult RegisterStereoStatusEvent(IntPtr* hEvent, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[19]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[19]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(20)] + public void UnregisterStereoStatus(uint dwCookie) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[20]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), dwCookie); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[20]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), dwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(21)] + public HResult RegisterOcclusionStatusWindow(IntPtr* WindowHandle, uint wMsg, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[21]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[21]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(22)] + public HResult RegisterOcclusionStatusEvent(IntPtr* hEvent, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[22]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[22]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(23)] + public void UnregisterOcclusionStatus(uint dwCookie) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[23]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), dwCookie); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[23]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), dwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(24)] + public HResult CreateSwapChainForComposition(IUnknown* pDevice, SwapChainDescription1* pDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[24]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), pDevice, pDesc, pRestrictToOutput, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[24]))((IDXGIFactory2*)Unsafe.AsPointer(ref this), pDevice, pDesc, pRestrictToOutput, ppSwapChain); +#endif + } + + public interface Interface : IDXGIFactory1.Interface + { + } +} + +/// +/// IDXGIAdapter2 +[Guid("0aa1ae0a-fa0e-4b84-8644-e05ff8e5acb5")] +[NativeTypeName("struct IDXGIAdapter2 : IDXGIAdapter1")] +[NativeInheritance("IDXGIAdapter1")] +public unsafe partial struct IDXGIAdapter2 : IDXGIAdapter2.Interface +{ + public static ref readonly Guid IID_IDXGIAdapter2 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x0A, 0xAE, 0xA1, 0x0A, + 0x0E, 0xFA, + 0x84, 0x4B, + 0x86, + 0x44, + 0xE0, + 0x5F, + 0xF8, + 0xE5, + 0xAC, + 0xB5 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIAdapter2)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult GetDesc1(AdapterDescription1* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIAdapter2*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIAdapter2*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult EnumOutputs(uint Output, IDXGIOutput** ppOutput) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIAdapter2*)Unsafe.AsPointer(ref this), Output, ppOutput); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIAdapter2*)Unsafe.AsPointer(ref this), Output, ppOutput); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult GetDesc(AdapterDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIAdapter2*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIAdapter2*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult CheckInterfaceSupport(Guid* InterfaceName, LargeInterger* pUMDVersion) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIAdapter2*)Unsafe.AsPointer(ref this), InterfaceName, pUMDVersion); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIAdapter2*)Unsafe.AsPointer(ref this), InterfaceName, pUMDVersion); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIAdapter2*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIAdapter2*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIAdapter2*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIAdapter2*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIAdapter2*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIAdapter2*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIAdapter2*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIAdapter2*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult GetDesc2(AdapterDescription2* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIAdapter2*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIAdapter2*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + public interface Interface : IDXGIAdapter1.Interface + { + } +} + +/// +/// IDXGIOutput1 +[Guid("00cddea8-939b-4b83-a340-a685226666cc")] +[NativeTypeName("struct IDXGIOutput1 : IDXGIOutput")] +[NativeInheritance("IDXGIOutput")] +public unsafe partial struct IDXGIOutput1 : IDXGIOutput1.Interface +{ + public static ref readonly Guid IID_IDXGIOutput1 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0xA8, 0xDE, 0xCD, 0x00, + 0x9B, 0x93, + 0x83, 0x4B, + 0xA3, + 0x40, + 0xA6, + 0x85, + 0x22, + 0x66, + 0x66, + 0xCC + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIOutput1)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult GetDesc(OutputDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult GetDisplayModeList(Common.Format EnumFormat, uint Flags, uint* pNumModes, Common.ModeDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult FindClosestMatchingMode(Common.ModeDescription* pModeToMatch, Common.ModeDescription* pClosestMatch, IUnknown* pConcernedDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult WaitForVBlank() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIOutput1*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIOutput1*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult TakeOwnership(IUnknown* pDevice, Bool32* Exclusive) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pDevice, Exclusive); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pDevice, Exclusive); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public void ReleaseOwnership() + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[8]))((IDXGIOutput1*)Unsafe.AsPointer(ref this)); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIOutput1*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult GetGammaControlCapabilities(Common.GammaControlCapabilities* pGammaCaps) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pGammaCaps); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pGammaCaps); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult SetGammaControl(Common.GammaControl* pArray) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pArray); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pArray); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult GetGammaControl(Common.GammaControl* pArray) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pArray); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pArray); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult SetDisplaySurface(IDXGISurface* pScanoutSurface) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pScanoutSurface); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pScanoutSurface); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult GetDisplaySurfaceData(IDXGISurface* pDestination) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pDestination); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pDestination); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public HResult GetFrameStatistics(FrameStatistics* pStats) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pStats); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pStats); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[17]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(18)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[18]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[18]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(19)] + public HResult GetDisplayModeList1(Common.Format EnumFormat, uint Flags, uint* pNumModes, ModeDescription1* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[19]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[19]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(20)] + public HResult FindClosestMatchingMode1(ModeDescription1* pModeToMatch, ModeDescription1* pClosestMatch, IUnknown* pConcernedDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[20]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[20]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(21)] + public HResult GetDisplaySurfaceData1(IDXGIResource* pDestination) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[21]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pDestination); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[21]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pDestination); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(22)] + public HResult DuplicateOutput(IUnknown* pDevice, IDXGIOutputDuplication** ppOutputDuplication) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[22]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pDevice, ppOutputDuplication); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[22]))((IDXGIOutput1*)Unsafe.AsPointer(ref this), pDevice, ppOutputDuplication); +#endif + } + + public interface Interface : IDXGIOutput.Interface + { + } +} + +/// +/// IDXGIDevice3 +[Guid("6007896c-3244-4afd-bf18-a6d3beda5023")] +[NativeTypeName("struct IDXGIDevice3 : IDXGIDevice2")] +[NativeInheritance("IDXGIDevice2")] +public unsafe partial struct IDXGIDevice3 : IDXGIDevice3.Interface +{ + public static ref readonly Guid IID_IDXGIDevice3 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x6C, 0x89, 0x07, 0x60, + 0x44, 0x32, + 0xFD, 0x4A, + 0xBF, + 0x18, + 0xA6, + 0xD3, + 0xBE, + 0xDA, + 0x50, + 0x23 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIDevice3)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult OfferResources(uint NumResources, IDXGIResource* ppResources, OfferResourcePriority Priority) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), NumResources, ppResources, Priority); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), NumResources, ppResources, Priority); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult ReclaimResources(uint NumResources, IDXGIResource* ppResources, Bool32* pDiscarded) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), NumResources, ppResources, pDiscarded); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), NumResources, ppResources, pDiscarded); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult EnqueueSetEvent(IntPtr* hEvent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), hEvent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), hEvent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult SetMaximumFrameLatency(uint MaxLatency) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), MaxLatency); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), MaxLatency); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult GetMaximumFrameLatency(uint* pMaxLatency) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), pMaxLatency); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), pMaxLatency); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult GetAdapter(IDXGIAdapter** pAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), pAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), pAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult CreateSurface(SurfaceDescription* pDesc, uint NumSurfaces, uint Usage, SharedResource* pSharedResource, IDXGISurface* ppSurface) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), pDesc, NumSurfaces, Usage, pSharedResource, ppSurface); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), pDesc, NumSurfaces, Usage, pSharedResource, ppSurface); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult QueryResourceResidency(IUnknown* ppResources, Residency* pResidencyStatus, uint NumResources) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), ppResources, pResidencyStatus, NumResources); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), ppResources, pResidencyStatus, NumResources); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult SetGPUThreadPriority(int Priority) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), Priority); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), Priority); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult GetGPUThreadPriority(int* pPriority) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), pPriority); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), pPriority); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGIDevice3*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public void Trim() + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[17]))((IDXGIDevice3*)Unsafe.AsPointer(ref this)); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGIDevice3*)Unsafe.AsPointer(ref this)); +#endif + } + + public interface Interface : IDXGIDevice2.Interface + { + } +} + +/// +/// IDXGISwapChain2 +[Guid("a8be2ac4-199f-4946-b331-79599fb98de7")] +[NativeTypeName("struct IDXGISwapChain2 : IDXGISwapChain1")] +[NativeInheritance("IDXGISwapChain1")] +public unsafe partial struct IDXGISwapChain2 : IDXGISwapChain2.Interface +{ + public static ref readonly Guid IID_IDXGISwapChain2 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0xC4, 0x2A, 0xBE, 0xA8, + 0x9F, 0x19, + 0x46, 0x49, + 0xB3, + 0x31, + 0x79, + 0x59, + 0x9F, + 0xB9, + 0x8D, + 0xE7 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGISwapChain2)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult GetDesc1(SwapChainDescription1* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult GetFullscreenDesc(SwapChainFullscreenDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult GetHwnd(IntPtr* pHwnd) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pHwnd); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pHwnd); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult GetCoreWindow(Guid* refiid, void** ppUnk) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), refiid, ppUnk); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), refiid, ppUnk); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult Present1(uint SyncInterval, uint PresentFlags, PresentParameters* pPresentParameters) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), SyncInterval, PresentFlags, pPresentParameters); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), SyncInterval, PresentFlags, pPresentParameters); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public Bool32 IsTemporaryMonoSupported() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult GetRestrictToOutput(IDXGIOutput* ppRestrictToOutput) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), ppRestrictToOutput); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), ppRestrictToOutput); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult SetBackgroundColor(Rgba* pColor) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pColor); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pColor); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult GetBackgroundColor(Rgba* pColor) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pColor); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pColor); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult SetRotation(Common.ModeRotation Rotation) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), Rotation); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), Rotation); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult GetRotation(Common.ModeRotation* pRotation) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pRotation); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pRotation); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public HResult Present(uint SyncInterval, uint Flags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), SyncInterval, Flags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), SyncInterval, Flags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public HResult GetBuffer(uint Buffer, Guid* riid, void** ppSurface) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), Buffer, riid, ppSurface); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), Buffer, riid, ppSurface); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public HResult SetFullscreenState(Bool32* Fullscreen, IDXGIOutput* pTarget) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), Fullscreen, pTarget); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), Fullscreen, pTarget); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public HResult GetFullscreenState(Bool32* pFullscreen, IDXGIOutput** ppTarget) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[17]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pFullscreen, ppTarget); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pFullscreen, ppTarget); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(18)] + public HResult GetDesc(SwapChainDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[18]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[18]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(19)] + public HResult ResizeBuffers(uint BufferCount, uint Width, uint Height, Common.Format NewFormat, uint SwapChainFlags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[19]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), BufferCount, Width, Height, NewFormat, SwapChainFlags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[19]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), BufferCount, Width, Height, NewFormat, SwapChainFlags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(20)] + public HResult ResizeTarget(Common.ModeDescription* pNewTargetParameters) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[20]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pNewTargetParameters); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[20]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pNewTargetParameters); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(21)] + public HResult GetContainingOutput(IDXGIOutput** ppOutput) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[21]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), ppOutput); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[21]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), ppOutput); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(22)] + public HResult GetFrameStatistics(FrameStatistics* pStats) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[22]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pStats); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[22]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pStats); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(23)] + public HResult GetLastPresentCount(uint* pLastPresentCount) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[23]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pLastPresentCount); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[23]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pLastPresentCount); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(24)] + public HResult GetDevice(Guid* riid, void** ppDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[24]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), riid, ppDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[24]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), riid, ppDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(25)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[25]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[25]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(26)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[26]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[26]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(27)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[27]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[27]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(28)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[28]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[28]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(29)] + public HResult SetSourceSize(uint Width, uint Height) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[29]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), Width, Height); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[29]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), Width, Height); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(30)] + public HResult GetSourceSize(uint* pWidth, uint* pHeight) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[30]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pWidth, pHeight); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[30]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pWidth, pHeight); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(31)] + public HResult SetMaximumFrameLatency(uint MaxLatency) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[31]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), MaxLatency); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[31]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), MaxLatency); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(32)] + public HResult GetMaximumFrameLatency(uint* pMaxLatency) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[32]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pMaxLatency); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[32]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pMaxLatency); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(33)] + public IntPtr GetFrameLatencyWaitableObject() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[33]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[33]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(34)] + public HResult SetMatrixTransform(Matrix3x2F* pMatrix) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[34]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pMatrix); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[34]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pMatrix); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(35)] + public HResult GetMatrixTransform(Matrix3x2F* pMatrix) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[35]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pMatrix); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[35]))((IDXGISwapChain2*)Unsafe.AsPointer(ref this), pMatrix); +#endif + } + + public interface Interface : IDXGISwapChain1.Interface + { + } +} + +/// +/// IDXGIOutput2 +[Guid("595e39d1-2724-4663-99b1-da969de28364")] +[NativeTypeName("struct IDXGIOutput2 : IDXGIOutput1")] +[NativeInheritance("IDXGIOutput1")] +public unsafe partial struct IDXGIOutput2 : IDXGIOutput2.Interface +{ + public static ref readonly Guid IID_IDXGIOutput2 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0xD1, 0x39, 0x5E, 0x59, + 0x24, 0x27, + 0x63, 0x46, + 0x99, + 0xB1, + 0xDA, + 0x96, + 0x9D, + 0xE2, + 0x83, + 0x64 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIOutput2)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult GetDisplayModeList1(Common.Format EnumFormat, uint Flags, uint* pNumModes, ModeDescription1* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult FindClosestMatchingMode1(ModeDescription1* pModeToMatch, ModeDescription1* pClosestMatch, IUnknown* pConcernedDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult GetDisplaySurfaceData1(IDXGIResource* pDestination) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pDestination); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pDestination); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult DuplicateOutput(IUnknown* pDevice, IDXGIOutputDuplication** ppOutputDuplication) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pDevice, ppOutputDuplication); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pDevice, ppOutputDuplication); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult GetDesc(OutputDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult GetDisplayModeList(Common.Format EnumFormat, uint Flags, uint* pNumModes, Common.ModeDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult FindClosestMatchingMode(Common.ModeDescription* pModeToMatch, Common.ModeDescription* pClosestMatch, IUnknown* pConcernedDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult WaitForVBlank() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIOutput2*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIOutput2*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult TakeOwnership(IUnknown* pDevice, Bool32* Exclusive) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pDevice, Exclusive); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pDevice, Exclusive); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public void ReleaseOwnership() + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[12]))((IDXGIOutput2*)Unsafe.AsPointer(ref this)); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIOutput2*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult GetGammaControlCapabilities(Common.GammaControlCapabilities* pGammaCaps) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pGammaCaps); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pGammaCaps); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public HResult SetGammaControl(Common.GammaControl* pArray) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pArray); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pArray); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public HResult GetGammaControl(Common.GammaControl* pArray) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pArray); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pArray); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public HResult SetDisplaySurface(IDXGISurface* pScanoutSurface) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pScanoutSurface); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pScanoutSurface); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public HResult GetDisplaySurfaceData(IDXGISurface* pDestination) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[17]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pDestination); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pDestination); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(18)] + public HResult GetFrameStatistics(FrameStatistics* pStats) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[18]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pStats); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[18]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), pStats); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(19)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[19]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[19]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(20)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[20]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[20]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(21)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[21]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[21]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(22)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[22]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[22]))((IDXGIOutput2*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(23)] + public Bool32 SupportsOverlays() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[23]))((IDXGIOutput2*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[23]))((IDXGIOutput2*)Unsafe.AsPointer(ref this)); +#endif + } + + public interface Interface : IDXGIOutput1.Interface + { + } +} + +/// +/// IDXGIFactory3 +[Guid("25483823-cd46-4c7d-86ca-47aa95b837bd")] +[NativeTypeName("struct IDXGIFactory3 : IDXGIFactory2")] +[NativeInheritance("IDXGIFactory2")] +public unsafe partial struct IDXGIFactory3 : IDXGIFactory3.Interface +{ + public static ref readonly Guid IID_IDXGIFactory3 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x23, 0x38, 0x48, 0x25, + 0x46, 0xCD, + 0x7D, 0x4C, + 0x86, + 0xCA, + 0x47, + 0xAA, + 0x95, + 0xB8, + 0x37, + 0xBD + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIFactory3)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public Bool32 IsWindowedStereoEnabled() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIFactory3*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIFactory3*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult CreateSwapChainForHwnd(IUnknown* pDevice, IntPtr* hWnd, SwapChainDescription1* pDesc, SwapChainFullscreenDescription* pFullscreenDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), pDevice, hWnd, pDesc, pFullscreenDesc, pRestrictToOutput, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), pDevice, hWnd, pDesc, pFullscreenDesc, pRestrictToOutput, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult CreateSwapChainForCoreWindow(IUnknown* pDevice, IUnknown* pWindow, SwapChainDescription1* pDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), pDevice, pWindow, pDesc, pRestrictToOutput, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), pDevice, pWindow, pDesc, pRestrictToOutput, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult GetSharedResourceAdapterLuid(IntPtr* hResource, Luid* pLuid) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), hResource, pLuid); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), hResource, pLuid); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult RegisterStereoStatusWindow(IntPtr* WindowHandle, uint wMsg, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult RegisterStereoStatusEvent(IntPtr* hEvent, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public void UnregisterStereoStatus(uint dwCookie) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[9]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), dwCookie); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), dwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult RegisterOcclusionStatusWindow(IntPtr* WindowHandle, uint wMsg, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult RegisterOcclusionStatusEvent(IntPtr* hEvent, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public void UnregisterOcclusionStatus(uint dwCookie) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[12]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), dwCookie); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), dwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult CreateSwapChainForComposition(IUnknown* pDevice, SwapChainDescription1* pDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), pDevice, pDesc, pRestrictToOutput, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), pDevice, pDesc, pRestrictToOutput, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public HResult EnumAdapters1(uint Adapter, IDXGIAdapter1** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public Bool32 IsCurrent() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGIFactory3*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGIFactory3*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public HResult EnumAdapters(uint Adapter, IDXGIAdapter** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public HResult MakeWindowAssociation(IntPtr* WindowHandle, uint Flags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[17]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), WindowHandle, Flags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), WindowHandle, Flags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(18)] + public HResult GetWindowAssociation(IntPtr* pWindowHandle) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[18]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), pWindowHandle); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[18]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), pWindowHandle); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(19)] + public HResult CreateSwapChain(IUnknown* pDevice, SwapChainDescription* pDesc, IDXGISwapChain** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[19]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), pDevice, pDesc, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[19]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), pDevice, pDesc, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(20)] + public HResult CreateSoftwareAdapter(IntPtr* Module, IDXGIAdapter** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[20]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), Module, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[20]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), Module, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(21)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[21]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[21]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(22)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[22]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[22]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(23)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[23]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[23]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(24)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[24]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[24]))((IDXGIFactory3*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(25)] + public uint GetCreationFlags() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[25]))((IDXGIFactory3*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[25]))((IDXGIFactory3*)Unsafe.AsPointer(ref this)); +#endif + } + + public interface Interface : IDXGIFactory2.Interface + { + } +} + +/// +/// IDXGIDecodeSwapChain +[Guid("2633066b-4514-4c7a-8fd8-12ea98059d18")] +[NativeTypeName("struct IDXGIDecodeSwapChain : IUnknown")] +[NativeInheritance("IUnknown")] +public unsafe partial struct IDXGIDecodeSwapChain : IDXGIDecodeSwapChain.Interface +{ + public static ref readonly Guid IID_IDXGIDecodeSwapChain + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x6B, 0x06, 0x33, 0x26, + 0x14, 0x45, + 0x7A, 0x4C, + 0x8F, + 0xD8, + 0x12, + 0xEA, + 0x98, + 0x05, + 0x9D, + 0x18 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIDecodeSwapChain)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult PresentBuffer(uint BufferToPresent, uint SyncInterval, uint Flags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIDecodeSwapChain*)Unsafe.AsPointer(ref this), BufferToPresent, SyncInterval, Flags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIDecodeSwapChain*)Unsafe.AsPointer(ref this), BufferToPresent, SyncInterval, Flags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult SetSourceRect(RawRect* pRect) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIDecodeSwapChain*)Unsafe.AsPointer(ref this), pRect); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIDecodeSwapChain*)Unsafe.AsPointer(ref this), pRect); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult SetTargetRect(RawRect* pRect) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIDecodeSwapChain*)Unsafe.AsPointer(ref this), pRect); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIDecodeSwapChain*)Unsafe.AsPointer(ref this), pRect); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult SetDestSize(uint Width, uint Height) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIDecodeSwapChain*)Unsafe.AsPointer(ref this), Width, Height); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIDecodeSwapChain*)Unsafe.AsPointer(ref this), Width, Height); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult GetSourceRect(RawRect* pRect) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIDecodeSwapChain*)Unsafe.AsPointer(ref this), pRect); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIDecodeSwapChain*)Unsafe.AsPointer(ref this), pRect); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult GetTargetRect(RawRect* pRect) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIDecodeSwapChain*)Unsafe.AsPointer(ref this), pRect); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIDecodeSwapChain*)Unsafe.AsPointer(ref this), pRect); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult GetDestSize(uint* pWidth, uint* pHeight) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIDecodeSwapChain*)Unsafe.AsPointer(ref this), pWidth, pHeight); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIDecodeSwapChain*)Unsafe.AsPointer(ref this), pWidth, pHeight); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult SetColorSpace(MultiplaneOverlayYcbcrFlags ColorSpace) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIDecodeSwapChain*)Unsafe.AsPointer(ref this), ColorSpace); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIDecodeSwapChain*)Unsafe.AsPointer(ref this), ColorSpace); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public Graphics.Dxgi.MultiplaneOverlayYcbcrFlags GetColorSpace() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIDecodeSwapChain*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIDecodeSwapChain*)Unsafe.AsPointer(ref this)); +#endif + } + + public interface Interface : IUnknown.Interface + { + } +} + +/// +/// IDXGIFactoryMedia +[Guid("41e7d1f2-a591-4f7b-a2e5-fa9c843e1c12")] +[NativeTypeName("struct IDXGIFactoryMedia : IUnknown")] +[NativeInheritance("IUnknown")] +public unsafe partial struct IDXGIFactoryMedia : IDXGIFactoryMedia.Interface +{ + public static ref readonly Guid IID_IDXGIFactoryMedia + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0xF2, 0xD1, 0xE7, 0x41, + 0x91, 0xA5, + 0x7B, 0x4F, + 0xA2, + 0xE5, + 0xFA, + 0x9C, + 0x84, + 0x3E, + 0x1C, + 0x12 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIFactoryMedia)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult CreateSwapChainForCompositionSurfaceHandle(IUnknown* pDevice, IntPtr* hSurface, SwapChainDescription1* pDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIFactoryMedia*)Unsafe.AsPointer(ref this), pDevice, hSurface, pDesc, pRestrictToOutput, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIFactoryMedia*)Unsafe.AsPointer(ref this), pDevice, hSurface, pDesc, pRestrictToOutput, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult CreateDecodeSwapChainForCompositionSurfaceHandle(IUnknown* pDevice, IntPtr* hSurface, DecodeSwapChainDescription* pDesc, IDXGIResource* pYuvDecodeBuffers, IDXGIOutput* pRestrictToOutput, IDXGIDecodeSwapChain** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIFactoryMedia*)Unsafe.AsPointer(ref this), pDevice, hSurface, pDesc, pYuvDecodeBuffers, pRestrictToOutput, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIFactoryMedia*)Unsafe.AsPointer(ref this), pDevice, hSurface, pDesc, pYuvDecodeBuffers, pRestrictToOutput, ppSwapChain); +#endif + } + + public interface Interface : IUnknown.Interface + { + } +} + +/// +/// IDXGISwapChainMedia +[Guid("dd95b90b-f05f-4f6a-bd65-25bfb264bd84")] +[NativeTypeName("struct IDXGISwapChainMedia : IUnknown")] +[NativeInheritance("IUnknown")] +public unsafe partial struct IDXGISwapChainMedia : IDXGISwapChainMedia.Interface +{ + public static ref readonly Guid IID_IDXGISwapChainMedia + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x0B, 0xB9, 0x95, 0xDD, + 0x5F, 0xF0, + 0x6A, 0x4F, + 0xBD, + 0x65, + 0x25, + 0xBF, + 0xB2, + 0x64, + 0xBD, + 0x84 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGISwapChainMedia)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult GetFrameStatisticsMedia(FrameStatisticsMedia* pStats) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGISwapChainMedia*)Unsafe.AsPointer(ref this), pStats); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGISwapChainMedia*)Unsafe.AsPointer(ref this), pStats); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult SetPresentDuration(uint Duration) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGISwapChainMedia*)Unsafe.AsPointer(ref this), Duration); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGISwapChainMedia*)Unsafe.AsPointer(ref this), Duration); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult CheckPresentDurationSupport(uint DesiredPresentDuration, uint* pClosestSmallerPresentDuration, uint* pClosestLargerPresentDuration) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGISwapChainMedia*)Unsafe.AsPointer(ref this), DesiredPresentDuration, pClosestSmallerPresentDuration, pClosestLargerPresentDuration); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGISwapChainMedia*)Unsafe.AsPointer(ref this), DesiredPresentDuration, pClosestSmallerPresentDuration, pClosestLargerPresentDuration); +#endif + } + + public interface Interface : IUnknown.Interface + { + } +} + +/// +/// IDXGIOutput3 +[Guid("8a6bb301-7e7e-41f4-a8e0-5b32f7f99b18")] +[NativeTypeName("struct IDXGIOutput3 : IDXGIOutput2")] +[NativeInheritance("IDXGIOutput2")] +public unsafe partial struct IDXGIOutput3 : IDXGIOutput3.Interface +{ + public static ref readonly Guid IID_IDXGIOutput3 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x01, 0xB3, 0x6B, 0x8A, + 0x7E, 0x7E, + 0xF4, 0x41, + 0xA8, + 0xE0, + 0x5B, + 0x32, + 0xF7, + 0xF9, + 0x9B, + 0x18 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIOutput3)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public Bool32 SupportsOverlays() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIOutput3*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIOutput3*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult GetDisplayModeList1(Common.Format EnumFormat, uint Flags, uint* pNumModes, ModeDescription1* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult FindClosestMatchingMode1(ModeDescription1* pModeToMatch, ModeDescription1* pClosestMatch, IUnknown* pConcernedDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult GetDisplaySurfaceData1(IDXGIResource* pDestination) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pDestination); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pDestination); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult DuplicateOutput(IUnknown* pDevice, IDXGIOutputDuplication** ppOutputDuplication) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pDevice, ppOutputDuplication); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pDevice, ppOutputDuplication); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult GetDesc(OutputDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult GetDisplayModeList(Common.Format EnumFormat, uint Flags, uint* pNumModes, Common.ModeDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult FindClosestMatchingMode(Common.ModeDescription* pModeToMatch, Common.ModeDescription* pClosestMatch, IUnknown* pConcernedDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult WaitForVBlank() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIOutput3*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIOutput3*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult TakeOwnership(IUnknown* pDevice, Bool32* Exclusive) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pDevice, Exclusive); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pDevice, Exclusive); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public void ReleaseOwnership() + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[13]))((IDXGIOutput3*)Unsafe.AsPointer(ref this)); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIOutput3*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public HResult GetGammaControlCapabilities(Common.GammaControlCapabilities* pGammaCaps) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pGammaCaps); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pGammaCaps); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public HResult SetGammaControl(Common.GammaControl* pArray) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pArray); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pArray); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public HResult GetGammaControl(Common.GammaControl* pArray) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pArray); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pArray); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public HResult SetDisplaySurface(IDXGISurface* pScanoutSurface) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[17]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pScanoutSurface); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pScanoutSurface); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(18)] + public HResult GetDisplaySurfaceData(IDXGISurface* pDestination) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[18]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pDestination); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[18]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pDestination); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(19)] + public HResult GetFrameStatistics(FrameStatistics* pStats) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[19]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pStats); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[19]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), pStats); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(20)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[20]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[20]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(21)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[21]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[21]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(22)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[22]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[22]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(23)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[23]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[23]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(24)] + public HResult CheckOverlaySupport(Common.Format EnumFormat, IUnknown* pConcernedDevice, uint* pFlags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[24]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), EnumFormat, pConcernedDevice, pFlags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[24]))((IDXGIOutput3*)Unsafe.AsPointer(ref this), EnumFormat, pConcernedDevice, pFlags); +#endif + } + + public interface Interface : IDXGIOutput2.Interface + { + } +} + +/// +/// IDXGISwapChain3 +[Guid("94d99bdb-f1f8-4ab0-b236-7da0170edab1")] +[NativeTypeName("struct IDXGISwapChain3 : IDXGISwapChain2")] +[NativeInheritance("IDXGISwapChain2")] +public unsafe partial struct IDXGISwapChain3 : IDXGISwapChain3.Interface +{ + public static ref readonly Guid IID_IDXGISwapChain3 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0xDB, 0x9B, 0xD9, 0x94, + 0xF8, 0xF1, + 0xB0, 0x4A, + 0xB2, + 0x36, + 0x7D, + 0xA0, + 0x17, + 0x0E, + 0xDA, + 0xB1 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGISwapChain3)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult SetSourceSize(uint Width, uint Height) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), Width, Height); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), Width, Height); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult GetSourceSize(uint* pWidth, uint* pHeight) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pWidth, pHeight); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pWidth, pHeight); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult SetMaximumFrameLatency(uint MaxLatency) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), MaxLatency); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), MaxLatency); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult GetMaximumFrameLatency(uint* pMaxLatency) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pMaxLatency); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pMaxLatency); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public IntPtr GetFrameLatencyWaitableObject() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult SetMatrixTransform(Matrix3x2F* pMatrix) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pMatrix); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pMatrix); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult GetMatrixTransform(Matrix3x2F* pMatrix) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pMatrix); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pMatrix); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult GetDesc1(SwapChainDescription1* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult GetFullscreenDesc(SwapChainFullscreenDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult GetHwnd(IntPtr* pHwnd) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pHwnd); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pHwnd); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult GetCoreWindow(Guid* refiid, void** ppUnk) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), refiid, ppUnk); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), refiid, ppUnk); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public HResult Present1(uint SyncInterval, uint PresentFlags, PresentParameters* pPresentParameters) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), SyncInterval, PresentFlags, pPresentParameters); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), SyncInterval, PresentFlags, pPresentParameters); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public Bool32 IsTemporaryMonoSupported() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public HResult GetRestrictToOutput(IDXGIOutput* ppRestrictToOutput) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), ppRestrictToOutput); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), ppRestrictToOutput); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public HResult SetBackgroundColor(Rgba* pColor) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[17]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pColor); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pColor); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(18)] + public HResult GetBackgroundColor(Rgba* pColor) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[18]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pColor); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[18]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pColor); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(19)] + public HResult SetRotation(Common.ModeRotation Rotation) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[19]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), Rotation); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[19]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), Rotation); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(20)] + public HResult GetRotation(Common.ModeRotation* pRotation) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[20]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pRotation); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[20]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pRotation); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(21)] + public HResult Present(uint SyncInterval, uint Flags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[21]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), SyncInterval, Flags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[21]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), SyncInterval, Flags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(22)] + public HResult GetBuffer(uint Buffer, Guid* riid, void** ppSurface) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[22]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), Buffer, riid, ppSurface); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[22]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), Buffer, riid, ppSurface); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(23)] + public HResult SetFullscreenState(Bool32* Fullscreen, IDXGIOutput* pTarget) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[23]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), Fullscreen, pTarget); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[23]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), Fullscreen, pTarget); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(24)] + public HResult GetFullscreenState(Bool32* pFullscreen, IDXGIOutput** ppTarget) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[24]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pFullscreen, ppTarget); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[24]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pFullscreen, ppTarget); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(25)] + public HResult GetDesc(SwapChainDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[25]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[25]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(26)] + public HResult ResizeBuffers(uint BufferCount, uint Width, uint Height, Common.Format NewFormat, uint SwapChainFlags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[26]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), BufferCount, Width, Height, NewFormat, SwapChainFlags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[26]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), BufferCount, Width, Height, NewFormat, SwapChainFlags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(27)] + public HResult ResizeTarget(Common.ModeDescription* pNewTargetParameters) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[27]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pNewTargetParameters); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[27]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pNewTargetParameters); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(28)] + public HResult GetContainingOutput(IDXGIOutput** ppOutput) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[28]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), ppOutput); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[28]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), ppOutput); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(29)] + public HResult GetFrameStatistics(FrameStatistics* pStats) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[29]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pStats); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[29]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pStats); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(30)] + public HResult GetLastPresentCount(uint* pLastPresentCount) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[30]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pLastPresentCount); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[30]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), pLastPresentCount); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(31)] + public HResult GetDevice(Guid* riid, void** ppDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[31]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), riid, ppDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[31]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), riid, ppDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(32)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[32]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[32]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(33)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[33]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[33]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(34)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[34]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[34]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(35)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[35]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[35]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(36)] + public uint GetCurrentBackBufferIndex() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[36]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[36]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(37)] + public HResult CheckColorSpaceSupport(Common.ColorSpaceType ColorSpace, uint* pColorSpaceSupport) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[37]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), ColorSpace, pColorSpaceSupport); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[37]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), ColorSpace, pColorSpaceSupport); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(38)] + public HResult SetColorSpace1(Common.ColorSpaceType ColorSpace) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[38]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), ColorSpace); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[38]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), ColorSpace); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(39)] + public HResult ResizeBuffers1(uint BufferCount, uint Width, uint Height, Common.Format Format, uint SwapChainFlags, uint* pCreationNodeMask, IUnknown* ppPresentQueue) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[39]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), BufferCount, Width, Height, Format, SwapChainFlags, pCreationNodeMask, ppPresentQueue); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[39]))((IDXGISwapChain3*)Unsafe.AsPointer(ref this), BufferCount, Width, Height, Format, SwapChainFlags, pCreationNodeMask, ppPresentQueue); +#endif + } + + public interface Interface : IDXGISwapChain2.Interface + { + } +} + +/// +/// IDXGIOutput4 +[Guid("dc7dca35-2196-414d-9f53-617884032a60")] +[NativeTypeName("struct IDXGIOutput4 : IDXGIOutput3")] +[NativeInheritance("IDXGIOutput3")] +public unsafe partial struct IDXGIOutput4 : IDXGIOutput4.Interface +{ + public static ref readonly Guid IID_IDXGIOutput4 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x35, 0xCA, 0x7D, 0xDC, + 0x96, 0x21, + 0x4D, 0x41, + 0x9F, + 0x53, + 0x61, + 0x78, + 0x84, + 0x03, + 0x2A, + 0x60 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIOutput4)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult CheckOverlaySupport(Common.Format EnumFormat, IUnknown* pConcernedDevice, uint* pFlags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), EnumFormat, pConcernedDevice, pFlags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), EnumFormat, pConcernedDevice, pFlags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public Bool32 SupportsOverlays() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIOutput4*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIOutput4*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult GetDisplayModeList1(Common.Format EnumFormat, uint Flags, uint* pNumModes, ModeDescription1* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult FindClosestMatchingMode1(ModeDescription1* pModeToMatch, ModeDescription1* pClosestMatch, IUnknown* pConcernedDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult GetDisplaySurfaceData1(IDXGIResource* pDestination) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pDestination); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pDestination); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult DuplicateOutput(IUnknown* pDevice, IDXGIOutputDuplication** ppOutputDuplication) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pDevice, ppOutputDuplication); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pDevice, ppOutputDuplication); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult GetDesc(OutputDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult GetDisplayModeList(Common.Format EnumFormat, uint Flags, uint* pNumModes, Common.ModeDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult FindClosestMatchingMode(Common.ModeDescription* pModeToMatch, Common.ModeDescription* pClosestMatch, IUnknown* pConcernedDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult WaitForVBlank() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGIOutput4*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIOutput4*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult TakeOwnership(IUnknown* pDevice, Bool32* Exclusive) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pDevice, Exclusive); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pDevice, Exclusive); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public void ReleaseOwnership() + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[14]))((IDXGIOutput4*)Unsafe.AsPointer(ref this)); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGIOutput4*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public HResult GetGammaControlCapabilities(Common.GammaControlCapabilities* pGammaCaps) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pGammaCaps); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pGammaCaps); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public HResult SetGammaControl(Common.GammaControl* pArray) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pArray); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pArray); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public HResult GetGammaControl(Common.GammaControl* pArray) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[17]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pArray); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pArray); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(18)] + public HResult SetDisplaySurface(IDXGISurface* pScanoutSurface) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[18]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pScanoutSurface); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[18]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pScanoutSurface); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(19)] + public HResult GetDisplaySurfaceData(IDXGISurface* pDestination) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[19]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pDestination); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[19]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pDestination); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(20)] + public HResult GetFrameStatistics(FrameStatistics* pStats) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[20]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pStats); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[20]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), pStats); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(21)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[21]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[21]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(22)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[22]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[22]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(23)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[23]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[23]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(24)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[24]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[24]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(25)] + public HResult CheckOverlayColorSpaceSupport(Common.Format Format, Common.ColorSpaceType ColorSpace, IUnknown* pConcernedDevice, uint* pFlags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[25]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), Format, ColorSpace, pConcernedDevice, pFlags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[25]))((IDXGIOutput4*)Unsafe.AsPointer(ref this), Format, ColorSpace, pConcernedDevice, pFlags); +#endif + } + + public interface Interface : IDXGIOutput3.Interface + { + } +} + +/// +/// IDXGIFactory4 +[Guid("1bc6ea02-ef36-464f-bf0c-21ca39e5168a")] +[NativeTypeName("struct IDXGIFactory4 : IDXGIFactory3")] +[NativeInheritance("IDXGIFactory3")] +public unsafe partial struct IDXGIFactory4 : IDXGIFactory4.Interface +{ + public static ref readonly Guid IID_IDXGIFactory4 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x02, 0xEA, 0xC6, 0x1B, + 0x36, 0xEF, + 0x4F, 0x46, + 0xBF, + 0x0C, + 0x21, + 0xCA, + 0x39, + 0xE5, + 0x16, + 0x8A + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIFactory4)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public uint GetCreationFlags() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIFactory4*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIFactory4*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public Bool32 IsWindowedStereoEnabled() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIFactory4*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIFactory4*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult CreateSwapChainForHwnd(IUnknown* pDevice, IntPtr* hWnd, SwapChainDescription1* pDesc, SwapChainFullscreenDescription* pFullscreenDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), pDevice, hWnd, pDesc, pFullscreenDesc, pRestrictToOutput, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), pDevice, hWnd, pDesc, pFullscreenDesc, pRestrictToOutput, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult CreateSwapChainForCoreWindow(IUnknown* pDevice, IUnknown* pWindow, SwapChainDescription1* pDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), pDevice, pWindow, pDesc, pRestrictToOutput, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), pDevice, pWindow, pDesc, pRestrictToOutput, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult GetSharedResourceAdapterLuid(IntPtr* hResource, Luid* pLuid) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), hResource, pLuid); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), hResource, pLuid); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult RegisterStereoStatusWindow(IntPtr* WindowHandle, uint wMsg, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult RegisterStereoStatusEvent(IntPtr* hEvent, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public void UnregisterStereoStatus(uint dwCookie) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[10]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), dwCookie); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), dwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult RegisterOcclusionStatusWindow(IntPtr* WindowHandle, uint wMsg, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult RegisterOcclusionStatusEvent(IntPtr* hEvent, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public void UnregisterOcclusionStatus(uint dwCookie) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[13]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), dwCookie); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), dwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public HResult CreateSwapChainForComposition(IUnknown* pDevice, SwapChainDescription1* pDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), pDevice, pDesc, pRestrictToOutput, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), pDevice, pDesc, pRestrictToOutput, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public HResult EnumAdapters1(uint Adapter, IDXGIAdapter1** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public Bool32 IsCurrent() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGIFactory4*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGIFactory4*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public HResult EnumAdapters(uint Adapter, IDXGIAdapter** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[17]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(18)] + public HResult MakeWindowAssociation(IntPtr* WindowHandle, uint Flags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[18]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), WindowHandle, Flags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[18]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), WindowHandle, Flags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(19)] + public HResult GetWindowAssociation(IntPtr* pWindowHandle) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[19]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), pWindowHandle); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[19]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), pWindowHandle); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(20)] + public HResult CreateSwapChain(IUnknown* pDevice, SwapChainDescription* pDesc, IDXGISwapChain** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[20]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), pDevice, pDesc, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[20]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), pDevice, pDesc, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(21)] + public HResult CreateSoftwareAdapter(IntPtr* Module, IDXGIAdapter** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[21]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), Module, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[21]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), Module, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(22)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[22]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[22]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(23)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[23]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[23]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(24)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[24]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[24]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(25)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[25]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[25]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(26)] + public HResult EnumAdapterByLuid(Luid* AdapterLuid, Guid* riid, void** ppvAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[26]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), AdapterLuid, riid, ppvAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[26]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), AdapterLuid, riid, ppvAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(27)] + public HResult EnumWarpAdapter(Guid* riid, void** ppvAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[27]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), riid, ppvAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[27]))((IDXGIFactory4*)Unsafe.AsPointer(ref this), riid, ppvAdapter); +#endif + } + + public interface Interface : IDXGIFactory3.Interface + { + } +} + +/// +/// IDXGIAdapter3 +[Guid("645967a4-1392-4310-a798-8053ce3e93fd")] +[NativeTypeName("struct IDXGIAdapter3 : IDXGIAdapter2")] +[NativeInheritance("IDXGIAdapter2")] +public unsafe partial struct IDXGIAdapter3 : IDXGIAdapter3.Interface +{ + public static ref readonly Guid IID_IDXGIAdapter3 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0xA4, 0x67, 0x59, 0x64, + 0x92, 0x13, + 0x10, 0x43, + 0xA7, + 0x98, + 0x80, + 0x53, + 0xCE, + 0x3E, + 0x93, + 0xFD + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIAdapter3)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult GetDesc2(AdapterDescription2* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult GetDesc1(AdapterDescription1* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult EnumOutputs(uint Output, IDXGIOutput** ppOutput) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), Output, ppOutput); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), Output, ppOutput); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult GetDesc(AdapterDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult CheckInterfaceSupport(Guid* InterfaceName, LargeInterger* pUMDVersion) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), InterfaceName, pUMDVersion); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), InterfaceName, pUMDVersion); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult RegisterHardwareContentProtectionTeardownStatusEvent(IntPtr* hEvent, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public void UnregisterHardwareContentProtectionTeardownStatus(uint dwCookie) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[13]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), dwCookie); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), dwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public HResult QueryVideoMemoryInfo(uint NodeIndex, MemorySegmentGroup MemorySegmentGroup, QueryVideoMemoryInfo* pVideoMemoryInfo) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), NodeIndex, MemorySegmentGroup, pVideoMemoryInfo); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), NodeIndex, MemorySegmentGroup, pVideoMemoryInfo); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public HResult SetVideoMemoryReservation(uint NodeIndex, MemorySegmentGroup MemorySegmentGroup, ulong Reservation) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), NodeIndex, MemorySegmentGroup, Reservation); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), NodeIndex, MemorySegmentGroup, Reservation); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public HResult RegisterVideoMemoryBudgetChangeNotificationEvent(IntPtr* hEvent, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public void UnregisterVideoMemoryBudgetChangeNotification(uint dwCookie) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[17]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), dwCookie); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGIAdapter3*)Unsafe.AsPointer(ref this), dwCookie); +#endif + } + + public interface Interface : IDXGIAdapter2.Interface + { + } +} + +/// +/// IDXGIOutput5 +[Guid("80a07424-ab52-42eb-833c-0c42fd282d98")] +[NativeTypeName("struct IDXGIOutput5 : IDXGIOutput4")] +[NativeInheritance("IDXGIOutput4")] +public unsafe partial struct IDXGIOutput5 : IDXGIOutput5.Interface +{ + public static ref readonly Guid IID_IDXGIOutput5 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x24, 0x74, 0xA0, 0x80, + 0x52, 0xAB, + 0xEB, 0x42, + 0x83, + 0x3C, + 0x0C, + 0x42, + 0xFD, + 0x28, + 0x2D, + 0x98 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIOutput5)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult CheckOverlayColorSpaceSupport(Common.Format Format, Common.ColorSpaceType ColorSpace, IUnknown* pConcernedDevice, uint* pFlags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), Format, ColorSpace, pConcernedDevice, pFlags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), Format, ColorSpace, pConcernedDevice, pFlags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult CheckOverlaySupport(Common.Format EnumFormat, IUnknown* pConcernedDevice, uint* pFlags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), EnumFormat, pConcernedDevice, pFlags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), EnumFormat, pConcernedDevice, pFlags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public Bool32 SupportsOverlays() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIOutput5*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIOutput5*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult GetDisplayModeList1(Common.Format EnumFormat, uint Flags, uint* pNumModes, ModeDescription1* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult FindClosestMatchingMode1(ModeDescription1* pModeToMatch, ModeDescription1* pClosestMatch, IUnknown* pConcernedDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult GetDisplaySurfaceData1(IDXGIResource* pDestination) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pDestination); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pDestination); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult DuplicateOutput(IUnknown* pDevice, IDXGIOutputDuplication** ppOutputDuplication) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pDevice, ppOutputDuplication); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pDevice, ppOutputDuplication); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult GetDesc(OutputDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult GetDisplayModeList(Common.Format EnumFormat, uint Flags, uint* pNumModes, Common.ModeDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult FindClosestMatchingMode(Common.ModeDescription* pModeToMatch, Common.ModeDescription* pClosestMatch, IUnknown* pConcernedDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult WaitForVBlank() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGIOutput5*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIOutput5*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public HResult TakeOwnership(IUnknown* pDevice, Bool32* Exclusive) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pDevice, Exclusive); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pDevice, Exclusive); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public void ReleaseOwnership() + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[15]))((IDXGIOutput5*)Unsafe.AsPointer(ref this)); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGIOutput5*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public HResult GetGammaControlCapabilities(Common.GammaControlCapabilities* pGammaCaps) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pGammaCaps); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pGammaCaps); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public HResult SetGammaControl(Common.GammaControl* pArray) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[17]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pArray); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pArray); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(18)] + public HResult GetGammaControl(Common.GammaControl* pArray) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[18]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pArray); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[18]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pArray); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(19)] + public HResult SetDisplaySurface(IDXGISurface* pScanoutSurface) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[19]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pScanoutSurface); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[19]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pScanoutSurface); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(20)] + public HResult GetDisplaySurfaceData(IDXGISurface* pDestination) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[20]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pDestination); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[20]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pDestination); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(21)] + public HResult GetFrameStatistics(FrameStatistics* pStats) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[21]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pStats); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[21]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pStats); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(22)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[22]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[22]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(23)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[23]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[23]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(24)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[24]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[24]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(25)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[25]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[25]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(26)] + public HResult DuplicateOutput1(IUnknown* pDevice, uint Flags, uint SupportedFormatsCount, Common.Format* pSupportedFormats, IDXGIOutputDuplication** ppOutputDuplication) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[26]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pDevice, Flags, SupportedFormatsCount, pSupportedFormats, ppOutputDuplication); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[26]))((IDXGIOutput5*)Unsafe.AsPointer(ref this), pDevice, Flags, SupportedFormatsCount, pSupportedFormats, ppOutputDuplication); +#endif + } + + public interface Interface : IDXGIOutput4.Interface + { + } +} + +/// +/// IDXGISwapChain4 +[Guid("3d585d5a-bd4a-489e-b1f4-3dbcb6452ffb")] +[NativeTypeName("struct IDXGISwapChain4 : IDXGISwapChain3")] +[NativeInheritance("IDXGISwapChain3")] +public unsafe partial struct IDXGISwapChain4 : IDXGISwapChain4.Interface +{ + public static ref readonly Guid IID_IDXGISwapChain4 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x5A, 0x5D, 0x58, 0x3D, + 0x4A, 0xBD, + 0x9E, 0x48, + 0xB1, + 0xF4, + 0x3D, + 0xBC, + 0xB6, + 0x45, + 0x2F, + 0xFB + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGISwapChain4)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public uint GetCurrentBackBufferIndex() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult CheckColorSpaceSupport(Common.ColorSpaceType ColorSpace, uint* pColorSpaceSupport) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), ColorSpace, pColorSpaceSupport); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), ColorSpace, pColorSpaceSupport); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult SetColorSpace1(Common.ColorSpaceType ColorSpace) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), ColorSpace); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), ColorSpace); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult ResizeBuffers1(uint BufferCount, uint Width, uint Height, Common.Format Format, uint SwapChainFlags, uint* pCreationNodeMask, IUnknown* ppPresentQueue) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), BufferCount, Width, Height, Format, SwapChainFlags, pCreationNodeMask, ppPresentQueue); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), BufferCount, Width, Height, Format, SwapChainFlags, pCreationNodeMask, ppPresentQueue); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult SetSourceSize(uint Width, uint Height) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), Width, Height); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), Width, Height); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult GetSourceSize(uint* pWidth, uint* pHeight) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pWidth, pHeight); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pWidth, pHeight); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult SetMaximumFrameLatency(uint MaxLatency) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), MaxLatency); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), MaxLatency); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult GetMaximumFrameLatency(uint* pMaxLatency) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pMaxLatency); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pMaxLatency); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public IntPtr GetFrameLatencyWaitableObject() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult SetMatrixTransform(Matrix3x2F* pMatrix) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pMatrix); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pMatrix); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult GetMatrixTransform(Matrix3x2F* pMatrix) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pMatrix); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pMatrix); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public HResult GetDesc1(SwapChainDescription1* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public HResult GetFullscreenDesc(SwapChainFullscreenDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public HResult GetHwnd(IntPtr* pHwnd) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pHwnd); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pHwnd); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public HResult GetCoreWindow(Guid* refiid, void** ppUnk) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[17]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), refiid, ppUnk); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), refiid, ppUnk); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(18)] + public HResult Present1(uint SyncInterval, uint PresentFlags, PresentParameters* pPresentParameters) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[18]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), SyncInterval, PresentFlags, pPresentParameters); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[18]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), SyncInterval, PresentFlags, pPresentParameters); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(19)] + public Bool32 IsTemporaryMonoSupported() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[19]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[19]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(20)] + public HResult GetRestrictToOutput(IDXGIOutput* ppRestrictToOutput) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[20]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), ppRestrictToOutput); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[20]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), ppRestrictToOutput); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(21)] + public HResult SetBackgroundColor(Rgba* pColor) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[21]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pColor); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[21]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pColor); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(22)] + public HResult GetBackgroundColor(Rgba* pColor) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[22]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pColor); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[22]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pColor); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(23)] + public HResult SetRotation(Common.ModeRotation Rotation) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[23]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), Rotation); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[23]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), Rotation); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(24)] + public HResult GetRotation(Common.ModeRotation* pRotation) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[24]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pRotation); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[24]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pRotation); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(25)] + public HResult Present(uint SyncInterval, uint Flags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[25]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), SyncInterval, Flags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[25]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), SyncInterval, Flags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(26)] + public HResult GetBuffer(uint Buffer, Guid* riid, void** ppSurface) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[26]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), Buffer, riid, ppSurface); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[26]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), Buffer, riid, ppSurface); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(27)] + public HResult SetFullscreenState(Bool32* Fullscreen, IDXGIOutput* pTarget) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[27]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), Fullscreen, pTarget); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[27]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), Fullscreen, pTarget); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(28)] + public HResult GetFullscreenState(Bool32* pFullscreen, IDXGIOutput** ppTarget) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[28]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pFullscreen, ppTarget); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[28]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pFullscreen, ppTarget); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(29)] + public HResult GetDesc(SwapChainDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[29]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[29]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(30)] + public HResult ResizeBuffers(uint BufferCount, uint Width, uint Height, Common.Format NewFormat, uint SwapChainFlags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[30]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), BufferCount, Width, Height, NewFormat, SwapChainFlags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[30]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), BufferCount, Width, Height, NewFormat, SwapChainFlags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(31)] + public HResult ResizeTarget(Common.ModeDescription* pNewTargetParameters) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[31]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pNewTargetParameters); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[31]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pNewTargetParameters); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(32)] + public HResult GetContainingOutput(IDXGIOutput** ppOutput) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[32]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), ppOutput); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[32]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), ppOutput); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(33)] + public HResult GetFrameStatistics(FrameStatistics* pStats) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[33]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pStats); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[33]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pStats); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(34)] + public HResult GetLastPresentCount(uint* pLastPresentCount) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[34]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pLastPresentCount); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[34]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), pLastPresentCount); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(35)] + public HResult GetDevice(Guid* riid, void** ppDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[35]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), riid, ppDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[35]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), riid, ppDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(36)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[36]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[36]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(37)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[37]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[37]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(38)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[38]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[38]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(39)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[39]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[39]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(40)] + public HResult SetHDRMetaData(HdrMetadataType Type, uint Size, void* pMetaData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[40]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), Type, Size, pMetaData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[40]))((IDXGISwapChain4*)Unsafe.AsPointer(ref this), Type, Size, pMetaData); +#endif + } + + public interface Interface : IDXGISwapChain3.Interface + { + } +} + +/// +/// IDXGIDevice4 +[Guid("95b4f95f-d8da-4ca4-9ee6-3b76d5968a10")] +[NativeTypeName("struct IDXGIDevice4 : IDXGIDevice3")] +[NativeInheritance("IDXGIDevice3")] +public unsafe partial struct IDXGIDevice4 : IDXGIDevice4.Interface +{ + public static ref readonly Guid IID_IDXGIDevice4 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x5F, 0xF9, 0xB4, 0x95, + 0xDA, 0xD8, + 0xA4, 0x4C, + 0x9E, + 0xE6, + 0x3B, + 0x76, + 0xD5, + 0x96, + 0x8A, + 0x10 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIDevice4)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public void Trim() + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[3]))((IDXGIDevice4*)Unsafe.AsPointer(ref this)); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIDevice4*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult OfferResources(uint NumResources, IDXGIResource* ppResources, OfferResourcePriority Priority) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), NumResources, ppResources, Priority); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), NumResources, ppResources, Priority); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult ReclaimResources(uint NumResources, IDXGIResource* ppResources, Bool32* pDiscarded) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), NumResources, ppResources, pDiscarded); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), NumResources, ppResources, pDiscarded); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult EnqueueSetEvent(IntPtr* hEvent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), hEvent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), hEvent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult SetMaximumFrameLatency(uint MaxLatency) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), MaxLatency); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), MaxLatency); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult GetMaximumFrameLatency(uint* pMaxLatency) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), pMaxLatency); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), pMaxLatency); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult GetAdapter(IDXGIAdapter** pAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), pAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), pAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult CreateSurface(SurfaceDescription* pDesc, uint NumSurfaces, uint Usage, SharedResource* pSharedResource, IDXGISurface* ppSurface) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), pDesc, NumSurfaces, Usage, pSharedResource, ppSurface); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), pDesc, NumSurfaces, Usage, pSharedResource, ppSurface); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult QueryResourceResidency(IUnknown* ppResources, Residency* pResidencyStatus, uint NumResources) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), ppResources, pResidencyStatus, NumResources); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), ppResources, pResidencyStatus, NumResources); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult SetGPUThreadPriority(int Priority) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), Priority); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), Priority); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult GetGPUThreadPriority(int* pPriority) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), pPriority); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), pPriority); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[17]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(18)] + public HResult OfferResources1(uint NumResources, IDXGIResource* ppResources, OfferResourcePriority Priority, uint Flags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[18]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), NumResources, ppResources, Priority, Flags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[18]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), NumResources, ppResources, Priority, Flags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(19)] + public HResult ReclaimResources1(uint NumResources, IDXGIResource* ppResources, ReclaimResourceResults* pResults) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[19]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), NumResources, ppResources, pResults); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[19]))((IDXGIDevice4*)Unsafe.AsPointer(ref this), NumResources, ppResources, pResults); +#endif + } + + public interface Interface : IDXGIDevice3.Interface + { + } +} + +/// +/// IDXGIFactory5 +[Guid("7632e1f5-ee65-4dca-87fd-84cd75f8838d")] +[NativeTypeName("struct IDXGIFactory5 : IDXGIFactory4")] +[NativeInheritance("IDXGIFactory4")] +public unsafe partial struct IDXGIFactory5 : IDXGIFactory5.Interface +{ + public static ref readonly Guid IID_IDXGIFactory5 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0xF5, 0xE1, 0x32, 0x76, + 0x65, 0xEE, + 0xCA, 0x4D, + 0x87, + 0xFD, + 0x84, + 0xCD, + 0x75, + 0xF8, + 0x83, + 0x8D + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIFactory5)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult EnumAdapterByLuid(Luid* AdapterLuid, Guid* riid, void** ppvAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), AdapterLuid, riid, ppvAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), AdapterLuid, riid, ppvAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult EnumWarpAdapter(Guid* riid, void** ppvAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), riid, ppvAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), riid, ppvAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public uint GetCreationFlags() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIFactory5*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIFactory5*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public Bool32 IsWindowedStereoEnabled() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIFactory5*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIFactory5*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult CreateSwapChainForHwnd(IUnknown* pDevice, IntPtr* hWnd, SwapChainDescription1* pDesc, SwapChainFullscreenDescription* pFullscreenDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), pDevice, hWnd, pDesc, pFullscreenDesc, pRestrictToOutput, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), pDevice, hWnd, pDesc, pFullscreenDesc, pRestrictToOutput, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult CreateSwapChainForCoreWindow(IUnknown* pDevice, IUnknown* pWindow, SwapChainDescription1* pDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), pDevice, pWindow, pDesc, pRestrictToOutput, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), pDevice, pWindow, pDesc, pRestrictToOutput, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult GetSharedResourceAdapterLuid(IntPtr* hResource, Luid* pLuid) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), hResource, pLuid); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), hResource, pLuid); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult RegisterStereoStatusWindow(IntPtr* WindowHandle, uint wMsg, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult RegisterStereoStatusEvent(IntPtr* hEvent, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public void UnregisterStereoStatus(uint dwCookie) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[12]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), dwCookie); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), dwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult RegisterOcclusionStatusWindow(IntPtr* WindowHandle, uint wMsg, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public HResult RegisterOcclusionStatusEvent(IntPtr* hEvent, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public void UnregisterOcclusionStatus(uint dwCookie) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[15]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), dwCookie); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), dwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public HResult CreateSwapChainForComposition(IUnknown* pDevice, SwapChainDescription1* pDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), pDevice, pDesc, pRestrictToOutput, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), pDevice, pDesc, pRestrictToOutput, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public HResult EnumAdapters1(uint Adapter, IDXGIAdapter1** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[17]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(18)] + public Bool32 IsCurrent() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[18]))((IDXGIFactory5*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[18]))((IDXGIFactory5*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(19)] + public HResult EnumAdapters(uint Adapter, IDXGIAdapter** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[19]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[19]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(20)] + public HResult MakeWindowAssociation(IntPtr* WindowHandle, uint Flags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[20]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), WindowHandle, Flags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[20]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), WindowHandle, Flags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(21)] + public HResult GetWindowAssociation(IntPtr* pWindowHandle) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[21]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), pWindowHandle); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[21]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), pWindowHandle); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(22)] + public HResult CreateSwapChain(IUnknown* pDevice, SwapChainDescription* pDesc, IDXGISwapChain** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[22]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), pDevice, pDesc, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[22]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), pDevice, pDesc, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(23)] + public HResult CreateSoftwareAdapter(IntPtr* Module, IDXGIAdapter** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[23]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), Module, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[23]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), Module, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(24)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[24]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[24]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(25)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[25]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[25]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(26)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[26]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[26]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(27)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[27]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[27]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(28)] + public HResult CheckFeatureSupport(Feature Feature, void* pFeatureSupportData, uint FeatureSupportDataSize) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[28]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), Feature, pFeatureSupportData, FeatureSupportDataSize); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[28]))((IDXGIFactory5*)Unsafe.AsPointer(ref this), Feature, pFeatureSupportData, FeatureSupportDataSize); +#endif + } + + public interface Interface : IDXGIFactory4.Interface + { + } +} + +/// +/// IDXGIAdapter4 +[Guid("3c8d99d1-4fbf-4181-a82c-af66bf7bd24e")] +[NativeTypeName("struct IDXGIAdapter4 : IDXGIAdapter3")] +[NativeInheritance("IDXGIAdapter3")] +public unsafe partial struct IDXGIAdapter4 : IDXGIAdapter4.Interface +{ + public static ref readonly Guid IID_IDXGIAdapter4 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0xD1, 0x99, 0x8D, 0x3C, + 0xBF, 0x4F, + 0x81, 0x41, + 0xA8, + 0x2C, + 0xAF, + 0x66, + 0xBF, + 0x7B, + 0xD2, + 0x4E + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIAdapter4)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult RegisterHardwareContentProtectionTeardownStatusEvent(IntPtr* hEvent, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public void UnregisterHardwareContentProtectionTeardownStatus(uint dwCookie) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[4]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), dwCookie); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), dwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult QueryVideoMemoryInfo(uint NodeIndex, MemorySegmentGroup MemorySegmentGroup, QueryVideoMemoryInfo* pVideoMemoryInfo) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), NodeIndex, MemorySegmentGroup, pVideoMemoryInfo); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), NodeIndex, MemorySegmentGroup, pVideoMemoryInfo); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult SetVideoMemoryReservation(uint NodeIndex, MemorySegmentGroup MemorySegmentGroup, ulong Reservation) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), NodeIndex, MemorySegmentGroup, Reservation); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), NodeIndex, MemorySegmentGroup, Reservation); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult RegisterVideoMemoryBudgetChangeNotificationEvent(IntPtr* hEvent, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public void UnregisterVideoMemoryBudgetChangeNotification(uint dwCookie) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[8]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), dwCookie); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), dwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult GetDesc2(AdapterDescription2* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult GetDesc1(AdapterDescription1* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult EnumOutputs(uint Output, IDXGIOutput** ppOutput) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), Output, ppOutput); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), Output, ppOutput); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult GetDesc(AdapterDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult CheckInterfaceSupport(Guid* InterfaceName, LargeInterger* pUMDVersion) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), InterfaceName, pUMDVersion); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), InterfaceName, pUMDVersion); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[17]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(18)] + public HResult GetDesc3(AdapterDescription3* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[18]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[18]))((IDXGIAdapter4*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + public interface Interface : IDXGIAdapter3.Interface + { + } +} + +/// +/// IDXGIOutput6 +[Guid("068346e8-aaec-4b84-add7-137f513f77a1")] +[NativeTypeName("struct IDXGIOutput6 : IDXGIOutput5")] +[NativeInheritance("IDXGIOutput5")] +public unsafe partial struct IDXGIOutput6 : IDXGIOutput6.Interface +{ + public static ref readonly Guid IID_IDXGIOutput6 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0xE8, 0x46, 0x83, 0x06, + 0xEC, 0xAA, + 0x84, 0x4B, + 0xAD, + 0xD7, + 0x13, + 0x7F, + 0x51, + 0x3F, + 0x77, + 0xA1 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIOutput6)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult DuplicateOutput1(IUnknown* pDevice, uint Flags, uint SupportedFormatsCount, Common.Format* pSupportedFormats, IDXGIOutputDuplication** ppOutputDuplication) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pDevice, Flags, SupportedFormatsCount, pSupportedFormats, ppOutputDuplication); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pDevice, Flags, SupportedFormatsCount, pSupportedFormats, ppOutputDuplication); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult CheckOverlayColorSpaceSupport(Common.Format Format, Common.ColorSpaceType ColorSpace, IUnknown* pConcernedDevice, uint* pFlags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), Format, ColorSpace, pConcernedDevice, pFlags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), Format, ColorSpace, pConcernedDevice, pFlags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult CheckOverlaySupport(Common.Format EnumFormat, IUnknown* pConcernedDevice, uint* pFlags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), EnumFormat, pConcernedDevice, pFlags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), EnumFormat, pConcernedDevice, pFlags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public Bool32 SupportsOverlays() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIOutput6*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIOutput6*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public HResult GetDisplayModeList1(Common.Format EnumFormat, uint Flags, uint* pNumModes, ModeDescription1* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult FindClosestMatchingMode1(ModeDescription1* pModeToMatch, ModeDescription1* pClosestMatch, IUnknown* pConcernedDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult GetDisplaySurfaceData1(IDXGIResource* pDestination) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pDestination); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pDestination); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult DuplicateOutput(IUnknown* pDevice, IDXGIOutputDuplication** ppOutputDuplication) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pDevice, ppOutputDuplication); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pDevice, ppOutputDuplication); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult GetDesc(OutputDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult GetDisplayModeList(Common.Format EnumFormat, uint Flags, uint* pNumModes, Common.ModeDescription* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), EnumFormat, Flags, pNumModes, pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult FindClosestMatchingMode(Common.ModeDescription* pModeToMatch, Common.ModeDescription* pClosestMatch, IUnknown* pConcernedDevice) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pModeToMatch, pClosestMatch, pConcernedDevice); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public HResult WaitForVBlank() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGIOutput6*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGIOutput6*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public HResult TakeOwnership(IUnknown* pDevice, Bool32* Exclusive) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pDevice, Exclusive); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pDevice, Exclusive); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public void ReleaseOwnership() + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[16]))((IDXGIOutput6*)Unsafe.AsPointer(ref this)); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGIOutput6*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public HResult GetGammaControlCapabilities(Common.GammaControlCapabilities* pGammaCaps) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[17]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pGammaCaps); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pGammaCaps); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(18)] + public HResult SetGammaControl(Common.GammaControl* pArray) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[18]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pArray); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[18]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pArray); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(19)] + public HResult GetGammaControl(Common.GammaControl* pArray) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[19]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pArray); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[19]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pArray); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(20)] + public HResult SetDisplaySurface(IDXGISurface* pScanoutSurface) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[20]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pScanoutSurface); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[20]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pScanoutSurface); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(21)] + public HResult GetDisplaySurfaceData(IDXGISurface* pDestination) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[21]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pDestination); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[21]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pDestination); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(22)] + public HResult GetFrameStatistics(FrameStatistics* pStats) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[22]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pStats); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[22]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pStats); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(23)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[23]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[23]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(24)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[24]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[24]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(25)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[25]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[25]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(26)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[26]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[26]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(27)] + public HResult GetDesc1(OutputDescription1* pDesc) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[27]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pDesc); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[27]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pDesc); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(28)] + public HResult CheckHardwareCompositionSupport(uint* pFlags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[28]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pFlags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[28]))((IDXGIOutput6*)Unsafe.AsPointer(ref this), pFlags); +#endif + } + + public interface Interface : IDXGIOutput5.Interface + { + } +} + +/// +/// IDXGIFactory6 +[Guid("c1b6694f-ff09-44a9-b03c-77900a0a1d17")] +[NativeTypeName("struct IDXGIFactory6 : IDXGIFactory5")] +[NativeInheritance("IDXGIFactory5")] +public unsafe partial struct IDXGIFactory6 : IDXGIFactory6.Interface +{ + public static ref readonly Guid IID_IDXGIFactory6 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x4F, 0x69, 0xB6, 0xC1, + 0x09, 0xFF, + 0xA9, 0x44, + 0xB0, + 0x3C, + 0x77, + 0x90, + 0x0A, + 0x0A, + 0x1D, + 0x17 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIFactory6)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult CheckFeatureSupport(Feature Feature, void* pFeatureSupportData, uint FeatureSupportDataSize) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), Feature, pFeatureSupportData, FeatureSupportDataSize); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), Feature, pFeatureSupportData, FeatureSupportDataSize); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult EnumAdapterByLuid(Luid* AdapterLuid, Guid* riid, void** ppvAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), AdapterLuid, riid, ppvAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), AdapterLuid, riid, ppvAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult EnumWarpAdapter(Guid* riid, void** ppvAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), riid, ppvAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), riid, ppvAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public uint GetCreationFlags() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIFactory6*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIFactory6*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public Bool32 IsWindowedStereoEnabled() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIFactory6*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIFactory6*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public HResult CreateSwapChainForHwnd(IUnknown* pDevice, IntPtr* hWnd, SwapChainDescription1* pDesc, SwapChainFullscreenDescription* pFullscreenDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), pDevice, hWnd, pDesc, pFullscreenDesc, pRestrictToOutput, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), pDevice, hWnd, pDesc, pFullscreenDesc, pRestrictToOutput, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult CreateSwapChainForCoreWindow(IUnknown* pDevice, IUnknown* pWindow, SwapChainDescription1* pDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), pDevice, pWindow, pDesc, pRestrictToOutput, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), pDevice, pWindow, pDesc, pRestrictToOutput, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult GetSharedResourceAdapterLuid(IntPtr* hResource, Luid* pLuid) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), hResource, pLuid); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), hResource, pLuid); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult RegisterStereoStatusWindow(IntPtr* WindowHandle, uint wMsg, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult RegisterStereoStatusEvent(IntPtr* hEvent, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public void UnregisterStereoStatus(uint dwCookie) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[13]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), dwCookie); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), dwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public HResult RegisterOcclusionStatusWindow(IntPtr* WindowHandle, uint wMsg, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[14]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public HResult RegisterOcclusionStatusEvent(IntPtr* hEvent, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public void UnregisterOcclusionStatus(uint dwCookie) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[16]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), dwCookie); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), dwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public HResult CreateSwapChainForComposition(IUnknown* pDevice, SwapChainDescription1* pDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[17]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), pDevice, pDesc, pRestrictToOutput, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), pDevice, pDesc, pRestrictToOutput, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(18)] + public HResult EnumAdapters1(uint Adapter, IDXGIAdapter1** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[18]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[18]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(19)] + public Bool32 IsCurrent() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[19]))((IDXGIFactory6*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[19]))((IDXGIFactory6*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(20)] + public HResult EnumAdapters(uint Adapter, IDXGIAdapter** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[20]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[20]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(21)] + public HResult MakeWindowAssociation(IntPtr* WindowHandle, uint Flags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[21]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), WindowHandle, Flags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[21]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), WindowHandle, Flags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(22)] + public HResult GetWindowAssociation(IntPtr* pWindowHandle) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[22]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), pWindowHandle); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[22]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), pWindowHandle); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(23)] + public HResult CreateSwapChain(IUnknown* pDevice, SwapChainDescription* pDesc, IDXGISwapChain** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[23]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), pDevice, pDesc, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[23]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), pDevice, pDesc, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(24)] + public HResult CreateSoftwareAdapter(IntPtr* Module, IDXGIAdapter** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[24]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), Module, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[24]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), Module, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(25)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[25]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[25]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(26)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[26]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[26]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(27)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[27]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[27]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(28)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[28]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[28]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(29)] + public HResult EnumAdapterByGpuPreference(uint Adapter, GpuPreference GpuPreference, Guid* riid, void** ppvAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[29]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), Adapter, GpuPreference, riid, ppvAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[29]))((IDXGIFactory6*)Unsafe.AsPointer(ref this), Adapter, GpuPreference, riid, ppvAdapter); +#endif + } + + public interface Interface : IDXGIFactory5.Interface + { + } +} + +/// +/// IDXGIFactory7 +[Guid("a4966eed-76db-44da-84c1-ee9a7afb20a8")] +[NativeTypeName("struct IDXGIFactory7 : IDXGIFactory6")] +[NativeInheritance("IDXGIFactory6")] +public unsafe partial struct IDXGIFactory7 : IDXGIFactory7.Interface +{ + public static ref readonly Guid IID_IDXGIFactory7 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0xED, 0x6E, 0x96, 0xA4, + 0xDB, 0x76, + 0xDA, 0x44, + 0x84, + 0xC1, + 0xEE, + 0x9A, + 0x7A, + 0xFB, + 0x20, + 0xA8 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIFactory7)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult EnumAdapterByGpuPreference(uint Adapter, GpuPreference GpuPreference, Guid* riid, void** ppvAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), Adapter, GpuPreference, riid, ppvAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), Adapter, GpuPreference, riid, ppvAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public HResult CheckFeatureSupport(Feature Feature, void* pFeatureSupportData, uint FeatureSupportDataSize) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[4]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), Feature, pFeatureSupportData, FeatureSupportDataSize); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), Feature, pFeatureSupportData, FeatureSupportDataSize); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult EnumAdapterByLuid(Luid* AdapterLuid, Guid* riid, void** ppvAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), AdapterLuid, riid, ppvAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), AdapterLuid, riid, ppvAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public HResult EnumWarpAdapter(Guid* riid, void** ppvAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), riid, ppvAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), riid, ppvAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public uint GetCreationFlags() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIFactory7*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIFactory7*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public Bool32 IsWindowedStereoEnabled() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIFactory7*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIFactory7*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public HResult CreateSwapChainForHwnd(IUnknown* pDevice, IntPtr* hWnd, SwapChainDescription1* pDesc, SwapChainFullscreenDescription* pFullscreenDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), pDevice, hWnd, pDesc, pFullscreenDesc, pRestrictToOutput, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), pDevice, hWnd, pDesc, pFullscreenDesc, pRestrictToOutput, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public HResult CreateSwapChainForCoreWindow(IUnknown* pDevice, IUnknown* pWindow, SwapChainDescription1* pDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), pDevice, pWindow, pDesc, pRestrictToOutput, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), pDevice, pWindow, pDesc, pRestrictToOutput, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public HResult GetSharedResourceAdapterLuid(IntPtr* hResource, Luid* pLuid) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), hResource, pLuid); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), hResource, pLuid); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult RegisterStereoStatusWindow(IntPtr* WindowHandle, uint wMsg, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult RegisterStereoStatusEvent(IntPtr* hEvent, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public void UnregisterStereoStatus(uint dwCookie) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[14]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), dwCookie); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), dwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public HResult RegisterOcclusionStatusWindow(IntPtr* WindowHandle, uint wMsg, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), WindowHandle, wMsg, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public HResult RegisterOcclusionStatusEvent(IntPtr* hEvent, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public void UnregisterOcclusionStatus(uint dwCookie) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[17]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), dwCookie); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), dwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(18)] + public HResult CreateSwapChainForComposition(IUnknown* pDevice, SwapChainDescription1* pDesc, IDXGIOutput* pRestrictToOutput, IDXGISwapChain1** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[18]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), pDevice, pDesc, pRestrictToOutput, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[18]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), pDevice, pDesc, pRestrictToOutput, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(19)] + public HResult EnumAdapters1(uint Adapter, IDXGIAdapter1** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[19]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[19]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(20)] + public Bool32 IsCurrent() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[20]))((IDXGIFactory7*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[20]))((IDXGIFactory7*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(21)] + public HResult EnumAdapters(uint Adapter, IDXGIAdapter** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[21]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[21]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), Adapter, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(22)] + public HResult MakeWindowAssociation(IntPtr* WindowHandle, uint Flags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[22]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), WindowHandle, Flags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[22]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), WindowHandle, Flags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(23)] + public HResult GetWindowAssociation(IntPtr* pWindowHandle) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[23]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), pWindowHandle); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[23]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), pWindowHandle); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(24)] + public HResult CreateSwapChain(IUnknown* pDevice, SwapChainDescription* pDesc, IDXGISwapChain** ppSwapChain) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[24]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), pDevice, pDesc, ppSwapChain); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[24]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), pDevice, pDesc, ppSwapChain); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(25)] + public HResult CreateSoftwareAdapter(IntPtr* Module, IDXGIAdapter** ppAdapter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[25]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), Module, ppAdapter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[25]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), Module, ppAdapter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(26)] + public HResult SetPrivateData(Guid* Name, uint DataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[26]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[26]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), Name, DataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(27)] + public HResult SetPrivateDataInterface(Guid* Name, IUnknown* pUnknown) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[27]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), Name, pUnknown); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[27]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), Name, pUnknown); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(28)] + public HResult GetPrivateData(Guid* Name, uint* pDataSize, void* pData) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[28]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[28]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), Name, pDataSize, pData); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(29)] + public HResult GetParent(Guid* riid, void** ppParent) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[29]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), riid, ppParent); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[29]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), riid, ppParent); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(30)] + public HResult RegisterAdaptersChangedEvent(IntPtr* hEvent, uint* pdwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[30]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[30]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), hEvent, pdwCookie); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(31)] + public HResult UnregisterAdaptersChangedEvent(uint dwCookie) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[31]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), dwCookie); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[31]))((IDXGIFactory7*)Unsafe.AsPointer(ref this), dwCookie); +#endif + } + + public interface Interface : IDXGIFactory6.Interface + { + } +} + +/// +/// IDXGIInfoQueue +[Guid("d67441c7-672a-476f-9e82-cd55b44949ce")] +[NativeTypeName("struct IDXGIInfoQueue : IUnknown")] +[NativeInheritance("IUnknown")] +public unsafe partial struct IDXGIInfoQueue : IDXGIInfoQueue.Interface +{ + public static ref readonly Guid IID_IDXGIInfoQueue + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0xC7, 0x41, 0x74, 0xD6, + 0x2A, 0x67, + 0x6F, 0x47, + 0x9E, + 0x82, + 0xCD, + 0x55, + 0xB4, + 0x49, + 0x49, + 0xCE + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIInfoQueue)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult SetMessageCountLimit(Guid Producer, ulong MessageCountLimit) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, MessageCountLimit); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, MessageCountLimit); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public void ClearStoredMessages(Guid Producer) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[4]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public HResult GetMessage(Guid Producer, ulong MessageIndex, InfoQueueMessage* pMessage, nuint* pMessageByteLength) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[5]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, MessageIndex, pMessage, pMessageByteLength); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, MessageIndex, pMessage, pMessageByteLength); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public ulong GetNumStoredMessagesAllowedByRetrievalFilters(Guid Producer) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(7)] + public ulong GetNumStoredMessages(Guid Producer) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[7]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[7]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(8)] + public ulong GetNumMessagesDiscardedByMessageCountLimit(Guid Producer) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[8]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[8]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(9)] + public ulong GetMessageCountLimit(Guid Producer) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[9]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(10)] + public ulong GetNumMessagesAllowedByStorageFilter(Guid Producer) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[10]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[10]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(11)] + public ulong GetNumMessagesDeniedByStorageFilter(Guid Producer) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[11]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(12)] + public HResult AddStorageFilterEntries(Guid Producer, InfoQueueFilter* pFilter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[12]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, pFilter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[12]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, pFilter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(13)] + public HResult GetStorageFilter(Guid Producer, InfoQueueFilter* pFilter, nuint* pFilterByteLength) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[13]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, pFilter, pFilterByteLength); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[13]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, pFilter, pFilterByteLength); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(14)] + public void ClearStorageFilter(Guid Producer) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[14]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[14]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(15)] + public HResult PushEmptyStorageFilter(Guid Producer) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[15]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[15]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(16)] + public HResult PushDenyAllStorageFilter(Guid Producer) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[16]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[16]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(17)] + public HResult PushCopyOfStorageFilter(Guid Producer) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[17]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[17]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(18)] + public HResult PushStorageFilter(Guid Producer, InfoQueueFilter* pFilter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[18]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, pFilter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[18]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, pFilter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(19)] + public void PopStorageFilter(Guid Producer) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[19]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[19]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(20)] + public uint GetStorageFilterStackSize(Guid Producer) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[20]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[20]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(21)] + public HResult AddRetrievalFilterEntries(Guid Producer, InfoQueueFilter* pFilter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[21]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, pFilter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[21]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, pFilter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(22)] + public HResult GetRetrievalFilter(Guid Producer, InfoQueueFilter* pFilter, nuint* pFilterByteLength) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[22]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, pFilter, pFilterByteLength); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[22]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, pFilter, pFilterByteLength); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(23)] + public void ClearRetrievalFilter(Guid Producer) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[23]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[23]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(24)] + public HResult PushEmptyRetrievalFilter(Guid Producer) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[24]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[24]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(25)] + public HResult PushDenyAllRetrievalFilter(Guid Producer) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[25]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[25]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(26)] + public HResult PushCopyOfRetrievalFilter(Guid Producer) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[26]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[26]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(27)] + public HResult PushRetrievalFilter(Guid Producer, InfoQueueFilter* pFilter) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[27]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, pFilter); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[27]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, pFilter); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(28)] + public void PopRetrievalFilter(Guid Producer) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[28]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[28]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(29)] + public uint GetRetrievalFilterStackSize(Guid Producer) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[29]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[29]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(30)] + public HResult AddMessage(Guid Producer, InfoQueueMessageCategory Category, InfoQueueMessageSeverity Severity, int ID, byte** pDescription) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[30]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, Category, Severity, ID, pDescription); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[30]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, Category, Severity, ID, pDescription); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(31)] + public HResult AddApplicationMessage(InfoQueueMessageSeverity Severity, byte** pDescription) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[31]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Severity, pDescription); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[31]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Severity, pDescription); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(32)] + public HResult SetBreakOnCategory(Guid Producer, InfoQueueMessageCategory Category, Bool32* bEnable) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[32]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, Category, bEnable); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[32]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, Category, bEnable); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(33)] + public HResult SetBreakOnSeverity(Guid Producer, InfoQueueMessageSeverity Severity, Bool32* bEnable) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[33]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, Severity, bEnable); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[33]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, Severity, bEnable); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(34)] + public HResult SetBreakOnID(Guid Producer, int ID, Bool32* bEnable) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[34]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, ID, bEnable); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[34]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, ID, bEnable); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(35)] + public Bool32 GetBreakOnCategory(Guid Producer, InfoQueueMessageCategory Category) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[35]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, Category); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[35]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, Category); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(36)] + public Bool32 GetBreakOnSeverity(Guid Producer, InfoQueueMessageSeverity Severity) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[36]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, Severity); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[36]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, Severity); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(37)] + public Bool32 GetBreakOnID(Guid Producer, int ID) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[37]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, ID); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[37]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, ID); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(38)] + public void SetMuteDebugOutput(Guid Producer, Bool32* bMute) + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[38]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, bMute); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[38]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer, bMute); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(39)] + public Bool32 GetMuteDebugOutput(Guid Producer) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[39]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[39]))((IDXGIInfoQueue*)Unsafe.AsPointer(ref this), Producer); +#endif + } + + public interface Interface : IUnknown.Interface + { + } +} + +/// +/// IDXGIDebug +[Guid("119e7452-de9e-40fe-8806-88f90c12b441")] +[NativeTypeName("struct IDXGIDebug : IUnknown")] +[NativeInheritance("IUnknown")] +public unsafe partial struct IDXGIDebug : IDXGIDebug.Interface +{ + public static ref readonly Guid IID_IDXGIDebug + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x52, 0x74, 0x9E, 0x11, + 0x9E, 0xDE, + 0xFE, 0x40, + 0x88, + 0x06, + 0x88, + 0xF9, + 0x0C, + 0x12, + 0xB4, + 0x41 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIDebug)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult ReportLiveObjects(Guid apiid, DebugRloFlags flags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIDebug*)Unsafe.AsPointer(ref this), apiid, flags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIDebug*)Unsafe.AsPointer(ref this), apiid, flags); +#endif + } + + public interface Interface : IUnknown.Interface + { + } +} + +/// +/// IDXGIDebug1 +[Guid("c5a05f0c-16f2-4adf-9f4d-a8c4d58ac550")] +[NativeTypeName("struct IDXGIDebug1 : IDXGIDebug")] +[NativeInheritance("IDXGIDebug")] +public unsafe partial struct IDXGIDebug1 : IDXGIDebug1.Interface +{ + public static ref readonly Guid IID_IDXGIDebug1 + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x0C, 0x5F, 0xA0, 0xC5, + 0xF2, 0x16, + 0xDF, 0x4A, + 0x9F, + 0x4D, + 0xA8, + 0xC4, + 0xD5, + 0x8A, + 0xC5, + 0x50 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGIDebug1)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public HResult ReportLiveObjects(Guid apiid, DebugRloFlags flags) + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[3]))((IDXGIDebug1*)Unsafe.AsPointer(ref this), apiid, flags); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGIDebug1*)Unsafe.AsPointer(ref this), apiid, flags); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public void EnableLeakTrackingForThread() + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[4]))((IDXGIDebug1*)Unsafe.AsPointer(ref this)); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGIDebug1*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(5)] + public void DisableLeakTrackingForThread() + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[5]))((IDXGIDebug1*)Unsafe.AsPointer(ref this)); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[5]))((IDXGIDebug1*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(6)] + public Bool32 IsLeakTrackingEnabledForThread() + { +#if NET6_0_OR_GREATER + return ((delegate* unmanaged)(lpVtbl[6]))((IDXGIDebug1*)Unsafe.AsPointer(ref this)); +#else + return ((delegate* unmanaged[Stdcall])(lpVtbl[6]))((IDXGIDebug1*)Unsafe.AsPointer(ref this)); +#endif + } + + public interface Interface : IDXGIDebug.Interface + { + } +} + +/// +/// IDXGraphicsAnalysis +[Guid("9f251514-9d4d-4902-9d60-18988ab7d4b5")] +[NativeTypeName("struct IDXGraphicsAnalysis : IUnknown")] +[NativeInheritance("IUnknown")] +public unsafe partial struct IDXGraphicsAnalysis : IDXGraphicsAnalysis.Interface +{ + public static ref readonly Guid IID_IDXGraphicsAnalysis + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get + { + ReadOnlySpan data = new byte[] { + 0x14, 0x15, 0x25, 0x9F, + 0x4D, 0x9D, + 0x02, 0x49, + 0x9D, + 0x60, + 0x18, + 0x98, + 0x8A, + 0xB7, + 0xD4, + 0xB5 + }; + + Debug.Assert(data.Length == Unsafe.SizeOf()); + return ref Unsafe.As(ref MemoryMarshal.GetReference(data)); + } + } + + public static Guid* NativeGuid => (Guid*)Unsafe.AsPointer(ref Unsafe.AsRef(in IID_IDXGraphicsAnalysis)); + + public void** lpVtbl; + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(0)] + public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(1)] + [return: NativeTypeName("ULONG")] + public uint AddRef() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[1]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(2)] + [return: NativeTypeName("ULONG")] + public uint Release() + { + return ((delegate* unmanaged[Stdcall])(lpVtbl[2]))((IUnknown*)Unsafe.AsPointer(ref this)); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(3)] + public void BeginCapture() + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[3]))((IDXGraphicsAnalysis*)Unsafe.AsPointer(ref this)); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[3]))((IDXGraphicsAnalysis*)Unsafe.AsPointer(ref this)); +#endif + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + [VtblIndex(4)] + public void EndCapture() + { +#if NET6_0_OR_GREATER + ((delegate* unmanaged)(lpVtbl[4]))((IDXGraphicsAnalysis*)Unsafe.AsPointer(ref this)); +#else + ((delegate* unmanaged[Stdcall])(lpVtbl[4]))((IDXGraphicsAnalysis*)Unsafe.AsPointer(ref this)); +#endif + } + + public interface Interface : IUnknown.Interface + { + } +} + +#endregion Com Types diff --git a/src/Vortice.Win32/Graphics/Dxgi.Manual.cs b/src/Vortice.Win32/Graphics/Dxgi.Manual.cs index d162e39..6fd69ed 100644 --- a/src/Vortice.Win32/Graphics/Dxgi.Manual.cs +++ b/src/Vortice.Win32/Graphics/Dxgi.Manual.cs @@ -4,3 +4,36 @@ using static Win32.Graphics.Dxgi.Apis; namespace Win32.Graphics.Dxgi; + +public unsafe partial struct IDXGIFactory5 +{ + public TFeature CheckFeatureSupport(Feature feature) + where TFeature : unmanaged + { + TFeature featureData = default; + CheckFeatureSupport(feature, &featureData, (uint)sizeof(TFeature)).ThrowIfFailed(); + return featureData; + } +} + +public unsafe partial struct IDXGIFactory6 +{ + public TFeature CheckFeatureSupport(Feature feature) + where TFeature : unmanaged + { + TFeature featureData = default; + CheckFeatureSupport(feature, &featureData, (uint)sizeof(TFeature)).ThrowIfFailed(); + return featureData; + } +} + +public unsafe partial struct IDXGIFactory7 +{ + public TFeature CheckFeatureSupport(Feature feature) + where TFeature : unmanaged + { + TFeature featureData = default; + CheckFeatureSupport(feature, &featureData, (uint)sizeof(TFeature)).ThrowIfFailed(); + return featureData; + } +} diff --git a/src/Vortice.Win32/HResult.cs b/src/Vortice.Win32/HResult.cs index c72e828..d151052 100644 --- a/src/Vortice.Win32/HResult.cs +++ b/src/Vortice.Win32/HResult.cs @@ -1,6 +1,9 @@ // Copyright © Amer Koleci and Contributors. // Licensed under the MIT License (MIT). See LICENSE in the repository root for more information. +using System.Diagnostics.CodeAnalysis; +using System.Runtime.CompilerServices; + namespace Win32; public readonly partial struct HResult : IComparable, IComparable, IEquatable, IFormattable @@ -89,4 +92,22 @@ public readonly partial struct HResult : IComparable, IComparable, IEqu public bool Failure => Value < 0; public bool Success => Value >= 0; + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void ThrowIfFailed([CallerMemberName] string? method = null) + { + if (Failure) + { + ThrowExternalException(method ?? "Method", this); + } + } + +#if NET6_0_OR_GREATER + [DoesNotReturn] +#endif + private static void ThrowExternalException(string methodName, int errorCode) + { + string message = string.Format("'{0}' failed with an error code of '{1}'", methodName, errorCode); + throw new ExternalException(message, errorCode); + } } diff --git a/src/Vortice.Win32/IUnknown.cs b/src/Vortice.Win32/IUnknown.cs index 35f0330..ea4df82 100644 --- a/src/Vortice.Win32/IUnknown.cs +++ b/src/Vortice.Win32/IUnknown.cs @@ -15,7 +15,7 @@ public unsafe partial struct IUnknown : IUnknown.Interface [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(0)] - public HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject) + public HResult QueryInterface(Guid* riid, void** ppvObject) { #if NET6_0_OR_GREATER return ((delegate* unmanaged)(lpVtbl[0]))((IUnknown*)Unsafe.AsPointer(ref this), riid, ppvObject); @@ -26,7 +26,6 @@ public unsafe partial struct IUnknown : IUnknown.Interface [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(1)] - [return: NativeTypeName("ULONG")] public uint AddRef() { #if NET6_0_OR_GREATER @@ -38,7 +37,6 @@ public unsafe partial struct IUnknown : IUnknown.Interface [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(2)] - [return: NativeTypeName("ULONG")] public uint Release() { #if NET6_0_OR_GREATER @@ -51,14 +49,12 @@ public unsafe partial struct IUnknown : IUnknown.Interface public interface Interface { [VtblIndex(0)] - HResult QueryInterface([NativeTypeName("const IID &")] Guid* riid, void** ppvObject); + HResult QueryInterface(Guid* riid, void** ppvObject); [VtblIndex(1)] - [return: NativeTypeName("ULONG")] uint AddRef(); [VtblIndex(2)] - [return: NativeTypeName("ULONG")] uint Release(); } @@ -66,22 +62,16 @@ public unsafe partial struct IUnknown : IUnknown.Interface where TSelf : unmanaged, Interface { #if NET6_0_OR_GREATER - [NativeTypeName("HRESULT (const IID &, void **) __attribute__((stdcall))")] public delegate* unmanaged QueryInterface; - [NativeTypeName("ULONG () __attribute__((stdcall))")] public delegate* unmanaged AddRef; - [NativeTypeName("ULONG () __attribute__((stdcall))")] public delegate* unmanaged Release; #else - [NativeTypeName("HRESULT (const IID &, void **) __attribute__((stdcall))")] public delegate* unmanaged[Stdcall] QueryInterface; - [NativeTypeName("ULONG () __attribute__((stdcall))")] public delegate* unmanaged[Stdcall] AddRef; - [NativeTypeName("ULONG () __attribute__((stdcall))")] public delegate* unmanaged[Stdcall] Release; #endif } diff --git a/src/Vortice.Win32/Security/Security.Manual.cs b/src/Vortice.Win32/Security/Security.Manual.cs new file mode 100644 index 0000000..3fef4ce --- /dev/null +++ b/src/Vortice.Win32/Security/Security.Manual.cs @@ -0,0 +1,17 @@ +// Copyright © Amer Koleci and Contributors. +// Licensed under the MIT License (MIT). See LICENSE in the repository root for more information. + +namespace Win32.Security; + +public unsafe partial struct SECURITY_ATTRIBUTES +{ + [NativeTypeName("DWORD")] + public uint nLength; + + [NativeTypeName("LPVOID")] + public void* lpSecurityDescriptor; + + [NativeTypeName("BOOL")] + public Bool32 bInheritHandle; +} + diff --git a/src/Vortice.Win32/Vortice.Win32.csproj b/src/Vortice.Win32/Vortice.Win32.csproj index e75913c..e7396d7 100644 --- a/src/Vortice.Win32/Vortice.Win32.csproj +++ b/src/Vortice.Win32/Vortice.Win32.csproj @@ -20,4 +20,8 @@ + + + + diff --git a/src/samples/01-ClearScreen/Program.cs b/src/samples/01-ClearScreen/Program.cs index 18be445..c2c9401 100644 --- a/src/samples/01-ClearScreen/Program.cs +++ b/src/samples/01-ClearScreen/Program.cs @@ -1,8 +1,10 @@ // Copyright © Amer Koleci and Contributors. // Licensed under the MIT License (MIT). See LICENSE in the repository root for more information. +using System.Runtime.InteropServices; +using Win32; using Win32.Graphics.Dxgi; -using Win32.Graphics.Dxgi.Common; +using static Win32.Apis; namespace ClearScreen; @@ -10,5 +12,29 @@ public static unsafe class Program { public static void Main() { + using ComPtr factory = default; + HResult hr = CreateDXGIFactory1(__uuidof(), (void**)&factory); + + { + using ComPtr factory5 = default; + if (factory.CopyTo(&factory5).Success) + { + Bool32 isTearingSupported = factory5.Get()->CheckFeatureSupport(Feature.PresentAllowTearing); + } + } + + using ComPtr adapter = default; + for (uint adapterIndex = 0; + factory.Get()->EnumAdapters1(adapterIndex, adapter.ReleaseAndGetAddressOf()).Success; + adapterIndex++) + { + AdapterDescription1 desc = default; + adapter.Get()->GetDesc1(&desc); + } + + } + + [DllImport("dxgi", ExactSpelling = true)] + public static extern HResult CreateDXGIFactory1(Guid* riid, void** ppFactory); }