Hash :
f5f419ec
Author :
Date :
2024-09-04T20:22:20
Vulkan: Add verify-restore in CompressAndStorePipelineCacheVk() Change fixes following problem: When blob cache is full, but still allows to store the current pipeline cache data, storing next chunk may trigger eviction of already stored items. Depending on the blob cache implementation, eviction process may choose to evict chunks from the current pipeline cache data. As the result: blob cache will not contain all chunks. Solution: The `StorePipelineCacheVkChunks()` function now check what chunks exist in the blob cache (if `lastNumStoredChunks` parameter is positive) and restores any missing chunks if their number is less than `lastNumStoredChunks`. First call to `StorePipelineCacheVkChunks()` passes zero (0) to the `lastNumStoredChunks`, which will skip the check and store all chunks unconditionally. If "verifyPipelineCacheInBlobCache" feature is enabled, the `StorePipelineCacheVkChunks()` will be called again to restore possibly missing chunks. If "hasBlobCacheThatEvictsOldItemsFirst" feature is disabled, the function will be called repeatedly in a loop (opposed to only once), until all chunks are present or until number of missing chunk stops decreasing. Bug: angleproject:4722 Change-Id: Ibbbdb2f878d6aafd7ab5586fc654e2b9be900a9a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5837042 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>