UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
D3D12PipelineState.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3// Implementation of D3D12 Pipelinestate related functions
4
5#pragma once
6
7#include "Async/AsyncWork.h"
8#include "D3D12DiskCache.h"
9#include "D3D12Shader.h"
10#include "D3D12Stats.h"
11
18
19// FORT-101886
20// UE implemented high level PSO caches on the general RHI level already
21// D3D12RHI high level PSO caches never cleanup (until shutdown) currently
22// and stale PSOs remain in the cache, which is being suspected as the cause
23// of some crashes
24// TODO: Remove or rewrite D3D12RHI high level PSO cache
25#ifndef D3D12RHI_USE_HIGH_LEVEL_PSO_CACHE
26#define D3D12RHI_USE_HIGH_LEVEL_PSO_CACHE 0
27#endif
28#ifndef D3D12_USE_DERIVED_PSO
29 #define D3D12_USE_DERIVED_PSO 0
30#endif
31#if D3D12_USE_DERIVED_PSO
32 #ifndef D3D12_USE_DERIVED_PSO_SHADER_EXPORTS
33 #define D3D12_USE_DERIVED_PSO_SHADER_EXPORTS 0
34 #endif // D3D12_USE_DERIVED_PSO_SHADER_EXPORTS
35#endif // D3D12_USE_DERIVED_PSO
36
37#if D3D12RHI_USE_HIGH_LEVEL_PSO_CACHE
41
45#endif
46
50
54
58
59// Graphics pipeline struct that represents the latest versions of PSO subobjects currently supported by the RHI.
91
93{
103
105
107 {
108 return Desc.MS.BytecodeLength > 0;
109 }
110
111#if D3D12RHI_NEEDS_VENDOR_EXTENSIONS
112 // TODO: Replace with a global hash lookup to reduce overall footprint?
113 // Very few permutations, so a single > 0 u32 hash code would be lower
114 // memory usage, and very rarely cause a look up.
120
122 {
123 return (
124 VSExtensions != nullptr ||
125 MSExtensions != nullptr ||
126 ASExtensions != nullptr ||
127 PSExtensions != nullptr ||
128 GSExtensions != nullptr);
129 }
130#endif
131
132 FORCEINLINE FString GetName() const { return FString::Printf(TEXT("%llu"), CombinedHash); }
133
134#if D3D12_USE_DERIVED_PSO
135 void Destroy();
136#endif
137};
138
139// Compute pipeline struct that represents the latest versions of PSO subobjects currently supported by the RHI.
140struct FD3D12_COMPUTE_PIPELINE_STATE_DESC : public D3D12_COMPUTE_PIPELINE_STATE_DESC
141{
143};
144
146{
150
152
153#if D3D12RHI_NEEDS_VENDOR_EXTENSIONS
154 const TArray<FShaderCodeVendorExtension>* Extensions;
155 FORCEINLINE bool HasVendorExtensions() const { return (Extensions != nullptr); }
156#endif
157
158 FORCEINLINE FString GetName() const { return FString::Printf(TEXT("%llu"), CombinedHash); }
159
160#if D3D12_USE_DERIVED_PSO
161 void Destroy();
162#endif
163};
164
165
166#define PSO_IF_NOT_EQUAL_RETURN_FALSE( value ) if(lhs.value != rhs.value){ return false; }
167#define PSO_IF_MEMCMP_FAILS_RETURN_FALSE( value ) if(FMemory::Memcmp(&lhs.value, &rhs.value, sizeof(rhs.value)) != 0){ return false; }
168#define PSO_IF_STRING_COMPARE_FAILS_RETURN_FALSE( value ) \
169 const char* const lhString = lhs.value; \
170 const char* const rhString = rhs.value; \
171 if (lhString != rhString) \
172 { \
173 if (strcmp(lhString, rhString) != 0) \
174 { \
175 return false; \
176 } \
177 }
178
179template <typename TDesc> struct equality_pipeline_state_desc;
180
182{
184 {
185 // Order from most likely to change to least
186 PSO_IF_NOT_EQUAL_RETURN_FALSE(Desc.PS.BytecodeLength)
187 PSO_IF_NOT_EQUAL_RETURN_FALSE(Desc.VS.BytecodeLength)
188 PSO_IF_NOT_EQUAL_RETURN_FALSE(Desc.MS.BytecodeLength)
189 PSO_IF_NOT_EQUAL_RETURN_FALSE(Desc.AS.BytecodeLength)
190 PSO_IF_NOT_EQUAL_RETURN_FALSE(Desc.GS.BytecodeLength)
192 PSO_IF_NOT_EQUAL_RETURN_FALSE(Desc.RTFormatArray.NumRenderTargets)
197#if !D3D12_USE_DERIVED_PSO || D3D12_USE_DERIVED_PSO_SHADER_EXPORTS
199#endif // #if !D3D12_USE_DERIVED_PSO || D3D12_USE_DERIVED_PSO_SHADER_EXPORTS
200#if !D3D12_USE_DERIVED_PSO
204#endif // #if !D3D12_USE_DERIVED_PSO
209
210 for (uint32 i = 0; i < lhs.Desc.RTFormatArray.NumRenderTargets; i++)
211 {
213 }
214
215 // Shader byte code is hashed with SHA1 (160 bit) so the chances of collision
216 // should be tiny i.e if there were 1 quadrillion shaders the chance of a
217 // collision is ~ 1 in 10^18. so only do a full check on debug builds
223
224 if (lhs.Desc.InputLayout.pInputElementDescs != rhs.Desc.InputLayout.pInputElementDescs &&
225 lhs.Desc.InputLayout.NumElements)
226 {
227 for (uint32 i = 0; i < lhs.Desc.InputLayout.NumElements; i++)
228 {
229 PSO_IF_NOT_EQUAL_RETURN_FALSE(Desc.InputLayout.pInputElementDescs[i].SemanticIndex)
230 PSO_IF_NOT_EQUAL_RETURN_FALSE(Desc.InputLayout.pInputElementDescs[i].Format)
231 PSO_IF_NOT_EQUAL_RETURN_FALSE(Desc.InputLayout.pInputElementDescs[i].InputSlot)
232 PSO_IF_NOT_EQUAL_RETURN_FALSE(Desc.InputLayout.pInputElementDescs[i].AlignedByteOffset)
233 PSO_IF_NOT_EQUAL_RETURN_FALSE(Desc.InputLayout.pInputElementDescs[i].InputSlotClass)
234 PSO_IF_NOT_EQUAL_RETURN_FALSE(Desc.InputLayout.pInputElementDescs[i].InstanceDataStepRate)
235 PSO_IF_STRING_COMPARE_FAILS_RETURN_FALSE(Desc.InputLayout.pInputElementDescs[i].SemanticName)
236 }
237 }
238
239 #if PLATFORM_WINDOWS
245 #endif
246
247 return true;
248 }
249};
250
252{
254 {
255 PSO_IF_NOT_EQUAL_RETURN_FALSE(Desc.CS.BytecodeLength)
256#if PLATFORM_WINDOWS
258#endif
261
262 // Shader byte code is hashed with SHA1 (160 bit) so the chances of collision
263 // should be tiny i.e if there were 1 quadrillion shaders the chance of a
264 // collision is ~ 1 in 10^18. so only do a full check on debug builds
266
267#if PLATFORM_WINDOWS
269#endif
270
271 return true;
272 }
273};
274
279
298
300{
301public:
304
307
308#if D3D12_USE_DERIVED_PSO
310#endif
311
314
316 {
317 return (GetPipelineState() != nullptr);
318 }
319
321 {
323 {
325 }
326 else
327 {
328 return InternalGetPipelineState();
329 }
330 }
331
333 {
334 return ContextSortKey;
335 }
336
341
343
344 static bool UsePSORefCounting();
345
346private:
347 ID3D12PipelineState* InternalGetPipelineState();
348
349protected:
353
354 enum class PSOInitState
355 {
359 };
361
362 // GRHISupportsPipelineStateSortKey
364};
365
367{
368 void Set(uint32_t Frame) const
369 {
370 LastUsedFrame.store(Frame, std::memory_order::relaxed);
371 }
372
373 uint32 Get() const
374 {
375 return LastUsedFrame.load(std::memory_order::relaxed);
376 }
377
378 // Note that the frame counter may be updated from any number of threads, and is not entirely synchronized
379 mutable std::atomic<uint32> LastUsedFrame{0};
380};
381
392
394{
398
404
417
421};
422
432
433#if D3D12RHI_USE_HIGH_LEVEL_PSO_CACHE
435{
437 uint32 Hash;
438
439 FInitializerToGPSOMapKey() = default;
440
443 Hash(InHash)
444 {}
445
446 inline bool operator==(const FInitializerToGPSOMapKey& Other) const
447 {
448 return *Initializer == *Other.Initializer;
449 }
450};
451
453{
454 return Key.Hash;
455}
456#endif
457
459{
460protected:
467
468 template <typename TDesc, typename TValue>
469 struct TStateCacheKeyFuncs : BaseKeyFuncs<TPair<TDesc, TValue>, TDesc, false>
470 {
473
475 {
476 return Element.Key;
477 }
484 {
485 return Key.CombinedHash;
486 }
487 };
488
489 template <typename TDesc, typename TValue = FD3D12PipelineState*>
491#if D3D12RHI_USE_HIGH_LEVEL_PSO_CACHE
494#endif
497
498 // Thread access mutual exclusion
499#if D3D12RHI_USE_HIGH_LEVEL_PSO_CACHE
502#endif
505
508
510
513
514#if D3D12RHI_USE_HIGH_LEVEL_PSO_CACHE
517#endif
518
522 virtual void OnPSOCreated(FD3D12PipelineState* PipelineState, const FD3D12LowLevelGraphicsPipelineStateDesc& Desc) = 0;
523
527 virtual void OnPSOCreated(FD3D12PipelineState* PipelineState, const FD3D12ComputePipelineStateDesc& Desc) = 0;
528
529#if !D3D12RHI_USE_HIGH_LEVEL_PSO_CACHE
532#endif
533public:
534 void RemoveFromLowLevelCache(FD3D12PipelineState* PipelineState, const FGraphicsPipelineStateInitializer& PipelineStateInitializer, const FD3D12RootSignature* RootSignature);
536
537#if D3D12RHI_USE_HIGH_LEVEL_PSO_CACHE
541
543#endif
546
549
550 static uint64 HashData(const void* Data, int32 NumBytes);
551
554};
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define FORCEINLINE
Definition AndroidPlatform.h:140
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::SIZE_T SIZE_T
An unsigned integer the same size as a pointer, the same as UPTRINT.
Definition Platform.h:1150
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
#define DECLARE_DWORD_COUNTER_STAT(CounterName, StatId, GroupId)
Definition Stats.h:672
#define DECLARE_DWORD_ACCUMULATOR_STAT(CounterName, StatId, GroupId)
Definition Stats.h:674
#define RETURN_QUICK_DECLARE_CYCLE_STAT(StatId, GroupId)
Definition Stats.h:655
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define PSO_IF_STRING_COMPARE_FAILS_RETURN_FALSE(value)
Definition D3D12PipelineState.h:168
#define PSO_IF_NOT_EQUAL_RETURN_FALSE(value)
Definition D3D12PipelineState.h:166
#define PSO_IF_MEMCMP_FAILS_RETURN_FALSE(value)
Definition D3D12PipelineState.h:167
EShaderFrequency
Definition RHIDefinitions.h:202
@ SF_Amplification
Definition RHIDefinitions.h:205
@ SF_Vertex
Definition RHIDefinitions.h:203
@ SF_Mesh
Definition RHIDefinitions.h:204
@ SF_Geometry
Definition RHIDefinitions.h:207
@ SF_Pixel
Definition RHIDefinitions.h:206
@ SF_NumStandardFrequencies
Definition RHIDefinitions.h:222
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition AsyncWork.h:585
Definition RHIResources.h:4820
Definition D3D12RHICommon.h:54
Definition D3D12Adapter.h:136
Definition D3D12Shader.h:138
Definition D3D12Shader.h:160
Definition D3D12Shader.h:144
Definition D3D12Shader.h:132
Definition D3D12RHICommon.h:153
Definition D3D12PipelineState.h:459
TPipelineCache< FD3D12ComputePipelineStateDesc > ComputePipelineStateCache
Definition D3D12PipelineState.h:496
FD3D12PipelineState * FindInLowLevelCache(const FD3D12LowLevelGraphicsPipelineStateDesc &Desc)
Definition D3D12Pipelinestate.cpp:588
FRWLock ComputePipelineStateCacheMutex
Definition D3D12PipelineState.h:504
FD3D12GraphicsPipelineState * FindInLoadedCache(const FGraphicsPipelineStateInitializer &Initializer, const FD3D12RootSignature *RootSignature, FD3D12LowLevelGraphicsPipelineStateDesc &OutLowLevelDesc)
Definition D3D12Pipelinestate.cpp:839
FD3D12GraphicsPipelineState * CreateAndAdd(const FGraphicsPipelineStateInitializer &Initializer, const FD3D12RootSignature *RootSignature, const FD3D12LowLevelGraphicsPipelineStateDesc &LowLevelDesc)
Definition D3D12Pipelinestate.cpp:875
TPipelineCache< FD3D12LowLevelGraphicsPipelineStateDesc > LowLevelGraphicsPipelineStateCache
Definition D3D12PipelineState.h:495
virtual void OnPSOCreated(FD3D12PipelineState *PipelineState, const FD3D12LowLevelGraphicsPipelineStateDesc &Desc)=0
TFunction< void(FD3D12PipelineState **, const FD3D12LowLevelGraphicsPipelineStateDesc &)> FPostCreateGraphicCallback
Definition D3D12PipelineState.h:511
void AddToLowLevelCache(const FD3D12LowLevelGraphicsPipelineStateDesc &Desc, FD3D12PipelineState **OutPipelineState, const FPostCreateGraphicCallback &PostCreateCallback)
Definition D3D12Pipelinestate.cpp:672
virtual void OnPSOCreated(FD3D12PipelineState *PipelineState, const FD3D12ComputePipelineStateDesc &Desc)=0
FDiskCacheInterface DiskCaches[NUM_PSO_CACHE_TYPES]
Definition D3D12PipelineState.h:507
FRWLock LowLevelGraphicsPipelineStateCacheMutex
Definition D3D12PipelineState.h:503
static uint64 HashPSODesc(const FD3D12LowLevelGraphicsPipelineStateDesc &Desc)
Definition D3D12Pipelinestate.cpp:185
void RemoveFromLowLevelCache(FD3D12PipelineState *PipelineState, const FGraphicsPipelineStateInitializer &PipelineStateInitializer, const FD3D12RootSignature *RootSignature)
Definition D3D12Pipelinestate.cpp:622
PSO_CACHE_TYPE
Definition D3D12PipelineState.h:462
@ NUM_PSO_CACHE_TYPES
Definition D3D12PipelineState.h:465
@ PSO_CACHE_GRAPHICS
Definition D3D12PipelineState.h:463
@ PSO_CACHE_COMPUTE
Definition D3D12PipelineState.h:464
static uint64 HashData(const void *Data, int32 NumBytes)
Definition D3D12Pipelinestate.cpp:180
FRWLock DiskCachesCS
Definition D3D12PipelineState.h:506
virtual ~FD3D12PipelineStateCacheBase()
Definition D3D12Pipelinestate.cpp:292
TFunction< void(FD3D12PipelineState *, const FD3D12ComputePipelineStateDesc &)> FPostCreateComputeCallback
Definition D3D12PipelineState.h:512
void CleanupPipelineStateCaches()
Definition D3D12Pipelinestate.cpp:499
FD3D12PipelineState * CreateAndAddToLowLevelCache(const FD3D12LowLevelGraphicsPipelineStateDesc &Desc)
Definition D3D12Pipelinestate.cpp:610
Definition D3D12Shader.h:150
Definition D3D12RootSignature.h:73
Definition D3D12Shader.h:126
Definition WindowsD3D12DiskCache.h:14
Definition RHIResources.h:4572
FBoundShaderStateInput BoundShaderState
Definition RHIResources.h:4754
Definition AsyncWork.h:663
Definition UnrealTemplate.h:321
Definition RHIResources.h:1078
Definition RHIResources.h:1058
Definition RHIResources.h:947
Definition RefCounting.h:213
Definition Array.h:670
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition Map.h:26
Definition RefCounting.h:454
UE_FORCEINLINE_HINT ReferencedType * GetReference() const
Definition RefCounting.h:584
Definition StaticArray.h:26
Definition CriticalSection.h:14
uint32 GetTypeHash(const FKey &Key)
Definition BlackboardKey.h:35
bool operator==(const FCachedAssetKey &A, const FCachedAssetKey &B)
Definition AssetDataMap.h:501
Definition SetUtilities.h:23
Definition WindowsD3D12PipelineState.h:87
Definition WindowsD3D12PipelineState.h:123
Definition D3D12PipelineState.h:367
void Set(uint32_t Frame) const
Definition D3D12PipelineState.h:368
uint32 Get() const
Definition D3D12PipelineState.h:373
std::atomic< uint32 > LastUsedFrame
Definition D3D12PipelineState.h:379
constexpr FRHIGeometryShader * GetGeometryShader() const
Definition RHIResources.h:4496
constexpr FRHIMeshShader * GetMeshShader() const
Definition RHIResources.h:4486
FRHIPixelShader * GetPixelShader() const
Definition RHIResources.h:4478
FRHIVertexShader * GetVertexShader() const
Definition RHIResources.h:4477
constexpr FRHIAmplificationShader * GetAmplificationShader() const
Definition RHIResources.h:4488
Definition D3D12PipelineState.h:146
const FD3D12RootSignature * pRootSignature
Definition D3D12PipelineState.h:147
FORCEINLINE FString GetName() const
Definition D3D12PipelineState.h:158
ShaderBytecodeHash CSHash
Definition D3D12PipelineState.h:149
FD3D12_COMPUTE_PIPELINE_STATE_DESC Desc
Definition D3D12PipelineState.h:148
SIZE_T CombinedHash
Definition D3D12PipelineState.h:151
Definition D3D12PipelineState.h:424
~FD3D12ComputePipelineState()
Definition D3D12Pipelinestate.cpp:478
bool bShaderNeedsGlobalConstantBuffer
Definition D3D12PipelineState.h:430
bool bPSOPrecache
Definition D3D12PipelineState.h:429
Definition D3D12PipelineState.h:394
FORCEINLINE FD3D12PixelShader * GetPixelShader() const
Definition D3D12PipelineState.h:400
FORCEINLINE FD3D12AmplificationShader * GetAmplificationShader() const
Definition D3D12PipelineState.h:402
TStaticArray< uint16, MaxVertexElementCount > StreamStrides
Definition D3D12PipelineState.h:419
~FD3D12GraphicsPipelineState()
Definition D3D12Pipelinestate.cpp:425
FORCEINLINE FD3D12GeometryShader * GetGeometryShader() const
Definition D3D12PipelineState.h:403
FORCEINLINE FD3D12MeshShader * GetMeshShader() const
Definition D3D12PipelineState.h:401
bool bShaderNeedsGlobalConstantBuffer[SF_NumStandardFrequencies]
Definition D3D12PipelineState.h:420
FORCEINLINE FD3D12VertexShader * GetVertexShader() const
Definition D3D12PipelineState.h:399
FRHIGraphicsShader * GetShader(EShaderFrequency Frequency) const override
Definition D3D12PipelineState.h:405
FGraphicsPipelineStateInitializer PipelineStateInitializer
Definition D3D12PipelineState.h:418
Definition D3D12PipelineState.h:93
ShaderBytecodeHash GSHash
Definition D3D12PipelineState.h:99
bool bFromPSOFileCache
Definition D3D12PipelineState.h:102
ShaderBytecodeHash PSHash
Definition D3D12PipelineState.h:100
uint32 InputLayoutHash
Definition D3D12PipelineState.h:101
FD3D12_GRAPHICS_PIPELINE_STATE_DESC Desc
Definition D3D12PipelineState.h:95
const FD3D12RootSignature * pRootSignature
Definition D3D12PipelineState.h:94
FORCEINLINE FString GetName() const
Definition D3D12PipelineState.h:132
FORCEINLINE bool UsesMeshShaders() const
Definition D3D12PipelineState.h:106
ShaderBytecodeHash MSHash
Definition D3D12PipelineState.h:97
ShaderBytecodeHash VSHash
Definition D3D12PipelineState.h:96
SIZE_T CombinedHash
Definition D3D12PipelineState.h:104
ShaderBytecodeHash ASHash
Definition D3D12PipelineState.h:98
Definition D3D12PipelineState.h:470
const TPairInitializer< typename TTypeTraits< TDesc >::ConstInitType, typename TTypeTraits< TValue >::ConstInitType > & ElementInitType
Definition D3D12PipelineState.h:472
static FORCEINLINE bool Matches(KeyInitType A, KeyInitType B)
Definition D3D12PipelineState.h:478
static FORCEINLINE uint32 GetKeyHash(KeyInitType Key)
Definition D3D12PipelineState.h:483
static FORCEINLINE KeyInitType GetSetKey(ElementInitType Element)
Definition D3D12PipelineState.h:474
TTypeTraits< TDesc >::ConstPointerType KeyInitType
Definition D3D12PipelineState.h:471
Definition D3D12PipelineState.h:383
const FD3D12RootSignature *const RootSignature
Definition D3D12PipelineState.h:386
FD3D12PipelineState * PipelineState
Definition D3D12PipelineState.h:388
D3D12ResourceFrameCounter FrameCounter
Definition D3D12PipelineState.h:390
Definition D3D12PipelineState.h:281
FORCEINLINE TStatId GetStatId() const
Definition D3D12PipelineState.h:287
FD3D12PipelineStateWorker(FD3D12Adapter *Adapter, const GraphicsPipelineCreationArgs &InArgs)
FD3D12PipelineStateWorker(FD3D12Adapter *Adapter, const ComputePipelineCreationArgs &InArgs)
void DoWork()
Definition WindowsD3D12PipelineState.cpp:1020
union FD3D12PipelineStateWorker::PipelineCreationArgs CreationArgs
TRefCountPtr< ID3D12PipelineState > PSO
Definition D3D12PipelineState.h:296
const bool bIsGraphics
Definition D3D12PipelineState.h:295
Definition D3D12PipelineState.h:300
FORCEINLINE void SetContextSortKey(uint64 InContextSortKey)
Definition D3D12PipelineState.h:337
TRefCountPtr< ID3D12PipelineState > PipelineState
Definition D3D12PipelineState.h:350
void CreateAsync(const ComputePipelineCreationArgs &InCreationArgs)
Definition WindowsD3D12PipelineState.cpp:993
uint64 ContextSortKey
Definition D3D12PipelineState.h:363
volatile PSOInitState InitState
Definition D3D12PipelineState.h:360
~FD3D12PipelineState()
Definition D3D12Pipelinestate.cpp:307
FORCEINLINE bool IsValid()
Definition D3D12PipelineState.h:315
FD3D12PipelineState & operator=(const FD3D12PipelineState &other)=delete
FRWLock GetPipelineStateMutex
Definition D3D12PipelineState.h:352
FORCEINLINE ID3D12PipelineState * GetPipelineState()
Definition D3D12PipelineState.h:320
FORCEINLINE uint64 GetContextSortKey() const
Definition D3D12PipelineState.h:332
FAsyncTask< FD3D12PipelineStateWorker > * Worker
Definition D3D12PipelineState.h:351
PSOInitState
Definition D3D12PipelineState.h:355
static bool UsePSORefCounting()
Definition D3D12Pipelinestate.cpp:326
Definition D3D12PipelineState.h:141
FD3D12_COMPUTE_PIPELINE_STATE_STREAM PipelineStateStream() const
Definition WindowsD3D12PipelineState.cpp:96
Definition WindowsD3D12PipelineState.h:68
Definition D3D12PipelineState.h:61
ID3D12RootSignature * pRootSignature
Definition D3D12PipelineState.h:62
D3D12_SHADER_BYTECODE PS
Definition D3D12PipelineState.h:66
D3D12_SHADER_BYTECODE GS
Definition D3D12PipelineState.h:67
D3D12_INPUT_LAYOUT_DESC InputLayout
Definition D3D12PipelineState.h:76
D3D12_SHADER_BYTECODE MS
Definition D3D12PipelineState.h:64
uint32 SampleMask
Definition D3D12PipelineState.h:72
D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue
Definition D3D12PipelineState.h:77
FD3D12_GRAPHICS_PIPELINE_STATE_STREAM PipelineStateStream() const
Definition WindowsD3D12PipelineState.cpp:50
D3D12_BLEND_DESC BlendState
Definition D3D12PipelineState.h:69
D3D12_RT_FORMAT_ARRAY RTFormatArray
Definition D3D12PipelineState.h:79
D3D12_CACHED_PIPELINE_STATE CachedPSO
Definition D3D12PipelineState.h:83
D3D12_SHADER_BYTECODE AS
Definition D3D12PipelineState.h:65
DXGI_FORMAT DSVFormat
Definition D3D12PipelineState.h:80
D3D12_PIPELINE_STATE_FLAGS Flags
Definition D3D12PipelineState.h:84
D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType
Definition D3D12PipelineState.h:78
DXGI_SAMPLE_DESC SampleDesc
Definition D3D12PipelineState.h:81
D3D12_DEPTH_STENCIL_DESC1 DepthStencilState
Definition D3D12PipelineState.h:74
uint32 NodeMask
Definition D3D12PipelineState.h:82
D3D12_SHADER_BYTECODE VS
Definition D3D12PipelineState.h:63
D3D12_RASTERIZER_DESC RasterizerState
Definition D3D12PipelineState.h:73
Definition WindowsD3D12PipelineState.h:15
Definition WindowsD3D12PipelineState.h:103
Definition WindowsD3D12PipelineState.h:138
Definition D3D12Shader.h:54
Definition LightweightStats.h:416
TCallTraits< T >::ParamType ConstInitType
Definition UnrealTypeTraits.h:336
TCallTraits< T >::ConstPointerType ConstPointerType
Definition UnrealTypeTraits.h:337
bool operator()(const FD3D12ComputePipelineStateDesc &lhs, const FD3D12ComputePipelineStateDesc &rhs)
Definition D3D12PipelineState.h:253
bool operator()(const FD3D12LowLevelGraphicsPipelineStateDesc &lhs, const FD3D12LowLevelGraphicsPipelineStateDesc &rhs)
Definition D3D12PipelineState.h:183
Definition D3D12PipelineState.h:179
Definition D3D12PipelineState.h:290
GraphicsPipelineCreationArgs_POD * GraphicsArgs
Definition D3D12PipelineState.h:292
ComputePipelineCreationArgs_POD * ComputeArgs
Definition D3D12PipelineState.h:291