mirror of
https://github.com/microsoft/DirectXTex.git
synced 2025-08-25 08:51:41 +02:00
Updated D3DX12 for 19041 SDK
This commit is contained in:
parent
7186bb7890
commit
a03f57976f
@ -579,7 +579,6 @@ struct CD3DX12_RANGE : public D3D12_RANGE
|
|||||||
};
|
};
|
||||||
|
|
||||||
//------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------
|
||||||
// Requires the Windows 10 Creators Update SDK (15063)
|
|
||||||
#if defined(NTDDI_WIN10_RS2) && (NTDDI_VERSION >= NTDDI_WIN10_RS2)
|
#if defined(NTDDI_WIN10_RS2) && (NTDDI_VERSION >= NTDDI_WIN10_RS2)
|
||||||
struct CD3DX12_RANGE_UINT64 : public D3D12_RANGE_UINT64
|
struct CD3DX12_RANGE_UINT64 : public D3D12_RANGE_UINT64
|
||||||
{
|
{
|
||||||
@ -1832,6 +1831,137 @@ inline bool operator==( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC&
|
|||||||
inline bool operator!=( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) noexcept
|
inline bool operator!=( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) noexcept
|
||||||
{ return !( l == r ); }
|
{ return !( l == r ); }
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------------------------
|
||||||
|
// Requires the Windows 10 SDK (19041)
|
||||||
|
#if defined(NTDDI_WIN10_VB) && (NTDDI_VERSION >= NTDDI_WIN10_VB)
|
||||||
|
struct CD3DX12_RESOURCE_DESC1 : public D3D12_RESOURCE_DESC1
|
||||||
|
{
|
||||||
|
CD3DX12_RESOURCE_DESC1() = default;
|
||||||
|
explicit CD3DX12_RESOURCE_DESC1( const D3D12_RESOURCE_DESC1& o ) noexcept :
|
||||||
|
D3D12_RESOURCE_DESC1( o )
|
||||||
|
{}
|
||||||
|
CD3DX12_RESOURCE_DESC1(
|
||||||
|
D3D12_RESOURCE_DIMENSION dimension,
|
||||||
|
UINT64 alignment,
|
||||||
|
UINT64 width,
|
||||||
|
UINT height,
|
||||||
|
UINT16 depthOrArraySize,
|
||||||
|
UINT16 mipLevels,
|
||||||
|
DXGI_FORMAT format,
|
||||||
|
UINT sampleCount,
|
||||||
|
UINT sampleQuality,
|
||||||
|
D3D12_TEXTURE_LAYOUT layout,
|
||||||
|
D3D12_RESOURCE_FLAGS flags,
|
||||||
|
UINT samplerFeedbackMipRegionWidth = 0,
|
||||||
|
UINT samplerFeedbackMipRegionHeight = 0,
|
||||||
|
UINT samplerFeedbackMipRegionDepth = 0) noexcept
|
||||||
|
{
|
||||||
|
Dimension = dimension;
|
||||||
|
Alignment = alignment;
|
||||||
|
Width = width;
|
||||||
|
Height = height;
|
||||||
|
DepthOrArraySize = depthOrArraySize;
|
||||||
|
MipLevels = mipLevels;
|
||||||
|
Format = format;
|
||||||
|
SampleDesc.Count = sampleCount;
|
||||||
|
SampleDesc.Quality = sampleQuality;
|
||||||
|
Layout = layout;
|
||||||
|
Flags = flags;
|
||||||
|
SamplerFeedbackMipRegion.Width = samplerFeedbackMipRegionWidth;
|
||||||
|
SamplerFeedbackMipRegion.Height = samplerFeedbackMipRegionHeight;
|
||||||
|
SamplerFeedbackMipRegion.Depth = samplerFeedbackMipRegionDepth;
|
||||||
|
}
|
||||||
|
static inline CD3DX12_RESOURCE_DESC1 Buffer(
|
||||||
|
const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
|
||||||
|
D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE ) noexcept
|
||||||
|
{
|
||||||
|
return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_BUFFER, resAllocInfo.Alignment, resAllocInfo.SizeInBytes,
|
||||||
|
1, 1, 1, DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags, 0, 0, 0 );
|
||||||
|
}
|
||||||
|
static inline CD3DX12_RESOURCE_DESC1 Buffer(
|
||||||
|
UINT64 width,
|
||||||
|
D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
|
||||||
|
UINT64 alignment = 0 ) noexcept
|
||||||
|
{
|
||||||
|
return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_BUFFER, alignment, width, 1, 1, 1,
|
||||||
|
DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags, 0, 0, 0 );
|
||||||
|
}
|
||||||
|
static inline CD3DX12_RESOURCE_DESC1 Tex1D(
|
||||||
|
DXGI_FORMAT format,
|
||||||
|
UINT64 width,
|
||||||
|
UINT16 arraySize = 1,
|
||||||
|
UINT16 mipLevels = 0,
|
||||||
|
D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
|
||||||
|
D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
|
||||||
|
UINT64 alignment = 0 ) noexcept
|
||||||
|
{
|
||||||
|
return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE1D, alignment, width, 1, arraySize,
|
||||||
|
mipLevels, format, 1, 0, layout, flags, 0, 0, 0 );
|
||||||
|
}
|
||||||
|
static inline CD3DX12_RESOURCE_DESC1 Tex2D(
|
||||||
|
DXGI_FORMAT format,
|
||||||
|
UINT64 width,
|
||||||
|
UINT height,
|
||||||
|
UINT16 arraySize = 1,
|
||||||
|
UINT16 mipLevels = 0,
|
||||||
|
UINT sampleCount = 1,
|
||||||
|
UINT sampleQuality = 0,
|
||||||
|
D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
|
||||||
|
D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
|
||||||
|
UINT64 alignment = 0,
|
||||||
|
UINT samplerFeedbackMipRegionWidth = 0,
|
||||||
|
UINT samplerFeedbackMipRegionHeight = 0,
|
||||||
|
UINT samplerFeedbackMipRegionDepth = 0) noexcept
|
||||||
|
{
|
||||||
|
return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE2D, alignment, width, height, arraySize,
|
||||||
|
mipLevels, format, sampleCount, sampleQuality, layout, flags, samplerFeedbackMipRegionWidth,
|
||||||
|
samplerFeedbackMipRegionHeight, samplerFeedbackMipRegionDepth );
|
||||||
|
}
|
||||||
|
static inline CD3DX12_RESOURCE_DESC1 Tex3D(
|
||||||
|
DXGI_FORMAT format,
|
||||||
|
UINT64 width,
|
||||||
|
UINT height,
|
||||||
|
UINT16 depth,
|
||||||
|
UINT16 mipLevels = 0,
|
||||||
|
D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
|
||||||
|
D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
|
||||||
|
UINT64 alignment = 0 ) noexcept
|
||||||
|
{
|
||||||
|
return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE3D, alignment, width, height, depth,
|
||||||
|
mipLevels, format, 1, 0, layout, flags, 0, 0, 0 );
|
||||||
|
}
|
||||||
|
inline UINT16 Depth() const noexcept
|
||||||
|
{ return (Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1); }
|
||||||
|
inline UINT16 ArraySize() const noexcept
|
||||||
|
{ return (Dimension != D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1); }
|
||||||
|
inline UINT8 PlaneCount(_In_ ID3D12Device* pDevice) const noexcept
|
||||||
|
{ return D3D12GetFormatPlaneCount(pDevice, Format); }
|
||||||
|
inline UINT Subresources(_In_ ID3D12Device* pDevice) const noexcept
|
||||||
|
{ return MipLevels * ArraySize() * PlaneCount(pDevice); }
|
||||||
|
inline UINT CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice) noexcept
|
||||||
|
{ return D3D12CalcSubresource(MipSlice, ArraySlice, PlaneSlice, MipLevels, ArraySize()); }
|
||||||
|
};
|
||||||
|
inline bool operator==( const D3D12_RESOURCE_DESC1& l, const D3D12_RESOURCE_DESC1& r ) noexcept
|
||||||
|
{
|
||||||
|
return l.Dimension == r.Dimension &&
|
||||||
|
l.Alignment == r.Alignment &&
|
||||||
|
l.Width == r.Width &&
|
||||||
|
l.Height == r.Height &&
|
||||||
|
l.DepthOrArraySize == r.DepthOrArraySize &&
|
||||||
|
l.MipLevels == r.MipLevels &&
|
||||||
|
l.Format == r.Format &&
|
||||||
|
l.SampleDesc.Count == r.SampleDesc.Count &&
|
||||||
|
l.SampleDesc.Quality == r.SampleDesc.Quality &&
|
||||||
|
l.Layout == r.Layout &&
|
||||||
|
l.Flags == r.Flags &&
|
||||||
|
l.SamplerFeedbackMipRegion.Width == r.SamplerFeedbackMipRegion.Width &&
|
||||||
|
l.SamplerFeedbackMipRegion.Height == r.SamplerFeedbackMipRegion.Height &&
|
||||||
|
l.SamplerFeedbackMipRegion.Depth == r.SamplerFeedbackMipRegion.Depth;
|
||||||
|
}
|
||||||
|
inline bool operator!=( const D3D12_RESOURCE_DESC1& l, const D3D12_RESOURCE_DESC1& r ) noexcept
|
||||||
|
{ return !( l == r ); }
|
||||||
|
#endif // NTDDI_WIN10_VB
|
||||||
|
|
||||||
//------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------
|
||||||
// Requires the Windows 10 Fall Creators Update SDK (16299)
|
// Requires the Windows 10 Fall Creators Update SDK (16299)
|
||||||
#if defined(NTDDI_WIN10_RS3) && (NTDDI_VERSION >= NTDDI_WIN10_RS3)
|
#if defined(NTDDI_WIN10_RS3) && (NTDDI_VERSION >= NTDDI_WIN10_RS3)
|
||||||
@ -2156,7 +2286,6 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
|
|||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------
|
||||||
// Requires the Windows 10 Creators Update SDK (15063)
|
|
||||||
#if defined(NTDDI_WIN10_RS2) && (NTDDI_VERSION >= NTDDI_WIN10_RS2)
|
#if defined(NTDDI_WIN10_RS2) && (NTDDI_VERSION >= NTDDI_WIN10_RS2)
|
||||||
struct CD3DX12_RT_FORMAT_ARRAY : public D3D12_RT_FORMAT_ARRAY
|
struct CD3DX12_RT_FORMAT_ARRAY : public D3D12_RT_FORMAT_ARRAY
|
||||||
{
|
{
|
||||||
@ -2212,6 +2341,10 @@ typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_STREAM_OUTPUT_DESC,
|
|||||||
typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS> CD3DX12_PIPELINE_STATE_STREAM_HS;
|
typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS> CD3DX12_PIPELINE_STATE_STREAM_HS;
|
||||||
typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS> CD3DX12_PIPELINE_STATE_STREAM_DS;
|
typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS> CD3DX12_PIPELINE_STATE_STREAM_DS;
|
||||||
typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS> CD3DX12_PIPELINE_STATE_STREAM_PS;
|
typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS> CD3DX12_PIPELINE_STATE_STREAM_PS;
|
||||||
|
#if defined(NTDDI_WIN10_VB) && (NTDDI_VERSION >= NTDDI_WIN10_VB)
|
||||||
|
typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS> CD3DX12_PIPELINE_STATE_STREAM_AS;
|
||||||
|
typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS> CD3DX12_PIPELINE_STATE_STREAM_MS;
|
||||||
|
#endif
|
||||||
typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS> CD3DX12_PIPELINE_STATE_STREAM_CS;
|
typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS> CD3DX12_PIPELINE_STATE_STREAM_CS;
|
||||||
typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_BLEND_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC;
|
typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_BLEND_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC;
|
||||||
typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL;
|
typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL;
|
||||||
@ -2245,6 +2378,10 @@ struct ID3DX12PipelineParserCallbacks
|
|||||||
virtual void DSCb(const D3D12_SHADER_BYTECODE&) {}
|
virtual void DSCb(const D3D12_SHADER_BYTECODE&) {}
|
||||||
virtual void PSCb(const D3D12_SHADER_BYTECODE&) {}
|
virtual void PSCb(const D3D12_SHADER_BYTECODE&) {}
|
||||||
virtual void CSCb(const D3D12_SHADER_BYTECODE&) {}
|
virtual void CSCb(const D3D12_SHADER_BYTECODE&) {}
|
||||||
|
#if defined(NTDDI_WIN10_VB) && (NTDDI_VERSION >= NTDDI_WIN10_VB)
|
||||||
|
virtual void ASCb(const D3D12_SHADER_BYTECODE&) {}
|
||||||
|
virtual void MSCb(const D3D12_SHADER_BYTECODE&) {}
|
||||||
|
#endif
|
||||||
virtual void BlendStateCb(const D3D12_BLEND_DESC&) {}
|
virtual void BlendStateCb(const D3D12_BLEND_DESC&) {}
|
||||||
virtual void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC&) {}
|
virtual void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC&) {}
|
||||||
virtual void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1&) {}
|
virtual void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1&) {}
|
||||||
@ -2266,13 +2403,158 @@ struct ID3DX12PipelineParserCallbacks
|
|||||||
virtual ~ID3DX12PipelineParserCallbacks() = default;
|
virtual ~ID3DX12PipelineParserCallbacks() = default;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Requires the Windows 10 Fall Creators Update SDK (16299)
|
#if defined(NTDDI_WIN10_VB) && (NTDDI_VERSION >= NTDDI_WIN10_VB)
|
||||||
|
struct D3DX12_MESH_SHADER_PIPELINE_STATE_DESC
|
||||||
|
{
|
||||||
|
ID3D12RootSignature* pRootSignature;
|
||||||
|
D3D12_SHADER_BYTECODE AS;
|
||||||
|
D3D12_SHADER_BYTECODE MS;
|
||||||
|
D3D12_SHADER_BYTECODE PS;
|
||||||
|
D3D12_BLEND_DESC BlendState;
|
||||||
|
UINT SampleMask;
|
||||||
|
D3D12_RASTERIZER_DESC RasterizerState;
|
||||||
|
D3D12_DEPTH_STENCIL_DESC DepthStencilState;
|
||||||
|
D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
|
||||||
|
D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
|
||||||
|
UINT NumRenderTargets;
|
||||||
|
DXGI_FORMAT RTVFormats[ D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ];
|
||||||
|
DXGI_FORMAT DSVFormat;
|
||||||
|
DXGI_SAMPLE_DESC SampleDesc;
|
||||||
|
UINT NodeMask;
|
||||||
|
D3D12_CACHED_PIPELINE_STATE CachedPSO;
|
||||||
|
D3D12_PIPELINE_STATE_FLAGS Flags;
|
||||||
|
};
|
||||||
|
|
||||||
|
// CD3DX12_PIPELINE_STATE_STREAM2 Works on Vibranium+ (where there is a new mesh shader pipeline).
|
||||||
|
// Use CD3DX12_PIPELINE_STATE_STREAM1 for RS3+ (where there is a new view instancing subobject).
|
||||||
|
// Use CD3DX12_PIPELINE_STATE_STREAM for RS2+ support.
|
||||||
|
struct CD3DX12_PIPELINE_STATE_STREAM2
|
||||||
|
{
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM2() = default;
|
||||||
|
// Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM2(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
|
||||||
|
: Flags(Desc.Flags)
|
||||||
|
, NodeMask(Desc.NodeMask)
|
||||||
|
, pRootSignature(Desc.pRootSignature)
|
||||||
|
, InputLayout(Desc.InputLayout)
|
||||||
|
, IBStripCutValue(Desc.IBStripCutValue)
|
||||||
|
, PrimitiveTopologyType(Desc.PrimitiveTopologyType)
|
||||||
|
, VS(Desc.VS)
|
||||||
|
, GS(Desc.GS)
|
||||||
|
, StreamOutput(Desc.StreamOutput)
|
||||||
|
, HS(Desc.HS)
|
||||||
|
, DS(Desc.DS)
|
||||||
|
, PS(Desc.PS)
|
||||||
|
, AS()
|
||||||
|
, MS()
|
||||||
|
, BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
|
||||||
|
, DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
|
||||||
|
, DSVFormat(Desc.DSVFormat)
|
||||||
|
, RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
|
||||||
|
, RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
|
||||||
|
, SampleDesc(Desc.SampleDesc)
|
||||||
|
, SampleMask(Desc.SampleMask)
|
||||||
|
, CachedPSO(Desc.CachedPSO)
|
||||||
|
, ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
|
||||||
|
{}
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM2(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
|
||||||
|
: Flags(Desc.Flags)
|
||||||
|
, NodeMask(Desc.NodeMask)
|
||||||
|
, pRootSignature(Desc.pRootSignature)
|
||||||
|
, IBStripCutValue(Desc.IBStripCutValue)
|
||||||
|
, PrimitiveTopologyType(Desc.PrimitiveTopologyType)
|
||||||
|
, PS(Desc.PS)
|
||||||
|
, AS()
|
||||||
|
, MS()
|
||||||
|
, BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
|
||||||
|
, DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
|
||||||
|
, DSVFormat(Desc.DSVFormat)
|
||||||
|
, RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
|
||||||
|
, RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
|
||||||
|
, SampleDesc(Desc.SampleDesc)
|
||||||
|
, SampleMask(Desc.SampleMask)
|
||||||
|
, CachedPSO(Desc.CachedPSO)
|
||||||
|
, ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
|
||||||
|
{}
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM2(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
|
||||||
|
: Flags(Desc.Flags)
|
||||||
|
, NodeMask(Desc.NodeMask)
|
||||||
|
, pRootSignature(Desc.pRootSignature)
|
||||||
|
, CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
|
||||||
|
, CachedPSO(Desc.CachedPSO)
|
||||||
|
{
|
||||||
|
static_cast<D3D12_DEPTH_STENCIL_DESC1&>(DepthStencilState).DepthEnable = false;
|
||||||
|
}
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_VS VS;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_GS GS;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_HS HS;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_DS DS;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_PS PS;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_AS AS;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_MS MS;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_CS CS;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
|
||||||
|
D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
|
||||||
|
{
|
||||||
|
D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
|
||||||
|
D.Flags = this->Flags;
|
||||||
|
D.NodeMask = this->NodeMask;
|
||||||
|
D.pRootSignature = this->pRootSignature;
|
||||||
|
D.InputLayout = this->InputLayout;
|
||||||
|
D.IBStripCutValue = this->IBStripCutValue;
|
||||||
|
D.PrimitiveTopologyType = this->PrimitiveTopologyType;
|
||||||
|
D.VS = this->VS;
|
||||||
|
D.GS = this->GS;
|
||||||
|
D.StreamOutput = this->StreamOutput;
|
||||||
|
D.HS = this->HS;
|
||||||
|
D.DS = this->DS;
|
||||||
|
D.PS = this->PS;
|
||||||
|
D.BlendState = this->BlendState;
|
||||||
|
D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
|
||||||
|
D.DSVFormat = this->DSVFormat;
|
||||||
|
D.RasterizerState = this->RasterizerState;
|
||||||
|
D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
|
||||||
|
memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
|
||||||
|
D.SampleDesc = this->SampleDesc;
|
||||||
|
D.SampleMask = this->SampleMask;
|
||||||
|
D.CachedPSO = this->CachedPSO;
|
||||||
|
return D;
|
||||||
|
}
|
||||||
|
D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
|
||||||
|
{
|
||||||
|
D3D12_COMPUTE_PIPELINE_STATE_DESC D;
|
||||||
|
D.Flags = this->Flags;
|
||||||
|
D.NodeMask = this->NodeMask;
|
||||||
|
D.pRootSignature = this->pRootSignature;
|
||||||
|
D.CS = this->CS;
|
||||||
|
D.CachedPSO = this->CachedPSO;
|
||||||
|
return D;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
#endif // NTDDI_WIN10_VB
|
||||||
|
|
||||||
#if defined(NTDDI_WIN10_RS3) && (NTDDI_VERSION >= NTDDI_WIN10_RS3)
|
#if defined(NTDDI_WIN10_RS3) && (NTDDI_VERSION >= NTDDI_WIN10_RS3)
|
||||||
// CD3DX12_PIPELINE_STATE_STREAM1 Works on RS3+ (where there is a new view instancing subobject).
|
// CD3DX12_PIPELINE_STATE_STREAM1 Works on RS3+ (where there is a new view instancing subobject).
|
||||||
// Use CD3DX12_PIPELINE_STATE_STREAM for RS2+ support.
|
// Use CD3DX12_PIPELINE_STATE_STREAM for RS2+ support.
|
||||||
struct CD3DX12_PIPELINE_STATE_STREAM1
|
struct CD3DX12_PIPELINE_STATE_STREAM1
|
||||||
{
|
{
|
||||||
CD3DX12_PIPELINE_STATE_STREAM1() = default;
|
CD3DX12_PIPELINE_STATE_STREAM1() = default;
|
||||||
|
// Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
|
||||||
CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
|
CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
|
||||||
: Flags(Desc.Flags)
|
: Flags(Desc.Flags)
|
||||||
, NodeMask(Desc.NodeMask)
|
, NodeMask(Desc.NodeMask)
|
||||||
@ -2296,6 +2578,25 @@ struct CD3DX12_PIPELINE_STATE_STREAM1
|
|||||||
, CachedPSO(Desc.CachedPSO)
|
, CachedPSO(Desc.CachedPSO)
|
||||||
, ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
|
, ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
|
||||||
{}
|
{}
|
||||||
|
#if defined(NTDDI_WIN10_VB) && (NTDDI_VERSION >= NTDDI_WIN10_VB)
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM1(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
|
||||||
|
: Flags(Desc.Flags)
|
||||||
|
, NodeMask(Desc.NodeMask)
|
||||||
|
, pRootSignature(Desc.pRootSignature)
|
||||||
|
, IBStripCutValue(Desc.IBStripCutValue)
|
||||||
|
, PrimitiveTopologyType(Desc.PrimitiveTopologyType)
|
||||||
|
, PS(Desc.PS)
|
||||||
|
, BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
|
||||||
|
, DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
|
||||||
|
, DSVFormat(Desc.DSVFormat)
|
||||||
|
, RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
|
||||||
|
, RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
|
||||||
|
, SampleDesc(Desc.SampleDesc)
|
||||||
|
, SampleMask(Desc.SampleMask)
|
||||||
|
, CachedPSO(Desc.CachedPSO)
|
||||||
|
, ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
|
||||||
|
{}
|
||||||
|
#endif
|
||||||
CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
|
CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
|
||||||
: Flags(Desc.Flags)
|
: Flags(Desc.Flags)
|
||||||
, NodeMask(Desc.NodeMask)
|
, NodeMask(Desc.NodeMask)
|
||||||
@ -2366,6 +2667,65 @@ struct CD3DX12_PIPELINE_STATE_STREAM1
|
|||||||
};
|
};
|
||||||
#endif // NTDDI_WIN10_RS3
|
#endif // NTDDI_WIN10_RS3
|
||||||
|
|
||||||
|
#if defined(NTDDI_WIN10_VB) && (NTDDI_VERSION >= NTDDI_WIN10_VB)
|
||||||
|
struct CD3DX12_PIPELINE_MESH_STATE_STREAM
|
||||||
|
{
|
||||||
|
CD3DX12_PIPELINE_MESH_STATE_STREAM() = default;
|
||||||
|
CD3DX12_PIPELINE_MESH_STATE_STREAM(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
|
||||||
|
: Flags(Desc.Flags)
|
||||||
|
, NodeMask(Desc.NodeMask)
|
||||||
|
, pRootSignature(Desc.pRootSignature)
|
||||||
|
, PS(Desc.PS)
|
||||||
|
, AS()
|
||||||
|
, MS()
|
||||||
|
, BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
|
||||||
|
, DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
|
||||||
|
, DSVFormat(Desc.DSVFormat)
|
||||||
|
, RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
|
||||||
|
, RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
|
||||||
|
, SampleDesc(Desc.SampleDesc)
|
||||||
|
, SampleMask(Desc.SampleMask)
|
||||||
|
, CachedPSO(Desc.CachedPSO)
|
||||||
|
, ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
|
||||||
|
{}
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_PS PS;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_AS AS;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_MS MS;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
|
||||||
|
D3DX12_MESH_SHADER_PIPELINE_STATE_DESC MeshShaderDescV0() const noexcept
|
||||||
|
{
|
||||||
|
D3DX12_MESH_SHADER_PIPELINE_STATE_DESC D;
|
||||||
|
D.Flags = this->Flags;
|
||||||
|
D.NodeMask = this->NodeMask;
|
||||||
|
D.pRootSignature = this->pRootSignature;
|
||||||
|
D.PS = this->PS;
|
||||||
|
D.AS = this->AS;
|
||||||
|
D.MS = this->MS;
|
||||||
|
D.BlendState = this->BlendState;
|
||||||
|
D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
|
||||||
|
D.DSVFormat = this->DSVFormat;
|
||||||
|
D.RasterizerState = this->RasterizerState;
|
||||||
|
D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
|
||||||
|
memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
|
||||||
|
D.SampleDesc = this->SampleDesc;
|
||||||
|
D.SampleMask = this->SampleMask;
|
||||||
|
D.CachedPSO = this->CachedPSO;
|
||||||
|
return D;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
#endif // NTDDI_WIN10_VB
|
||||||
|
|
||||||
// CD3DX12_PIPELINE_STATE_STREAM works on RS2+ but does not support new subobject(s) added in RS3+.
|
// CD3DX12_PIPELINE_STATE_STREAM works on RS2+ but does not support new subobject(s) added in RS3+.
|
||||||
// See CD3DX12_PIPELINE_STATE_STREAM1 for instance.
|
// See CD3DX12_PIPELINE_STATE_STREAM1 for instance.
|
||||||
struct CD3DX12_PIPELINE_STATE_STREAM
|
struct CD3DX12_PIPELINE_STATE_STREAM
|
||||||
@ -2459,6 +2819,68 @@ struct CD3DX12_PIPELINE_STATE_STREAM
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if defined(NTDDI_WIN10_VB) && (NTDDI_VERSION >= NTDDI_WIN10_VB)
|
||||||
|
struct CD3DX12_PIPELINE_STATE_STREAM2_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
|
||||||
|
{
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM2 PipelineStream;
|
||||||
|
CD3DX12_PIPELINE_STATE_STREAM2_PARSE_HELPER() noexcept
|
||||||
|
: SeenDSS(false)
|
||||||
|
{
|
||||||
|
// Adjust defaults to account for absent members.
|
||||||
|
PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
|
||||||
|
|
||||||
|
// Depth disabled if no DSV format specified.
|
||||||
|
static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ID3DX12PipelineParserCallbacks
|
||||||
|
void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override {PipelineStream.Flags = Flags;}
|
||||||
|
void NodeMaskCb(UINT NodeMask) override {PipelineStream.NodeMask = NodeMask;}
|
||||||
|
void RootSignatureCb(ID3D12RootSignature* pRootSignature) override {PipelineStream.pRootSignature = pRootSignature;}
|
||||||
|
void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override {PipelineStream.InputLayout = InputLayout;}
|
||||||
|
void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override {PipelineStream.IBStripCutValue = IBStripCutValue;}
|
||||||
|
void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override {PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;}
|
||||||
|
void VSCb(const D3D12_SHADER_BYTECODE& VS) override {PipelineStream.VS = VS;}
|
||||||
|
void GSCb(const D3D12_SHADER_BYTECODE& GS) override {PipelineStream.GS = GS;}
|
||||||
|
void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override {PipelineStream.StreamOutput = StreamOutput;}
|
||||||
|
void HSCb(const D3D12_SHADER_BYTECODE& HS) override {PipelineStream.HS = HS;}
|
||||||
|
void DSCb(const D3D12_SHADER_BYTECODE& DS) override {PipelineStream.DS = DS;}
|
||||||
|
void PSCb(const D3D12_SHADER_BYTECODE& PS) override {PipelineStream.PS = PS;}
|
||||||
|
void CSCb(const D3D12_SHADER_BYTECODE& CS) override {PipelineStream.CS = CS;}
|
||||||
|
void ASCb(const D3D12_SHADER_BYTECODE& AS) override {PipelineStream.AS = AS;}
|
||||||
|
void MSCb(const D3D12_SHADER_BYTECODE& MS) override {PipelineStream.MS = MS;}
|
||||||
|
void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override {PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState);}
|
||||||
|
void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
|
||||||
|
{
|
||||||
|
PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
|
||||||
|
SeenDSS = true;
|
||||||
|
}
|
||||||
|
void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
|
||||||
|
{
|
||||||
|
PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
|
||||||
|
SeenDSS = true;
|
||||||
|
}
|
||||||
|
void DSVFormatCb(DXGI_FORMAT DSVFormat) override
|
||||||
|
{
|
||||||
|
PipelineStream.DSVFormat = DSVFormat;
|
||||||
|
if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
|
||||||
|
{
|
||||||
|
// Re-enable depth for the default state.
|
||||||
|
static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override {PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState);}
|
||||||
|
void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override {PipelineStream.RTVFormats = RTVFormats;}
|
||||||
|
void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override {PipelineStream.SampleDesc = SampleDesc;}
|
||||||
|
void SampleMaskCb(UINT SampleMask) override {PipelineStream.SampleMask = SampleMask;}
|
||||||
|
void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override {PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc);}
|
||||||
|
void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override {PipelineStream.CachedPSO = CachedPSO;}
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool SeenDSS;
|
||||||
|
};
|
||||||
|
#endif // NTDDI_WIN10_VB
|
||||||
|
|
||||||
struct CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
|
struct CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
|
||||||
{
|
{
|
||||||
#if defined(NTDDI_WIN10_RS3) && (NTDDI_VERSION >= NTDDI_WIN10_RS3)
|
#if defined(NTDDI_WIN10_RS3) && (NTDDI_VERSION >= NTDDI_WIN10_RS3)
|
||||||
@ -2593,6 +3015,16 @@ inline HRESULT D3DX12ParsePipelineStream(const D3D12_PIPELINE_STATE_STREAM_DESC&
|
|||||||
pCallbacks->CSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::CS)*>(pStream));
|
pCallbacks->CSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::CS)*>(pStream));
|
||||||
SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::CS);
|
SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::CS);
|
||||||
break;
|
break;
|
||||||
|
#if defined(NTDDI_WIN10_VB) && (NTDDI_VERSION >= NTDDI_WIN10_VB)
|
||||||
|
case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS:
|
||||||
|
pCallbacks->ASCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM2::AS)*>(pStream));
|
||||||
|
SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM2::AS);
|
||||||
|
break;
|
||||||
|
case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS:
|
||||||
|
pCallbacks->MSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM2::MS)*>(pStream));
|
||||||
|
SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM2::MS);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT:
|
case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT:
|
||||||
pCallbacks->StreamOutputCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::StreamOutput)*>(pStream));
|
pCallbacks->StreamOutputCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::StreamOutput)*>(pStream));
|
||||||
SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::StreamOutput);
|
SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::StreamOutput);
|
||||||
@ -2941,6 +3373,9 @@ private:
|
|||||||
friend class CD3DX12_HIT_GROUP_SUBOBJECT;
|
friend class CD3DX12_HIT_GROUP_SUBOBJECT;
|
||||||
friend class CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT;
|
friend class CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT;
|
||||||
friend class CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT;
|
friend class CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT;
|
||||||
|
#if defined(NTDDI_WIN10_VB) && (NTDDI_VERSION >= NTDDI_WIN10_VB)
|
||||||
|
friend class CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT;
|
||||||
|
#endif
|
||||||
friend class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT;
|
friend class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT;
|
||||||
friend class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT;
|
friend class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT;
|
||||||
friend class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT;
|
friend class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT;
|
||||||
@ -3326,6 +3761,43 @@ private:
|
|||||||
D3D12_RAYTRACING_PIPELINE_CONFIG m_Desc;
|
D3D12_RAYTRACING_PIPELINE_CONFIG m_Desc;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------------------------
|
||||||
|
#if defined(NTDDI_WIN10_VB) && (NTDDI_VERSION >= NTDDI_WIN10_VB)
|
||||||
|
class CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT
|
||||||
|
: public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT() noexcept
|
||||||
|
{
|
||||||
|
Init();
|
||||||
|
}
|
||||||
|
CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
|
||||||
|
{
|
||||||
|
Init();
|
||||||
|
AddToStateObject(ContainingStateObject);
|
||||||
|
}
|
||||||
|
void Config(UINT MaxTraceRecursionDepth, D3D12_RAYTRACING_PIPELINE_FLAGS Flags) noexcept
|
||||||
|
{
|
||||||
|
m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth;
|
||||||
|
m_Desc.Flags = Flags;
|
||||||
|
}
|
||||||
|
D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
|
||||||
|
{
|
||||||
|
return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1;
|
||||||
|
}
|
||||||
|
operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
|
||||||
|
operator const D3D12_RAYTRACING_PIPELINE_CONFIG1&() const noexcept { return m_Desc; }
|
||||||
|
private:
|
||||||
|
void Init() noexcept
|
||||||
|
{
|
||||||
|
SUBOBJECT_HELPER_BASE::Init();
|
||||||
|
m_Desc = {};
|
||||||
|
}
|
||||||
|
void* Data() noexcept override { return &m_Desc; }
|
||||||
|
D3D12_RAYTRACING_PIPELINE_CONFIG1 m_Desc;
|
||||||
|
};
|
||||||
|
#endif // NTDDI_WIN10_VB
|
||||||
|
|
||||||
//------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------
|
||||||
class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT
|
class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT
|
||||||
: public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
|
: public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
|
||||||
|
Loading…
x
Reference in New Issue
Block a user