5#include "Containers/Array.h"
28#if D3D12_RHI_RAYTRACING
153 , ArrayStride(ViewSubset.
Layout.NumMips)
167 if (++MipOffset == MipMax)
171 MipRangeStart += ArrayStride;
173 if (++ArrayOffset == ArrayMax)
177 MipRangeStart += PlaneStride;
261#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
290#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
299template <
typename TParent,
typename TDesc>
345 virtual void UpdateDescriptor()
override;
395 NeedsCounter = 1 << 0
405 return CounterResource;
411 virtual void UpdateDescriptor()
override;
431 virtual void UpdateDescriptor()
override;
449 virtual void UpdateDescriptor()
override;
452template <
typename TParent>
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
ERHIDescriptorType RHIDescriptorTypeFromD3D12ViewDesc(const D3D12_SHADER_RESOURCE_VIEW_DESC &ViewDesc)
Definition D3D12View.h:16
ED3D12ViewType
Definition D3D12View.h:211
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
#define FRIEND_ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:17
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
ERHIDescriptorType
Definition RHIDefinitions.h:1348
ERHIDescriptorHeapType
Definition RHIDefinitions.h:1338
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition D3D12Resources.h:891
Definition D3D12Resources.h:1017
Definition D3D12View.h:336
void CreateView(FResourceInfo const &InResource, uint32 InOffset, uint32 InAlignedSize)
Definition D3D12View.cpp:345
static constexpr FD3D12OfflineDescriptor FD3D12DefaultViews::* Null
Definition D3D12View.h:338
Definition D3D12CommandContext.h:1193
Definition D3D12View.h:435
FD3D12ViewSubset GetDepthOnlySubset() const
Definition D3D12View.h:445
bool HasStencil() const
Definition D3D12View.h:443
static constexpr FD3D12OfflineDescriptor FD3D12DefaultViews::* Null
Definition D3D12View.h:437
bool HasDepth() const
Definition D3D12View.h:442
FD3D12ViewSubset GetStencilOnlySubset() const
Definition D3D12View.h:446
Definition D3D12RHICommon.h:78
Definition D3D12Device.h:176
Definition D3D12RHICommon.h:164
Definition D3D12View.h:423
Definition D3D12Resources.h:641
Definition D3D12Resources.h:181
TConstArrayView< FD3D12ResidencyHandle * > GetResidencyHandles() const
Definition D3D12Resources.h:401
Definition D3D12View.h:485
virtual void CreateView()
Definition D3D12SRV.cpp:250
virtual void UpdateView(FD3D12ContextArray const &Contexts)
Definition D3D12SRV.cpp:272
virtual FRHIDescriptorHandle GetBindlessHandle() const override
Definition D3D12View.h:499
virtual void ResourceRenamed(FD3D12ContextArray const &Contexts, FD3D12BaseShaderResource *, FD3D12ResourceLocation *) override
Definition D3D12View.h:492
Definition D3D12View.h:351
void CreateView(FResourceInfo const &InResource, D3D12_SHADER_RESOURCE_VIEW_DESC const &InD3DViewDesc, EFlags InFlags)
Definition D3D12SRV.cpp:44
void UpdateMinLODClamp(FD3D12ContextArray const &Contexts, float MinLODClamp)
Definition D3D12SRV.cpp:79
virtual void UpdateDescriptor() override
Definition D3D12SRV.cpp:104
virtual void ResourceRenamed(FD3D12ContextArray const &Contexts, FD3D12BaseShaderResource *InRenamedResource, FD3D12ResourceLocation *InNewResourceLocation) override
Definition D3D12SRV.cpp:56
EFlags
Definition D3D12View.h:356
EFlags Flags
Definition D3D12View.h:380
static constexpr FD3D12OfflineDescriptor FD3D12DefaultViews::* Null
Definition D3D12View.h:353
bool GetSkipFastClearFinalize() const
Definition D3D12View.h:366
void UpdateView(FD3D12ContextArray const &Contexts, const FResourceInfo &InResource, const D3D12_SHADER_RESOURCE_VIEW_DESC &InD3DViewDesc, EFlags InFlags)
Definition D3D12SRV.cpp:50
uint32 StrideInBytes
Definition D3D12View.h:378
uint64 OffsetInBytes
Definition D3D12View.h:377
void UpdateResourceInfo(const FResourceInfo &InResource, const D3D12_SHADER_RESOURCE_VIEW_DESC &InD3DViewDesc, EFlags InFlags)
Definition D3D12SRV.cpp:12
FD3D12RayTracingScene * GetRayTracingScene() const
Definition D3D12View.h:369
FD3D12RayTracingScene * RayTracingScene
Definition D3D12View.h:382
Definition D3D12Texture.h:31
Definition D3D12View.h:506
virtual void ResourceRenamed(FD3D12ContextArray const &Contexts, FD3D12BaseShaderResource *, FD3D12ResourceLocation *) override
Definition D3D12View.h:513
virtual void UpdateView(FD3D12ContextArray const &Contexts)
Definition D3D12UAV.cpp:229
virtual FRHIDescriptorHandle GetBindlessHandle() const override
Definition D3D12View.h:520
virtual void CreateView()
Definition D3D12UAV.cpp:207
Definition D3D12View.h:388
FD3D12Resource * GetCounterResource() const
Definition D3D12View.h:403
TRefCountPtr< FD3D12Resource > CounterResource
Definition D3D12View.h:413
EFlags
Definition D3D12View.h:393
Definition D3D12View.h:148
bool operator!=(FIterator const &RHS) const
Definition D3D12View.h:187
bool operator==(FIterator const &RHS) const
Definition D3D12View.h:186
uint32 operator*() const
Definition D3D12View.h:184
FIterator & operator++()
Definition D3D12View.h:165
FIterator(FD3D12ViewSubset const &ViewSubset, uint8 MipSlice, uint16 ArraySlice, uint8 PlaneSlice)
Definition D3D12View.h:150
Definition D3D12View.h:221
TConstArrayView< FD3D12ResidencyHandle * > GetResidencyHandles() const
Definition D3D12View.h:257
void InitializeBindlessSlot()
Definition D3D12View.cpp:264
virtual ~FD3D12View()
Definition D3D12View.cpp:240
constexpr bool IsBindless() const
Definition D3D12View.h:266
EReason
Definition D3D12View.h:226
FD3D12ResourceLocation * GetResourceLocation() const
Definition D3D12View.h:256
FD3D12OfflineDescriptor GetOfflineCpuHandle() const
Definition D3D12View.h:259
ERHIDescriptorHeapType const HeapType
Definition D3D12View.h:296
FD3D12Resource * GetResource() const
Definition D3D12View.h:254
FD3D12ViewSubset ViewSubset
Definition D3D12View.h:286
void UpdateBindlessSlot(FD3D12ContextArray const &Contexts)
Definition D3D12View.cpp:274
FRHIDescriptorHandle GetBindlessHandle() const
Definition D3D12View.h:265
void UpdateResourceInfo(FResourceInfo const &InResource, FNullDescPtr NullDescriptor)
Definition D3D12View.cpp:284
FResourceInfo ResourceInfo
Definition D3D12View.h:285
FD3D12BaseShaderResource * GetShaderResource() const
Definition D3D12View.h:255
void CreateView(FResourceInfo const &InResource, FNullDescPtr NullDescriptor)
Definition D3D12View.cpp:320
bool IsInitialized() const
Definition D3D12View.h:280
FD3D12OfflineDescriptor OfflineCpuHandle
Definition D3D12View.h:288
void UpdateView(FD3D12ContextArray const &Contexts, const FResourceInfo &InResource, FNullDescPtr NullDescriptor)
Definition D3D12View.cpp:326
virtual void UpdateDescriptor()=0
FD3D12ViewSubset const & GetViewSubset() const
Definition D3D12View.h:258
Definition RHICommandList.h:455
void EnqueueLambda(const TCHAR *LambdaName, LAMBDA &&Lambda)
Definition RHICommandList.h:585
RHI_API FGraphEventRef RHIThreadFence(bool bSetLockFence=false)
Definition RHICommandList.cpp:1610
bool IsTopOfPipe() const
Definition RHICommandList.h:658
Definition RHIResources.h:3304
Definition RHIResources.h:3294
Definition RHIResources.h:1265
Definition D3D12View.h:301
TDesc const & GetD3DDesc() const
Definition D3D12View.h:332
void UpdateView(FD3D12ContextArray const &Contexts, FResourceInfo const &InResource, TDesc const &InD3DViewDesc)
Definition D3D12View.h:316
TD3D12View(FD3D12Device *InDevice, ERHIDescriptorType InDescriptorType, ERHIDescriptorHeapType InHeapType, TD3D12View *FirstLinkedObject)
Definition D3D12View.h:305
TDesc D3DViewDesc
Definition D3D12View.h:303
virtual void ResourceRenamed(FD3D12ContextArray const &Contexts, FD3D12BaseShaderResource *InRenamedResource, FD3D12ResourceLocation *InNewResourceLocation) override
Definition D3D12View.h:323
void CreateView(FResourceInfo const &InResource, TDesc const &InD3DViewDesc)
Definition D3D12View.h:309
Definition RefCounting.h:454
Definition AdvancedWidgetsModule.cpp:13
Definition D3D12View.h:54
FD3D12OfflineDescriptor NullUAV
Definition D3D12View.h:57
FD3D12OfflineDescriptor NullCBV
Definition D3D12View.h:58
FD3D12OfflineDescriptor NullDSV
Definition D3D12View.h:59
TRefCountPtr< class FD3D12SamplerState > DefaultSampler
Definition D3D12View.h:61
FD3D12OfflineDescriptor NullSRV
Definition D3D12View.h:55
FD3D12OfflineDescriptor NullRTV
Definition D3D12View.h:56
Definition D3D12View.h:454
void CreateViews(FRHICommandListBase &RHICmdList)
Definition D3D12View.h:455
Definition D3D12Descriptors.h:252
Definition D3D12Residency.h:46
Definition D3D12Resources.h:134
Definition D3D12View.h:95
uint8 NumPlanes
Definition D3D12View.h:104
uint8 NumMips
Definition D3D12View.h:105
FD3D12ResourceLayout()=default
FD3D12ResourceLayout(FD3D12ResourceDesc const &ResourceDesc)
Definition D3D12View.h:97
uint16 NumArraySlices
Definition D3D12View.h:103
Definition D3D12Resources.h:884
Definition D3D12View.h:66
FD3D12ViewRange()=default
uint8 MostDetailedMip() const
Definition D3D12View.h:83
bool DoesNotOverlap(FD3D12ViewRange const &Other) const
Definition D3D12View.h:75
FRHIRange8 Plane
Definition D3D12View.h:90
FRHIRange16 Array
Definition D3D12View.h:89
FRHIRange8 Mip
Definition D3D12View.h:91
Definition D3D12View.h:109
bool IsWholeResource() const
Definition D3D12View.h:116
FD3D12ViewSubset()=default
FD3D12ResourceLayout Layout
Definition D3D12View.h:205
bool HasPlane(uint32 PlaneIndex) const
Definition D3D12View.h:124
FD3D12ViewRange Range
Definition D3D12View.h:206
FIterator end() const
Definition D3D12View.h:203
FD3D12ViewSubset SelectPlane(uint32 PlaneIndex) const
Definition D3D12View.h:129
FD3D12ViewSubset(FD3D12ResourceLayout const &Layout, FD3D12ViewRange const &Range)
Definition D3D12View.h:111
FIterator begin() const
Definition D3D12View.h:202
Definition D3D12View.h:232
FD3D12ResourceLocation * ResourceLocation
Definition D3D12View.h:234
FResourceInfo(FD3D12ResourceLocation *InResourceLocation)
Definition D3D12View.h:247
FD3D12BaseShaderResource * BaseResource
Definition D3D12View.h:233
FResourceInfo(FD3D12BaseShaderResource *InBaseResource)
Definition D3D12View.h:240
FD3D12Resource * Resource
Definition D3D12View.h:235
Definition RHIDefinitions.h:1401
bool IsValid() const
Definition RHIDefinitions.h:1420
Definition RHIResources.h:2648
FD3D12ShaderResourceView_RHI TConcreteType
Definition D3D12View.h:526
FD3D12UnorderedAccessView_RHI TConcreteType
Definition D3D12View.h:531
Definition D3D12RHICommon.h:374
bool IsInRange(uint32 Value) const
Definition RHIResources.h:2633
TType Num
Definition RHIResources.h:2618
TType ExclusiveLast() const
Definition RHIResources.h:2630
TType First
Definition RHIResources.h:2617