[TEST] Keep tuning the drain/ memory allocation

This commit is contained in:
CamilleLaVey
2026-07-28 00:06:09 -04:00
parent e248832967
commit dbf5ee4e1f
6 changed files with 38 additions and 4 deletions
+16 -2
View File
@@ -153,7 +153,7 @@ u64 TextureCache<P>::ImageSizeBytes(const ImageBase& image) {
template <class P>
u64 TextureCache<P>::DeviceUsage(bool force_refresh) {
if (!runtime.CanReportMemoryUsage()) {
if (!runtime.CanReportAllocationUsage()) {
return total_used_memory;
}
if (force_refresh || usage_refresh_countdown == 0) {
@@ -171,6 +171,16 @@ u64 TextureCache<P>::ReclaimMemory(u64 target_bytes, bool allow_download) {
return 0;
}
in_reclaim = true;
const u64 drain_point = runtime.CompletedSyncPoint();
const size_t sentenced_before = sentenced_images.Size() + sentenced_image_view.Size() +
sentenced_framebuffers.Size();
TickEvictionDownloads(drain_point);
sentenced_images.Reclaim(drain_point);
sentenced_image_view.Reclaim(drain_point);
sentenced_framebuffers.Reclaim(drain_point);
const bool drained = sentenced_images.Size() + sentenced_image_view.Size() +
sentenced_framebuffers.Size() !=
sentenced_before;
u64 freed = 0;
const auto evict = [&](ImageId image_id) {
if (freed >= target_bytes) {
@@ -209,9 +219,13 @@ u64 TextureCache<P>::ReclaimMemory(u64 target_bytes, bool allow_download) {
if (freed < target_bytes) {
lru_cache.ForEachItemBelow(frame_tick > 0 ? frame_tick - 1 : 0, evict);
}
const u64 exit_point = runtime.CompletedSyncPoint();
sentenced_images.Reclaim(exit_point);
sentenced_image_view.Reclaim(exit_point);
sentenced_framebuffers.Reclaim(exit_point);
in_reclaim = false;
usage_refresh_countdown = 0;
reclaim_stalled = freed == 0;
reclaim_stalled = freed == 0 && !drained;
return freed;
}