MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / ReleaseUnusedMemory

Method ReleaseUnusedMemory

Source/Engine/Graphics/RenderBuffers.cpp:40–80  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

38}
39
40void RenderBuffers::ReleaseUnusedMemory()
41{
42 // Auto release temporal buffer if not used for some time
43 const uint64 frameIndex = Engine::FrameCount;
44 if (VolumetricFog)
45 {
46 ASSERT(VolumetricFogHistory);
47 if (frameIndex - LastFrameVolumetricFog >= LAZY_FRAMES_COUNT)
48 {
49 RenderTargetPool::Release(VolumetricFog);
50 VolumetricFog = nullptr;
51 RenderTargetPool::Release(VolumetricFogHistory);
52 VolumetricFogHistory = nullptr;
53 RenderTargetPool::Release(LocalShadowedLightScattering);
54 LocalShadowedLightScattering = nullptr;
55 LastFrameVolumetricFog = 0;
56 }
57 }
58#define UPDATE_LAZY_KEEP_RT(name) \
59 if (name && frameIndex - LastFrame##name >= LAZY_FRAMES_COUNT) \
60 { \
61 RenderTargetPool::Release(name); \
62 name = nullptr; \
63 LastFrame##name = 0; \
64 }
65 UPDATE_LAZY_KEEP_RT(TemporalSSR);
66 UPDATE_LAZY_KEEP_RT(TemporalAA);
67 UPDATE_LAZY_KEEP_RT(HalfResDepth);
68 UPDATE_LAZY_KEEP_RT(HiZ);
69 UPDATE_LAZY_KEEP_RT(LuminanceMap);
70#undef UPDATE_LAZY_KEEP_RT
71 for (int32 i = CustomBuffers.Count() - 1; i >= 0; i--)
72 {
73 CustomBuffer* e = CustomBuffers[i];
74 if (frameIndex - e->LastFrameUsed >= LAZY_FRAMES_COUNT)
75 {
76 Delete(e);
77 CustomBuffers.RemoveAt(i);
78 }
79 }
80}
81
82GPUTexture* RenderBuffers::RequestHalfResDepth(GPUContext* context)
83{

Callers 2

OnPostRenderMethod · 0.80
OnIdleMethod · 0.80

Calls 4

ReleaseFunction · 0.85
DeleteFunction · 0.85
CountMethod · 0.45
RemoveAtMethod · 0.45

Tested by

no test coverage detected