From 30277d58c6f72f61aa6e9b537cd5241ba8f5ca77 Mon Sep 17 00:00:00 2001 From: Amer Koleci Date: Tue, 4 Feb 2025 12:14:27 +0100 Subject: [PATCH] Add D3D12 native dependency project (Vortice.D3D12MA.Native) and C# bindings. --- .github/workflows/build.yml | 2 +- Directory.Build.props | 4 +- Directory.Packages.props | 8 +- README.md | 2 +- Vortice.Win32.sln | 19 ++- global.json | 2 +- samples/01-ClearScreen/01-ClearScreen.csproj | 5 +- samples/01-ClearScreen/Program.cs | 155 ++++++++++++------ src/Generator/DocGenerator.cs | 8 +- src/Generator/Generator.csproj | 2 +- .../api/Graphics.CompositionSwapchain.json | 4 +- .../win32json/api/Graphics.Direct3D12.json | 2 +- .../api/Graphics.DirectComposition.json | 10 +- src/Generator/win32json/api/Graphics.Gdi.json | 151 ++++------------- src/Vortice.D3D12MA.Native/LICENSE.txt | 19 +++ .../Vortice.D3D12MA.Native.csproj | 30 ++++ src/Vortice.D3D12MA.Native/_._ | 0 .../net461/Vortice.D3D12MA.Native.targets | 15 ++ .../runtimes/win-arm64/native/D3D12MA.dll | Bin 0 -> 194560 bytes .../runtimes/win-x64/native/D3D12MA.dll | Bin 0 -> 216064 bytes .../Vortice.Dxc.Native.csproj | 5 +- .../Vortice.Pix.Native.csproj | 5 +- .../Allocation.cs | 43 +++++ .../Allocator.cs | 93 +++++++++++ .../Apis.cs | 96 +++++++++++ .../Enums.cs | 121 ++++++++++++++ .../Handles.cs | 70 ++++++++ .../Pool.cs | 11 ++ .../Structs.cs | 80 +++++++++ ...Win32.Graphics.D3D12MemoryAllocator.csproj | 25 +++ .../Vortice.Win32.Graphics.Direct2D.csproj | 4 +- ...Vortice.Win32.Graphics.Direct3D.Dxc.csproj | 4 +- ...Vortice.Win32.Graphics.Direct3D.Fxc.csproj | 5 +- .../Vortice.Win32.Graphics.Direct3D11.csproj | 5 +- ...rtice.Win32.Graphics.Direct3D11on12.csproj | 4 +- .../Vortice.Win32.Graphics.Direct3D12.csproj | 5 +- ...ce.Win32.Graphics.DirectComposition.csproj | 5 +- .../Vortice.Win32.Graphics.DirectWrite.csproj | 5 +- .../Vortice.Win32.Graphics.Dxgi.csproj | 5 +- .../Vortice.Win32.Graphics.Imaging.csproj | 5 +- .../Vortice.Win32.Media.Audio.XAudio2.csproj | 5 +- src/Vortice.Win32/ComPtr.cs | 58 +++---- src/Vortice.Win32/Vortice.Win32.csproj | 4 +- src/Vortice.Win32/Win32.cs | 2 +- 44 files changed, 842 insertions(+), 261 deletions(-) create mode 100644 src/Vortice.D3D12MA.Native/LICENSE.txt create mode 100644 src/Vortice.D3D12MA.Native/Vortice.D3D12MA.Native.csproj create mode 100644 src/Vortice.D3D12MA.Native/_._ create mode 100644 src/Vortice.D3D12MA.Native/build/net461/Vortice.D3D12MA.Native.targets create mode 100644 src/Vortice.D3D12MA.Native/runtimes/win-arm64/native/D3D12MA.dll create mode 100644 src/Vortice.D3D12MA.Native/runtimes/win-x64/native/D3D12MA.dll create mode 100644 src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Allocation.cs create mode 100644 src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Allocator.cs create mode 100644 src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Apis.cs create mode 100644 src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Enums.cs create mode 100644 src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Handles.cs create mode 100644 src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Pool.cs create mode 100644 src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Structs.cs create mode 100644 src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Vortice.Win32.Graphics.D3D12MemoryAllocator.csproj diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 16a104e..0c5272e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,7 +20,7 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Setup .NET 8 SDK + - name: Setup .NET SDK uses: actions/setup-dotnet@v4 with: global-json-file: ./global.json diff --git a/Directory.Build.props b/Directory.Build.props index 0b1bf0a..49bd7cc 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -11,13 +11,13 @@ - 2.2.6 + 2.2.7 true - latest + 13.0 enable enable true diff --git a/Directory.Packages.props b/Directory.Packages.props index 5db0057..c7f9edf 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -7,12 +7,12 @@ - - - + + + - + diff --git a/README.md b/README.md index c0efc26..68bdca8 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![Build status](https://github.com/amerkoleci/Vortice.Win32/workflows/Build/badge.svg)](https://github.com/amerkoleci/Vortice.Win32/actions) [![NuGet](https://img.shields.io/nuget/v/Vortice.Win32.svg)](https://www.nuget.org/packages/Vortice.Win32) -**Vortice.Win32** is **.net8.0** low-level bindings for Win32, generation is based on json files from [win32json](https://github.com/marlersoft/win32json), follows naming conventions of Vortice.Windows but small GC allocation and using unsafe struct for COM objects. +**Vortice.Win32** is **.net8.0** and **.net9.0** low-level bindings for Win32, generation is based on json files from [win32json](https://github.com/marlersoft/win32json), follows naming conventions of Vortice.Windows but small GC allocation and using unsafe struct for COM objects. ## Sponsors To further help development of these bindings library or other projects, please consider [SPONSOR](https://github.com/sponsors/amerkoleci) my profile in order to allow faster issue triaging and new features to be implemented. diff --git a/Vortice.Win32.sln b/Vortice.Win32.sln index 52c53c7..90a180d 100644 --- a/Vortice.Win32.sln +++ b/Vortice.Win32.sln @@ -11,7 +11,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{08F6 EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "01-ClearScreen", "samples\01-ClearScreen\01-ClearScreen.csproj", "{5A10816D-90A4-4AEA-B06E-6A463DA4A891}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{065268A8-16E6-4CFF-8F67-3FD99155877F}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".root", ".root", "{065268A8-16E6-4CFF-8F67-3FD99155877F}" ProjectSection(SolutionItems) = preProject .editorconfig = .editorconfig .gitignore = .gitignore @@ -50,6 +50,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Vortice.Dxc.Native", "src\V EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Vortice.Pix.Native", "src\Vortice.Pix.Native\Vortice.Pix.Native.csproj", "{E75BA02B-0788-4065-8534-BC3FCF06CC9D}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Native", "Native", "{2B88F597-01D2-4843-BE1E-858855688A4A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Vortice.D3D12MA.Native", "src\Vortice.D3D12MA.Native\Vortice.D3D12MA.Native.csproj", "{28E78497-FD58-4C79-A3A2-9FA9509B55F2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Vortice.Win32.Graphics.D3D12MemoryAllocator", "src\Vortice.Win32.Graphics.D3D12MemoryAllocator\Vortice.Win32.Graphics.D3D12MemoryAllocator.csproj", "{AC2594D8-0538-4E3B-AC7E-3F40CC07623C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -120,12 +126,23 @@ Global {E75BA02B-0788-4065-8534-BC3FCF06CC9D}.Debug|Any CPU.Build.0 = Debug|Any CPU {E75BA02B-0788-4065-8534-BC3FCF06CC9D}.Release|Any CPU.ActiveCfg = Release|Any CPU {E75BA02B-0788-4065-8534-BC3FCF06CC9D}.Release|Any CPU.Build.0 = Release|Any CPU + {28E78497-FD58-4C79-A3A2-9FA9509B55F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {28E78497-FD58-4C79-A3A2-9FA9509B55F2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {28E78497-FD58-4C79-A3A2-9FA9509B55F2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {28E78497-FD58-4C79-A3A2-9FA9509B55F2}.Release|Any CPU.Build.0 = Release|Any CPU + {AC2594D8-0538-4E3B-AC7E-3F40CC07623C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AC2594D8-0538-4E3B-AC7E-3F40CC07623C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AC2594D8-0538-4E3B-AC7E-3F40CC07623C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AC2594D8-0538-4E3B-AC7E-3F40CC07623C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {5A10816D-90A4-4AEA-B06E-6A463DA4A891} = {08F6AF96-809B-45C5-BE6C-5BAB7D9AFB60} + {3C579D3B-8239-4707-B906-253181EF52B4} = {2B88F597-01D2-4843-BE1E-858855688A4A} + {E75BA02B-0788-4065-8534-BC3FCF06CC9D} = {2B88F597-01D2-4843-BE1E-858855688A4A} + {28E78497-FD58-4C79-A3A2-9FA9509B55F2} = {2B88F597-01D2-4843-BE1E-858855688A4A} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {DF0375B3-E304-4A53-8E5F-FC9D23743647} diff --git a/global.json b/global.json index fee645a..60af8e2 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "8.0.100", + "version": "9.0.100", "rollForward": "latestFeature", "allowPrerelease": false } diff --git a/samples/01-ClearScreen/01-ClearScreen.csproj b/samples/01-ClearScreen/01-ClearScreen.csproj index 21d51da..c998bc2 100644 --- a/samples/01-ClearScreen/01-ClearScreen.csproj +++ b/samples/01-ClearScreen/01-ClearScreen.csproj @@ -1,7 +1,7 @@ Exe - net8.0 + net9.0 true false ClearScreen @@ -9,6 +9,7 @@ + @@ -24,12 +25,14 @@ + + diff --git a/samples/01-ClearScreen/Program.cs b/samples/01-ClearScreen/Program.cs index 3efcdec..852862c 100644 --- a/samples/01-ClearScreen/Program.cs +++ b/samples/01-ClearScreen/Program.cs @@ -16,17 +16,22 @@ using Win32.Media.Audio.XAudio2; using static Win32.Apis; using static Win32.Graphics.Direct2D.Apis; using static Win32.Graphics.Direct3D.Dxc.Apis; +using static Win32.Graphics.Direct3D12.Apis; using static Win32.Graphics.Direct3D11.Apis; using static Win32.Graphics.DirectWrite.Apis; using static Win32.Graphics.Dxgi.Apis; using static Win32.Graphics.Imaging.D2D.Apis; using static Win32.Media.Audio.XAudio2.Apis; +using static Win32.Graphics.D3D12MemoryAllocator.Apis; using DWriteFactoryType = Win32.Graphics.DirectWrite.FactoryType; using FactoryType = Win32.Graphics.Direct2D.FactoryType; using FeatureLevel = Win32.Graphics.Direct3D.FeatureLevel; using InfoQueueFilter = Win32.Graphics.Direct3D11.InfoQueueFilter; using MessageId = Win32.Graphics.Direct3D11.MessageId; +using D3D11MessageSeverity = Win32.Graphics.Direct3D11.MessageSeverity; +using Win32.Graphics.Direct3D12; +using Win32.Graphics.D3D12MemoryAllocator; namespace ClearScreen; @@ -147,6 +152,7 @@ public static unsafe class Program } using ComPtr adapter = default; + bool supportD3D12 = false; using ComPtr factory6 = default; if (factory.CopyTo(&factory6).Success) @@ -165,6 +171,13 @@ public static unsafe class Program if ((desc.Flags & AdapterFlags.Software) != AdapterFlags.None) continue; + // Check to see if the adapter supports Direct3D 12, but don't create the actual device yet. + if (D3D12CreateDevice((IUnknown*)adapter.Get(), FeatureLevel.Level_11_0, __uuidof(), null).Success) + { + supportD3D12 = true; + break; + } + break; //string name = desc.DescriptionStr; } @@ -182,85 +195,129 @@ public static unsafe class Program if ((desc.Flags & AdapterFlags.Software) != AdapterFlags.None) continue; + // Check to see if the adapter supports Direct3D 12, but don't create the actual device yet. + if (D3D12CreateDevice((IUnknown*)adapter.Get(), FeatureLevel.Level_11_0, __uuidof(), null).Success) + { + supportD3D12 = true; + break; + } + //string name = desc.DescriptionStr; break; } } - ReadOnlySpan featureLevels = stackalloc FeatureLevel[1] + if (supportD3D12) { - FeatureLevel.Level_11_0 - }; + using ComPtr device = default; - CreateDeviceFlags creationFlags = CreateDeviceFlags.BgraSupport; -#if DEBUG - if (SdkLayersAvailable()) - { - // If the project is in a debug build, enable debugging via SDK Layers with this flag. - creationFlags |= CreateDeviceFlags.Debug; + // Create the DX12 API device object. + hr = D3D12CreateDevice( + (IUnknown*)adapter.Get(), + FeatureLevel.Level_11_0, + __uuidof(), + device.GetVoidAddressOf() + ); + ThrowIfFailed(hr); + + AllocatorDesc allocatorDesc = new() + { + pDevice = device.Get(), + pAdapter = (IDXGIAdapter*)adapter.Get() + }; + hr = CreateAllocator(in allocatorDesc, out Allocator allocator); + + AllocationDesc allocationDesc = new(); + allocationDesc.HeapType = HeapType.Default; + + using ComPtr buffer = default; + ResourceDescription bufferDesc = ResourceDescription.Buffer(256u); + + Allocation allocation = default; + hr = allocator.CreateResource(&allocationDesc, in bufferDesc, ResourceStates.Common, + null, &allocation, buffer.GetAddressOf()); + //var test = allocator.IsUMA; + ThrowIfFailed(hr); + uint cnt = allocation.Release(); } + else + { + + ReadOnlySpan featureLevels = + [ + FeatureLevel.Level_11_0 + ]; + + CreateDeviceFlags creationFlags = CreateDeviceFlags.BgraSupport; +#if DEBUG + if (SdkLayersAvailable()) + { + // If the project is in a debug build, enable debugging via SDK Layers with this flag. + creationFlags |= CreateDeviceFlags.Debug; + } #endif - using ComPtr tempDevice = default; - FeatureLevel featureLevel; - using ComPtr tempImmediateContext = default; + using ComPtr tempDevice = default; + FeatureLevel featureLevel; + using ComPtr tempImmediateContext = default; - ThrowIfFailed(D3D11CreateDevice( - (IDXGIAdapter*)adapter.Get(), - DriverType.Unknown, - creationFlags, - featureLevels, - tempDevice.GetAddressOf(), - &featureLevel, - tempImmediateContext.GetAddressOf())); + ThrowIfFailed(D3D11CreateDevice( + (IDXGIAdapter*)adapter.Get(), + DriverType.Unknown, + creationFlags, + featureLevels, + tempDevice.GetAddressOf(), + &featureLevel, + tempImmediateContext.GetAddressOf())); #if DEBUG - using ComPtr d3dDebug = default; - if (tempDevice.CopyTo(&d3dDebug).Success) - { - using ComPtr d3dInfoQueue = default; - if (d3dDebug.CopyTo(&d3dInfoQueue).Success) + using ComPtr d3dDebug = default; + if (tempDevice.CopyTo(&d3dDebug).Success) { - d3dInfoQueue.Get()->SetBreakOnSeverity(MessageSeverity.Corruption, true); - d3dInfoQueue.Get()->SetBreakOnSeverity(MessageSeverity.Error, true); - - MessageId* hide = stackalloc MessageId[1] + using ComPtr d3dInfoQueue = default; + if (d3dDebug.CopyTo(&d3dInfoQueue).Success) { + d3dInfoQueue.Get()->SetBreakOnSeverity(D3D11MessageSeverity.Corruption, true); + d3dInfoQueue.Get()->SetBreakOnSeverity(D3D11MessageSeverity.Error, true); + + MessageId* hide = stackalloc MessageId[1] + { MessageId.SetPrivateDataChangingParams, }; - InfoQueueFilter filter = new(); - filter.DenyList.NumIDs = 1u; - filter.DenyList.pIDList = hide; - d3dInfoQueue.Get()->AddStorageFilterEntries(&filter); + InfoQueueFilter filter = new(); + filter.DenyList.NumIDs = 1u; + filter.DenyList.pIDList = hide; + d3dInfoQueue.Get()->AddStorageFilterEntries(&filter); + } } - } #endif - using ComPtr d3dDevice = default; - using ComPtr immediateContext = default; + using ComPtr d3dDevice = default; + using ComPtr immediateContext = default; - ThrowIfFailed(tempDevice.CopyTo(&d3dDevice)); - ThrowIfFailed(tempImmediateContext.CopyTo(&immediateContext)); + ThrowIfFailed(tempDevice.CopyTo(&d3dDevice)); + ThrowIfFailed(tempImmediateContext.CopyTo(&immediateContext)); - ReadOnlySpan triangleVertices = stackalloc VertexPositionColor[] - { + ReadOnlySpan triangleVertices = stackalloc VertexPositionColor[] + { new VertexPositionColor(new Vector3(0f, 0.5f, 0.0f), new Vector4(1.0f, 0.0f, 0.0f, 1.0f)), new VertexPositionColor(new Vector3(0.5f, -0.5f, 0.0f), new Vector4(0.0f, 1.0f, 0.0f, 1.0f)), new VertexPositionColor(new Vector3(-0.5f, -0.5f, 0.0f), new Vector4(0.0f, 0.0f, 1.0f, 1.0f)) }; - using ComPtr vertexBuffer = ((ID3D11Device*)d3dDevice.Get())->CreateBuffer(triangleVertices, BindFlags.VertexBuffer); + using ComPtr vertexBuffer = ((ID3D11Device*)d3dDevice.Get())->CreateBuffer(triangleVertices, BindFlags.VertexBuffer); - using ComPtr depthStencilTexture = default; - using ComPtr depthStencilTextureView = default; + using ComPtr depthStencilTexture = default; + using ComPtr depthStencilTextureView = default; - Texture2DDescription texture2DDesc = new(Format.D32Float, 256, 256, 1, 1, BindFlags.DepthStencil); - ThrowIfFailed(tempDevice.Get()->CreateTexture2D(&texture2DDesc, null, depthStencilTexture.GetAddressOf())); - depthStencilTexture.Get()->GetDesc(&texture2DDesc); - depthStencilTexture.Get()->SetDebugName("CIAO"); + Texture2DDescription texture2DDesc = new(Format.D32Float, 256, 256, 1, 1, BindFlags.DepthStencil); + ThrowIfFailed(tempDevice.Get()->CreateTexture2D(&texture2DDesc, null, depthStencilTexture.GetAddressOf())); + depthStencilTexture.Get()->GetDesc(&texture2DDesc); + depthStencilTexture.Get()->SetDebugName("CIAO"); - ThrowIfFailed(tempDevice.Get()->CreateDepthStencilView( - (ID3D11Resource*)depthStencilTexture.Get(), null, depthStencilTextureView.GetAddressOf())); + ThrowIfFailed(tempDevice.Get()->CreateDepthStencilView( + (ID3D11Resource*)depthStencilTexture.Get(), null, depthStencilTextureView.GetAddressOf())); + } } } diff --git a/src/Generator/DocGenerator.cs b/src/Generator/DocGenerator.cs index 9738291..02303f3 100644 --- a/src/Generator/DocGenerator.cs +++ b/src/Generator/DocGenerator.cs @@ -21,8 +21,8 @@ public static class DocGenerator public static void Generate(string repoRoot, string[] prefixes, string outputPath) { using FileStream docsStream = File.OpenRead(Path.Combine(repoRoot, "docs", "apidocs.msgpack")); - var data = MessagePackSerializer.Deserialize>(docsStream); - var documentationData = new Dictionary(); + Dictionary data = MessagePackSerializer.Deserialize>(docsStream); + Dictionary documentationData = new(); foreach (string key in data.Keys) { @@ -70,7 +70,7 @@ public static class DocGenerator if (!string.IsNullOrEmpty(doc.Description) || doc.Parameters.Count > 0) { string memberName = item.Replace(".", "::"); - + writer.WriteStartElement(null, "member", null); writer.WriteAttributeString("name", memberName); { @@ -174,7 +174,7 @@ public static class DocGenerator string memberName = $"{item.Replace(".", "::")}::{fieldName}"; writer.WriteStartElement(null, "member", null); - + writer.WriteAttributeString("name", memberName); { diff --git a/src/Generator/Generator.csproj b/src/Generator/Generator.csproj index 56e6ec3..141794b 100644 --- a/src/Generator/Generator.csproj +++ b/src/Generator/Generator.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 Exe true false diff --git a/src/Generator/win32json/api/Graphics.CompositionSwapchain.json b/src/Generator/win32json/api/Graphics.CompositionSwapchain.json index edfe78e..254b279 100644 --- a/src/Generator/win32json/api/Graphics.CompositionSwapchain.json +++ b/src/Generator/win32json/api/Graphics.CompositionSwapchain.json @@ -351,7 +351,7 @@ ,"Attrs":[] ,"Params":[ {"Name":"riid","Type":{"Kind":"PointerTo","Child":{"Kind":"Native","Name":"Guid"}},"Attrs":["In","Const"]} - ,{"Name":"fence","Type":{"Kind":"PointerTo","Child":{"Kind":"PointerTo","Child":{"Kind":"Native","Name":"Void"}}},"Attrs":["Out","RetVal"]} + ,{"Name":"fence","Type":{"Kind":"PointerTo","Child":{"Kind":"PointerTo","Child":{"Kind":"Native","Name":"Void"}}},"Attrs":["Out","RetVal","ComOutPtr"]} ] } ,{ @@ -667,7 +667,7 @@ ,"Params":[ {"Name":"d3dDevice","Type":{"Kind":"ApiRef","Name":"IUnknown","TargetKind":"Com","Api":"System.Com","Parents":[]},"Attrs":["In"]} ,{"Name":"riid","Type":{"Kind":"PointerTo","Child":{"Kind":"Native","Name":"Guid"}},"Attrs":["In","Const"]} - ,{"Name":"presentationFactory","Type":{"Kind":"PointerTo","Child":{"Kind":"PointerTo","Child":{"Kind":"Native","Name":"Void"}}},"Attrs":["Out"]} + ,{"Name":"presentationFactory","Type":{"Kind":"PointerTo","Child":{"Kind":"PointerTo","Child":{"Kind":"Native","Name":"Void"}}},"Attrs":["Out","ComOutPtr"]} ] } ] diff --git a/src/Generator/win32json/api/Graphics.Direct3D12.json b/src/Generator/win32json/api/Graphics.Direct3D12.json index 2d16d64..f7c1fa5 100644 --- a/src/Generator/win32json/api/Graphics.Direct3D12.json +++ b/src/Generator/win32json/api/Graphics.Direct3D12.json @@ -9103,7 +9103,7 @@ ,{"Name":"Depth","Type":{"Kind":"Native","Name":"Single"},"Attrs":["In"]} ,{"Name":"Stencil","Type":{"Kind":"Native","Name":"Byte"},"Attrs":["In"]} ,{"Name":"NumRects","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In"]} - ,{"Name":"pRects","Type":{"Kind":"LPArray","NullNullTerm":false,"CountConst":-1,"CountParamIndex":4,"Child":{"Kind":"ApiRef","Name":"RECT","TargetKind":"Default","Api":"Foundation","Parents":[]}},"Attrs":["In","Const"]} + ,{"Name":"pRects","Type":{"Kind":"LPArray","NullNullTerm":false,"CountConst":-1,"CountParamIndex":4,"Child":{"Kind":"ApiRef","Name":"RECT","TargetKind":"Default","Api":"Foundation","Parents":[]}},"Attrs":["In","Optional","Const"]} ] } ,{ diff --git a/src/Generator/win32json/api/Graphics.DirectComposition.json b/src/Generator/win32json/api/Graphics.DirectComposition.json index f265d03..89440e9 100644 --- a/src/Generator/win32json/api/Graphics.DirectComposition.json +++ b/src/Generator/win32json/api/Graphics.DirectComposition.json @@ -349,7 +349,7 @@ ,"Platform":null ,"Attrs":[] ,"Params":[ - {"Name":"statistics","Type":{"Kind":"PointerTo","Child":{"Kind":"ApiRef","Name":"DCOMPOSITION_FRAME_STATISTICS","TargetKind":"Default","Api":"Graphics.DirectComposition","Parents":[]}},"Attrs":["Out"]} + {"Name":"statistics","Type":{"Kind":"PointerTo","Child":{"Kind":"ApiRef","Name":"DCOMPOSITION_FRAME_STATISTICS","TargetKind":"Default","Api":"Graphics.DirectComposition","Parents":[]}},"Attrs":["Out","RetVal"]} ] } ,{ @@ -2257,7 +2257,7 @@ ,"Platform":null ,"Attrs":[] ,"Params":[ - {"Name":"statistics","Type":{"Kind":"PointerTo","Child":{"Kind":"ApiRef","Name":"DCOMPOSITION_FRAME_STATISTICS","TargetKind":"Default","Api":"Graphics.DirectComposition","Parents":[]}},"Attrs":["Out"]} + {"Name":"statistics","Type":{"Kind":"PointerTo","Child":{"Kind":"ApiRef","Name":"DCOMPOSITION_FRAME_STATISTICS","TargetKind":"Default","Api":"Graphics.DirectComposition","Parents":[]}},"Attrs":["Out","RetVal"]} ] } ,{ @@ -4484,7 +4484,7 @@ ,"Params":[ {"Name":"fenceValue","Type":{"Kind":"PointerTo","Child":{"Kind":"Native","Name":"UInt64"}},"Attrs":["Out"]} ,{"Name":"iid","Type":{"Kind":"PointerTo","Child":{"Kind":"Native","Name":"Guid"}},"Attrs":["In","Const"]} - ,{"Name":"availableFence","Type":{"Kind":"PointerTo","Child":{"Kind":"PointerTo","Child":{"Kind":"Native","Name":"Void"}}},"Attrs":["Out"]} + ,{"Name":"availableFence","Type":{"Kind":"PointerTo","Child":{"Kind":"PointerTo","Child":{"Kind":"Native","Name":"Void"}}},"Attrs":["Out","ComOutPtr"]} ] } ] @@ -4645,7 +4645,7 @@ {"Name":"frameId","Type":{"Kind":"Native","Name":"UInt64"},"Attrs":["In"]} ,{"Name":"frameStats","Type":{"Kind":"PointerTo","Child":{"Kind":"ApiRef","Name":"COMPOSITION_FRAME_STATS","TargetKind":"Default","Api":"Graphics.DirectComposition","Parents":[]}},"Attrs":["Out"]} ,{"Name":"targetIdCount","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In"]} - ,{"Name":"targetIds","Type":{"Kind":"PointerTo","Child":{"Kind":"ApiRef","Name":"COMPOSITION_TARGET_ID","TargetKind":"Default","Api":"Graphics.DirectComposition","Parents":[]}},"Attrs":["Out","Optional"]} + ,{"Name":"targetIds","Type":{"Kind":"LPArray","NullNullTerm":false,"CountConst":-1,"CountParamIndex":-1,"Child":{"Kind":"ApiRef","Name":"COMPOSITION_TARGET_ID","TargetKind":"Default","Api":"Graphics.DirectComposition","Parents":[]}},"Attrs":["Out","Optional"]} ,{"Name":"actualTargetIdCount","Type":{"Kind":"PointerTo","Child":{"Kind":"Native","Name":"UInt32"}},"Attrs":["Out","Optional"]} ] } @@ -4661,7 +4661,7 @@ ,"Params":[ {"Name":"frameId","Type":{"Kind":"Native","Name":"UInt64"},"Attrs":["In"]} ,{"Name":"targetId","Type":{"Kind":"PointerTo","Child":{"Kind":"ApiRef","Name":"COMPOSITION_TARGET_ID","TargetKind":"Default","Api":"Graphics.DirectComposition","Parents":[]}},"Attrs":["In","Const"]} - ,{"Name":"targetStats","Type":{"Kind":"PointerTo","Child":{"Kind":"ApiRef","Name":"COMPOSITION_TARGET_STATS","TargetKind":"Default","Api":"Graphics.DirectComposition","Parents":[]}},"Attrs":["Out"]} + ,{"Name":"targetStats","Type":{"Kind":"PointerTo","Child":{"Kind":"ApiRef","Name":"COMPOSITION_TARGET_STATS","TargetKind":"Default","Api":"Graphics.DirectComposition","Parents":[]}},"Attrs":["Out","RetVal"]} ] } ,{ diff --git a/src/Generator/win32json/api/Graphics.Gdi.json b/src/Generator/win32json/api/Graphics.Gdi.json index 7ff0a1b..e2af146 100644 --- a/src/Generator/win32json/api/Graphics.Gdi.json +++ b/src/Generator/win32json/api/Graphics.Gdi.json @@ -3578,111 +3578,6 @@ ,"Value":256 ,"Attrs":[] } - ,{ - "Name":"DISPLAY_DEVICE_ATTACHED_TO_DESKTOP" - ,"Type":{"Kind":"Native","Name":"UInt32"} - ,"ValueType":"UInt32" - ,"Value":1 - ,"Attrs":[] - } - ,{ - "Name":"DISPLAY_DEVICE_MULTI_DRIVER" - ,"Type":{"Kind":"Native","Name":"UInt32"} - ,"ValueType":"UInt32" - ,"Value":2 - ,"Attrs":[] - } - ,{ - "Name":"DISPLAY_DEVICE_PRIMARY_DEVICE" - ,"Type":{"Kind":"Native","Name":"UInt32"} - ,"ValueType":"UInt32" - ,"Value":4 - ,"Attrs":[] - } - ,{ - "Name":"DISPLAY_DEVICE_MIRRORING_DRIVER" - ,"Type":{"Kind":"Native","Name":"UInt32"} - ,"ValueType":"UInt32" - ,"Value":8 - ,"Attrs":[] - } - ,{ - "Name":"DISPLAY_DEVICE_VGA_COMPATIBLE" - ,"Type":{"Kind":"Native","Name":"UInt32"} - ,"ValueType":"UInt32" - ,"Value":16 - ,"Attrs":[] - } - ,{ - "Name":"DISPLAY_DEVICE_REMOVABLE" - ,"Type":{"Kind":"Native","Name":"UInt32"} - ,"ValueType":"UInt32" - ,"Value":32 - ,"Attrs":[] - } - ,{ - "Name":"DISPLAY_DEVICE_ACC_DRIVER" - ,"Type":{"Kind":"Native","Name":"UInt32"} - ,"ValueType":"UInt32" - ,"Value":64 - ,"Attrs":[] - } - ,{ - "Name":"DISPLAY_DEVICE_MODESPRUNED" - ,"Type":{"Kind":"Native","Name":"UInt32"} - ,"ValueType":"UInt32" - ,"Value":134217728 - ,"Attrs":[] - } - ,{ - "Name":"DISPLAY_DEVICE_RDPUDD" - ,"Type":{"Kind":"Native","Name":"UInt32"} - ,"ValueType":"UInt32" - ,"Value":16777216 - ,"Attrs":[] - } - ,{ - "Name":"DISPLAY_DEVICE_REMOTE" - ,"Type":{"Kind":"Native","Name":"UInt32"} - ,"ValueType":"UInt32" - ,"Value":67108864 - ,"Attrs":[] - } - ,{ - "Name":"DISPLAY_DEVICE_DISCONNECT" - ,"Type":{"Kind":"Native","Name":"UInt32"} - ,"ValueType":"UInt32" - ,"Value":33554432 - ,"Attrs":[] - } - ,{ - "Name":"DISPLAY_DEVICE_TS_COMPATIBLE" - ,"Type":{"Kind":"Native","Name":"UInt32"} - ,"ValueType":"UInt32" - ,"Value":2097152 - ,"Attrs":[] - } - ,{ - "Name":"DISPLAY_DEVICE_UNSAFE_MODES_ON" - ,"Type":{"Kind":"Native","Name":"UInt32"} - ,"ValueType":"UInt32" - ,"Value":524288 - ,"Attrs":[] - } - ,{ - "Name":"DISPLAY_DEVICE_ACTIVE" - ,"Type":{"Kind":"Native","Name":"UInt32"} - ,"ValueType":"UInt32" - ,"Value":1 - ,"Attrs":[] - } - ,{ - "Name":"DISPLAY_DEVICE_ATTACHED" - ,"Type":{"Kind":"Native","Name":"UInt32"} - ,"ValueType":"UInt32" - ,"Value":2 - ,"Attrs":[] - } ,{ "Name":"DISPLAYCONFIG_MAXPATH" ,"Type":{"Kind":"Native","Name":"UInt32"} @@ -7585,6 +7480,32 @@ ] ,"IntegerBase":"UInt32" } + ,{ + "Name":"DISPLAY_DEVICE_STATE_FLAGS" + ,"Architectures":[] + ,"Platform":null + ,"Kind":"Enum" + ,"Flags":true + ,"Scoped":false + ,"Values":[ + {"Name":"DISPLAY_DEVICE_ATTACHED_TO_DESKTOP","Value":1} + ,{"Name":"DISPLAY_DEVICE_MULTI_DRIVER","Value":2} + ,{"Name":"DISPLAY_DEVICE_PRIMARY_DEVICE","Value":4} + ,{"Name":"DISPLAY_DEVICE_MIRRORING_DRIVER","Value":8} + ,{"Name":"DISPLAY_DEVICE_VGA_COMPATIBLE","Value":16} + ,{"Name":"DISPLAY_DEVICE_REMOVABLE","Value":32} + ,{"Name":"DISPLAY_DEVICE_ACC_DRIVER","Value":64} + ,{"Name":"DISPLAY_DEVICE_MODESPRUNED","Value":134217728} + ,{"Name":"DISPLAY_DEVICE_RDPUDD","Value":16777216} + ,{"Name":"DISPLAY_DEVICE_REMOTE","Value":67108864} + ,{"Name":"DISPLAY_DEVICE_DISCONNECT","Value":33554432} + ,{"Name":"DISPLAY_DEVICE_TS_COMPATIBLE","Value":2097152} + ,{"Name":"DISPLAY_DEVICE_UNSAFE_MODES_ON","Value":524288} + ,{"Name":"DISPLAY_DEVICE_ACTIVE","Value":1} + ,{"Name":"DISPLAY_DEVICE_ATTACHED","Value":2} + ] + ,"IntegerBase":"UInt32" + } ,{ "Name":"HBITMAP" ,"Architectures":[] @@ -8740,7 +8661,7 @@ {"Name":"cb","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":[]} ,{"Name":"DeviceName","Type":{"Kind":"Array","Shape":{"Size":32},"Child":{"Kind":"ApiRef","Name":"CHAR","TargetKind":"Default","Api":"Foundation","Parents":[]}},"Attrs":[]} ,{"Name":"DeviceString","Type":{"Kind":"Array","Shape":{"Size":128},"Child":{"Kind":"ApiRef","Name":"CHAR","TargetKind":"Default","Api":"Foundation","Parents":[]}},"Attrs":[]} - ,{"Name":"StateFlags","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":[]} + ,{"Name":"StateFlags","Type":{"Kind":"ApiRef","Name":"DISPLAY_DEVICE_STATE_FLAGS","TargetKind":"Default","Api":"Graphics.Gdi","Parents":[]},"Attrs":[]} ,{"Name":"DeviceID","Type":{"Kind":"Array","Shape":{"Size":128},"Child":{"Kind":"ApiRef","Name":"CHAR","TargetKind":"Default","Api":"Foundation","Parents":[]}},"Attrs":[]} ,{"Name":"DeviceKey","Type":{"Kind":"Array","Shape":{"Size":128},"Child":{"Kind":"ApiRef","Name":"CHAR","TargetKind":"Default","Api":"Foundation","Parents":[]}},"Attrs":[]} ] @@ -8759,7 +8680,7 @@ {"Name":"cb","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":[]} ,{"Name":"DeviceName","Type":{"Kind":"Array","Shape":{"Size":32},"Child":{"Kind":"Native","Name":"Char"}},"Attrs":[]} ,{"Name":"DeviceString","Type":{"Kind":"Array","Shape":{"Size":128},"Child":{"Kind":"Native","Name":"Char"}},"Attrs":[]} - ,{"Name":"StateFlags","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":[]} + ,{"Name":"StateFlags","Type":{"Kind":"ApiRef","Name":"DISPLAY_DEVICE_STATE_FLAGS","TargetKind":"Default","Api":"Graphics.Gdi","Parents":[]},"Attrs":[]} ,{"Name":"DeviceID","Type":{"Kind":"Array","Shape":{"Size":128},"Child":{"Kind":"Native","Name":"Char"}},"Attrs":[]} ,{"Name":"DeviceKey","Type":{"Kind":"Array","Shape":{"Size":128},"Child":{"Kind":"Native","Name":"Char"}},"Attrs":[]} ] @@ -11477,10 +11398,10 @@ ,{"Name":"bItalic","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In"]} ,{"Name":"bUnderline","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In"]} ,{"Name":"bStrikeOut","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In"]} - ,{"Name":"iCharSet","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In"]} - ,{"Name":"iOutPrecision","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In"]} - ,{"Name":"iClipPrecision","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In"]} - ,{"Name":"iQuality","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In"]} + ,{"Name":"iCharSet","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In",{"Kind":"AssociatedEnum","Enum":"FONT_CHARSET"}]} + ,{"Name":"iOutPrecision","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In",{"Kind":"AssociatedEnum","Enum":"FONT_OUTPUT_PRECISION"}]} + ,{"Name":"iClipPrecision","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In",{"Kind":"AssociatedEnum","Enum":"FONT_CLIP_PRECISION"}]} + ,{"Name":"iQuality","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In",{"Kind":"AssociatedEnum","Enum":"FONT_QUALITY"}]} ,{"Name":"iPitchAndFamily","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In"]} ,{"Name":"pszFaceName","Type":{"Kind":"ApiRef","Name":"PSTR","TargetKind":"Default","Api":"Foundation","Parents":[]},"Attrs":["In","Optional","Const"]} ] @@ -11503,10 +11424,10 @@ ,{"Name":"bItalic","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In"]} ,{"Name":"bUnderline","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In"]} ,{"Name":"bStrikeOut","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In"]} - ,{"Name":"iCharSet","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In"]} - ,{"Name":"iOutPrecision","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In"]} - ,{"Name":"iClipPrecision","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In"]} - ,{"Name":"iQuality","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In"]} + ,{"Name":"iCharSet","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In",{"Kind":"AssociatedEnum","Enum":"FONT_CHARSET"}]} + ,{"Name":"iOutPrecision","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In",{"Kind":"AssociatedEnum","Enum":"FONT_OUTPUT_PRECISION"}]} + ,{"Name":"iClipPrecision","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In",{"Kind":"AssociatedEnum","Enum":"FONT_CLIP_PRECISION"}]} + ,{"Name":"iQuality","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In",{"Kind":"AssociatedEnum","Enum":"FONT_QUALITY"}]} ,{"Name":"iPitchAndFamily","Type":{"Kind":"Native","Name":"UInt32"},"Attrs":["In"]} ,{"Name":"pszFaceName","Type":{"Kind":"ApiRef","Name":"PWSTR","TargetKind":"Default","Api":"Foundation","Parents":[]},"Attrs":["In","Optional","Const"]} ] diff --git a/src/Vortice.D3D12MA.Native/LICENSE.txt b/src/Vortice.D3D12MA.Native/LICENSE.txt new file mode 100644 index 0000000..0761191 --- /dev/null +++ b/src/Vortice.D3D12MA.Native/LICENSE.txt @@ -0,0 +1,19 @@ +Copyright (c) 2019-2024 Advanced Micro Devices, Inc. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/Vortice.D3D12MA.Native/Vortice.D3D12MA.Native.csproj b/src/Vortice.D3D12MA.Native/Vortice.D3D12MA.Native.csproj new file mode 100644 index 0000000..8f9d58b --- /dev/null +++ b/src/Vortice.D3D12MA.Native/Vortice.D3D12MA.Native.csproj @@ -0,0 +1,30 @@ + + + + netstandard2.0;net4.6.1;net8.0;net9.0 + D3D12MemoryAllocator native libraries with C bindings + 1.0.0 + false + true + + LICENSE.txt + https://github.com/GPUOpen-LibrariesAndSDKs/D3D12MemoryAllocator + README.md + false + + + + + + + + + + + + + + + + + diff --git a/src/Vortice.D3D12MA.Native/_._ b/src/Vortice.D3D12MA.Native/_._ new file mode 100644 index 0000000..e69de29 diff --git a/src/Vortice.D3D12MA.Native/build/net461/Vortice.D3D12MA.Native.targets b/src/Vortice.D3D12MA.Native/build/net461/Vortice.D3D12MA.Native.targets new file mode 100644 index 0000000..c19e555 --- /dev/null +++ b/src/Vortice.D3D12MA.Native/build/net461/Vortice.D3D12MA.Native.targets @@ -0,0 +1,15 @@ + + + + <_Vortice_D3DMA_Native_IsWindows Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows)))' == 'true'">true + <_Vortice_D3DMA_Native_NativeRuntime Condition=" '$(_Vortice_D3DMA_Native_IsWindows)' == '' And '$(_Vortice_D3DMA_Native_IsWindows)' == 'true' And ('$(Prefer32Bit)' == 'false' Or '$(PlatformTarget)' == 'x64')">win-x64 + <_Vortice_D3DMA_Native_NativeRuntime Condition=" '$(_Vortice_D3DMA_Native_IsWindows)' == '' And '$(_Vortice_D3DMA_Native_IsWindows)' == 'true' And '$(PlatformTarget)' == 'ARM64'">win-arm64 + + + + %(Filename)%(Extension) + Always + False + + + diff --git a/src/Vortice.D3D12MA.Native/runtimes/win-arm64/native/D3D12MA.dll b/src/Vortice.D3D12MA.Native/runtimes/win-arm64/native/D3D12MA.dll new file mode 100644 index 0000000000000000000000000000000000000000..988af96fa3b83f926e3b6108c1d1298b014c44d4 GIT binary patch literal 194560 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 z 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 literal 0 HcmV?d00001 diff --git a/src/Vortice.D3D12MA.Native/runtimes/win-x64/native/D3D12MA.dll b/src/Vortice.D3D12MA.Native/runtimes/win-x64/native/D3D12MA.dll new file mode 100644 index 0000000000000000000000000000000000000000..2ae5843981f7c45e3ef2589c3937c46a79ec63a9 GIT binary patch literal 216064 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

