UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
D3D12TextureReference.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "D3D12RHIPrivate.h"
7
9
15
16class FD3D12RHITextureReference : public FD3D12DeviceChild, public FRHITextureReference, public FD3D12LinkedAdapterObject<FD3D12RHITextureReference>
17#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
19#endif
20{
21public:
25
26#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
27 // FD3D12ShaderResourceRenameListener
28 virtual void ResourceRenamed(FD3D12ContextArray const& Contexts, FD3D12BaseShaderResource* InRenamedResource, FD3D12ResourceLocation* InNewResourceLocation) final override;
29#endif // PLATFORM_SUPPORTS_BINDLESS_RENDERING
30
32
33#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
35#endif
36
38 {
39 FScopeLock Lock(&TextureReplaceListenersCS);
40 check(!TextureReplaceListeners.Contains(InListener));
41 TextureReplaceListeners.Add(InListener);
42 }
43
45 {
46 FScopeLock Lock(&TextureReplaceListenersCS);
47 uint32 Removed = TextureReplaceListeners.Remove(InListener);
48
49 checkf(Removed == 1, TEXT("Should have exactly one registered listener during remove (same listener shouldn't registered twice and we shouldn't call this if not registered"));
50 }
51
52private:
53
54 bool HasListeners() const
55 {
56 FScopeLock Lock(&TextureReplaceListenersCS);
57 return TextureReplaceListeners.Num() != 0;
58 }
59
60 void NotifyListeners(FD3D12ContextArray const& Contexts, FD3D12Texture* CurrentTexture, FD3D12Texture* NewTexture)
61 {
62 FScopeLock Lock(&TextureReplaceListenersCS);
63 for (FD3D12TextureReferenceReplaceListener* ReplaceListener : TextureReplaceListeners)
64 {
65 ReplaceListener->TextureReplaced(Contexts, this, CurrentTexture, NewTexture);
66 }
67 }
68
69 mutable FCriticalSection TextureReplaceListenersCS;
71};
72
73template<>
#define check(expr)
Definition AssertionMacros.h:314
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
#define TEXT(x)
Definition Platform.h:1272
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
FRWLock Lock
Definition UnversionedPropertySerialization.cpp:921
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition D3D12Resources.h:891
Definition D3D12CommandContext.h:1193
Definition D3D12RHICommon.h:78
Definition D3D12Device.h:176
Definition D3D12RHICommon.h:164
Definition D3D12TextureReference.h:20
~FD3D12RHITextureReference()
Definition D3D12TextureReference.cpp:26
void SwitchToNewTexture(FD3D12ContextArray const &Contexts, FD3D12Texture *InNewTexture)
Definition D3D12TextureReference.cpp:44
void RemoveReplaceListener(FD3D12TextureReferenceReplaceListener *InListener)
Definition D3D12TextureReference.h:44
void AddReplaceListener(FD3D12TextureReferenceReplaceListener *InListener)
Definition D3D12TextureReference.h:37
Definition D3D12Resources.h:641
Definition D3D12Texture.h:31
Definition RHITextureReference.h:8
Definition ScopeLock.h:141
Definition Array.h:670
SizeType Remove(const ElementType &Item)
Definition Array.h:3091
UE_REWRITE SizeType Num() const
Definition Array.h:1144
bool Contains(const ComparisonType &Item) const
Definition Array.h:1518
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
Definition D3D12Resources.h:884
Definition D3D12TextureReference.h:12
virtual void TextureReplaced(FD3D12ContextArray const &Contexts, FD3D12RHITextureReference *TextureReference, FD3D12Texture *CurrentTexture, FD3D12Texture *NewTexture)=0
Definition D3D12RHICommon.h:374