63 int8 RootConstantsSlot = -1;
64 int8 DiagnosticBufferSlot = -1;
65 int8 StaticShaderBindingSlot = -1;
66 int8 StaticShaderBindingCount = -1;
79 uint8 MaxCBVCount = 0;
80 uint8 MaxSRVCount = 0;
81 uint8 MaxSamplerCount = 0;
82 uint8 MaxUAVCount = 0;
84 bool bVisible =
false;
102#if D3D12_RHI_RAYTRACING
121 default:
check(
false);
137 default:
check(
false);
153 default:
check(
false);
171 default:
check(
false);
194 inline bool HasUAVs()
const {
return bHasUAVs; }
195 inline bool HasSRVs()
const {
return bHasSRVs; }
196 inline bool HasCBVs()
const {
return bHasCBVs; }
202#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
235 template<
typename RootSignatureDescType>
257 default:
check(
false);
281 default:
check(
false);
305 default:
check(
false);
329 default:
check(
false);
359 Stage[s].MaxSamplerCount =
Count;
364 Stage[
SF].MaxSamplerCount =
Count;
375 Stage[s].MaxSRVCount =
Count;
385 template<
typename DescriptorRangeType>
404 template<
typename DescriptorType>
405 inline void UpdateCBVRegisterMaskWithDescriptor(
EShaderFrequency SF,
const DescriptorType& Descriptor)
425 Stage[s].MaxCBVCount =
Count;
441 Stage[s].MaxCBVCount +=
Count;
446 Stage[
SF].MaxCBVCount +=
Count;
457 Stage[s].MaxUAVCount =
Count;
468 static constexpr uint8 InvalidBindSlotMapIndex = 0xFF;
473 uint8 TotalRootSignatureSizeInDWORDs = 0;
474 int8 RootConstantsSlot = -1;
475 int8 DiagnosticBufferSlot = -1;
476 int8 StaticShaderBindingSlot = -1;
477 int8 StaticShaderBindingCount = -1;
482 uint8 bHasRootCBs : 1;
483 uint8 bHasSamplers : 1;
484#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
499 check(RootSignatureMap.Num() == 0);
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
uint16 CBVSlotMask
Definition D3D12RHICommon.h:29
ERootParameterKeys
Definition D3D12RootSignature.h:14
@ VS_Samplers
Definition D3D12RootSignature.h:22
@ VS_CBVs
Definition D3D12RootSignature.h:20
@ VS_SRVs
Definition D3D12RootSignature.h:19
@ AS_RootCBVs
Definition D3D12RootSignature.h:34
@ GS_RootCBVs
Definition D3D12RootSignature.h:26
@ ALL_SRVs
Definition D3D12RootSignature.h:36
@ MS_SRVs
Definition D3D12RootSignature.h:28
@ PS_RootCBVs
Definition D3D12RootSignature.h:17
@ ALL_Samplers
Definition D3D12RootSignature.h:39
@ GS_SRVs
Definition D3D12RootSignature.h:24
@ PS_Samplers
Definition D3D12RootSignature.h:18
@ RPK_RootParameterKeyCount
Definition D3D12RootSignature.h:41
@ PS_CBVs
Definition D3D12RootSignature.h:16
@ MS_CBVs
Definition D3D12RootSignature.h:29
@ AS_SRVs
Definition D3D12RootSignature.h:32
@ ALL_UAVs
Definition D3D12RootSignature.h:40
@ ALL_RootCBVs
Definition D3D12RootSignature.h:38
@ AS_Samplers
Definition D3D12RootSignature.h:35
@ AS_CBVs
Definition D3D12RootSignature.h:33
@ GS_Samplers
Definition D3D12RootSignature.h:27
@ MS_RootCBVs
Definition D3D12RootSignature.h:30
@ MS_Samplers
Definition D3D12RootSignature.h:31
@ VS_RootCBVs
Definition D3D12RootSignature.h:21
@ GS_CBVs
Definition D3D12RootSignature.h:25
@ PS_SRVs
Definition D3D12RootSignature.h:15
@ ALL_CBVs
Definition D3D12RootSignature.h:37
@ VS_UAVs
Definition D3D12RootSignature.h:23
ERootSignatureType
Definition D3D12Util.h:83
void Init()
Definition LockFreeList.h:4
EShaderFrequency
Definition RHIDefinitions.h:202
@ SF_Compute
Definition RHIDefinitions.h:208
@ SF_NumFrequencies
Definition RHIDefinitions.h:216
@ 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
EShaderBindingLayoutFlags
Definition RHIShaderBindingLayout.h:53
#define UE_ARRAY_COUNT(array)
Definition UnrealTemplate.h:212
Definition D3D12RHICommon.h:54
Definition D3D12Adapter.h:136
Definition D3D12RootSignature.h:47
const D3D12_VERSIONED_ROOT_SIGNATURE_DESC & GetDesc() const
Definition D3D12RootSignature.h:51
static constexpr uint32 MaxRootParameters
Definition D3D12RootSignature.h:53
int8 GetStaticShaderBindingSlot() const
Definition D3D12RootSignature.h:57
int8 GetDiagnosticBufferSlot() const
Definition D3D12RootSignature.h:56
int8 GetRootConstantsSlot() const
Definition D3D12RootSignature.h:55
int8 GetStaticShaderBindingCount() const
Definition D3D12RootSignature.h:58
Definition D3D12RootSignature.h:491
FD3D12RootSignature * GetRootSignature(const FD3D12QuantizedBoundShaderState &QBSS)
Definition D3D12RootSignature.cpp:841
void Destroy()
Definition D3D12RootSignature.cpp:831
FD3D12RootSignatureManager(FD3D12Adapter *InParent)
Definition D3D12RootSignature.h:493
FD3D12QuantizedBoundShaderState GetQuantizedBoundShaderState(const FD3D12RootSignature *const RootSignature)
Definition D3D12RootSignature.cpp:869
~FD3D12RootSignatureManager()
Definition D3D12RootSignature.h:497
Definition D3D12RootSignature.h:73
uint32 GetTotalRootSignatureSizeInBytes() const
Definition D3D12RootSignature.h:223
FD3D12RootSignature(FD3D12Adapter *InParent)
Definition D3D12RootSignature.h:88
uint32 CBVRDBindSlot(EShaderFrequency ShaderStage, uint32 BufferIndex) const
Definition D3D12RootSignature.h:176
bool HasCS() const
Definition D3D12RootSignature.h:215
constexpr bool UsesDynamicSamplers() const
Definition D3D12RootSignature.h:207
bool HasUAVs() const
Definition D3D12RootSignature.h:194
int8 GetDiagnosticBufferSlot() const
Definition D3D12RootSignature.h:230
bool HasMS() const
Definition D3D12RootSignature.h:211
int8 GetStaticShaderBindingSlot() const
Definition D3D12RootSignature.h:226
uint32 SRVRDTBindSlot(EShaderFrequency ShaderStage) const
Definition D3D12RootSignature.h:126
bool HasAS() const
Definition D3D12RootSignature.h:212
bool HasPS() const
Definition D3D12RootSignature.h:214
FD3D12RootSignature(FD3D12Adapter *InParent, const FD3D12QuantizedBoundShaderState &InQBSS)
Definition D3D12RootSignature.h:91
constexpr bool UsesDynamicResources() const
Definition D3D12RootSignature.h:206
bool HasCBVs() const
Definition D3D12RootSignature.h:196
uint32 MaxUAVCount(uint32 ShaderStage) const
Definition D3D12RootSignature.h:219
bool HasTableConstants() const
Definition D3D12RootSignature.h:199
bool HasRootCBs() const
Definition D3D12RootSignature.h:197
int8 GetRootConstantsSlot() const
Definition D3D12RootSignature.h:225
uint32 CBVRDBaseBindSlot(EShaderFrequency ShaderStage) const
Definition D3D12RootSignature.h:158
uint32 GetBindSlotOffsetInBytes(uint8 BindSlotIndex) const
Definition D3D12RootSignature.h:222
uint32 UAVRDTBindSlot(EShaderFrequency ShaderStage) const
Definition D3D12RootSignature.h:182
uint32 CBVRDTBindSlot(EShaderFrequency ShaderStage) const
Definition D3D12RootSignature.h:142
int8 GetStaticShaderBindingCount() const
Definition D3D12RootSignature.h:227
uint32 MaxCBVCount(uint32 ShaderStage) const
Definition D3D12RootSignature.h:218
ID3DBlob * GetRootSignatureBlob() const
Definition D3D12RootSignature.h:108
uint32 MaxSRVCount(uint32 ShaderStage) const
Definition D3D12RootSignature.h:217
bool HasSRVs() const
Definition D3D12RootSignature.h:195
bool HasGS() const
Definition D3D12RootSignature.h:213
static bool IsValidBindSlot(uint32 BindSlotMapIndex)
Definition D3D12RootSignature.h:189
uint32 SamplerRDTBindSlot(EShaderFrequency ShaderStage) const
Definition D3D12RootSignature.h:110
bool HasVS() const
Definition D3D12RootSignature.h:210
uint32 MaxSamplerCount(uint32 ShaderStage) const
Definition D3D12RootSignature.h:216
ID3D12RootSignature * GetRootSignature() const
Definition D3D12RootSignature.h:107
void InitStaticComputeRootSignatureDesc(EShaderBindingLayoutFlags InFlags)
Definition D3D12RootSignature.cpp:519
bool HasTableResources() const
Definition D3D12RootSignature.h:198
CBVSlotMask CBVRegisterMask(uint32 ShaderStage) const
Definition D3D12RootSignature.h:220
bool HasSamplers() const
Definition D3D12RootSignature.h:200
void InitStaticGraphicsRootSignature(EShaderBindingLayoutFlags InFlags)
Definition D3D12RootSignature.cpp:493
Definition UnrealString.h.inl:34
Definition RefCounting.h:454
UE_FORCEINLINE_HINT ReferencedType * GetReference() const
Definition RefCounting.h:584
@ Range
Definition EnvQueryTypes.h:81
Definition VulkanCommon.h:29
Definition D3D12Util.h:118