Z*vft 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 literal 0 HcmV?d00001 diff --git a/src/Vortice.Dxc.Native/Vortice.Dxc.Native.csproj b/src/Vortice.Dxc.Native/Vortice.Dxc.Native.csproj index 99072af..05f323a 100644 --- a/src/Vortice.Dxc.Native/Vortice.Dxc.Native.csproj +++ b/src/Vortice.Dxc.Native/Vortice.Dxc.Native.csproj @@ -1,9 +1,9 @@ - netstandard2.0;net4.6.1;net8.0 + netstandard2.0;net4.6.1;net8.0;net9.0 Dxc native libraries - 1.0.2 + 1.0.3 false true @@ -23,6 +23,7 @@ + diff --git a/src/Vortice.Pix.Native/Vortice.Pix.Native.csproj b/src/Vortice.Pix.Native/Vortice.Pix.Native.csproj index 4edabb9..4bc4b7a 100644 --- a/src/Vortice.Pix.Native/Vortice.Pix.Native.csproj +++ b/src/Vortice.Pix.Native/Vortice.Pix.Native.csproj @@ -1,9 +1,9 @@ - netstandard2.0;net4.6.1;net8.0 + netstandard2.0;net4.6.1;net8.0;net9.0 WinPixEventRuntime native libraries - 1.0.0 + 1.0.1 false true @@ -22,6 +22,7 @@ + diff --git a/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Allocation.cs b/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Allocation.cs new file mode 100644 index 0000000..161d68b --- /dev/null +++ b/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Allocation.cs @@ -0,0 +1,43 @@ +// Copyright © Amer Koleci and Contributors. +// Licensed under the MIT License (MIT). See LICENSE in the repository root for more information. + +using Win32.Graphics.Direct3D12; +using static Win32.Apis; +using static Win32.Graphics.D3D12MemoryAllocator.Apis; + +namespace Win32.Graphics.D3D12MemoryAllocator; + +[DebuggerDisplay("{DebuggerDisplay,nq}")] +public readonly partial struct Allocation : IEquatable +{ + public Allocation(nint handle) { Handle = handle; } + public nint Handle { get; } + public bool IsNull => Handle == 0; + public bool IsNotNull => Handle != 0; + public static Allocation Null => new(0); + public static implicit operator Allocation(nint handle) => new(handle); + public static implicit operator nint(Allocation handle) => handle.Handle; + public static bool operator ==(Allocation left, Allocation right) => left.Handle == right.Handle; + public static bool operator !=(Allocation left, Allocation right) => left.Handle != right.Handle; + public static bool operator ==(Allocation left, nint right) => left.Handle == right; + public static bool operator !=(Allocation left, nint right) => left.Handle != right; + public bool Equals(Allocation other) => Handle == other.Handle; + /// + public override bool Equals(object? obj) => obj is Allocation handle && Equals(handle); + /// + public override int GetHashCode() => Handle.GetHashCode(); + private string DebuggerDisplay => $"{nameof(Allocation)} [0x{Handle:X}]"; + + public uint AddRef() => D3D12MA_Allocation_AddRef(Handle); + public uint Release() => D3D12MA_Allocation_Release(Handle); + public ulong Offset => D3D12MA_Allocation_GetOffset(Handle); + public ulong Alignment => D3D12MA_Allocation_GetAlignment(Handle); + public ulong Size => D3D12MA_Allocation_GetSize(Handle); + public unsafe ID3D12Resource* Resource + { + get => D3D12MA_Allocation_GetResource(Handle); + set => D3D12MA_Allocation_SetResource(Handle, value); + } + + public unsafe ID3D12Heap* Heap => D3D12MA_Allocation_GetHeap(Handle); +} diff --git a/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Allocator.cs b/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Allocator.cs new file mode 100644 index 0000000..1ad2624 --- /dev/null +++ b/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Allocator.cs @@ -0,0 +1,93 @@ +// Copyright © Amer Koleci and Contributors. +// Licensed under the MIT License (MIT). See LICENSE in the repository root for more information. + +using Win32.Graphics.Direct3D12; +using Win32.Graphics.Dxgi.Common; +using static Win32.Apis; +using static Win32.Graphics.D3D12MemoryAllocator.Apis; + +namespace Win32.Graphics.D3D12MemoryAllocator; + +[DebuggerDisplay("{DebuggerDisplay,nq}")] +public readonly unsafe partial struct Allocator : IEquatable +{ + public Allocator(nint handle) { Handle = handle; } + public nint Handle { get; } + public bool IsNull => Handle == 0; + public bool IsNotNull => Handle != 0; + public static Allocator Null => new(0); + public static implicit operator Allocator(nint handle) => new(handle); + public static implicit operator nint(Allocator handle) => handle.Handle; + public static bool operator ==(Allocator left, Allocator right) => left.Handle == right.Handle; + public static bool operator !=(Allocator left, Allocator right) => left.Handle != right.Handle; + public static bool operator ==(Allocator left, nint right) => left.Handle == right; + public static bool operator !=(Allocator left, nint right) => left.Handle != right; + public bool Equals(Allocator other) => Handle == other.Handle; + /// + public override bool Equals(object? obj) => obj is Allocator handle && Equals(handle); + /// + public override int GetHashCode() => Handle.GetHashCode(); + private string DebuggerDisplay => $"{nameof(Allocator)} [0x{Handle:X}]"; + + public uint AddRef() => D3D12MA_Allocator_AddRef(Handle); + public uint Release() => D3D12MA_Allocator_Release(Handle); + + public bool IsUMA => D3D12MA_Allocator_IsUMA(Handle); + public bool IsCacheCoherentUMA => D3D12MA_Allocator_IsCacheCoherentUMA(Handle); + public bool IsGPUUploadHeapSupported => D3D12MA_Allocator_IsGPUUploadHeapSupported(Handle); + + public ulong GetMemoryCapacity(uint memorySegmentGroup) => D3D12MA_Allocator_GetMemoryCapacity(Handle, memorySegmentGroup); + + public HResult CreateResource(AllocationDesc* pAllocDesc, + in ResourceDescription resourceDesc, + ResourceStates initialResourceState, + ClearValue* pOptimizedClearValue, + Allocation* allocation, Guid* riidResource, void** ppvResource) + { + fixed (ResourceDescription* pResourceDesc = &resourceDesc) + { + return D3D12MA_Allocator_CreateResource(Handle, pAllocDesc, pResourceDesc, initialResourceState, pOptimizedClearValue, allocation, riidResource, ppvResource); + } + } + + public HResult CreateResource(AllocationDesc* pAllocDesc, + in ResourceDescription resourceDesc, + ResourceStates initialResourceState, + ClearValue* pOptimizedClearValue, + Allocation* allocation, TResource** ppvResource) + where TResource : unmanaged, ID3D12Resource.Interface + { + fixed (ResourceDescription* pResourceDesc = &resourceDesc) + { + return D3D12MA_Allocator_CreateResource(Handle, + pAllocDesc, + pResourceDesc, + initialResourceState, + pOptimizedClearValue, + allocation, + __uuidof(), (void**)ppvResource); + } + } + + public HResult CreateResource2(AllocationDesc* pAllocDesc, + ResourceDescription1* pResourceDesc, + ResourceStates initialResourceState, + ClearValue* pOptimizedClearValue, + Allocation* allocation, Guid* riidResource, void** ppvResource) + { + return D3D12MA_Allocator_CreateResource2(Handle, pAllocDesc, pResourceDesc, initialResourceState, pOptimizedClearValue, allocation, riidResource, ppvResource); + } + + public HResult CreateResource3(AllocationDesc* pAllocDesc, + ResourceDescription1* pResourceDesc, + BarrierLayout initialLayout, + ClearValue* pOptimizedClearValue, + uint numCastableFormats, Format* pCastableFormats, + Allocation* allocation, Guid* riidResource, void** ppvResource) + { + return D3D12MA_Allocator_CreateResource3(Handle, pAllocDesc, pResourceDesc, initialLayout, + pOptimizedClearValue, + numCastableFormats, pCastableFormats, + allocation, riidResource, ppvResource); + } +} diff --git a/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Apis.cs b/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Apis.cs new file mode 100644 index 0000000..5f03850 --- /dev/null +++ b/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Apis.cs @@ -0,0 +1,96 @@ +// Copyright © Amer Koleci and Contributors. +// Licensed under the MIT License (MIT). See LICENSE in the repository root for more information. + +using Win32.Graphics.Direct3D12; +using Win32.Graphics.Dxgi.Common; + +namespace Win32.Graphics.D3D12MemoryAllocator; + +public static unsafe partial class Apis +{ + private const string LibraryName = "D3D12MA"; + + [LibraryImport(LibraryName, EntryPoint = "D3D12MA_CreateAllocator")] + public static partial HResult CreateAllocator(in AllocatorDesc desc, out Allocator allocator); + + [LibraryImport(LibraryName, EntryPoint = "D3D12MA_CreateVirtualBlock")] + public static partial HResult CreateVirtualBlock(in VirtualBlockDesc desc, out VirtualBlock virtualBlock); + + [LibraryImport(LibraryName)] + internal static partial uint D3D12MA_Allocator_AddRef(nint pSelf); + [LibraryImport(LibraryName)] + internal static partial uint D3D12MA_Allocator_Release(nint pSelf); + + [LibraryImport(LibraryName)] + [return: MarshalAs(UnmanagedType.Bool)] + internal static partial bool D3D12MA_Allocator_IsUMA(nint pSelf); + + [LibraryImport(LibraryName)] + [return: MarshalAs(UnmanagedType.Bool)] + internal static partial bool D3D12MA_Allocator_IsCacheCoherentUMA(nint pSelf); + + [LibraryImport(LibraryName)] + [return: MarshalAs(UnmanagedType.Bool)] + internal static partial bool D3D12MA_Allocator_IsGPUUploadHeapSupported(nint pSelf); + + [LibraryImport(LibraryName)] + internal static partial ulong D3D12MA_Allocator_GetMemoryCapacity(nint pSelf, uint memorySegmentGroup); + [LibraryImport(LibraryName)] + internal static partial HResult D3D12MA_Allocator_CreateResource(nint pSelf, AllocationDesc* allocationDesc, ResourceDescription* resourceDesc, ResourceStates initialResourceState, ClearValue* pOptimizedClearValue, Allocation* allocation, Guid* riidResource, void** ppvResource); + [LibraryImport(LibraryName)] + internal static partial HResult D3D12MA_Allocator_CreateResource2(nint pSelf, AllocationDesc* allocationDesc, ResourceDescription1* pResourceDesc, ResourceStates initialResourceState, ClearValue* pOptimizedClearValue, Allocation* ppAllocation, Guid* riidResource, void** ppvResource); + [LibraryImport(LibraryName)] + internal static partial HResult D3D12MA_Allocator_CreateResource3(nint pSelf, AllocationDesc* allocationDesc, ResourceDescription1* pResourceDesc, BarrierLayout InitialLayout, ClearValue* pOptimizedClearValue, uint NumCastableFormats, Format* pCastableFormats, Allocation* ppAllocation, Guid* riidResource, void** ppvResource); + [LibraryImport(LibraryName)] + internal static partial HResult D3D12MA_Allocator_AllocateMemory(nint pSelf, AllocationDesc* pAllocDesc, ResourceAllocationInfo* pAllocInfo, Allocation* ppAllocation); + [LibraryImport(LibraryName)] + internal static partial HResult D3D12MA_Allocator_CreateAliasingResource(nint pSelf, Allocation* pAllocation, ulong AllocationLocalOffset, ResourceDescription* pResourceDesc, ResourceStates InitialResourceState, ClearValue* pOptimizedClearValue, Guid* riidResource, void** ppvResource); + [LibraryImport(LibraryName)] + internal static partial HResult D3D12MA_Allocator_CreateAliasingResource1(nint pSelf, Allocation* pAllocation, ulong AllocationLocalOffset, ResourceDescription* pResourceDesc, ResourceStates InitialResourceState, ClearValue* pOptimizedClearValue, Guid* riidResource, void** ppvResource); + [LibraryImport(LibraryName)] + internal static partial HResult D3D12MA_Allocator_CreateAliasingResource2(nint pSelf, Allocation* pAllocation, ulong AllocationLocalOffset, ResourceDescription* pResourceDesc, BarrierLayout InitialLayout, ClearValue* pOptimizedClearValue, uint NumCastableFormats, Format* pCastableFormats, Guid* riidResource, void** ppvResource); + + [LibraryImport(LibraryName)] + internal static partial HResult D3D12MA_Allocator_CreatePool(nint pSelf, PoolDesc* pPoolDesc, Pool* ppPool); + [LibraryImport(LibraryName)] + internal static partial void D3D12MA_Allocator_SetCurrentFrameIndex(nint pSelf, uint frameIndex); + //[LibraryImport(LibraryName)] + //internal static partial void D3D12MA_Allocator_GetBudget(nint pSelf, D3D12MABudget* pLocalBudget, D3D12MABudget* pNonLocalBudget); + //[LibraryImport(LibraryName)] + //internal static partial void D3D12MA_Allocator_CalculateStatistics(nint pSelf, D3D12MATotalStatistics* pStats); + [LibraryImport(LibraryName)] + internal static partial void D3D12MA_Allocator_BuildStatsString(nint pSelf, char** ppStatsString, Bool32 DetailedMap); + [LibraryImport(LibraryName)] + internal static partial void D3D12MA_Allocator_FreeStatsString(nint pSelf, char* pStatsString); + //[LibraryImport(LibraryName)] + //internal static partial void D3D12MA_Allocator_BeginDefragmentation(void* pSelf, const D3D12MA_DEFRAGMENTATION_DESC* pDesc, D3D12MA_DefragmentationContext** ppContext); + + #region Allocation + [LibraryImport(LibraryName)] + internal static partial uint D3D12MA_Allocation_AddRef(nint pSelf); + [LibraryImport(LibraryName)] + internal static partial uint D3D12MA_Allocation_Release(nint pSelf); + + [LibraryImport(LibraryName)] + internal static partial ulong D3D12MA_Allocation_GetOffset(nint pSelf); + [LibraryImport(LibraryName)] + internal static partial ulong D3D12MA_Allocation_GetAlignment(nint pSelf); + [LibraryImport(LibraryName)] + internal static partial ulong D3D12MA_Allocation_GetSize(nint pSelf); + [LibraryImport(LibraryName)] + internal static partial ID3D12Resource* D3D12MA_Allocation_GetResource(nint pSelf); + + [LibraryImport(LibraryName)] + internal static partial void D3D12MA_Allocation_SetResource(nint pSelf, ID3D12Resource* pResource); + [LibraryImport(LibraryName)] + internal static partial ID3D12Heap* D3D12MA_Allocation_GetHeap(nint pSelf); + [LibraryImport(LibraryName)] + internal static partial void D3D12MA_Allocation_SetPrivateData(nint pSelf, void* pPrivateData); + [LibraryImport(LibraryName)] + internal static partial void* D3D12MA_Allocation_GetPrivateData(nint pSelf); + [LibraryImport(LibraryName)] + internal static partial void D3D12MA_Allocation_SetName(nint pSelf, char* Name); + [LibraryImport(LibraryName)] + internal static partial char* D3D12MA_Allocation_GetName(nint pSelf); + #endregion +} diff --git a/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Enums.cs b/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Enums.cs new file mode 100644 index 0000000..6396ee3 --- /dev/null +++ b/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Enums.cs @@ -0,0 +1,121 @@ +// Copyright © Amer Koleci and Contributors. +// Licensed under the MIT License (MIT). See LICENSE in the repository root for more information. + +namespace Win32.Graphics.D3D12MemoryAllocator; + +/// D3D12MA_ALLOCATOR_FLAGS +[Flags] +public enum AllocatorFlags +{ + /// D3D12MA_ALLOCATOR_FLAG_NONE + None = 0x00, + /// D3D12MA_ALLOCATOR_FLAG_SINGLETHREADED + SingleThreaded = 0x01, + /// D3D12MA_ALLOCATOR_FLAG_ALWAYS_COMMITTED + AlwaysCommitted = 0x02, + /// D3D12MA_ALLOCATOR_FLAG_DEFAULT_POOLS_NOT_ZEROED + DefaultPoolsNotZeroed = 0x04, + /// D3D12MA_ALLOCATOR_FLAG_MSAA_TEXTURES_ALWAYS_COMMITTED + MSAATexturesAlwaysCommitted = 0x08, + /// D3D12MA_ALLOCATOR_FLAG_DONT_PREFER_SMALL_BUFFERS_COMMITTED + DontPreferSmallBuffersCommitted = 0x10 +} + +/// D3D12MA_POOL_FLAGS +[Flags] +public enum PoolFlags +{ + /// D3D12MA_POOL_FLAG_NONE + None = 0x0, + /// D3D12MA_POOL_FLAG_ALGORITHM_LINEAR + AlgorithmLinear = 0x1, + /// D3D12MA_POOL_FLAG_MSAA_TEXTURES_ALWAYS_COMMITTED + MSAATexturesAlwaysCommitted = 0x2, + /// D3D12MA_POOL_FLAG_ALGORITHM_MASK + AlgorithmMask = AlgorithmLinear, +} + +/// D3D12MA_ALLOCATION_FLAGS +[Flags] +public enum AllocationFlags +{ + /// D3D12MA_ALLOCATION_FLAG_NONE + None = 0x00000000, + /// D3D12MA_ALLOCATION_FLAG_COMMITTED + Committed = 0x00000001, + /// D3D12MA_ALLOCATION_FLAG_NEVER_ALLOCATE + NeverAllocate = 0x00000002, + /// D3D12MA_ALLOCATION_FLAG_WITHIN_BUDGET + WithinBudget = 0x00000004, + /// D3D12MA_ALLOCATION_FLAG_UPPER_ADDRESS + UpperAddress = 0x00000008, + /// D3D12MA_ALLOCATION_FLAG_CAN_ALIAS + CanAlias = 0x00000010, + /// D3D12MA_ALLOCATION_FLAG_STRATEGY_MIN_MEMORY + StrategyMinMemory = 0x00010000, + /// D3D12MA_ALLOCATION_FLAG_STRATEGY_MIN_TIME + StrategyMinTime = 0x00020000, + /// D3D12MA_ALLOCATION_FLAG_STRATEGY_MIN_OFFSET + StrategyMinOffset = 0x0004000, + /// D3D12MA_ALLOCATION_FLAG_STRATEGY_BEST_FIT + StrategyBestFit = StrategyMinMemory, + /// D3D12MA_ALLOCATION_FLAG_STRATEGY_FIRST_FIT + StrategyFirstFit = StrategyMinTime, + /// D3D12MA_ALLOCATION_FLAG_STRATEGY_MASK + StrategyMask = StrategyMinMemory | StrategyMinTime | StrategyMinOffset +} + +/// D3D12MA_ALLOCATION_FLAGS +[Flags] +public enum VirtualBlockFlags +{ + /// D3D12MA_VIRTUAL_BLOCK_FLAG_NONE + None = 0, + /// D3D12MA_VIRTUAL_BLOCK_FLAG_ALGORITHM_LINEAR + AlgorithmLinear = PoolFlags.AlgorithmLinear, + /// D3D12MA_VIRTUAL_BLOCK_FLAG_ALGORITHM_MASK + AlgorithmMask = PoolFlags.AlgorithmMask, +} + +/// D3D12MA_DEFRAGMENTATION_FLAGS +[Flags] +public enum DefragmentationFlags +{ + /// D3D12MA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST + AlgorithmFast = 0x1, + /// D3D12MA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED + AlgorithmBalanced = 0x2, + /// D3D12MA_DEFRAGMENTATION_FLAG_ALGORITHM_FULL + AlgorithmFull = 0x4, + /// D3D12MA_DEFRAGMENTATION_FLAG_ALGORITHM_MASK + AlgorithmMask = AlgorithmFast | AlgorithmBalanced | AlgorithmFull, +} + +/// D3D12MA_DEFRAGMENTATION_MOVE_OPERATION +public enum DefragmentationMoveOperation +{ + /// D3D12MA_DEFRAGMENTATION_MOVE_OPERATION_COPY + Copy = 0, + /// D3D12MA_DEFRAGMENTATION_MOVE_OPERATION_IGNORE + Ignore = 1, + /// D3D12MA_DEFRAGMENTATION_MOVE_OPERATION_DESTROY + Destroy = 2, +} + +/// D3D12MA_VIRTUAL_ALLOCATION_FLAGS +[Flags] +public enum VirtualAllocationFlags +{ + /// D3D12MA_VIRTUAL_ALLOCATION_FLAG_NONE + None = 0, + /// D3D12MA_VIRTUAL_ALLOCATION_FLAG_UPPER_ADDRESS + UpperAddress = AllocationFlags.UpperAddress, + /// D3D12MA_VIRTUAL_ALLOCATION_FLAG_STRATEGY_MIN_MEMORY + StrategyMinMemory = AllocationFlags.StrategyMinMemory, + /// D3D12MA_VIRTUAL_ALLOCATION_FLAG_STRATEGY_MIN_TIME + StrategyMinTime = AllocationFlags.StrategyMinTime, + /// D3D12MA_VIRTUAL_ALLOCATION_FLAG_STRATEGY_MIN_OFFSET + StrategyMinOffset = AllocationFlags.StrategyMinOffset, + /// D3D12MA_ALLOCATION_FLAG_STRATEGY_MASK + StrategyMask = AllocationFlags.StrategyMask, +} diff --git a/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Handles.cs b/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Handles.cs new file mode 100644 index 0000000..0b22a05 --- /dev/null +++ b/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Handles.cs @@ -0,0 +1,70 @@ +// Copyright © Amer Koleci and Contributors. +// Licensed under the MIT License (MIT). See LICENSE in the repository root for more information. + +namespace Win32.Graphics.D3D12MemoryAllocator; + +[DebuggerDisplay("{DebuggerDisplay,nq}")] +public readonly partial struct Pool : IEquatable +{ + public Pool(nint handle) { Handle = handle; } + public nint Handle { get; } + public bool IsNull => Handle == 0; + public bool IsNotNull => Handle != 0; + public static Pool Null => new(0); + public static implicit operator Pool(nint handle) => new(handle); + public static implicit operator nint(Pool handle) => handle.Handle; + public static bool operator ==(Pool left, Pool right) => left.Handle == right.Handle; + public static bool operator !=(Pool left, Pool right) => left.Handle != right.Handle; + public static bool operator ==(Pool left, nint right) => left.Handle == right; + public static bool operator !=(Pool left, nint right) => left.Handle != right; + public bool Equals(Pool other) => Handle == other.Handle; + /// + public override bool Equals(object? obj) => obj is Pool handle && Equals(handle); + /// + public override int GetHashCode() => Handle.GetHashCode(); + private string DebuggerDisplay => $"{nameof(Pool)} [0x{Handle:X}]"; +} + +[DebuggerDisplay("{DebuggerDisplay,nq}")] +public readonly partial struct VirtualBlock : IEquatable +{ + public VirtualBlock(nint handle) { Handle = handle; } + public nint Handle { get; } + public bool IsNull => Handle == 0; + public bool IsNotNull => Handle != 0; + public static VirtualBlock Null => new(0); + public static implicit operator VirtualBlock(nint handle) => new(handle); + public static implicit operator nint(VirtualBlock handle) => handle.Handle; + public static bool operator ==(VirtualBlock left, VirtualBlock right) => left.Handle == right.Handle; + public static bool operator !=(VirtualBlock left, VirtualBlock right) => left.Handle != right.Handle; + public static bool operator ==(VirtualBlock left, nint right) => left.Handle == right; + public static bool operator !=(VirtualBlock left, nint right) => left.Handle != right; + public bool Equals(VirtualBlock other) => Handle == other.Handle; + /// + public override bool Equals(object? obj) => obj is VirtualBlock handle && Equals(handle); + /// + public override int GetHashCode() => Handle.GetHashCode(); + private string DebuggerDisplay => $"{nameof(VirtualBlock)} [0x{Handle:X}]"; +} + +[DebuggerDisplay("{DebuggerDisplay,nq}")] +public readonly partial struct DefragmentationContext : IEquatable +{ + public DefragmentationContext(nint handle) { Handle = handle; } + public nint Handle { get; } + public bool IsNull => Handle == 0; + public bool IsNotNull => Handle != 0; + public static DefragmentationContext Null => new(0); + public static implicit operator DefragmentationContext(nint handle) => new(handle); + public static implicit operator nint(DefragmentationContext handle) => handle.Handle; + public static bool operator ==(DefragmentationContext left, DefragmentationContext right) => left.Handle == right.Handle; + public static bool operator !=(DefragmentationContext left, DefragmentationContext right) => left.Handle != right.Handle; + public static bool operator ==(DefragmentationContext left, nint right) => left.Handle == right; + public static bool operator !=(DefragmentationContext left, nint right) => left.Handle != right; + public bool Equals(DefragmentationContext other) => Handle == other.Handle; + /// + public override bool Equals(object? obj) => obj is DefragmentationContext handle && Equals(handle); + /// + public override int GetHashCode() => Handle.GetHashCode(); + private string DebuggerDisplay => $"{nameof(DefragmentationContext)} [0x{Handle:X}]"; +} diff --git a/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Pool.cs b/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Pool.cs new file mode 100644 index 0000000..7c0740e --- /dev/null +++ b/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Pool.cs @@ -0,0 +1,11 @@ +// Copyright © Amer Koleci and Contributors. +// Licensed under the MIT License (MIT). See LICENSE in the repository root for more information. + +using static Win32.Apis; +using static Win32.Graphics.D3D12MemoryAllocator.Apis; + +namespace Win32.Graphics.D3D12MemoryAllocator; + +partial struct Pool +{ +} diff --git a/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Structs.cs b/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Structs.cs new file mode 100644 index 0000000..f4ec91e --- /dev/null +++ b/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Structs.cs @@ -0,0 +1,80 @@ +// Copyright © Amer Koleci and Contributors. +// Licensed under the MIT License (MIT). See LICENSE in the repository root for more information. + +using Win32.Graphics.Direct3D12; +using Win32.Graphics.Dxgi; + +namespace Win32.Graphics.D3D12MemoryAllocator; + +/// D3D12MA_ALLOCATION_CALLBACKS +public unsafe partial struct AllocationCallbacks +{ + ///

