From ad6909ef04556040e4f00613740a9dcdbc207aea Mon Sep 17 00:00:00 2001 From: Amer Koleci Date: Thu, 29 Dec 2022 17:58:35 +0100 Subject: [PATCH] Improve more D3D11 generation and helper methods. --- Directory.Build.props | 2 +- src/Generator/Program.cs | 35 +++++++++++++++--- .../Generated/ID3D11DeviceContext.cs | 28 +++++++-------- .../Generated/ID3D11DeviceContext1.cs | 14 ++++---- .../Generated/ID3D11DeviceContext2.cs | 14 ++++---- .../Generated/ID3D11DeviceContext3.cs | 14 ++++---- .../Generated/ID3D11DeviceContext4.cs | 14 ++++---- .../ID3D11Device.cs | 36 +++++++++++++++++++ .../ID3D11DeviceChild.cs | 3 +- 9 files changed, 110 insertions(+), 50 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index d9998fd..d43fcc3 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -14,7 +14,7 @@ true $(MSBuildThisFileDirectory)NuGet.config - 1.9.6 + 1.9.7 true diff --git a/src/Generator/Program.cs b/src/Generator/Program.cs index 255d105..7916050 100644 --- a/src/Generator/Program.cs +++ b/src/Generator/Program.cs @@ -2409,11 +2409,6 @@ public static class Program foreach (ApiParameter parameter in method.Params) { - if (method.Name == "CreateRenderTargetView" && comType.Name == "ID3D12Device") - { - - } - GetParameterSignature(api, writer, parameter, $"{comType.Name}::{method.Name}", out string parameterType, @@ -2434,6 +2429,36 @@ public static class Program { argumentBuilder.Append(" = null"); } + else if (method.Name.EndsWith("SetShader") && comType.Name.StartsWith("ID3D11DeviceContext")) + { + if (parameterName.EndsWith("Shader")) + { + argumentBuilder.Append(" = null"); + } + else if (parameterName == "ppClassInstances") + { + argumentBuilder.Append(" = null"); + } + else if (parameterName == "NumClassInstances") + { + argumentBuilder.Append(" = 0"); + } + } + else if (method.Name == "OMSetBlendState" && comType.Name.StartsWith("ID3D11DeviceContext")) + { + if (parameterName == "pBlendState") + { + argumentBuilder.Append(" = default"); + } + else if (parameterName == "BlendFactor") + { + argumentBuilder.Append(" = null"); + } + else if (parameterName == "SampleMask") + { + argumentBuilder.Append(" = 0xffffffff"); + } + } argumentsTypesBuilder.Append(parameterType); argumentsNameBuilder.Append(parameterName); diff --git a/src/Vortice.Win32.Graphics.Direct3D11/Generated/ID3D11DeviceContext.cs b/src/Vortice.Win32.Graphics.Direct3D11/Generated/ID3D11DeviceContext.cs index ce8ffa2..6857bec 100644 --- a/src/Vortice.Win32.Graphics.Direct3D11/Generated/ID3D11DeviceContext.cs +++ b/src/Vortice.Win32.Graphics.Direct3D11/Generated/ID3D11DeviceContext.cs @@ -125,7 +125,7 @@ public unsafe partial struct ID3D11DeviceContext : ID3D11DeviceContext.Interface /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(9)] - public void PSSetShader(ID3D11PixelShader* pPixelShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void PSSetShader(ID3D11PixelShader* pPixelShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((ID3D11DeviceContext*)Unsafe.AsPointer(ref this), pPixelShader, ppClassInstances, NumClassInstances); } @@ -141,7 +141,7 @@ public unsafe partial struct ID3D11DeviceContext : ID3D11DeviceContext.Interface /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(11)] - public void VSSetShader(ID3D11VertexShader* pVertexShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void VSSetShader(ID3D11VertexShader* pVertexShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((ID3D11DeviceContext*)Unsafe.AsPointer(ref this), pVertexShader, ppClassInstances, NumClassInstances); } @@ -237,7 +237,7 @@ public unsafe partial struct ID3D11DeviceContext : ID3D11DeviceContext.Interface /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(23)] - public void GSSetShader(ID3D11GeometryShader* pShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void GSSetShader(ID3D11GeometryShader* pShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[23]))((ID3D11DeviceContext*)Unsafe.AsPointer(ref this), pShader, ppClassInstances, NumClassInstances); } @@ -333,7 +333,7 @@ public unsafe partial struct ID3D11DeviceContext : ID3D11DeviceContext.Interface /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(35)] - public void OMSetBlendState(ID3D11BlendState* pBlendState, float* BlendFactor, uint SampleMask) + public void OMSetBlendState(ID3D11BlendState* pBlendState = default, float* BlendFactor = null, uint SampleMask = 0xffffffff) { ((delegate* unmanaged[Stdcall])(lpVtbl[35]))((ID3D11DeviceContext*)Unsafe.AsPointer(ref this), pBlendState, BlendFactor, SampleMask); } @@ -533,7 +533,7 @@ public unsafe partial struct ID3D11DeviceContext : ID3D11DeviceContext.Interface /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(60)] - public void HSSetShader(ID3D11HullShader* pHullShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void HSSetShader(ID3D11HullShader* pHullShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[60]))((ID3D11DeviceContext*)Unsafe.AsPointer(ref this), pHullShader, ppClassInstances, NumClassInstances); } @@ -565,7 +565,7 @@ public unsafe partial struct ID3D11DeviceContext : ID3D11DeviceContext.Interface /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(64)] - public void DSSetShader(ID3D11DomainShader* pDomainShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void DSSetShader(ID3D11DomainShader* pDomainShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[64]))((ID3D11DeviceContext*)Unsafe.AsPointer(ref this), pDomainShader, ppClassInstances, NumClassInstances); } @@ -605,7 +605,7 @@ public unsafe partial struct ID3D11DeviceContext : ID3D11DeviceContext.Interface /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(69)] - public void CSSetShader(ID3D11ComputeShader* pComputeShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void CSSetShader(ID3D11ComputeShader* pComputeShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[69]))((ID3D11DeviceContext*)Unsafe.AsPointer(ref this), pComputeShader, ppClassInstances, NumClassInstances); } @@ -979,13 +979,13 @@ public unsafe partial struct ID3D11DeviceContext : ID3D11DeviceContext.Interface void PSSetShaderResources(uint StartSlot, uint NumViews, ID3D11ShaderResourceView** ppShaderResourceViews); [VtblIndex(9)] - void PSSetShader(ID3D11PixelShader* pPixelShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances); + void PSSetShader(ID3D11PixelShader* pPixelShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0); [VtblIndex(10)] void PSSetSamplers(uint StartSlot, uint NumSamplers, ID3D11SamplerState** ppSamplers); [VtblIndex(11)] - void VSSetShader(ID3D11VertexShader* pVertexShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances); + void VSSetShader(ID3D11VertexShader* pVertexShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0); [VtblIndex(12)] void DrawIndexed(uint IndexCount, uint StartIndexLocation, int BaseVertexLocation); @@ -1021,7 +1021,7 @@ public unsafe partial struct ID3D11DeviceContext : ID3D11DeviceContext.Interface void GSSetConstantBuffers(uint StartSlot, uint NumBuffers, ID3D11Buffer** ppConstantBuffers); [VtblIndex(23)] - void GSSetShader(ID3D11GeometryShader* pShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances); + void GSSetShader(ID3D11GeometryShader* pShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0); [VtblIndex(24)] void IASetPrimitiveTopology(Graphics.Direct3D.PrimitiveTopology Topology); @@ -1057,7 +1057,7 @@ public unsafe partial struct ID3D11DeviceContext : ID3D11DeviceContext.Interface void OMSetRenderTargetsAndUnorderedAccessViews(uint NumRTVs, ID3D11RenderTargetView** ppRenderTargetViews, ID3D11DepthStencilView* pDepthStencilView, uint UAVStartSlot, uint NumUAVs, ID3D11UnorderedAccessView** ppUnorderedAccessViews, uint* pUAVInitialCounts); [VtblIndex(35)] - void OMSetBlendState(ID3D11BlendState* pBlendState, float* BlendFactor, uint SampleMask); + void OMSetBlendState(ID3D11BlendState* pBlendState = default, float* BlendFactor = null, uint SampleMask = 0xffffffff); [VtblIndex(36)] void OMSetDepthStencilState(ID3D11DepthStencilState* pDepthStencilState, uint StencilRef); @@ -1132,7 +1132,7 @@ public unsafe partial struct ID3D11DeviceContext : ID3D11DeviceContext.Interface void HSSetShaderResources(uint StartSlot, uint NumViews, ID3D11ShaderResourceView** ppShaderResourceViews); [VtblIndex(60)] - void HSSetShader(ID3D11HullShader* pHullShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances); + void HSSetShader(ID3D11HullShader* pHullShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0); [VtblIndex(61)] void HSSetSamplers(uint StartSlot, uint NumSamplers, ID3D11SamplerState** ppSamplers); @@ -1144,7 +1144,7 @@ public unsafe partial struct ID3D11DeviceContext : ID3D11DeviceContext.Interface void DSSetShaderResources(uint StartSlot, uint NumViews, ID3D11ShaderResourceView** ppShaderResourceViews); [VtblIndex(64)] - void DSSetShader(ID3D11DomainShader* pDomainShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances); + void DSSetShader(ID3D11DomainShader* pDomainShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0); [VtblIndex(65)] void DSSetSamplers(uint StartSlot, uint NumSamplers, ID3D11SamplerState** ppSamplers); @@ -1159,7 +1159,7 @@ public unsafe partial struct ID3D11DeviceContext : ID3D11DeviceContext.Interface void CSSetUnorderedAccessViews(uint StartSlot, uint NumUAVs, ID3D11UnorderedAccessView** ppUnorderedAccessViews, uint* pUAVInitialCounts); [VtblIndex(69)] - void CSSetShader(ID3D11ComputeShader* pComputeShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances); + void CSSetShader(ID3D11ComputeShader* pComputeShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0); [VtblIndex(70)] void CSSetSamplers(uint StartSlot, uint NumSamplers, ID3D11SamplerState** ppSamplers); diff --git a/src/Vortice.Win32.Graphics.Direct3D11/Generated/ID3D11DeviceContext1.cs b/src/Vortice.Win32.Graphics.Direct3D11/Generated/ID3D11DeviceContext1.cs index 4f4c30b..e0a4fb9 100644 --- a/src/Vortice.Win32.Graphics.Direct3D11/Generated/ID3D11DeviceContext1.cs +++ b/src/Vortice.Win32.Graphics.Direct3D11/Generated/ID3D11DeviceContext1.cs @@ -125,7 +125,7 @@ public unsafe partial struct ID3D11DeviceContext1 : ID3D11DeviceContext1.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(9)] - public void PSSetShader(ID3D11PixelShader* pPixelShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void PSSetShader(ID3D11PixelShader* pPixelShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((ID3D11DeviceContext1*)Unsafe.AsPointer(ref this), pPixelShader, ppClassInstances, NumClassInstances); } @@ -141,7 +141,7 @@ public unsafe partial struct ID3D11DeviceContext1 : ID3D11DeviceContext1.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(11)] - public void VSSetShader(ID3D11VertexShader* pVertexShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void VSSetShader(ID3D11VertexShader* pVertexShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((ID3D11DeviceContext1*)Unsafe.AsPointer(ref this), pVertexShader, ppClassInstances, NumClassInstances); } @@ -237,7 +237,7 @@ public unsafe partial struct ID3D11DeviceContext1 : ID3D11DeviceContext1.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(23)] - public void GSSetShader(ID3D11GeometryShader* pShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void GSSetShader(ID3D11GeometryShader* pShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[23]))((ID3D11DeviceContext1*)Unsafe.AsPointer(ref this), pShader, ppClassInstances, NumClassInstances); } @@ -333,7 +333,7 @@ public unsafe partial struct ID3D11DeviceContext1 : ID3D11DeviceContext1.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(35)] - public void OMSetBlendState(ID3D11BlendState* pBlendState, float* BlendFactor, uint SampleMask) + public void OMSetBlendState(ID3D11BlendState* pBlendState = default, float* BlendFactor = null, uint SampleMask = 0xffffffff) { ((delegate* unmanaged[Stdcall])(lpVtbl[35]))((ID3D11DeviceContext1*)Unsafe.AsPointer(ref this), pBlendState, BlendFactor, SampleMask); } @@ -533,7 +533,7 @@ public unsafe partial struct ID3D11DeviceContext1 : ID3D11DeviceContext1.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(60)] - public void HSSetShader(ID3D11HullShader* pHullShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void HSSetShader(ID3D11HullShader* pHullShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[60]))((ID3D11DeviceContext1*)Unsafe.AsPointer(ref this), pHullShader, ppClassInstances, NumClassInstances); } @@ -565,7 +565,7 @@ public unsafe partial struct ID3D11DeviceContext1 : ID3D11DeviceContext1.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(64)] - public void DSSetShader(ID3D11DomainShader* pDomainShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void DSSetShader(ID3D11DomainShader* pDomainShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[64]))((ID3D11DeviceContext1*)Unsafe.AsPointer(ref this), pDomainShader, ppClassInstances, NumClassInstances); } @@ -605,7 +605,7 @@ public unsafe partial struct ID3D11DeviceContext1 : ID3D11DeviceContext1.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(69)] - public void CSSetShader(ID3D11ComputeShader* pComputeShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void CSSetShader(ID3D11ComputeShader* pComputeShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[69]))((ID3D11DeviceContext1*)Unsafe.AsPointer(ref this), pComputeShader, ppClassInstances, NumClassInstances); } diff --git a/src/Vortice.Win32.Graphics.Direct3D11/Generated/ID3D11DeviceContext2.cs b/src/Vortice.Win32.Graphics.Direct3D11/Generated/ID3D11DeviceContext2.cs index f0ddce5..5ef94de 100644 --- a/src/Vortice.Win32.Graphics.Direct3D11/Generated/ID3D11DeviceContext2.cs +++ b/src/Vortice.Win32.Graphics.Direct3D11/Generated/ID3D11DeviceContext2.cs @@ -125,7 +125,7 @@ public unsafe partial struct ID3D11DeviceContext2 : ID3D11DeviceContext2.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(9)] - public void PSSetShader(ID3D11PixelShader* pPixelShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void PSSetShader(ID3D11PixelShader* pPixelShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((ID3D11DeviceContext2*)Unsafe.AsPointer(ref this), pPixelShader, ppClassInstances, NumClassInstances); } @@ -141,7 +141,7 @@ public unsafe partial struct ID3D11DeviceContext2 : ID3D11DeviceContext2.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(11)] - public void VSSetShader(ID3D11VertexShader* pVertexShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void VSSetShader(ID3D11VertexShader* pVertexShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((ID3D11DeviceContext2*)Unsafe.AsPointer(ref this), pVertexShader, ppClassInstances, NumClassInstances); } @@ -237,7 +237,7 @@ public unsafe partial struct ID3D11DeviceContext2 : ID3D11DeviceContext2.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(23)] - public void GSSetShader(ID3D11GeometryShader* pShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void GSSetShader(ID3D11GeometryShader* pShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[23]))((ID3D11DeviceContext2*)Unsafe.AsPointer(ref this), pShader, ppClassInstances, NumClassInstances); } @@ -333,7 +333,7 @@ public unsafe partial struct ID3D11DeviceContext2 : ID3D11DeviceContext2.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(35)] - public void OMSetBlendState(ID3D11BlendState* pBlendState, float* BlendFactor, uint SampleMask) + public void OMSetBlendState(ID3D11BlendState* pBlendState = default, float* BlendFactor = null, uint SampleMask = 0xffffffff) { ((delegate* unmanaged[Stdcall])(lpVtbl[35]))((ID3D11DeviceContext2*)Unsafe.AsPointer(ref this), pBlendState, BlendFactor, SampleMask); } @@ -533,7 +533,7 @@ public unsafe partial struct ID3D11DeviceContext2 : ID3D11DeviceContext2.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(60)] - public void HSSetShader(ID3D11HullShader* pHullShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void HSSetShader(ID3D11HullShader* pHullShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[60]))((ID3D11DeviceContext2*)Unsafe.AsPointer(ref this), pHullShader, ppClassInstances, NumClassInstances); } @@ -565,7 +565,7 @@ public unsafe partial struct ID3D11DeviceContext2 : ID3D11DeviceContext2.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(64)] - public void DSSetShader(ID3D11DomainShader* pDomainShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void DSSetShader(ID3D11DomainShader* pDomainShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[64]))((ID3D11DeviceContext2*)Unsafe.AsPointer(ref this), pDomainShader, ppClassInstances, NumClassInstances); } @@ -605,7 +605,7 @@ public unsafe partial struct ID3D11DeviceContext2 : ID3D11DeviceContext2.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(69)] - public void CSSetShader(ID3D11ComputeShader* pComputeShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void CSSetShader(ID3D11ComputeShader* pComputeShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[69]))((ID3D11DeviceContext2*)Unsafe.AsPointer(ref this), pComputeShader, ppClassInstances, NumClassInstances); } diff --git a/src/Vortice.Win32.Graphics.Direct3D11/Generated/ID3D11DeviceContext3.cs b/src/Vortice.Win32.Graphics.Direct3D11/Generated/ID3D11DeviceContext3.cs index 0f25be8..5a0de28 100644 --- a/src/Vortice.Win32.Graphics.Direct3D11/Generated/ID3D11DeviceContext3.cs +++ b/src/Vortice.Win32.Graphics.Direct3D11/Generated/ID3D11DeviceContext3.cs @@ -125,7 +125,7 @@ public unsafe partial struct ID3D11DeviceContext3 : ID3D11DeviceContext3.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(9)] - public void PSSetShader(ID3D11PixelShader* pPixelShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void PSSetShader(ID3D11PixelShader* pPixelShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((ID3D11DeviceContext3*)Unsafe.AsPointer(ref this), pPixelShader, ppClassInstances, NumClassInstances); } @@ -141,7 +141,7 @@ public unsafe partial struct ID3D11DeviceContext3 : ID3D11DeviceContext3.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(11)] - public void VSSetShader(ID3D11VertexShader* pVertexShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void VSSetShader(ID3D11VertexShader* pVertexShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((ID3D11DeviceContext3*)Unsafe.AsPointer(ref this), pVertexShader, ppClassInstances, NumClassInstances); } @@ -237,7 +237,7 @@ public unsafe partial struct ID3D11DeviceContext3 : ID3D11DeviceContext3.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(23)] - public void GSSetShader(ID3D11GeometryShader* pShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void GSSetShader(ID3D11GeometryShader* pShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[23]))((ID3D11DeviceContext3*)Unsafe.AsPointer(ref this), pShader, ppClassInstances, NumClassInstances); } @@ -333,7 +333,7 @@ public unsafe partial struct ID3D11DeviceContext3 : ID3D11DeviceContext3.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(35)] - public void OMSetBlendState(ID3D11BlendState* pBlendState, float* BlendFactor, uint SampleMask) + public void OMSetBlendState(ID3D11BlendState* pBlendState = default, float* BlendFactor = null, uint SampleMask = 0xffffffff) { ((delegate* unmanaged[Stdcall])(lpVtbl[35]))((ID3D11DeviceContext3*)Unsafe.AsPointer(ref this), pBlendState, BlendFactor, SampleMask); } @@ -533,7 +533,7 @@ public unsafe partial struct ID3D11DeviceContext3 : ID3D11DeviceContext3.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(60)] - public void HSSetShader(ID3D11HullShader* pHullShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void HSSetShader(ID3D11HullShader* pHullShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[60]))((ID3D11DeviceContext3*)Unsafe.AsPointer(ref this), pHullShader, ppClassInstances, NumClassInstances); } @@ -565,7 +565,7 @@ public unsafe partial struct ID3D11DeviceContext3 : ID3D11DeviceContext3.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(64)] - public void DSSetShader(ID3D11DomainShader* pDomainShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void DSSetShader(ID3D11DomainShader* pDomainShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[64]))((ID3D11DeviceContext3*)Unsafe.AsPointer(ref this), pDomainShader, ppClassInstances, NumClassInstances); } @@ -605,7 +605,7 @@ public unsafe partial struct ID3D11DeviceContext3 : ID3D11DeviceContext3.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(69)] - public void CSSetShader(ID3D11ComputeShader* pComputeShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void CSSetShader(ID3D11ComputeShader* pComputeShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[69]))((ID3D11DeviceContext3*)Unsafe.AsPointer(ref this), pComputeShader, ppClassInstances, NumClassInstances); } diff --git a/src/Vortice.Win32.Graphics.Direct3D11/Generated/ID3D11DeviceContext4.cs b/src/Vortice.Win32.Graphics.Direct3D11/Generated/ID3D11DeviceContext4.cs index cde1635..9e7cd8b 100644 --- a/src/Vortice.Win32.Graphics.Direct3D11/Generated/ID3D11DeviceContext4.cs +++ b/src/Vortice.Win32.Graphics.Direct3D11/Generated/ID3D11DeviceContext4.cs @@ -125,7 +125,7 @@ public unsafe partial struct ID3D11DeviceContext4 : ID3D11DeviceContext4.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(9)] - public void PSSetShader(ID3D11PixelShader* pPixelShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void PSSetShader(ID3D11PixelShader* pPixelShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[9]))((ID3D11DeviceContext4*)Unsafe.AsPointer(ref this), pPixelShader, ppClassInstances, NumClassInstances); } @@ -141,7 +141,7 @@ public unsafe partial struct ID3D11DeviceContext4 : ID3D11DeviceContext4.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(11)] - public void VSSetShader(ID3D11VertexShader* pVertexShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void VSSetShader(ID3D11VertexShader* pVertexShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[11]))((ID3D11DeviceContext4*)Unsafe.AsPointer(ref this), pVertexShader, ppClassInstances, NumClassInstances); } @@ -237,7 +237,7 @@ public unsafe partial struct ID3D11DeviceContext4 : ID3D11DeviceContext4.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(23)] - public void GSSetShader(ID3D11GeometryShader* pShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void GSSetShader(ID3D11GeometryShader* pShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[23]))((ID3D11DeviceContext4*)Unsafe.AsPointer(ref this), pShader, ppClassInstances, NumClassInstances); } @@ -333,7 +333,7 @@ public unsafe partial struct ID3D11DeviceContext4 : ID3D11DeviceContext4.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(35)] - public void OMSetBlendState(ID3D11BlendState* pBlendState, float* BlendFactor, uint SampleMask) + public void OMSetBlendState(ID3D11BlendState* pBlendState = default, float* BlendFactor = null, uint SampleMask = 0xffffffff) { ((delegate* unmanaged[Stdcall])(lpVtbl[35]))((ID3D11DeviceContext4*)Unsafe.AsPointer(ref this), pBlendState, BlendFactor, SampleMask); } @@ -533,7 +533,7 @@ public unsafe partial struct ID3D11DeviceContext4 : ID3D11DeviceContext4.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(60)] - public void HSSetShader(ID3D11HullShader* pHullShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void HSSetShader(ID3D11HullShader* pHullShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[60]))((ID3D11DeviceContext4*)Unsafe.AsPointer(ref this), pHullShader, ppClassInstances, NumClassInstances); } @@ -565,7 +565,7 @@ public unsafe partial struct ID3D11DeviceContext4 : ID3D11DeviceContext4.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(64)] - public void DSSetShader(ID3D11DomainShader* pDomainShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void DSSetShader(ID3D11DomainShader* pDomainShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[64]))((ID3D11DeviceContext4*)Unsafe.AsPointer(ref this), pDomainShader, ppClassInstances, NumClassInstances); } @@ -605,7 +605,7 @@ public unsafe partial struct ID3D11DeviceContext4 : ID3D11DeviceContext4.Interfa /// [MethodImpl(MethodImplOptions.AggressiveInlining)] [VtblIndex(69)] - public void CSSetShader(ID3D11ComputeShader* pComputeShader, ID3D11ClassInstance** ppClassInstances, uint NumClassInstances) + public void CSSetShader(ID3D11ComputeShader* pComputeShader = null, ID3D11ClassInstance** ppClassInstances = null, uint NumClassInstances = 0) { ((delegate* unmanaged[Stdcall])(lpVtbl[69]))((ID3D11DeviceContext4*)Unsafe.AsPointer(ref this), pComputeShader, ppClassInstances, NumClassInstances); } diff --git a/src/Vortice.Win32.Graphics.Direct3D11/ID3D11Device.cs b/src/Vortice.Win32.Graphics.Direct3D11/ID3D11Device.cs index 5868d0b..b655d42 100644 --- a/src/Vortice.Win32.Graphics.Direct3D11/ID3D11Device.cs +++ b/src/Vortice.Win32.Graphics.Direct3D11/ID3D11Device.cs @@ -356,4 +356,40 @@ public static unsafe class ID3D11DeviceExtension return shader.Move(); } + + public static HResult CreateInputLayout(ref this TD3D11Device self, + ReadOnlySpan inputElements, + ReadOnlySpan shaderBytecode, + ID3D11InputLayout** ppInputLayout) + where TD3D11Device : unmanaged, ID3D11Device.Interface + { + fixed (InputElementDescription* pInputElements = inputElements) + fixed (byte* pShaderBytecode = shaderBytecode) + { + return self.CreateInputLayout( + pInputElements, (uint)inputElements.Length, + pShaderBytecode, (nuint)shaderBytecode.Length, + ppInputLayout); + } + } + + public static ComPtr CreateInputLayout(ref this TD3D11Device self, + ReadOnlySpan inputElements, + ReadOnlySpan shaderBytecode) + where TD3D11Device : unmanaged, ID3D11Device.Interface + { + using ComPtr inputLayout = default; + + fixed (InputElementDescription* pInputElements = inputElements) + fixed (byte* pShaderBytecode = shaderBytecode) + { + ThrowIfFailed(self.CreateInputLayout( + pInputElements, (uint)inputElements.Length, + pShaderBytecode, (nuint)shaderBytecode.Length, + inputLayout.GetAddressOf()) + ); + } + + return inputLayout.Move(); + } } diff --git a/src/Vortice.Win32.Graphics.Direct3D11/ID3D11DeviceChild.cs b/src/Vortice.Win32.Graphics.Direct3D11/ID3D11DeviceChild.cs index c7e3043..6030542 100644 --- a/src/Vortice.Win32.Graphics.Direct3D11/ID3D11DeviceChild.cs +++ b/src/Vortice.Win32.Graphics.Direct3D11/ID3D11DeviceChild.cs @@ -32,13 +32,12 @@ public static unsafe class ID3D11DeviceChildExtensions { fixed (sbyte* valuePtr = value.GetUtf8Span()) { - _ = self.SetPrivateData(ID3D11DeviceChild.D3DDebugObjectNameGuid, (uint)value.Length, valuePtr); + _ = self.SetPrivateData(ID3D11DeviceChild.D3DDebugObjectNameGuid, (uint)value!.Length, valuePtr); } } } } - public unsafe partial struct ID3D11DeviceChild { public static ref readonly Guid WKPDID_D3DDebugObjectName