From b4fe442a55d200fc682a7ca4f202274458ec5f12 Mon Sep 17 00:00:00 2001 From: Omar Rizwan Date: Sat, 30 Sep 2023 12:12:48 -0400 Subject: display: Camera slice works! Always evict stale draw set images --- virtual-programs/display.folk | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'virtual-programs') diff --git a/virtual-programs/display.folk b/virtual-programs/display.folk index 222813a1..f7b70959 100644 --- a/virtual-programs/display.folk +++ b/virtual-programs/display.folk @@ -340,6 +340,18 @@ On process { proc checkImCacheAndCopyIfNeeded {imDrawSet} { variable imCache variable IMCACHE_MAX_IMAGES + + dict for {im v} $imDrawSet { + if {![dict exists $imCache $im]} { continue } + # Check for staleness and remove from cache if so. + lassign [dict get $imCache $im] gim expectedVersion + set version [Heap::folkHeapGetVersion [string map {uint8_t void} [::image_t data_ptr $im]]] + if {$expectedVersion != $version} { + Gpu::ImageManager::freeGpuImage $gim + dict unset imCache $im + } + } + set notInCache [dictset difference $imDrawSet $imCache] set notInDrawSet [dictset difference $imCache $imDrawSet] -- cgit v1.2.3