Allocation function. + /// D3D12MA_AllocateFunctionType + public delegate* unmanaged pAllocate; + + /// Dellocation function. + /// D3D12MA_FreeFunctionType + public delegate* unmanaged pFree; + + /// Custom data that will be passed to allocation and deallocation functions as pUserData parameter. + public void* pPrivateData; +} + +/// D3D12MA_ALLOCATOR_DESC +public unsafe partial struct AllocatorDesc +{ + public AllocatorFlags Flags; + public ID3D12Device* pDevice; + public ulong PreferredBlockSize; + public AllocationCallbacks* pAllocationCallbacks; + public IDXGIAdapter* pAdapter; +} + +/// D3D12MA_POOL_DESC +public unsafe partial struct PoolDesc +{ + public PoolFlags Flags; + public HeapProperties HeapProperties; + public HeapFlags HeapFlags; + public ulong BlockSize; + public uint MinBlockCount; + public uint MaxBlockCount; + public ulong MinAllocationAlignment; + public ID3D12ProtectedResourceSession* pProtectedSession; + public ResidencyPriority ResidencyPriority; +} + +/// D3D12MA_VIRTUAL_BLOCK_DESC +public unsafe partial struct VirtualBlockDesc +{ + public VirtualBlockFlags Flags; + public ulong Size; + public AllocationCallbacks* pAllocationCallbacks; +} + +/// D3D12MA_ALLOCATION_DESC +public unsafe partial struct AllocationDesc +{ + public AllocationFlags Flags; + public HeapType HeapType; + public HeapFlags ExtraHeapFlags; + public Pool* CustomPool; + public void* pPrivateData; +} + +/// D3D12MA_VIRTUAL_ALLOCATION_DESC +public unsafe partial struct D3D12MA_VIRTUAL_ALLOCATION_DESC +{ + public VirtualAllocationFlags Flags; + public ulong Size; + public ulong Alignment; + public void* pPrivateData; +} + +public unsafe partial struct D3D12MA_VIRTUAL_ALLOCATION_INFO +{ + public ulong Offset; + public ulong Size; + public void* pPrivateData; +} diff --git a/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Vortice.Win32.Graphics.D3D12MemoryAllocator.csproj b/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Vortice.Win32.Graphics.D3D12MemoryAllocator.csproj new file mode 100644 index 0000000..f57c55a --- /dev/null +++ b/src/Vortice.Win32.Graphics.D3D12MemoryAllocator/Vortice.Win32.Graphics.D3D12MemoryAllocator.csproj @@ -0,0 +1,25 @@ + + + + net8.0;net9.0 + D3D12MemoryAllocator bindings + + $(NoWarn);CS0419;IDE0017 + + + + + + + + + + + + + + + + + + diff --git a/src/Vortice.Win32.Graphics.Direct2D/Vortice.Win32.Graphics.Direct2D.csproj b/src/Vortice.Win32.Graphics.Direct2D/Vortice.Win32.Graphics.Direct2D.csproj index 74ab3d5..aa4aaac 100644 --- a/src/Vortice.Win32.Graphics.Direct2D/Vortice.Win32.Graphics.Direct2D.csproj +++ b/src/Vortice.Win32.Graphics.Direct2D/Vortice.Win32.Graphics.Direct2D.csproj @@ -1,8 +1,8 @@ - net8.0 - Direct2D1 bindings. + net8.0;net9.0 + Direct2D1 bindings $(NoWarn);CS0419;IDE0017 diff --git a/src/Vortice.Win32.Graphics.Direct3D.Dxc/Vortice.Win32.Graphics.Direct3D.Dxc.csproj b/src/Vortice.Win32.Graphics.Direct3D.Dxc/Vortice.Win32.Graphics.Direct3D.Dxc.csproj index 81fb2ab..e82432d 100644 --- a/src/Vortice.Win32.Graphics.Direct3D.Dxc/Vortice.Win32.Graphics.Direct3D.Dxc.csproj +++ b/src/Vortice.Win32.Graphics.Direct3D.Dxc/Vortice.Win32.Graphics.Direct3D.Dxc.csproj @@ -1,8 +1,8 @@ - net8.0 - DXC (DirectXShaderCompiler) bindings. + net8.0;net9.0 + DXC (DirectXShaderCompiler) bindings $(NoWarn);CS0419;IDE0017 diff --git a/src/Vortice.Win32.Graphics.Direct3D.Fxc/Vortice.Win32.Graphics.Direct3D.Fxc.csproj b/src/Vortice.Win32.Graphics.Direct3D.Fxc/Vortice.Win32.Graphics.Direct3D.Fxc.csproj index 803acdf..78ab529 100644 --- a/src/Vortice.Win32.Graphics.Direct3D.Fxc/Vortice.Win32.Graphics.Direct3D.Fxc.csproj +++ b/src/Vortice.Win32.Graphics.Direct3D.Fxc/Vortice.Win32.Graphics.Direct3D.Fxc.csproj @@ -1,9 +1,8 @@ - net8.0 - FXC bindings. - + net8.0;net9.0 + FXC bindings $(NoWarn);CS0419;IDE0017 diff --git a/src/Vortice.Win32.Graphics.Direct3D11/Vortice.Win32.Graphics.Direct3D11.csproj b/src/Vortice.Win32.Graphics.Direct3D11/Vortice.Win32.Graphics.Direct3D11.csproj index 08ea01d..4525bec 100644 --- a/src/Vortice.Win32.Graphics.Direct3D11/Vortice.Win32.Graphics.Direct3D11.csproj +++ b/src/Vortice.Win32.Graphics.Direct3D11/Vortice.Win32.Graphics.Direct3D11.csproj @@ -1,9 +1,8 @@ - net8.0 - Direct3D11 bindings. - + net8.0;net9.0 + Direct3D11 bindings $(NoWarn);CS0419;IDE0017 diff --git a/src/Vortice.Win32.Graphics.Direct3D11on12/Vortice.Win32.Graphics.Direct3D11on12.csproj b/src/Vortice.Win32.Graphics.Direct3D11on12/Vortice.Win32.Graphics.Direct3D11on12.csproj index 918d972..744e555 100644 --- a/src/Vortice.Win32.Graphics.Direct3D11on12/Vortice.Win32.Graphics.Direct3D11on12.csproj +++ b/src/Vortice.Win32.Graphics.Direct3D11on12/Vortice.Win32.Graphics.Direct3D11on12.csproj @@ -1,8 +1,8 @@ - net8.0 - Direct3D11on12 bindings. + net8.0;net9.0 + Direct3D11on12 bindings $(NoWarn);CS0419;IDE0017 diff --git a/src/Vortice.Win32.Graphics.Direct3D12/Vortice.Win32.Graphics.Direct3D12.csproj b/src/Vortice.Win32.Graphics.Direct3D12/Vortice.Win32.Graphics.Direct3D12.csproj index 2ff9ecb..4c8a8af 100644 --- a/src/Vortice.Win32.Graphics.Direct3D12/Vortice.Win32.Graphics.Direct3D12.csproj +++ b/src/Vortice.Win32.Graphics.Direct3D12/Vortice.Win32.Graphics.Direct3D12.csproj @@ -1,9 +1,8 @@ - net8.0 - Direct3D12 bindings. - + net8.0;net9.0 + Direct3D12 bindings $(NoWarn);CS0419;IDE0017 diff --git a/src/Vortice.Win32.Graphics.DirectComposition/Vortice.Win32.Graphics.DirectComposition.csproj b/src/Vortice.Win32.Graphics.DirectComposition/Vortice.Win32.Graphics.DirectComposition.csproj index d728529..334edc9 100644 --- a/src/Vortice.Win32.Graphics.DirectComposition/Vortice.Win32.Graphics.DirectComposition.csproj +++ b/src/Vortice.Win32.Graphics.DirectComposition/Vortice.Win32.Graphics.DirectComposition.csproj @@ -1,9 +1,8 @@ - net8.0 - DirectComposition bindings. - + net8.0;net9.0 + DirectComposition bindings $(NoWarn);CS0419;IDE0017 diff --git a/src/Vortice.Win32.Graphics.DirectWrite/Vortice.Win32.Graphics.DirectWrite.csproj b/src/Vortice.Win32.Graphics.DirectWrite/Vortice.Win32.Graphics.DirectWrite.csproj index 900c9b6..46d9445 100644 --- a/src/Vortice.Win32.Graphics.DirectWrite/Vortice.Win32.Graphics.DirectWrite.csproj +++ b/src/Vortice.Win32.Graphics.DirectWrite/Vortice.Win32.Graphics.DirectWrite.csproj @@ -1,9 +1,8 @@ - net8.0 - DirectWrite bindings. - + net8.0;net9.0 + DirectWrite bindings $(NoWarn);CS0419;IDE0017 diff --git a/src/Vortice.Win32.Graphics.Dxgi/Vortice.Win32.Graphics.Dxgi.csproj b/src/Vortice.Win32.Graphics.Dxgi/Vortice.Win32.Graphics.Dxgi.csproj index 0dd316f..c053bb6 100644 --- a/src/Vortice.Win32.Graphics.Dxgi/Vortice.Win32.Graphics.Dxgi.csproj +++ b/src/Vortice.Win32.Graphics.Dxgi/Vortice.Win32.Graphics.Dxgi.csproj @@ -1,9 +1,8 @@ - net8.0 - Dxgi bindings. - + net8.0;net9.0 + DXGI bindings $(NoWarn);CS0419;IDE0017 diff --git a/src/Vortice.Win32.Graphics.Imaging/Vortice.Win32.Graphics.Imaging.csproj b/src/Vortice.Win32.Graphics.Imaging/Vortice.Win32.Graphics.Imaging.csproj index 1323ce9..5159066 100644 --- a/src/Vortice.Win32.Graphics.Imaging/Vortice.Win32.Graphics.Imaging.csproj +++ b/src/Vortice.Win32.Graphics.Imaging/Vortice.Win32.Graphics.Imaging.csproj @@ -1,9 +1,8 @@ - net8.0 - WIC bindings. - + net8.0;net9.0 + WIC bindings $(NoWarn);CS0419;IDE0017 diff --git a/src/Vortice.Win32.Media.Audio.XAudio2/Vortice.Win32.Media.Audio.XAudio2.csproj b/src/Vortice.Win32.Media.Audio.XAudio2/Vortice.Win32.Media.Audio.XAudio2.csproj index c2b1c8c..c48fc29 100644 --- a/src/Vortice.Win32.Media.Audio.XAudio2/Vortice.Win32.Media.Audio.XAudio2.csproj +++ b/src/Vortice.Win32.Media.Audio.XAudio2/Vortice.Win32.Media.Audio.XAudio2.csproj @@ -1,9 +1,8 @@ - net8.0 - XAudio2 and X3DAudio bindings. - + net8.0;net9.0 + XAudio2 and X3DAudio bindings $(NoWarn);CS0419;IDE0017 diff --git a/src/Vortice.Win32/ComPtr.cs b/src/Vortice.Win32/ComPtr.cs index 46aa6d3..f7e6498 100644 --- a/src/Vortice.Win32/ComPtr.cs +++ b/src/Vortice.Win32/ComPtr.cs @@ -13,7 +13,7 @@ namespace Win32; /// The type to wrap in the current instance. /// While this type is not marked as so that it can also be used in fields, make sure to keep the reference counts properly tracked if you do store instances on the heap. public unsafe struct ComPtr : IDisposable - where T : unmanaged + where T : unmanaged, IUnknown.Interface { /// The raw pointer to a COM object, if existing. private T* ptr_; @@ -38,7 +38,7 @@ public unsafe struct ComPtr : IDisposable /// The raw pointer to wrap. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static implicit operator ComPtr(T* other) - => new ComPtr(other); + => new(other); /// Unwraps a instance and returns the internal raw pointer. /// The instance to unwrap. @@ -52,9 +52,9 @@ public unsafe struct ComPtr : IDisposable /// The result of for the target type . /// This method will automatically release the target COM object pointed to by , if any. public readonly HResult As(ComPtr* p) - where U : unmanaged, INativeGuid + where U : unmanaged, IUnknown.Interface { - return ((IUnknown*)ptr_)->QueryInterface(__uuidof(), (void**)p->ReleaseAndGetAddressOf()); + return ptr_->QueryInterface(__uuidof(), (void**)p->ReleaseAndGetAddressOf()); } /// Converts the current object reference to type and assigns that to a target value. @@ -63,10 +63,10 @@ public unsafe struct ComPtr : IDisposable /// The result of for the target type . /// This method will automatically release the target COM object pointed to by , if any. public readonly HResult As(ref ComPtr other) - where U : unmanaged, INativeGuid + where U : unmanaged, IUnknown.Interface { U* ptr; - HResult result = ((IUnknown*)ptr_)->QueryInterface(__uuidof(), (void**)&ptr); + HResult result = ptr_->QueryInterface(__uuidof(), (void**)&ptr); other.Attach(ptr); return result; @@ -79,7 +79,7 @@ public unsafe struct ComPtr : IDisposable /// This method will automatically release the target COM object pointed to by , if any. public readonly HResult AsIID(Guid* riid, ComPtr* other) { - return ((IUnknown*)ptr_)->QueryInterface(riid, (void**)other->ReleaseAndGetAddressOf()); + return ptr_->QueryInterface(riid, (void**)other->ReleaseAndGetAddressOf()); } /// Converts the current object reference to a type indicated by the given IID and assigns that to a target value. @@ -90,7 +90,7 @@ public unsafe struct ComPtr : IDisposable public readonly HResult AsIID(Guid* riid, ref ComPtr other) { IUnknown* ptr; - HResult result = ((IUnknown*)ptr_)->QueryInterface(riid, (void**)&ptr); + HResult result = ptr_->QueryInterface(riid, (void**)&ptr); other.Attach(ptr); return result; @@ -103,7 +103,7 @@ public unsafe struct ComPtr : IDisposable { if (ptr_ != null) { - var @ref = ((IUnknown*)ptr_)->Release(); + var @ref = ptr_->Release(); Debug.Assert((@ref != 0) || (ptr_ != other)); } ptr_ = other; @@ -153,28 +153,28 @@ public unsafe struct ComPtr : IDisposable /// The target raw pointer to copy the address of the current COM object to. /// The result of for the target type . public readonly HResult CopyTo(U** ptr) - where U : unmanaged, INativeGuid + where U : unmanaged, IUnknown.Interface { - return ((IUnknown*)ptr_)->QueryInterface(__uuidof(), (void**)ptr); + return ptr_->QueryInterface(__uuidof(), (void**)ptr); } /// Converts the current COM object reference to a given interface type and assigns that to a target . /// The target raw pointer to copy the address of the current COM object to. /// The result of for the target type . public readonly HResult CopyTo(ComPtr* p) - where U : unmanaged, INativeGuid + where U : unmanaged, IUnknown.Interface { - return ((IUnknown*)ptr_)->QueryInterface(__uuidof(), (void**)p->ReleaseAndGetAddressOf()); + return ptr_->QueryInterface(__uuidof(), (void**)p->ReleaseAndGetAddressOf()); } /// Converts the current COM object reference to a given interface type and assigns that to a target . /// The target reference to copy the address of the current COM object to. /// The result of for the target type . public readonly HResult CopyTo(ref ComPtr other) - where U : unmanaged, INativeGuid + where U : unmanaged, IUnknown.Interface { U* ptr; - HResult result = ((IUnknown*)ptr_)->QueryInterface(__uuidof(), (void**)&ptr); + HResult result = ptr_->QueryInterface(__uuidof(), (void**)&ptr); other.Attach(ptr); return result; @@ -186,7 +186,7 @@ public unsafe struct ComPtr : IDisposable /// The result of for the target IID. public readonly HResult CopyTo(Guid* riid, void** ptr) { - return ((IUnknown*)ptr_)->QueryInterface(riid, ptr); + return ptr_->QueryInterface(riid, ptr); } /// Converts the current object reference to a type indicated by the given IID and assigns that to a target value. @@ -195,7 +195,7 @@ public unsafe struct ComPtr : IDisposable /// The result of for the target IID. public readonly HResult CopyTo(Guid* riid, ComPtr* p) { - return ((IUnknown*)ptr_)->QueryInterface(riid, (void**)p->ReleaseAndGetAddressOf()); + return ptr_->QueryInterface(riid, (void**)p->ReleaseAndGetAddressOf()); } /// Converts the current object reference to a type indicated by the given IID and assigns that to a target value. @@ -205,7 +205,7 @@ public unsafe struct ComPtr : IDisposable public readonly HResult CopyTo(Guid* riid, ref ComPtr other) { IUnknown* ptr; - HResult result = ((IUnknown*)ptr_)->QueryInterface(riid, (void**)&ptr); + HResult result = ptr_->QueryInterface(riid, (void**)&ptr); other.Attach(ptr); return result; @@ -220,7 +220,7 @@ public unsafe struct ComPtr : IDisposable if (pointer != null) { ptr_ = null; - _ = ((IUnknown*)pointer)->Release(); + _ = pointer->Release(); } } @@ -254,17 +254,6 @@ public unsafe struct ComPtr : IDisposable return (void**)Unsafe.AsPointer(ref Unsafe.AsRef(in this)); } - /// - /// Gets the address of the current instance as a raw double pointer. - /// This method is only valid when the current instance is on the stack or pinned. - /// - /// The raw pointer to the current instance. - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public readonly IUnknown** GetIUnknownAddressOf() - { - return (IUnknown**)Unsafe.AsPointer(ref Unsafe.AsRef(in this)); - } - /// Gets the address of the current instance as a raw double pointer. /// The raw pointer to the current instance. [EditorBrowsable(EditorBrowsableState.Never)] @@ -309,10 +298,7 @@ public unsafe struct ComPtr : IDisposable /// Resets the current instance by decrementing the reference count for the target COM object and setting the internal raw pointer to . /// The updated reference count for the COM object that was in use, if any. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public uint Reset() - { - return InternalRelease(); - } + public uint Reset() => InternalRelease(); /// Swaps the current COM object reference with that of a given instance. /// The target instance to swap with the current one. @@ -341,7 +327,7 @@ public unsafe struct ComPtr : IDisposable if (temp != null) { - _ = ((IUnknown*)temp)->AddRef(); + _ = temp->AddRef(); } } @@ -354,7 +340,7 @@ public unsafe struct ComPtr : IDisposable if (temp != null) { ptr_ = null; - @ref = ((IUnknown*)temp)->Release(); + @ref = temp->Release(); } return @ref; diff --git a/src/Vortice.Win32/Vortice.Win32.csproj b/src/Vortice.Win32/Vortice.Win32.csproj index 59ed162..ce223d0 100644 --- a/src/Vortice.Win32/Vortice.Win32.csproj +++ b/src/Vortice.Win32/Vortice.Win32.csproj @@ -1,8 +1,8 @@ - net8.0 - Windows API low level bindings. + net8.0;net9.0 + Windows API low level bindings diff --git a/src/Vortice.Win32/Win32.cs b/src/Vortice.Win32/Win32.cs index 692d49d..7a93bf8 100644 --- a/src/Vortice.Win32/Win32.cs +++ b/src/Vortice.Win32/Win32.cs @@ -10,7 +10,7 @@ public static unsafe partial class Apis [DoesNotReturn] public static void ThrowExternalException(string methodName, int errorCode) { - var message = string.Format("'{0}' failed with an error code of '{1}'", methodName, errorCode); + string message = string.Format("'{0}' failed with an error code of '{1}'", methodName, errorCode); throw new ExternalException(message, errorCode); }