26#define UE_API OPENGLDRV_API
29#ifndef GL_TEXTURE_EXTERNAL_OES
30#define GL_TEXTURE_EXTERNAL_OES 0x8D65
33#define FOpenGLCachedUniformBuffer_Invalid 0xFFFFFFFF
37#if (RHI_NEW_GPU_PROFILER == 0)
77 static void PlatformStaticInitialize(
void* UserData);
80 const int32 BufferSize;
82 int32 CurrentTimestamp = -1;
84 int32 NumIssuedTimestamps = 0;
90 bool bIsTiming =
false;
113 return 1000000000ull;
127 delete DisjointQuery;
128 DisjointQuery =
nullptr;
132 bool bIsResultValid =
false;
142 : FGPUProfilerEventNode(InName,
InParent)
302 template<
typename TRHIType>
347#if ENABLE_LOW_LEVEL_MEM_TRACKER || UE_MEMORY_TRACE_ENABLED
445#if WITH_RHI_BREADCRUMBS
511 check(FOpenGL::SupportsUniformBuffers());
570#define RHITHREAD_GLTRACE 1
572 #define RHITHREAD_GLTRACE_BLOCKING QUICK_SCOPE_CYCLE_COUNTER(STAT_OGLRHIThread_Flush);
576 #define RHITHREAD_GLTRACE_BLOCKING
612 check(Parms.RHIBuffer != RHIBuffer || Parms.MipIndex != MipIndex || Parms.ArrayIndex != ArrayIndex);
630 check(!
"Mismatched RHI buffer locks.");
675 UE_API void EndFrameTick();
683 bool bRevertToSharedContextAfterDrawingViewport =
false;
703#if RHI_NEW_GPU_PROFILER
724 void RegisterGPUWork(
uint32 NumPrimitives = 0,
uint32 NumVertices = 0)
726 GPUProfilingData->RegisterGPUWork(NumPrimitives, NumVertices);
730 GPUProfilingData->RegisterGPUDispatch(
GroupCount);
738 UE_API void InitializeStateResources();
743 UE_API void SetupDispatch();
746 UE_API void BindPendingFramebuffer();
747 UE_API void BindPendingShaderState();
749 UE_API void UpdateRasterizerStateInOpenGLContext();
750 UE_API void UpdateDepthStencilStateInOpenGLContext();
751 UE_API void UpdateScissorRectInOpenGLContext();
752 UE_API void UpdateViewportInOpenGLContext();
754 template <
class ShaderType>
void SetResourcesFromTables(ShaderType*
Shader);
759 CommitGraphicsResourceTablesInner();
762 UE_API void CommitGraphicsResourceTablesInner();
764 UE_API void CommitNonComputeShaderConstants();
766 UE_API void SetPendingBlendStateForActiveRenderTargets();
768 template <
typename StateType>
770 UE_API void SetupTexturesForDraw();
772 UE_API void SetupUAVsForDraw();
798 FTextureLockTracker GLLockTracker;
800 class FOpenGLFenceKick
815 int32 DrawCounter = 0;
816 GLuint LastSeenFramebuffer = 0;
#define check(expr)
Definition AssertionMacros.h:314
#define checkNoEntry()
Definition AssertionMacros.h:316
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define FORCEINLINE_DEBUGGABLE
Definition CoreMiscDefines.h:74
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
#define UE_API
Definition OpenGLDrv.h:26
ERHIFeatureLevel::Type GRequestedFeatureLevel
Definition OpenGLDrv.cpp:30
#define VERIFY_GL_SCOPE(...)
Definition OpenGLUtil.h:133
ERHIAccess
Definition RHIAccess.h:11
EShaderFrequency
Definition RHIDefinitions.h:202
EUniformBufferUsage
Definition RHIDefinitions.h:536
ECubeFace
Definition RHIDefinitions.h:525
EResourceLockMode
Definition RHIDefinitions.h:785
@ RLM_WriteOnly
Definition RHIDefinitions.h:787
uint8 FUniformBufferStaticSlot
Definition RHIDefinitions.h:722
EUniformBufferValidation
Definition RHIDefinitions.h:546
ETextureCreateFlags
Definition RHIDefinitions.h:1091
ERenderQueryType
Definition RHIDefinitions.h:258
EPrimitiveType
Definition RHIDefinitions.h:822
@ PT_Num
Definition RHIDefinitions.h:846
ERHIPipeline
Definition RHIPipeline.h:13
uint32 Offset
Definition VulkanMemory.cpp:4033
uint32 Size
Definition VulkanMemory.cpp:4034
Definition DynamicRHI.h:206
Definition RHIResources.h:409
Definition Float16Color.h:13
Definition RHIResources.h:4572
Definition NameTypes.h:617
Definition OpenGLDrv.h:41
void InitResources()
Definition OpenGLQuery.cpp:590
uint64 GetTiming(bool bGetCurrentResultsAndBlock=false)
Definition OpenGLQuery.cpp:675
void EndTiming()
Definition OpenGLQuery.cpp:655
void StartTiming()
Definition OpenGLQuery.cpp:637
void ReleaseResources()
Definition OpenGLQuery.cpp:615
Definition OpenGLShaderResources.h:262
Definition OpenGLDrv.h:99
FOpenGLDisjointTimeStampQuery()
Definition OpenGLDrv.h:101
bool GetResult(uint64 *OutResult)
Definition OpenGLQuery.cpp:786
void Cleanup()
Definition OpenGLDrv.h:125
void StartTracking()
Definition OpenGLQuery.cpp:761
static uint64 GetTimingFrequency()
Definition OpenGLDrv.h:111
static bool IsSupported()
Definition OpenGLDrv.h:116
bool IsResultValid()
Definition OpenGLQuery.cpp:780
void EndTracking()
Definition OpenGLQuery.cpp:770
Definition OpenGLDrv.h:826
virtual bool SupportsDynamicReloading() override
Definition OpenGLDrv.h:830
virtual FDynamicRHI * CreateRHI(ERHIFeatureLevel::Type RequestedFeatureLevel=ERHIFeatureLevel::Num) override
Definition OpenGLDevice.cpp:1154
virtual bool IsSupported() override
Definition OpenGLDevice.cpp:1457
Definition OpenGLDrv.h:254
virtual UE_API FRHITextureInitializer RHICreateTextureInitializer(FRHICommandListBase &RHICmdList, const FRHITextureCreateDesc &CreateDesc) final override
Definition OpenGLTexture.cpp:1485
virtual UE_API void RHIEndRenderQuery(FRHIRenderQuery *RenderQuery) final override
Definition OpenGLQuery.cpp:464
virtual UE_API int32 RHIGetGLMinorVersion() const final override
Definition OpenGLDrv.cpp:38
virtual UE_API void RHIResizeViewport(FRHIViewport *Viewport, uint32 SizeX, uint32 SizeY, bool bIsFullscreen) final override
Definition OpenGLViewport.cpp:91
virtual UE_API void RHIBindDebugLabelName(FRHICommandListBase &RHICmdList, FRHITexture *Texture, const TCHAR *Name) final override
Definition OpenGLTexture.cpp:1835
virtual UE_API FStagingBufferRHIRef RHICreateStagingBuffer() final override
Definition OpenGLBuffer.cpp:308
UE_API void OnProgramDeletion(GLint ProgramResource)
Definition OpenGLCommands.cpp:2001
virtual UE_API FTextureRHIRef RHIAsyncCreateTexture2D(uint32 SizeX, uint32 SizeY, uint8 Format, uint32 NumMips, ETextureCreateFlags Flags, ERHIAccess InResourceState, void **InitialMipData, uint32 NumInitialMips, const TCHAR *DebugName, FGraphEventRef &OutCompletionEvent) final override
Definition OpenGLTexture.cpp:1527
virtual UE_API FGeometryShaderRHIRef RHICreateGeometryShader(TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
Definition OpenGLShaders.cpp:1125
virtual UE_API uint64 RHIGetMinimumAlignmentForBufferBackedSRV(EPixelFormat Format) final override
Definition OpenGLDevice.cpp:1451
virtual UE_API void RHISetViewport(float MinX, float MinY, float MinZ, float MaxX, float MaxY, float MaxZ) final override
Definition OpenGLCommands.cpp:309
virtual UE_API FTextureRHIRef AsyncReallocateTexture2D_RenderThread(class FRHICommandListImmediate &RHICmdList, FRHITexture *Texture2D, int32 NewMipCount, int32 NewSizeX, int32 NewSizeY, FThreadSafeCounter *RequestStatus) final override
Definition OpenGLTexture.cpp:1567
virtual UE_API void RHISetStreamSource(uint32 StreamIndex, FRHIBuffer *VertexBuffer, uint32 Offset) final override
Definition OpenGLCommands.cpp:193
static FOpenGLTexture * ResourceCast(FRHITexture *TextureRHI)
Definition OpenGLDrv.h:308
virtual UE_API void RHISetComputeShader(FRHIComputeShader *ComputeShader) final override
Definition OpenGLCommands.cpp:2691
virtual UE_API void RHIAcquireThreadOwnership() final override
Definition OpenGLDevice.cpp:1423
UE_API void SetRenderTargetsAndClear(const FRHISetRenderTargetsInfo &RenderTargetsInfo)
Definition OpenGLCommands.cpp:1746
virtual UE_API bool RHIGetAvailableResolutions(FScreenResolutionArray &Resolutions, bool bIgnoreRefreshRate) final override
Definition OpenGLViewport.cpp:54
virtual UE_API void RHIBeginRenderQuery(FRHIRenderQuery *RenderQuery) final override
Definition OpenGLQuery.cpp:459
virtual UE_API IRHIComputeContext * RHIGetCommandContext(ERHIPipeline Pipeline, FRHIGPUMask GPUMask) final override
Definition OpenGLCommands.cpp:2793
virtual UE_API FTextureRHIRef RHIAsyncReallocateTexture2D(FRHITexture *Texture2D, int32 NewMipCount, int32 NewSizeX, int32 NewSizeY, FThreadSafeCounter *RequestStatus) final override
Definition OpenGLTexture.cpp:1572
virtual UE_API FViewportRHIRef RHICreateViewport(void *WindowHandle, uint32 SizeX, uint32 SizeY, bool bIsFullscreen, EPixelFormat PreferredPixelFormat) final override
Definition OpenGLViewport.cpp:81
virtual UE_API void RHIDrawIndexedPrimitiveIndirect(FRHIBuffer *IndexBuffer, FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset) final override
Definition OpenGLCommands.cpp:2369
UE_API void InitializeGLTexture(FOpenGLTexture *Texture, const void *BulkDataPtr, uint64 BulkDataSize)
Definition OpenGLTexture.cpp:515
virtual UE_API FUnorderedAccessViewRHIRef RHICreateUnorderedAccessView(class FRHICommandListBase &RHICmdList, FRHIViewableResource *Resource, FRHIViewDesc const &ViewDesc) final override
Definition OpenGLUAV.cpp:375
virtual UE_API bool RHISupportsFramebufferSRGBEnable() const final override
Definition OpenGLDrv.cpp:43
virtual UE_API void RHIDrawPrimitive(uint32 BaseVertexIndex, uint32 NumPrimitives, uint32 NumInstances) final override
Definition OpenGLCommands.cpp:2215
virtual UE_API void RHINextSubpass() final override
Definition OpenGLRenderTarget.cpp:1128
virtual UE_API FRHICalcTextureSizeResult RHICalcTexturePlatformSize(FRHITextureDesc const &Desc, uint32 FirstMipIndex) final override
Definition OpenGLTexture.cpp:135
virtual UE_API FTextureRHIRef RHICreateTexture2DArrayFromResource(EPixelFormat Format, uint32 SizeX, uint32 SizeY, uint32 ArraySize, uint32 NumMips, uint32 NumSamples, uint32 NumSamplesTileMem, const FClearValueBinding &ClearValueBinding, GLuint Resource, ETextureCreateFlags Flags) final override
Definition OpenGLTexture.cpp:1978
UE_API void ResolveTexture(FOpenGLTexture *Texture, uint32 MipIndex, uint32 ArrayIndex)
Definition OpenGLTexture.cpp:825
virtual UE_API void RHIReadSurfaceFloatData(FRHITexture *Texture, FIntRect Rect, TArray< FFloat16Color > &OutData, ECubeFace CubeFace, int32 ArrayIndex, int32 MipIndex) final override
Definition OpenGLRenderTarget.cpp:856
virtual UE_API void RHIEndRenderPass() final override
Definition OpenGLRenderTarget.cpp:1081
virtual UE_API void RHISubmitCommandLists(FRHISubmitCommandListsArgs &&Args) final override
Definition OpenGLCommands.cpp:2816
virtual UE_API void RHIDispatchComputeShader(uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ) final override
Definition OpenGLCommands.cpp:2716
virtual UE_API bool RHIMatchPrecachePSOInitializers(const FGraphicsPipelineStateInitializer &LHS, const FGraphicsPipelineStateInitializer &RHS) final override
Definition OpenGLDrv.cpp:228
virtual UE_API void RHISetDepthStencilState(FRHIDepthStencilState *NewState, uint32 StencilRef) final override
Definition OpenGLCommands.cpp:1243
virtual UE_API FTextureRHIRef RHICreateTextureCubeFromResource(EPixelFormat Format, uint32 Size, bool bArray, uint32 ArraySize, uint32 NumMips, uint32 NumSamples, uint32 NumSamplesTileMem, const FClearValueBinding &ClearValueBinding, GLuint Resource, ETextureCreateFlags Flags) final override
Definition OpenGLTexture.cpp:1991
virtual UE_API FSamplerStateRHIRef RHICreateSamplerState(const FSamplerStateInitializerRHI &Initializer) final override
Definition OpenGLState.cpp:230
virtual UE_API bool RHIGetRenderQueryResult(FRHIRenderQuery *RenderQuery, uint64 &OutResult, bool bWait, uint32 GPUIndex=INDEX_NONE) final override
Definition OpenGLQuery.cpp:470
virtual UE_API void RHIMapStagingSurface(FRHITexture *Texture, FRHIGPUFence *Fence, void *&OutData, int32 &OutWidth, int32 &OutHeight, uint32 GPUIndex=0) final override
Definition OpenGLRenderTarget.cpp:844
UE_API void ClearCachedAttributeState(int32 PositionAttrib, int32 TexCoordsAttrib)
Definition OpenGLDevice.cpp:124
virtual UE_API class IRHICommandContext * RHIGetDefaultContext() final override
Definition OpenGLCommands.cpp:2788
virtual UE_API void RHIBeginRenderPass(const FRHIRenderPassInfo &InInfo, const TCHAR *InName) final override
Definition OpenGLRenderTarget.cpp:1051
static auto * ResourceCast(TRHIType *Resource)
Definition OpenGLDrv.h:303
virtual UE_API void RHIEndDrawingViewport(FRHIViewport *Viewport, bool bPresent, bool bLockToVsync) final override
Definition OpenGLViewport.cpp:112
virtual UE_API EPixelFormat RHIPreferredPixelFormatHint(EPixelFormat PreferredPixelFormat) final override
Definition OpenGLViewport.cpp:99
virtual const TCHAR * GetName() override
Definition OpenGLDrv.h:300
virtual UE_API void Shutdown() override
Definition OpenGLDevice.cpp:1361
UE_API void CachedSetupUAVStage(GLint UAVIndex, GLenum Format, GLuint Resource, bool bLayered, GLint Layer, GLenum Access, GLint Level)
Definition OpenGLCommands.cpp:750
virtual UE_API void RHISetShaderParameters(FRHIGraphicsShader *Shader, TConstArrayView< uint8 > InParametersData, TConstArrayView< FRHIShaderParameter > InParameters, TConstArrayView< FRHIShaderParameterResource > InResourceParameters, TConstArrayView< FRHIShaderParameterResource > InBindlessParameters) final override
Definition OpenGLCommands.cpp:1176
UE_API void SetRenderTargets(uint32 NumSimultaneousRenderTargets, const FRHIRenderTargetView *NewRenderTargets, const FRHIDepthRenderTargetView *NewDepthStencilTarget)
Definition OpenGLCommands.cpp:1626
virtual UE_API FUniformBufferRHIRef RHICreateUniformBuffer(const void *Contents, const FRHIUniformBufferLayout *Layout, EUniformBufferUsage Usage, EUniformBufferValidation Validation) final override
Definition OpenGLUniformBuffer.cpp:668
virtual UE_API void RHISetShaderUnbinds(FRHIComputeShader *Shader, TConstArrayView< FRHIShaderParameterUnbind > InUnbinds) final override
Definition OpenGLCommands.cpp:1225
virtual UE_API void RHIEnableDepthBoundsTest(bool bEnable) final override
Definition OpenGLCommands.cpp:2765
UE_API void SetCustomPresent(class FRHICustomPresent *InCustomPresent)
Definition OpenGLDevice.cpp:1445
virtual UE_API void RHIWriteGPUFence_TopOfPipe(FRHICommandListBase &RHICmdList, FRHIGPUFence *FenceRHI) final override
Definition OpenGLQuery.cpp:910
UE_API void UpdateSRV(FOpenGLShaderResourceView *SRV)
Definition OpenGLCommands.cpp:845
virtual UE_API void * RHIGetNativeInstance() final override
Definition OpenGLDevice.cpp:1440
virtual UE_API void RHIClearUAVFloat(FRHIUnorderedAccessView *UnorderedAccessViewRHI, const FVector4f &Values) final override
Definition OpenGLUAV.cpp:273
virtual UE_API void RHIReadSurfaceData(FRHITexture *Texture, FIntRect Rect, TArray< FColor > &OutData, FReadSurfaceDataFlags InFlags) final override
Definition OpenGLRenderTarget.cpp:737
virtual UE_API void RHIDrawIndexedIndirect(FRHIBuffer *IndexBufferRHI, FRHIBuffer *ArgumentsBufferRHI, int32 DrawArgumentsIndex, uint32 NumInstances) final override
Definition OpenGLCommands.cpp:2286
virtual UE_API void RHITick(float DeltaTime) final override
Definition OpenGLViewport.cpp:104
virtual UE_API void RHICopyTexture(FRHITexture *SourceTexture, FRHITexture *DestTexture, const FRHICopyTextureInfo &CopyInfo) final override
Definition OpenGLTexture.cpp:1849
virtual UE_API GLuint RHIGetResource(FRHITexture *InTexture) const final override
Definition OpenGLDrv.cpp:48
UE_API void InitializeGLTextureInternal(FOpenGLTexture *Texture, void const *BulkDataPtr, uint64 BulkDataSize)
Definition OpenGLTexture.cpp:576
virtual UE_API void RHIUnlockTexture(FRHICommandListImmediate &RHICmdList, const FRHILockTextureArgs &Arguments) final override
Definition OpenGLTexture.cpp:2057
virtual UE_API bool RHIGetTextureMemoryVisualizeData(FColor *TextureData, int32 SizeX, int32 SizeY, int32 Pitch, int32 PixelSize) final override
Definition OpenGLTexture.cpp:170
virtual UE_API void RHIMapStagingSurface_RenderThread(class FRHICommandListImmediate &RHICmdList, FRHITexture *Texture, uint32 GPUIndex, FRHIGPUFence *Fence, void *&OutData, int32 &OutWidth, int32 &OutHeight) final override
Definition OpenGLRenderTarget.cpp:810
virtual UE_API FRHILockTextureResult RHILockTexture(FRHICommandListImmediate &RHICmdList, const FRHILockTextureArgs &Arguments) final override
Definition OpenGLTexture.cpp:2025
UE_API void OnBufferDeletion(GLenum Type, GLuint BufferResource)
Definition OpenGLCommands.cpp:2010
UE_API void LinkComputeProgram(FRHIComputeShader *ComputeShaderRHI)
Definition OpenGLShaders.cpp:2565
virtual UE_API void RHISetStencilRef(uint32 StencilRef) final override
Definition OpenGLCommands.cpp:1251
FORCEINLINE void CachedSetupTextureStage(GLint TextureIndex, GLenum Target, GLuint Resource, GLint BaseMip, GLint NumMips)
Definition OpenGLDrv.h:490
virtual UE_API void RHIBeginTransitions(TArrayView< const FRHITransition * > Transitions) override final
Definition OpenGLRenderTarget.cpp:1142
virtual UE_API void RHIBlockUntilGPUIdle() final override
Definition OpenGLCommands.cpp:2620
virtual UE_API void RHIGenerateMips(FRHITexture *Texture) final override
Definition OpenGLTexture.cpp:1534
virtual UE_API void RHIDrawPrimitiveIndirect(FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset) final override
Definition OpenGLCommands.cpp:2251
void DiscardRenderTargets(bool Depth, bool Stencil, uint32 ColorBitMask)
Definition OpenGLCommands.cpp:1696
virtual UE_API void RHIDrawIndexedPrimitive(FRHIBuffer *IndexBuffer, int32 BaseVertexIndex, uint32 FirstInstance, uint32 NumVertices, uint32 StartIndex, uint32 NumPrimitives, uint32 NumInstances) final override
Definition OpenGLCommands.cpp:2324
virtual UE_API void RHISetStaticUniformBuffer(FUniformBufferStaticSlot Slot, FRHIUniformBuffer *Buffer) final override
Definition OpenGLCommands.cpp:910
~FOpenGLDynamicRHI()
Definition OpenGLDrv.h:266
UE_API void BindUniformBuffer(EShaderFrequency ShaderFrequency, uint32 BufferIndex, FRHIUniformBuffer *BufferRHI)
Definition OpenGLCommands.cpp:962
virtual UE_API void RHIAliasTextureResources(FTextureRHIRef &DestTextureRHI, FTextureRHIRef &SrcTextureRHI) final override
Definition OpenGLTexture.cpp:2007
virtual UE_API FTextureRHIRef RHIGetViewportBackBuffer(FRHIViewport *Viewport) final override
Definition OpenGLViewport.cpp:175
virtual UE_API void RHIFlushResources() final override
Definition OpenGLDevice.cpp:1418
UE_API void InternalSetShaderBufferUAV(GLint UAVIndex, GLuint Resource)
Definition OpenGLCommands.cpp:663
virtual UE_API uint64 RHIComputePrecachePSOHash(const FGraphicsPipelineStateInitializer &Initializer) final override
Definition OpenGLDrv.cpp:217
virtual UE_API void RHIDispatchIndirectComputeShader(FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset) final override
Definition OpenGLCommands.cpp:2738
virtual UE_API FComputeShaderRHIRef RHICreateComputeShader(TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
Definition OpenGLShaders.cpp:2603
virtual UE_API void RHISetExternalGPUTime(uint64 InExternalGPUTime) final override
Definition OpenGLDrv.cpp:59
UE_API void InternalSetShaderImageUAV(GLint UAVIndex, GLenum Format, GLuint Resource, bool bLayered, GLint Layer, GLenum Access, GLint Level)
Definition OpenGLCommands.cpp:652
virtual UE_API FPixelShaderRHIRef RHICreatePixelShader(TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
Definition OpenGLShaders.cpp:1120
virtual UE_API void UnlockStagingBuffer_RenderThread(class FRHICommandListImmediate &RHICmdList, FRHIStagingBuffer *StagingBuffer) final override
Definition OpenGLBuffer.cpp:402
UE_API void CachedSetupTextureStageInner(GLint TextureIndex, GLenum Target, GLuint Resource, GLint BaseMip, GLint NumMips)
Definition OpenGLCommands.cpp:389
virtual UE_API void RHIEndRenderQuery_TopOfPipe(FRHICommandListBase &RHICmdList, FRHIRenderQuery *RenderQuery) override final
Definition OpenGLQuery.cpp:450
virtual UE_API void RHIUpdateTexture3D(FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion3D &UpdateRegion, uint32 SourceRowPitch, uint32 SourceDepthPitch, const uint8 *SourceData) final override
Definition OpenGLTexture.cpp:1714
virtual UE_API void RHIReleaseThreadOwnership() final override
Definition OpenGLDevice.cpp:1429
UE_API void InternalSetSamplerStates(GLint TextureIndex, FOpenGLSamplerState *SamplerState)
Definition OpenGLCommands.cpp:384
virtual UE_API void RHICopyBufferRegion(FRHIBuffer *DestBuffer, uint64 DstOffset, FRHIBuffer *SourceBuffer, uint64 SrcOffset, uint64 NumBytes) final override
Definition OpenGLBuffer.cpp:295
virtual UE_API FBlendStateRHIRef RHICreateBlendState(const FBlendStateInitializerRHI &Initializer) final override
Definition OpenGLState.cpp:403
virtual UE_API bool RHIIsValidTexture(GLuint InTexture) const final override
Definition OpenGLDrv.cpp:54
virtual UE_API void RHISetMultipleViewports(uint32 Count, const FViewportBounds *Data) final override
Definition OpenGLCommands.cpp:2760
virtual UE_API void RHIGetSupportedResolution(uint32 &Width, uint32 &Height) final override
Definition OpenGLViewport.cpp:49
virtual FGraphicsPipelineStateRHIRef RHICreateGraphicsPipelineState(const FGraphicsPipelineStateInitializer &Initializer) override
Definition OpenGLDrv.h:639
UE_API void PurgeFramebufferFromCaches(GLuint Framebuffer)
Definition OpenGLRenderTarget.cpp:420
virtual UE_API void RHISetUniformBufferDynamicOffset(FUniformBufferStaticSlot Slot, uint32 Offset) final override
Definition OpenGLCommands.cpp:915
virtual FBoundShaderStateRHIRef RHICreateBoundShaderState(FRHIVertexDeclaration *VertexDeclarationRHI, FRHIVertexShader *VertexShaderRHI, FRHIPixelShader *PixelShaderRHI, FRHIGeometryShader *GeometryShaderRHI) final override
Definition OpenGLDrv.h:648
virtual UE_API void RHIWriteGPUFence(FRHIGPUFence *FenceRHI) final override
Definition OpenGLQuery.cpp:915
virtual UE_API void RHISetScissorRect(bool bEnable, uint32 MinX, uint32 MinY, uint32 MaxX, uint32 MaxY) final override
Definition OpenGLCommands.cpp:322
virtual UE_API void RHIClearUAVUint(FRHIUnorderedAccessView *UnorderedAccessViewRHI, const FUintVector4 &Values) final override
Definition OpenGLUAV.cpp:322
virtual UE_API uint64 RHIComputeStatePrecachePSOHash(const FGraphicsPipelineStateInitializer &Initializer) final override
Definition OpenGLDrv.cpp:188
virtual UE_API FVertexShaderRHIRef RHICreateVertexShader(TArrayView< const uint8 > Code, const FSHAHash &Hash) final override
Definition OpenGLShaders.cpp:1115
UE_API void InvalidateTextureResourceInCache(GLuint Resource)
Definition OpenGLTexture.cpp:1785
UE_API FOpenGLDynamicRHI()
Definition OpenGLDevice.cpp:1161
UE_API void SetShaderParametersCommon(EShaderFrequency ShaderFrequency, TConstArrayView< uint8 > InParametersData, TConstArrayView< FRHIShaderParameter > InParameters, TConstArrayView< FRHIShaderParameterResource > InResourceParameters)
Definition OpenGLCommands.cpp:1130
virtual UE_API void RHIUpdateUniformBuffer(FRHICommandListBase &RHICmdList, FRHIUniformBuffer *UniformBufferRHI, const void *Contents) final override
Definition OpenGLUniformBuffer.cpp:805
UE_API GLuint GetOpenGLFramebuffer(uint32 NumSimultaneousRenderTargets, FOpenGLTexture **RenderTargets, const uint32 *ArrayIndices, const uint32 *MipmapLevels, FOpenGLTexture *DepthStencilTarget)
Definition OpenGLRenderTarget.cpp:135
virtual void RHISetBlendFactor(const FLinearColor &BlendFactor) final override
Definition OpenGLDrv.h:430
UE_API void Cleanup()
Definition OpenGLDevice.cpp:1378
virtual UE_API void RHIFinalizeContext(FRHIFinalizeContextArgs &&Args, TRHIPipelineArray< IRHIPlatformCommandList * > &Output) final override
Definition OpenGLCommands.cpp:2799
static FOpenGLDynamicRHI & Get()
Definition OpenGLDrv.h:258
virtual UE_API FDepthStencilStateRHIRef RHICreateDepthStencilState(const FDepthStencilStateInitializerRHI &Initializer) final override
Definition OpenGLState.cpp:362
FOpenGLSamplerState * GetPointSamplerState() const
Definition OpenGLDrv.h:564
virtual UE_API void RHIUnmapStagingSurface(FRHITexture *Texture, uint32 GPUIndex=0) final override
Definition OpenGLRenderTarget.cpp:850
virtual UE_API void RHISetRasterizerState(FRHIRasterizerState *NewState) final override
Definition OpenGLCommands.cpp:203
virtual UE_API void RHIUpdateTexture2D(FRHICommandListBase &RHICmdList, FRHITexture *Texture, uint32 MipIndex, const struct FUpdateTextureRegion2D &UpdateRegion, uint32 SourcePitch, const uint8 *SourceData) final override
Definition OpenGLTexture.cpp:1616
virtual UE_API void RHIUnmapStagingSurface_RenderThread(class FRHICommandListImmediate &RHICmdList, FRHITexture *Texture, uint32 GPUIndex) final override
Definition OpenGLRenderTarget.cpp:833
virtual UE_API void RHIGetTextureMemoryStats(FTextureMemoryStats &OutStats) final override
Definition OpenGLTexture.cpp:148
virtual UE_API void RHIPostExternalCommandsReset() final override
Definition OpenGLCommands.cpp:2860
void CachedBindBuffer(GLenum Type, GLuint Buffer)
Definition OpenGLDrv.h:521
virtual UE_API void * RHIGetNativeDevice() final override
Definition OpenGLDevice.cpp:1435
virtual UE_API void RHIAdvanceFrameForGetViewportBackBuffer(FRHIViewport *Viewport, bool bPresent) final override
Definition OpenGLViewport.cpp:181
virtual UE_API void RHISetBoundShaderState(FRHIBoundShaderState *BoundShaderState) final override
Definition OpenGLCommands.cpp:361
virtual UE_API FRHIBufferInitializer RHICreateBufferInitializer(FRHICommandListBase &RHICmdList, const FRHIBufferCreateDesc &CreateDesc) final override
Definition OpenGLBuffer.cpp:213
virtual UE_API FGPUFenceRHIRef RHICreateGPUFence(const FName &Name) final override
Definition OpenGLQuery.cpp:920
virtual UE_API void RHIReplaceResources(FRHICommandListBase &RHICmdList, TArray< FRHIResourceReplaceInfo > &&ReplaceInfos) final override
Definition OpenGLDrv.cpp:805
virtual UE_API FRenderQueryRHIRef RHICreateRenderQuery(ERenderQueryType QueryType) final override
Definition OpenGLQuery.cpp:431
virtual UE_API void RHISetGraphicsPipelineState(FRHIGraphicsPipelineState *GraphicsState, uint32 StencilRef, bool bApplyAdditionalState) final override
Definition OpenGLCommands.cpp:2649
virtual UE_API void RHIBeginRenderQuery_TopOfPipe(FRHICommandListBase &RHICmdList, FRHIRenderQuery *RenderQuery) override final
Definition OpenGLQuery.cpp:442
UE_API void InternalSetShaderTexture(FOpenGLTexture *Texture, FOpenGLShaderResourceView *SRV, GLint TextureIndex, GLenum Target, GLuint Resource, int NumMips, int LimitMip)
Definition OpenGLCommands.cpp:372
virtual UE_API void RHISetDepthBounds(float MinDepth, float MaxDepth) final override
Definition OpenGLCommands.cpp:2780
virtual UE_API uint32 RHIComputeMemorySize(FRHITexture *TextureRHI) final override
Definition OpenGLTexture.cpp:1556
virtual UE_API void RHICopyToStagingBuffer(FRHIBuffer *SourceBufferRHI, FRHIStagingBuffer *DestinationStagingBufferRHI, uint32 InOffset, uint32 InNumBytes) final override
Definition OpenGLCommands.cpp:2823
virtual UE_API FShaderResourceViewRHIRef RHICreateShaderResourceView(class FRHICommandListBase &RHICmdList, FRHIViewableResource *Resource, FRHIViewDesc const &ViewDesc) final override
Definition OpenGLUAV.cpp:370
virtual UE_API int32 RHIGetGLMajorVersion() const final override
Definition OpenGLDrv.cpp:33
virtual UE_API void RHIRead3DSurfaceFloatData(FRHITexture *Texture, FIntRect Rect, FIntPoint ZMinMax, TArray< FFloat16Color > &OutData) final override
Definition OpenGLRenderTarget.cpp:933
virtual UE_API FTextureRHIRef RHICreateTexture2DFromResource(EPixelFormat Format, uint32 SizeX, uint32 SizeY, uint32 NumMips, uint32 NumSamples, uint32 NumSamplesTileMem, const FClearValueBinding &ClearValueBinding, GLuint Resource, ETextureCreateFlags Flags) final override
Definition OpenGLTexture.cpp:1940
UE_API void SetShaderUnbindsCommon(EShaderFrequency ShaderFrequency, TConstArrayView< FRHIShaderParameterUnbind > InUnbinds)
Definition OpenGLCommands.cpp:1204
virtual UE_API void RHIUnlockStagingBuffer(FRHIStagingBuffer *StagingBuffer) final override
Definition OpenGLBuffer.cpp:382
virtual UE_API FTextureRHIRef RHICreateAliasedTexture(FTextureRHIRef &SourceTexture) final override
Definition OpenGLTexture.cpp:2019
virtual UE_API FRasterizerStateRHIRef RHICreateRasterizerState(const FRasterizerStateInitializerRHI &Initializer) final override
Definition OpenGLState.cpp:339
virtual UE_API void RHIEndTransitions(TArrayView< const FRHITransition * > Transitions) override final
Definition OpenGLRenderTarget.cpp:1146
virtual UE_API void * LockStagingBuffer_RenderThread(class FRHICommandListImmediate &RHICmdList, FRHIStagingBuffer *StagingBuffer, FRHIGPUFence *Fence, uint32 Offset, uint32 SizeRHI) final override
Definition OpenGLBuffer.cpp:388
virtual UE_API void RHISetStaticUniformBuffers(const FUniformBufferStaticBindings &InUniformBuffers) final override
Definition OpenGLCommands.cpp:900
UE_API void InvalidateUAVResourceInCache(GLuint Resource)
Definition OpenGLTexture.cpp:1810
virtual UE_API void Init() override
Definition OpenGLDevice.cpp:1299
virtual UE_API void RHIEndFrame(const FRHIEndFrameArgs &Args) final override
Definition OpenGLDevice.cpp:93
virtual UE_API void UnlockBuffer_BottomOfPipe(FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer) final override
Definition OpenGLBuffer.cpp:285
void CachedBindUniformBuffer(GLuint Buffer)
Definition OpenGLDrv.h:509
virtual UE_API void * LockBuffer_BottomOfPipe(FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, uint32 Offset, uint32 Size, EResourceLockMode LockMode) final override
Definition OpenGLBuffer.cpp:265
virtual UE_API void * RHILockStagingBuffer(FRHIStagingBuffer *StagingBuffer, FRHIGPUFence *Fence, uint32 Offset, uint32 SizeRHI) final override
Definition OpenGLBuffer.cpp:376
virtual UE_API void RHISetBlendState(FRHIBlendState *NewState, const FLinearColor &BlendFactor) final override
Definition OpenGLCommands.cpp:1619
virtual UE_API FVertexDeclarationRHIRef RHICreateVertexDeclaration(const FVertexDeclarationElementList &Elements) final override
Definition OpenGLVertexDeclaration.cpp:156
Definition OpenGLDrv.h:175
~FOpenGLEventNodeFrame()
Definition OpenGLDrv.h:184
void EndFrame() override
Definition OpenGLDrv.cpp:499
FOpenGLEventNodeFrame()
Definition OpenGLDrv.h:177
void StartFrame() override
Definition OpenGLDrv.cpp:491
FOpenGLDisjointTimeStampQuery DisjointQuery
Definition OpenGLDrv.h:204
virtual float GetRootTimingResults() override
Definition OpenGLDrv.cpp:506
virtual void LogDisjointQuery() override
Definition OpenGLDrv.cpp:520
FOpenGLBufferedGPUTiming RootEventTiming
Definition OpenGLDrv.h:201
Definition OpenGLDrv.h:138
FOpenGLBufferedGPUTiming Timing
Definition OpenGLDrv.h:170
virtual ~FOpenGLEventNode()
Definition OpenGLDrv.h:149
virtual void StartTiming() override
Definition OpenGLDrv.h:160
FOpenGLEventNode(const TCHAR *InName, FGPUProfilerEventNode *InParent)
Definition OpenGLDrv.h:141
float GetTiming() override
Definition OpenGLDrv.cpp:536
virtual void StopTiming() override
Definition OpenGLDrv.h:165
Definition OpenGLResources.h:1180
Definition OpenGLState.h:67
Definition OpenGLResources.h:1324
Definition OpenGLResources.h:918
Definition OpenGLResources.h:1365
Definition RHIResources.h:696
Definition RHIResources.h:733
Definition RHIResources.h:1581
Definition RHICommandList.h:455
Definition RHIResources.h:1018
Definition RHIResources.h:4294
Definition RHIResources.h:4073
Definition RHIResources.h:686
Definition RHIResources.h:2387
Definition RHIResources.h:978
Definition RHIResources.h:5097
Definition RHIResources.h:1058
Definition RHIResources.h:947
Definition RHIResources.h:972
Definition RHIResources.h:679
Definition RHIResources.h:2444
Definition RHIResources.h:4018
Definition RHIResources.h:4167
Definition RHIResources.h:3981
Definition RHIResources.h:2153
virtual void * GetTextureBaseRHI()
Definition RHIResources.h:2207
Definition RHIResources.h:3294
Definition RHIResources.h:725
Definition RHIResources.h:954
Definition RHIResources.h:1265
Definition RHIResources.h:2515
Definition SecureHash.h:226
Definition ThreadSafeCounter.h:14
Definition DynamicRHI.h:1472
Definition RHIContext.h:903
Definition RHIContext.h:693
Definition RHIContext.h:257
UE::RHI::GPUProfiler::FEvent::FStats StatEvent
Definition RHIContext.h:567
Definition RHI.Build.cs:8
Definition ArrayView.h:139
Definition BoundShaderStateHistory.h:14
Definition RenderResource.h:543
Definition IndirectArray.h:20
Definition UnrealString.h.inl:34
Definition OpenGLResources.h:116
Definition RHIPipeline.h:55
UE_FORCEINLINE_HINT ReferencedType * GetReference() const
Definition RefCounting.h:584
Type
Definition RHIFeatureLevel.h:20
@ Num
Definition RHIFeatureLevel.h:54
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
static FORCEINLINE bool SupportsDisjointTimeQueries()
Definition AndroidOpenGL.h:61
Definition RHIResources.h:246
TArray< FTextureStage > Textures
Definition OpenGLState.h:281
Definition OpenGLState.h:316
GLuint ElementArrayBufferBound
Definition OpenGLState.h:336
GLuint StorageBufferBound
Definition OpenGLState.h:337
GLuint ArrayBufferBound
Definition OpenGLState.h:335
GLuint UniformBufferBound
Definition OpenGLState.h:339
GLuint PixelUnpackBufferBound
Definition OpenGLState.h:338
Definition OpenGLDrv.h:582
uint32 Stride
Definition OpenGLDrv.h:588
uint32 MipIndex
Definition OpenGLDrv.h:585
void * RHIBuffer
Definition OpenGLDrv.h:583
EResourceLockMode LockMode
Definition OpenGLDrv.h:589
uint32 BufferSize
Definition OpenGLDrv.h:587
FORCEINLINE_DEBUGGABLE FLockParams(void *InRHIBuffer, void *InBuffer, uint32 InArrayIndex, uint32 InMipIndex, uint32 InStride, uint32 InBufferSize, EResourceLockMode InLockMode)
Definition OpenGLDrv.h:591
uint32 ArrayIndex
Definition OpenGLDrv.h:586
void * Buffer
Definition OpenGLDrv.h:584
Definition OpenGLDrv.h:580
FORCEINLINE_DEBUGGABLE void Lock(void *RHIBuffer, void *Buffer, uint32 ArrayIndex, uint32 MipIndex, uint32 Stride, uint32 SizeRHI, EResourceLockMode LockMode)
Definition OpenGLDrv.h:607
FTextureLockTracker()
Definition OpenGLDrv.h:604
FORCEINLINE_DEBUGGABLE FLockParams Unlock(void *RHIBuffer, uint32 ArrayIndex, uint32 MipIndex)
Definition OpenGLDrv.h:618
TArray< FLockParams, TInlineAllocator< 16 > > OutstandingLocks
Definition OpenGLDrv.h:602
Definition OpenGLDrv.h:212
FOpenGLDisjointTimeStampQuery DisjointGPUFrameTimeQuery[MAX_GPUFRAMEQUERIES]
Definition OpenGLDrv.h:218
virtual FGPUProfilerEventNode * CreateEventNode(const TCHAR *InName, FGPUProfilerEventNode *InParent) override
Definition OpenGLDrv.h:236
TIndirectArray< FOpenGLEventNodeFrame > GPUHitchEventNodeFrames
Definition OpenGLDrv.h:227
void Cleanup()
Definition OpenGLDrv.cpp:478
void EndFrame()
Definition OpenGLDrv.cpp:306
FOpenGLBufferedGPUTiming FrameTiming
Definition OpenGLDrv.h:214
FOpenGLGPUProfiler()
Definition OpenGLDrv.h:229
int32 NestedFrameCount
Definition OpenGLDrv.h:222
uint32 ExternalGPUTime
Definition OpenGLDrv.h:224
int32 CurrentGPUFrameQueryIndex
Definition OpenGLDrv.h:219
static const int MAX_GPUFRAMEQUERIES
Definition OpenGLDrv.h:217
void BeginFrame()
Definition OpenGLDrv.cpp:245
Definition OpenGLState.h:421
bool bAnyDirtyGraphicsUniformBuffers
Definition OpenGLState.h:476
Definition OpenGLState.h:263
Definition RHIResources.h:1417
Definition RHIBufferInitializer.h:12
Definition DynamicRHI.h:120
Definition RHICommandList.h:183
Definition DynamicRHI.h:149
Definition DynamicRHI.h:198
Definition RHIResources.h:5248
Definition RHIShaderParameters.h:32
Definition RHIShaderParameters.h:354
Definition RHIShaderParameters.h:16
Definition RHIResources.h:1938
Definition RHIResources.h:1689
Definition RHITextureInitializer.h:50
Definition RHITransition.h:475
Definition RHIResources.h:2648
Definition OpenGLState.h:199
Definition RHITypes.h:127
Definition RHITypes.h:155
Definition IOpenGLDynamicRHI.h:9
Definition LinuxPlatformSplash.cpp:43
Definition OpenGLResources.h:1473
Definition Optional.h:131
Definition GPUProfiler.h:196