diff options
| author | Omar Rizwan <omar@omar.website> | 2023-09-30 16:12:48 +0000 |
|---|---|---|
| committer | Omar Rizwan <omar@omar.website> | 2023-09-30 16:13:03 +0000 |
| commit | b4fe442a55d200fc682a7ca4f202274458ec5f12 (patch) | |
| tree | 611ae8b2ef8a2686b8c8597805cb00e7796499d9 /virtual-programs | |
| parent | main,display: Version the Folk heap; evict stale/unused images. (diff) | |
| download | folk-b4fe442a55d200fc682a7ca4f202274458ec5f12.tar.gz folk-b4fe442a55d200fc682a7ca4f202274458ec5f12.zip | |
display: Camera slice works! Always evict stale draw set images
Diffstat (limited to 'virtual-programs')
| -rw-r--r-- | virtual-programs/display.folk | 12 |
1 files changed, 12 insertions, 0 deletions
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] |
