61#if D3D12RHI_USE_DUMMY_BACKBUFFER
64 checkSlow(CurrentBackBuffer_RenderThread);
65 return CurrentBackBuffer_RenderThread->Texture;
69#if D3D12RHI_SUPPORTS_UAV_BACKBUFFER
72 checkSlow(CurrentBackBuffer_RenderThread);
73 return CurrentBackBuffer_RenderThread->UAV;
80 return CurrentBackBuffer_RHIThread->Texture;
87#if D3D12RHI_USE_SDR_BACKBUFFER
90 return CurrentBackBuffer_RHIThread->TextureSDR;
94 return CurrentBackBuffer_RHIThread->Texture;
97#if D3D12RHI_USE_SDR_BACKBUFFER
117 return BackBuffers[ExpectedBackBufferIndex_RenderThread].GPUIndex;
124#if D3D12_VIEWPORT_EXPOSES_SWAP_CHAIN
134 virtual void*
GetNativeWindow(
void** AddParam =
nullptr)
const override {
return (
void*)WindowHandle; }
150 bool IsPresentAllowed();
152 FString GetStateString();
154#if D3D12RHI_USE_DUMMY_BACKBUFFER
170 void ResizeInternal();
171 void FinalDestroyInternal();
172 void ClearPresentQueue();
175 void InitializeBackBufferArrays();
178 bool CheckHDRSupport();
186#if D3D12RHI_USE_DXGI_COLOR_SPACE
193 CurrentBackBufferIndex_RHIThread =
Index % NumBackBuffers;
194 CurrentBackBuffer_RHIThread = &BackBuffers[CurrentBackBufferIndex_RHIThread];
199 ExpectedBackBufferIndex_RenderThread =
Index % NumBackBuffers;
200 CurrentBackBuffer_RenderThread = &BackBuffers[ExpectedBackBufferIndex_RenderThread];
204 const HWND WindowHandle;
208#if D3D12RHI_USE_SDR_BACKBUFFER
212 bool bIsFullscreen =
false;
213 bool bFullscreenLost =
false;
214 bool bIsValid =
true;
215 bool bAllowTearing =
true;
216 bool bNeedSwapChain =
false;
218 uint32 CheckedPresentFailureCounter = 0;
220#if D3D12_VIEWPORT_EXPOSES_SWAP_CHAIN
222#if DXGI_MAX_SWAPCHAIN_INTERFACE >= 2
225#if DXGI_MAX_SWAPCHAIN_INTERFACE >= 3
228#if DXGI_MAX_SWAPCHAIN_INTERFACE >= 4
232#if D3D12RHI_USE_DXGI_COLOR_SPACE
237 struct FBackBufferData
240#if D3D12RHI_USE_SDR_BACKBUFFER
244#if D3D12RHI_SUPPORTS_UAV_BACKBUFFER
252 uint32 NumBackBuffers = 0;
255#if D3D12RHI_USE_DUMMY_BACKBUFFER
260 FBackBufferData* CurrentBackBuffer_RHIThread =
nullptr;
261 FBackBufferData* CurrentBackBuffer_RenderThread =
nullptr;
263 uint32 CurrentBackBufferIndex_RHIThread = 0;
264 uint32 ExpectedBackBufferIndex_RenderThread = 0;
#define checkSlow(expr)
Definition AssertionMacros.h:332
#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
FInt32Point FIntPoint
Definition MathFwd.h:124
CORE_API bool IsInRenderingThread()
Definition ThreadingBase.cpp:273
FRWLock Lock
Definition UnversionedPropertySerialization.cpp:921
void EnsureColorSpace(IDXGISwapChain *SwapChain, EDisplayColorGamut DisplayGamut, EDisplayOutputFormat OutputDevice, EPixelFormat PixelFormat)
Definition WindowsD3D11Viewport.cpp:322
Definition D3D12RHICommon.h:54
Definition D3D12Adapter.h:136
Definition D3D12CommandContext.h:479
Definition D3D12Submission.h:76
Definition D3D12Texture.h:31
Definition D3D12View.h:506
Definition D3D12Viewport.h:24
void ConditionalResetSwapChain(bool bIgnoreFocus)
Definition WindowsD3D12Viewport.cpp:188
FD3D12Texture * GetSDRBackBuffer_RHIThread() const
Definition D3D12Viewport.h:83
virtual void SetCustomPresent(FRHICustomPresent *InCustomPresent) override
Definition D3D12Viewport.cpp:466
uint32 GetNumBackBuffers() const
Definition D3D12Viewport.h:136
void OnSuspendRendering()
Definition WindowsD3D12Viewport.cpp:540
virtual void IssueFrameEvent() override
Definition D3D12Viewport.cpp:666
void OnResumeRendering()
Definition WindowsD3D12Viewport.cpp:536
~FD3D12Viewport()
Definition D3D12Viewport.cpp:217
virtual void * GetNativeBackBufferTexture() const override
Definition D3D12Viewport.cpp:456
virtual FRHICustomPresent * GetCustomPresent() const override
Definition D3D12Viewport.cpp:471
bool CurrentOutputSupportsHDR() const
Definition WindowsD3D12Viewport.cpp:426
void Init()
Definition WindowsD3D12Viewport.cpp:43
FIntPoint GetSizeXY() const
Definition D3D12Viewport.h:53
void Resize(uint32 InSizeX, uint32 InSizeY, bool bInIsFullscreen, EPixelFormat PreferredPixelFormat)
Definition D3D12Viewport.cpp:292
virtual void * GetNativeSwapChain() const override
Definition D3D12Viewport.cpp:450
virtual void WaitForFrameEventCompletion() override
Definition D3D12Viewport.cpp:650
static FCriticalSection DXGIBackBufferLock
Definition D3D12Viewport.h:30
virtual void * GetNativeWindow(void **AddParam=nullptr) const override
Definition D3D12Viewport.h:134
void AdvanceExpectedBackBufferIndex_RenderThread()
Definition D3D12Viewport.cpp:477
const bool IsFullscreen() const
Definition D3D12Viewport.h:138
FD3D12Texture * GetBackBuffer_RenderThread() const
Definition D3D12Viewport.h:58
virtual void * GetNativeBackBufferRT() const override
Definition D3D12Viewport.cpp:461
FD3D12Texture * GetBackBuffer_RHIThread() const
Definition D3D12Viewport.h:77
Definition RHIResources.h:4294
Definition RHIResources.h:2153
Definition RHIResources.h:2515
virtual FRHITexture * GetOptionalSDRBackBuffer(FRHITexture *BackBuffer) const
Definition RHIResources.h:2560
Definition ScopeLock.h:141
Definition RHIContext.h:693
HWND__ * HWND
Definition MinimalWindowsApi.h:81
U16 Index
Definition radfft.cpp:71
FD3D12Viewport TConcreteType
Definition D3D12Viewport.h:285
Definition D3D12RHICommon.h:374