20#include "Containers/Array.h"
34#define UE_API OPENGLDRV_API
50#define RESTRICT_SUBDATA_SIZE 1
52#define RESTRICT_SUBDATA_SIZE 0
63#define OPENGLRHI_DETAILED_STATS 0
66#if OPENGLRHI_DETAILED_STATS
69 #define SCOPE_CYCLE_COUNTER_DETAILED(Stat) SCOPE_CYCLE_COUNTER(Stat)
70 #define DETAILED_QUICK_SCOPE_CYCLE_COUNTER(x) QUICK_SCOPE_CYCLE_COUNTER(x)
72 #define SCOPE_CYCLE_COUNTER_DETAILED(Stat)
73 #define DETAILED_QUICK_SCOPE_CYCLE_COUNTER(x)
76#define GLDEBUG_LABELS_ENABLED (!UE_BUILD_SHIPPING)
83 checkf(!
HasLinkedViews(),
TEXT(
"All linked views must have been removed before the underlying resource can be deleted."));
88 return LinkedViews !=
nullptr;
114template <
typename BaseType>
127 const uint32 BufferSize = FMath::Min<uint32>( BlockSize,
InSize);
129 FOpenGL::BufferSubData(
Type, InOffset, BufferSize, Data);
131 InOffset += BufferSize;
151 : BaseType(CreateDesc)
167#if !RESTRICT_SUBDATA_SIZE
173 LoadData(0, BaseType::GetSize(),
InData);
176 BaseType::UpdateBufferStats(
true);
208 bIsLockReadOnly = bReadOnly;
212 bDiscard = (
bDiscard || (!bReadOnly &&
InSize == BaseType::GetSize())) && FOpenGL::DiscardFrameBufferToResize();
228 FOpenGL::EResourceLockMode LockMode = bReadOnly ? FOpenGL::EResourceLockMode::RLM_ReadOnly : FOpenGL::EResourceLockMode::RLM_WriteOnly;
229 Data =
static_cast<uint8*
>( FOpenGL::MapBufferRange(
Type, InOffset,
InSize, LockMode ) );
232 LockOffset = InOffset;
235 bLockBufferWasAllocated =
false;
240 LockOffset = InOffset;
242 if (CachedBuffer &&
InSize <= CachedBufferSize)
244 LockBuffer = CachedBuffer;
245 CachedBuffer =
nullptr;
251 LockBuffer = FMemory::Malloc(
InSize );
252 CachedBufferSize =
InSize;
254 Data =
static_cast<uint8*
>( LockBuffer );
255 bLockBufferWasAllocated =
true;
260 UE_LOG(
LogRHI,
Fatal,
TEXT(
"Failed to lock buffer: Resource %u, Size %u, Offset %u, bReadOnly %d, bUseMapBuffer %d, glError (0x%x)"),
283 bIsLockReadOnly =
false;
303 FOpenGL::EResourceLockMode LockMode =
bDiscard ? FOpenGL::EResourceLockMode::RLM_WriteOnly : FOpenGL::EResourceLockMode::RLM_WriteOnlyUnsynchronized;
304 Data =
static_cast<uint8*
>( FOpenGL::MapBufferRange(
Type, InOffset,
InSize, LockMode ) );
305 LockOffset = InOffset;
308 bLockBufferWasAllocated =
false;
313 LockOffset = InOffset;
315 if (CachedBuffer &&
InSize <= CachedBufferSize)
317 LockBuffer = CachedBuffer;
318 CachedBuffer =
nullptr;
324 LockBuffer = FMemory::Malloc(
InSize );
325 CachedBufferSize =
InSize;
327 Data =
static_cast<uint8*
>( LockBuffer );
328 bLockBufferWasAllocated =
true;
333 UE_LOG(
LogRHI,
Fatal,
TEXT(
"Failed to lock buffer (write only): Resource %u, Size %u, Offset %u, bUseMapBuffer %d, glError (0x%x)"),
354 check(!bLockBufferWasAllocated);
355 FOpenGL::UnmapBufferRange(
Type, LockOffset, LockSize);
360#if !RESTRICT_SUBDATA_SIZE
362 if(LockSize == BaseType::GetSize())
364 if (FOpenGL::DiscardFrameBufferToResize())
370 FOpenGL::BufferSubData(
Type, 0, LockSize, LockBuffer);
377 FOpenGL::BufferSubData(
Type, LockOffset, LockSize, LockBuffer);
381 LoadData(LockOffset, LockSize, LockBuffer);
385 check(bLockBufferWasAllocated);
391 CachedBuffer = LockBuffer;
393 CachedBufferSize = FMath::Max<GLuint>(CachedBufferSize, LockSize);
400 bLockBufferWasAllocated =
false;
412#if !RESTRICT_SUBDATA_SIZE
429 CachedBuffer =
nullptr;
430 CachedBufferSize = 0;
442 BaseType::TakeOwnership(
Other);
446 CachedBuffer =
Other.CachedBuffer;
447 CachedBufferSize =
Other.CachedBufferSize;
451 Other.CachedBuffer =
nullptr;
452 Other.CachedBufferSize = 0;
461 if (LockBuffer !=
NULL)
463 if (bLockBufferWasAllocated)
469 UE_LOG(
LogRHI,
Warning,
TEXT(
"Destroying TOpenGLBuffer without returning memory to the driver; possibly called RHIMapStagingSurface() but didn't call RHIUnmapStagingSurface()? Resource %u"),
Resource);
475 FOpenGL::DeleteBuffers(1, &
Resource);
478 LockBuffer =
nullptr;
479 BaseType::UpdateBufferStats(
false);
484 BaseType::ReleaseOwnership();
488 uint32 bIsLocked : 1 =
false;
489 uint32 bIsLockReadOnly : 1 =
false;
490 uint32 bLockBufferWasAllocated : 1 =
false;
494 void* LockBuffer =
nullptr;
497 void* CachedBuffer =
nullptr;
499 GLuint CachedBufferSize = 0;
624#define MAX_STREAMED_BUFFERS_IN_ARRAY 2
625#define MIN_DRAWS_IN_SINGLE_BUFFER 16
627template <
typename BaseType, u
int32 Str
ide>
639 Buffer[BufferIndex] =
new BaseType(Stride, InitialBufferSize,
BUF_Volatile,
NULL,
true);
641 CurrentBufferIndex = 0;
657 check(!Buffer[CurrentBufferIndex]->IsLocked());
669 if (Buffer[CurrentBufferIndex]->GetSize() < CurrentOffset +
DataSize)
672 ++CurrentBufferIndex;
675 CurrentBufferIndex = 0;
680 if (MinNeededBufferSize > Buffer[CurrentBufferIndex]->GetSize())
683 Buffer[CurrentBufferIndex] =
new BaseType(Stride, MinNeededBufferSize,
BUF_Volatile);
689 LastOffset = CurrentOffset;
692 return Buffer[CurrentBufferIndex]->LockWriteOnlyUnsynchronized(LastOffset,
DataSize,
bDiscard);
697 check(Buffer[CurrentBufferIndex]->IsLocked());
698 Buffer[CurrentBufferIndex]->Unlock();
706 uint32 CurrentBufferIndex;
709 uint32 MinNeededBufferSize;
849#if GLDEBUG_LABELS_ENABLED
866 uint32 TotalAllocated = 0;
869 TotalAllocated += MipData.Num();
871 return TotalAllocated;
904 static bool CanDeferTextureCreation();
945 TryRestoreGLResource();
952 TryRestoreGLResource();
1042 void TryRestoreGLResource()
1061 UE_API void DeleteGLResource();
1118#if RHI_NEW_GPU_PROFILER
1125 int64 CPUTimestamp = 0;
1126 int64 CPUFrequency = 0;
1151 bool bEnabled =
false;
1186 #if RHI_NEW_GPU_PROFILER
1195#if RHI_NEW_GPU_PROFILER == 0
1201 struct FActiveQueries
1206 }
static ActiveQueries;
1208 struct FQueryPool :
public TStaticArray<TArray<GLuint>, (uint32)EType::Num>
1211 }
static PooledQueries;
1223 uint64* Target =
nullptr;
1320 bool OwnsResource =
false;
1341 bool OwnsResource =
false;
1418 FGLSync() =
default;
1433 void Clear()
override;
1434 bool Poll()
const override;
1441 PollFencesUntil(
nullptr);
#define NULL
Definition oodle2base.h:134
constexpr T Align(T Val, uint64 Alignment)
Definition AlignmentTemplates.h:18
#define check(expr)
Definition AssertionMacros.h:314
#define checkNoEntry()
Definition AssertionMacros.h:316
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
#define FORCEINLINE_DEBUGGABLE
Definition CoreMiscDefines.h:74
#define DECLARE_CYCLE_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:679
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
bool IsValidRef(const FVertexBufferAndSRV &Buffer)
Definition GPUSkinVertexFactory.h:92
void Init()
Definition LockFreeList.h:4
#define UE_LOG(CategoryName, Verbosity, Format,...)
Definition LogMacros.h:270
#define LLM_SCOPED_PAUSE_TRACKING_WITH_ENUM_AND_AMOUNT(...)
Definition LowLevelMemTracker.h:1110
FInt32Point FIntPoint
Definition MathFwd.h:124
TOpenGLBuffer< FOpenGLBasePixelBuffer > FOpenGLPixelBuffer
Definition OpenGLResources.h:554
TOpenGLBuffer< FOpenGLBaseBuffer > FOpenGLBuffer
Definition OpenGLResources.h:555
TArray< ANSICHAR > FAnsiCharArray
Definition OpenGLResources.h:39
#define UE_API
Definition OpenGLResources.h:34
#define SCOPE_CYCLE_COUNTER_DETAILED(Stat)
Definition OpenGLResources.h:72
#define MAX_STREAMED_BUFFERS_IN_ARRAY
Definition OpenGLResources.h:624
TRefCountPtr< FOpenGLEUniformBufferData > FOpenGLEUniformBufferDataRef
Definition OpenGLResources.h:574
void OPENGLDRV_API ReleaseOpenGLFramebuffers(FRHITexture *TextureRHI)
Definition OpenGLRenderTarget.cpp:375
#define RESTRICT_SUBDATA_SIZE
Definition OpenGLResources.h:52
TArray< FOpenGLVertexElement, TFixedAllocator< MaxVertexElementCount > > FOpenGLVertexElements
Definition OpenGLResources.h:732
#define MIN_DRAWS_IN_SINGLE_BUFFER
Definition OpenGLResources.h:625
#define VERIFY_GL_SCOPE(...)
Definition OpenGLUtil.h:133
@ SF_NumGraphicsFrequencies
Definition RHIDefinitions.h:219
EBufferUsageFlags
Definition RHIDefinitions.h:892
@ MaxVertexElementCount
Definition RHIDefinitions.h:276
#define BUF_Volatile
Definition RHIDefinitions.h:982
EResourceLockMode
Definition RHIDefinitions.h:785
#define BUF_AnyDynamic
Definition RHIDefinitions.h:998
EUniformBufferValidation
Definition RHIDefinitions.h:546
ERenderQueryType
Definition RHIDefinitions.h:258
@ RQT_Occlusion
Definition RHIDefinitions.h:262
@ ShadowBuffer
Indicates this buffer is a full object's memory.
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
FRWLock Lock
Definition UnversionedPropertySerialization.cpp:921
uint32 Offset
Definition VulkanMemory.cpp:4033
Definition TaskGraphInterfaces.h:471
Definition BoundShaderStateCache.h:168
Definition NameTypes.h:617
Definition OpenGLResources.h:535
void UpdateBufferStats(bool bAllocating)
Definition OpenGLResources.h:544
FOpenGLBaseBuffer(const FRHIBufferCreateDesc &InCreateDesc)
Definition OpenGLResources.h:537
Definition OpenGLResources.h:503
uint32 GetSize() const
Definition OpenGLResources.h:510
void UpdateBufferStats(bool bAllocating)
Definition OpenGLResources.h:528
const FRHIBufferDesc & GetDesc() const
Definition OpenGLResources.h:509
void TakeOwnership(FOpenGLBasePixelBuffer &Other)
Definition OpenGLResources.h:513
FOpenGLBasePixelBuffer(const FRHIBufferCreateDesc &CreateDesc)
Definition OpenGLResources.h:505
void ReleaseOwnership()
Definition OpenGLResources.h:519
EBufferUsageFlags GetUsage() const
Definition OpenGLResources.h:511
Definition OpenGLResources.h:759
FOpenGLPixelShader * GetPixelShader()
Definition OpenGLResources.h:796
const TBitArray & GetUAVNeeds(int32 &OutMaxUAVUnitUsed) const
Definition OpenGLShaders.cpp:3046
TRefCountPtr< FOpenGLVertexShader > const VertexShader
Definition OpenGLResources.h:770
TRefCountPtr< FOpenGLPixelShader > const PixelShader
Definition OpenGLResources.h:771
TRefCountPtr< FOpenGLGeometryShader > const GeometryShader
Definition OpenGLResources.h:772
uint16 StreamStrides[MaxVertexElementCount]
Definition OpenGLResources.h:766
FOpenGLVertexShader * GetVertexShader()
Definition OpenGLResources.h:790
virtual ~FOpenGLBoundShaderState()
Definition OpenGLShaders.cpp:3011
FOpenGLGeometryShader * GetGeometryShader()
Definition OpenGLResources.h:802
void GetNumUniformBuffers(int32 NumVertexUniformBuffers[SF_NumGraphicsFrequencies])
Definition OpenGLShaders.cpp:3052
bool RequiresDriverInstantiation()
Definition OpenGLShaders.cpp:3062
int32 MaxTextureStageUsed()
Definition OpenGLShaders.cpp:3035
bool NeedsTextureStage(int32 TextureStageIndex)
Definition OpenGLShaders.cpp:3030
TRefCountPtr< FOpenGLVertexDeclaration > const VertexDeclaration
Definition OpenGLResources.h:769
FOpenGLLinkedProgram *const LinkedProgram
Definition OpenGLResources.h:768
const TBitArray & GetTextureNeeds(int32 &OutMaxTextureStageUsed)
Definition OpenGLShaders.cpp:3040
FCachedBoundShaderStateLink CacheLink
Definition OpenGLResources.h:764
Definition OpenGLResources.h:100
GLenum Type
Definition OpenGLResources.h:107
FOpenGLBufferBase(GLenum Type)
Definition OpenGLResources.h:102
GLuint Resource
Definition OpenGLResources.h:108
void OnBufferDeletion()
Definition OpenGLBuffer.cpp:188
void Bind()
Definition OpenGLBuffer.cpp:182
Definition OpenGLShaderResources.h:262
Definition OpenGLDrv.h:254
Definition OpenGLResources.h:1348
void WaitForCompletion()
Definition OpenGLQuery.cpp:496
~FOpenGLEventQuery()
Definition OpenGLQuery.cpp:538
FOpenGLEventQuery()
Definition OpenGLQuery.cpp:528
void IssueEvent()
Definition OpenGLQuery.cpp:482
Definition OpenGLResources.h:1408
static void PollFences()
Definition OpenGLResources.h:1439
bool Poll() const override
Definition OpenGLQuery.cpp:817
void WriteGPUFence_TopOfPipe(FRHICommandListBase &RHICmdList)
Definition OpenGLQuery.cpp:897
void Wait(FRHICommandListImmediate &RHICmdList, FRHIGPUMask GPUMask) const override
Definition OpenGLQuery.cpp:822
void Clear() override
Definition OpenGLQuery.cpp:812
Definition OpenGLShaderResources.h:252
Definition OpenGLShaders.cpp:1262
Definition OpenGLShaderResources.h:242
Definition OpenGLResources.h:1267
FOpenGLRenderQuery_RHI(ERenderQueryType QueryType)
Definition OpenGLResources.h:1269
void End_TopOfPipe()
Definition OpenGLResources.h:1273
Definition OpenGLResources.h:1180
uint64 GetResult() const
Definition OpenGLResources.h:1247
void Begin()
Definition OpenGLQuery.cpp:131
EType
Definition OpenGLResources.h:1183
std::atomic< uint8 > LastCachedBOPCounter
Definition OpenGLResources.h:1228
void AcquireGlQuery()
Definition OpenGLQuery.cpp:81
FOpenGLRenderQuery(EType Type)
Definition OpenGLResources.h:1233
bool CacheResult(bool bWait)
Definition OpenGLQuery.cpp:207
static void Cleanup()
Definition OpenGLQuery.cpp:415
void ReleaseGlQuery()
Definition OpenGLQuery.cpp:110
bool IsLinked() const
Definition OpenGLResources.h:1242
uint8 BOPCounter
Definition OpenGLResources.h:1229
EType const Type
Definition OpenGLResources.h:1226
static bool PollQueryResults(FOpenGLRenderQuery *TargetQuery=nullptr)
Definition OpenGLQuery.cpp:378
uint8 TOPCounter
Definition OpenGLResources.h:1230
~FOpenGLRenderQuery()
Definition OpenGLQuery.cpp:16
static constexpr uint64 InvalidDisjointMask
Definition OpenGLResources.h:1196
Definition OpenGLState.h:67
Definition OpenGLResources.h:1324
GLenum Target
Definition OpenGLResources.h:1335
void UpdateView() override
Definition OpenGLUAV.cpp:57
FOpenGLViewableResource * GetBaseResource() const
Definition OpenGLUAV.cpp:50
int32 LimitMip
Definition OpenGLResources.h:1337
virtual ~FOpenGLShaderResourceView()
Definition OpenGLUAV.cpp:159
GLuint Resource
Definition OpenGLResources.h:1334
Definition OpenGLResources.h:1446
FOpenGLStagingBuffer()
Definition OpenGLResources.h:1449
~FOpenGLStagingBuffer() override
Definition OpenGLBuffer.cpp:328
void Unlock() override
Definition OpenGLBuffer.cpp:363
uint64 GetGPUSizeBytes() const override
Definition OpenGLResources.h:1462
Definition OpenGLResources.h:908
FOpenGLTextureCreateDesc(FRHITextureCreateDesc const &CreateDesc)
Definition OpenGLResources.h:910
Definition OpenGLResources.h:886
uint32 MemorySize
Definition OpenGLResources.h:893
uint8 bStreamable
Definition OpenGLResources.h:897
GLenum Target
Definition OpenGLResources.h:890
uint8 bCanCreateAsEvicted
Definition OpenGLResources.h:899
uint8 bDepthStencil
Definition OpenGLResources.h:898
uint8 bArrayTexture
Definition OpenGLResources.h:896
GLenum Attachment
Definition OpenGLResources.h:891
uint8 bCubemap
Definition OpenGLResources.h:895
uint8 bMultisampleRenderbuffer
Definition OpenGLResources.h:901
uint8 bIsPowerOfTwo
Definition OpenGLResources.h:900
Definition OpenGLResources.h:918
uint8 const bMultisampleRenderbuffer
Definition OpenGLResources.h:1115
TArray< TRefCountPtr< FOpenGLPixelBuffer > > PixelBuffers
Definition OpenGLResources.h:1091
GLenum const Target
Definition OpenGLResources.h:1081
uint8 const bCubemap
Definition OpenGLResources.h:1111
UE_API void RestoreEvictedGLResource(bool bAttemptToRetainMips)
Definition OpenGLTexture.cpp:1243
uint8 const bArrayTexture
Definition OpenGLResources.h:1112
GLuint GetResource()
Definition OpenGLResources.h:943
UE_API void Unlock(uint32 MipIndex, uint32 ArrayIndex)
Definition OpenGLTexture.cpp:1119
uint8 const bIsPowerOfTwo
Definition OpenGLResources.h:1108
bool IsEvicted() const
Definition OpenGLResources.h:976
uint32 const MemorySize
Definition OpenGLResources.h:1105
virtual void * GetTextureBaseRHI() override final
Definition OpenGLResources.h:978
UE_API void CloneViaCopyImage(FOpenGLTexture *Src, uint32 InNumMips, int32 SrcOffset, int32 DstOffset)
Definition OpenGLTexture.cpp:1385
UE_API void TryEvictGLResource()
Definition OpenGLTexture.cpp:1310
GLenum const Attachment
Definition OpenGLResources.h:1084
void SetAllocatedStorage(bool bInAllocatedStorage)
Definition OpenGLResources.h:1018
uint8 const bDepthStencil
Definition OpenGLResources.h:1113
virtual void * GetNativeResource() const override
Definition OpenGLResources.h:998
void SetAllocatedStorageForMip(uint32 MipIndex, uint32 FaceIndex)
Definition OpenGLResources.h:1012
uint8 const bCanCreateAsEvicted
Definition OpenGLResources.h:1109
uint32 GetEffectiveSizeZ() const
Definition OpenGLResources.h:1066
GLuint GetRawResourceName() const
Definition OpenGLResources.h:958
UE_API bool CanBeEvicted()
Definition OpenGLTexture.cpp:1359
GLuint & GetResourceRef()
Definition OpenGLResources.h:949
UE_API void Resolve(uint32 MipIndex, uint32 ArrayIndex)
EAliasConstructorParam
Definition OpenGLResources.h:935
@ AliasResource
Definition OpenGLResources.h:935
UE_API void AliasResources(FOpenGLTexture &Texture)
Definition OpenGLTexture.cpp:317
bool GetAllocatedStorageForMip(uint32 MipIndex, uint32 FaceIndex) const
Definition OpenGLResources.h:1008
uint8 const bStreamable
Definition OpenGLResources.h:1110
bool bInStencilTextureMode
Definition OpenGLResources.h:1093
virtual UE_API ~FOpenGLTexture()
Definition OpenGLTexture.cpp:438
TUniquePtr< FTextureEvictionParams > EvictionParamsPtr
Definition OpenGLResources.h:1086
uint8 const bAlias
Definition OpenGLResources.h:1114
UE_API uint32 GetLockSize(uint32 MipIndex, EResourceLockMode LockMode, uint32 &DestStride)
Definition OpenGLTexture.cpp:909
void SetResource(GLuint InResource)
Definition OpenGLResources.h:970
class FOpenGLSamplerState * SamplerState
Definition OpenGLResources.h:1089
const GLuint & GetRawResourceNameRef() const
Definition OpenGLResources.h:965
UE_API void RemoveEvictionData()
Definition OpenGLTexture.cpp:1373
Definition OpenGLResources.h:1288
GLuint Resource
Definition OpenGLResources.h:1297
uint32 GetBufferSize() const
Definition OpenGLResources.h:1303
virtual ~FOpenGLUnorderedAccessView()
Definition OpenGLUAV.cpp:266
FOpenGLViewableResource * GetBaseResource() const
Definition OpenGLUAV.cpp:177
GLint GetLayer() const
Definition OpenGLResources.h:1313
bool IsLayered() const
Definition OpenGLResources.h:1308
GLuint BufferResource
Definition OpenGLResources.h:1298
GLenum Format
Definition OpenGLResources.h:1299
uint8 Level
Definition OpenGLResources.h:1301
void UpdateView() override
Definition OpenGLUAV.cpp:184
uint8 UnrealFormat
Definition OpenGLResources.h:1300
Definition OpenGLResources.h:736
uint16 StreamStrides[MaxVertexElementCount]
Definition OpenGLResources.h:741
FOpenGLVertexElements VertexElements
Definition OpenGLResources.h:739
virtual bool GetInitializer(FVertexDeclarationElementList &Init) override final
Definition OpenGLVertexDeclaration.cpp:181
FOpenGLVertexDeclaration(const FOpenGLVertexElements &InElements, const uint16 *InStrides)
Definition OpenGLResources.h:744
Definition OpenGLShaderResources.h:232
Definition OpenGLResources.h:1282
virtual void UpdateView()=0
Definition OpenGLResources.h:79
~FOpenGLViewableResource()
Definition OpenGLResources.h:81
bool HasLinkedViews() const
Definition OpenGLResources.h:86
void UpdateLinkedViews()
Definition OpenGLUAV.cpp:10
Definition OpenGLResources.h:1365
bool IsFullscreen(void) const
Definition OpenGLResources.h:1376
FRHICustomPresent * GetCustomPresent() const
Definition OpenGLResources.h:1390
~FOpenGLViewport()
Definition OpenGLViewport.cpp:218
virtual void SetCustomPresent(FRHICustomPresent *InCustomPresent) override
Definition OpenGLResources.h:1386
virtual void IssueFrameEvent() override
Definition OpenGLViewport.cpp:244
FOpenGLTexture * GetBackBuffer() const
Definition OpenGLResources.h:1375
struct FPlatformOpenGLContext * GetGLContext() const
Definition OpenGLResources.h:1383
FOpenGLDynamicRHI * GetOpenGLRHI() const
Definition OpenGLResources.h:1384
void Resize(uint32 InSizeX, uint32 InSizeY, bool bInIsFullscreen)
Definition OpenGLViewport.cpp:250
FIntPoint GetSizeXY() const
Definition OpenGLResources.h:1374
virtual void WaitForFrameEventCompletion() override
Definition OpenGLViewport.cpp:238
virtual void * GetNativeWindow(void **AddParam) const override
Definition OpenGLViewport.cpp:292
Definition RHIResources.h:733
Definition RHIResources.h:1581
const FRHIBufferDesc & GetDesc() const
Definition RHIResources.h:1589
uint32 GetSize() const
Definition RHIResources.h:1595
Definition RHICommandList.h:455
void * AllocCopy(const void *InSourceData, int64 AllocSize, int64 Alignment)
Definition RHICommandList.h:527
void EnqueueLambda(const TCHAR *LambdaName, LAMBDA &&Lambda)
Definition RHICommandList.h:585
bool IsTopOfPipe() const
Definition RHICommandList.h:658
Definition RHIResources.h:1018
Definition RHIResources.h:4294
Definition RHIResources.h:2387
Definition RHIResources.h:978
Definition RHIResources.h:972
Definition RHIResources.h:2444
Definition RHIResources.h:3304
Definition RHIResources.h:3981
Definition RHIResources.h:2153
uint32 GetNumMips() const
Definition RHIResources.h:2338
virtual const FRHITextureDesc & GetDesc() const
Definition RHIResources.h:2170
Definition RHIResources.h:3294
Definition RHIResources.h:725
Definition RHIResources.h:954
FRHITexture * GetTexture() const
Definition RHIResources.h:3265
FRHIViewDesc const ViewDesc
Definition RHIResources.h:3290
bool IsBuffer() const
Definition RHIResources.h:3271
bool IsTexture() const
Definition RHIResources.h:3272
FRHIBuffer * GetBuffer() const
Definition RHIResources.h:3259
Definition RHIResources.h:1265
FName Name
Definition RHIResources.h:1310
Definition RHIResources.h:2515
Definition RefCounting.h:252
Definition SetUtilities.h:95
Definition OpenGLResources.h:811
FOpenGLTexture * GetLeastRecent()
Definition OpenGLTexture.cpp:2169
void TickEviction()
Definition OpenGLTexture.cpp:2107
uint32 Num() const
Definition OpenGLResources.h:830
static FORCEINLINE_DEBUGGABLE FTextureEvictionLRU & Get()
Definition OpenGLResources.h:825
void Touch(FOpenGLTexture *TextureBase)
Definition OpenGLTexture.cpp:2159
Definition OpenGLResources.h:839
uint32 bHasRestored
Definition OpenGLResources.h:845
~FTextureEvictionParams()
Definition OpenGLTexture.cpp:2181
void CloneMipData(const FTextureEvictionParams &Src, uint32 NumMips, int32 SrcOffset, int DstOffset)
Definition OpenGLTexture.cpp:2216
bool AreAllMipsPresent() const
Definition OpenGLResources.h:874
FAnsiString & GetDebugLabelName()
Definition OpenGLResources.h:853
void ReleaseMipData(uint32 RetainMips)
Definition OpenGLTexture.cpp:2236
void SetMipData(uint32 MipIndex, const void *Data, uint32 Bytes)
Definition OpenGLTexture.cpp:2197
uint32 FrameLastRendered
Definition OpenGLResources.h:847
FAnsiString TextureDebugName
Definition OpenGLResources.h:850
void SetDebugLabelName(const ANSICHAR *TextureDebugNameIn)
Definition OpenGLResources.h:852
TArray< TArray< uint8 > > MipImageData
Definition OpenGLResources.h:843
uint32 GetTotalAllocated() const
Definition OpenGLResources.h:864
FSetElementId LRUNode
Definition OpenGLResources.h:846
void SetDebugLabelName(const FAnsiString &TextureDebugNameIn)
Definition OpenGLResources.h:851
UE_FORCEINLINE_HINT SizeType AddUninitialized()
Definition Array.h:1664
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT SIZE_T GetAllocatedSize(void) const
Definition Array.h:1059
void Empty(SizeType Slack=0)
Definition Array.h:2273
Definition OpenGLResources.h:116
bool IsDynamic() const
Definition OpenGLResources.h:419
uint8 * LockWriteOnlyUnsynchronized(uint32 InOffset, uint32 InSize, bool bDiscard)
Definition OpenGLResources.h:272
bool IsLocked() const
Definition OpenGLResources.h:420
void TakeOwnership(TOpenGLBuffer &Other)
Definition OpenGLResources.h:435
void Update(void *InData, uint32 InOffset, uint32 InSize, bool bDiscard)
Definition OpenGLResources.h:407
virtual ~TOpenGLBuffer()
Definition OpenGLResources.h:192
void ReleaseOwnership()
Definition OpenGLResources.h:455
bool IsLockReadOnly() const
Definition OpenGLResources.h:421
uint8 * Lock(uint32 InOffset, uint32 InSize, bool bReadOnly, bool bDiscard)
Definition OpenGLResources.h:197
void * GetLockedBuffer() const
Definition OpenGLResources.h:422
void ReleaseCachedBuffer()
Definition OpenGLResources.h:424
TOpenGLBuffer(FRHICommandListBase *RHICmdList, GLenum InType, const FRHIBufferCreateDesc &CreateDesc, const void *InData)
Definition OpenGLResources.h:150
void Unlock()
Definition OpenGLResources.h:344
Definition OpenGLResources.h:629
virtual ~TOpenGLStreamedBufferArray(void)
Definition OpenGLResources.h:633
uint32 GetPendingOffset(void)
Definition OpenGLResources.h:702
TOpenGLStreamedBufferArray(void)
Definition OpenGLResources.h:632
BaseType * GetPendingBuffer(void)
Definition OpenGLResources.h:701
uint8 * Lock(uint32 DataSize)
Definition OpenGLResources.h:655
void Init(uint32 InitialBufferSize)
Definition OpenGLResources.h:635
void Unlock(void)
Definition OpenGLResources.h:695
void Cleanup(void)
Definition OpenGLResources.h:647
Definition PsoLruCache.h:16
int32 Num() const
Definition PsoLruCache.h:324
Definition RefCounting.h:454
UE_FORCEINLINE_HINT ReferencedType * GetReference() const
Definition RefCounting.h:584
UE_FORCEINLINE_HINT void SafeRelease()
Definition RefCounting.h:599
Definition StaticArray.h:26
constexpr InElementType & operator[](uint32 Index)
Definition StaticArray.h:57
Definition UniquePtr.h:107
bool IsValid() const
Definition UniquePtr.h:280
Definition GPUProfiler.h:310
Definition OpenGLResources.h:56
void UpdateUniformBufferStats(int64 BufferSize, bool bAllocating)
Definition OpenGLUtil.cpp:166
void UpdateBufferStats(const FRHIBufferDesc &BufferDesc, bool bAllocating)
Definition OpenGLUtil.cpp:171
Definition OpenGLBuffer.cpp:16
int32 MaxSubDataSize
Definition OpenGLCommands.cpp:65
int32 bUseBufferDiscard
Definition OpenGLCommands.cpp:81
int32 bUseMapBuffer
Definition OpenGLCommands.cpp:47
int32 bUseStagingBuffer
Definition OpenGLBuffer.cpp:20
Definition DynamicRHI.h:238
static FORCENOINLINE CORE_API void Free(void *Original)
Definition UnrealMemory.cpp:685
static UE_FORCEINLINE_HINT void * Memcpy(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:160
Definition OpenGLDrvPrivate.h:227
Definition OpenGLResources.h:713
GLuint Offset
Definition OpenGLResources.h:716
GLenum Type
Definition OpenGLResources.h:714
GLuint Divisor
Definition OpenGLResources.h:718
uint8 Padding
Definition OpenGLResources.h:723
uint8 AttributeIndex
Definition OpenGLResources.h:721
FOpenGLVertexElement()
Definition OpenGLResources.h:725
uint8 bShouldConvertToFloat
Definition OpenGLResources.h:722
GLuint StreamIndex
Definition OpenGLResources.h:715
GLuint HashStride
Definition OpenGLResources.h:719
uint8 bNormalized
Definition OpenGLResources.h:720
GLuint Size
Definition OpenGLResources.h:717
Definition LinuxOpenGLPlatform.cpp:39
Definition RHIResources.h:1417
Definition RHIResources.h:1321
static FRHIBufferDesc Null()
Definition RHIResources.h:1349
uint32 Size
Definition RHIResources.h:1323
EBufferUsageFlags Usage
Definition RHIResources.h:1329
bool IsNull() const
Definition RHIResources.h:1354
Definition RHIResources.h:1938
Definition RHIResources.h:1689
ETextureDimension Dimension
Definition RHIResources.h:1871
uint16 Depth
Definition RHIResources.h:1859
uint16 ArraySize
Definition RHIResources.h:1862
bool IsTexture3D() const
Definition RHIResources.h:1795
Definition RHIResources.h:2648
static int32 Strlen(const CharType *String)
Definition CString.h:1047
FOpenGLBoundShaderState TConcreteType
Definition OpenGLResources.h:1513
FOpenGLBuffer TConcreteType
Definition OpenGLResources.h:1528
FOpenGLComputeShader TConcreteType
Definition OpenGLResources.h:1508
FOpenGLGPUFence TConcreteType
Definition OpenGLResources.h:1478
FOpenGLGeometryShader TConcreteType
Definition OpenGLResources.h:1498
FOpenGLPixelShader TConcreteType
Definition OpenGLResources.h:1503
FOpenGLRenderQuery_RHI TConcreteType
Definition OpenGLResources.h:1518
FOpenGLShaderResourceView TConcreteType
Definition OpenGLResources.h:1533
FOpenGLStagingBuffer TConcreteType
Definition OpenGLResources.h:1483
FOpenGLUnorderedAccessView TConcreteType
Definition OpenGLResources.h:1538
FOpenGLVertexDeclaration TConcreteType
Definition OpenGLResources.h:1488
FOpenGLVertexShader TConcreteType
Definition OpenGLResources.h:1493
FOpenGLViewport TConcreteType
Definition OpenGLResources.h:1544
Definition OpenGLResources.h:1473
Definition Optional.h:131
Definition IntVector.h:22
Definition GPUProfiler.h:93