ezEngine Release 25.08
Loading...
Searching...
No Matches
ezGPUResourcePool Class Reference

This class serves as a pool for GPU related resources (e.g. buffers and textures required for rendering). Note that the functions creating and returning render targets are thread safe (by using a mutex). More...

#include <GPUResourcePool.h>

Classes

struct  BufferHandleWithAge
 
struct  TextureHandleWithAge
 

Public Member Functions

ezGALTextureHandle GetRenderTarget (const ezGALTextureCreationDescription &textureDesc)
 Returns a render target handle for the given texture description Note that you should return the handle to the pool and never destroy it directly with the device.
 
ezGALTextureHandle GetRenderTarget (ezUInt32 uiWidth, ezUInt32 uiHeight, ezGALResourceFormat::Enum format, ezGALMSAASampleCount::Enum sampleCount=ezGALMSAASampleCount::None, ezUInt32 uiSliceColunt=1, ezGALTextureType::Enum textureType=ezGALTextureType::Texture2D)
 Convenience functions which creates a texture description fit for a 2d render target without a mip chains.
 
void ReturnRenderTarget (ezGALTextureHandle hRenderTarget)
 Returns a render target to the pool so other consumers can use it. Note that targets which are returned to the pool are susceptible to destruction due to garbage collection.
 
ezGALBufferHandle GetBuffer (const ezGALBufferCreationDescription &bufferDesc)
 Returns a buffer handle for the given buffer description.
 
void ReturnBuffer (ezGALBufferHandle hBuffer)
 Returns a buffer to the pool so other consumers can use it.
 
void RunGC (ezUInt32 uiMinimumAge)
 Tries to free resources which are currently in the pool. Triggered automatically due to allocation number / size thresholds but can be triggered manually (e.g. after editor window resize)
 

Static Public Member Functions

static ezGPUResourcePoolGetDefaultInstance ()
 
static void SetDefaultInstance (ezGPUResourcePool *pDefaultInstance)
 

Protected Member Functions

void CheckAndPotentiallyRunGC ()
 
void UpdateMemoryStats () const
 
void GALDeviceEventHandler (const ezGALDeviceEvent &e)
 

Protected Attributes

ezEventSubscriptionID m_GALDeviceEventSubscriptionID = 0
 
ezUInt64 m_uiMemoryThresholdForGC = 256 * 1024 * 1024
 
ezUInt64 m_uiCurrentlyAllocatedMemory = 0
 
ezUInt16 m_uiNumAllocationsThresholdForGC = 128
 
ezUInt16 m_uiNumAllocationsSinceLastGC = 0
 
ezUInt16 m_uiFramesThresholdSinceLastGC = 60
 Every 60 frames resources unused for more than 10 frames in a row are GCed.
 
ezUInt16 m_uiFramesSinceLastGC = 0
 
ezMap< ezUInt32, ezDynamicArray< TextureHandleWithAge > > m_AvailableTextures
 
ezSet< ezGALTextureHandlem_TexturesInUse
 
ezMap< ezUInt32, ezDynamicArray< BufferHandleWithAge > > m_AvailableBuffers
 
ezSet< ezGALBufferHandlem_BuffersInUse
 
ezDynamicArray< ezGALBufferHandlem_BuffersToBeReused
 
ezMutex m_Lock
 
ezGALDevicem_pDevice
 

Detailed Description

This class serves as a pool for GPU related resources (e.g. buffers and textures required for rendering). Note that the functions creating and returning render targets are thread safe (by using a mutex).

Member Function Documentation

◆ RunGC()

void ezGPUResourcePool::RunGC ( ezUInt32  uiMinimumAge)

Tries to free resources which are currently in the pool. Triggered automatically due to allocation number / size thresholds but can be triggered manually (e.g. after editor window resize)

Parameters
uiMinimumAgeHow many frames at least the resource needs to have been unused before it will be GCed.

The documentation for this class was generated from the following files: