Change CacheManager to not flush and submit at end of trimMemory.

The flush and submit at the start of trim memory now syncs the
cpu so that all work is done on the gpu and the max possible
amount of resources can be freed

This fixes CacheManager unit test since the submit at the end
trim memory was causing new resources to be available to be
purged.

Test: locally ran unit tests
Bug: 178978639
Change-Id: I8b57b042dd146fc6c1083540715295e93fd113d3
This commit is contained in:
Greg Daniel
2021-02-01 14:25:48 -05:00
parent f3d25d2114
commit 846644a46e

View File

@@ -101,7 +101,8 @@ void CacheManager::trimMemory(TrimMemoryMode mode) {
return;
}
mGrContext->flushAndSubmit();
// flush and submit all work to the gpu and wait for it to finish
mGrContext->flushAndSubmit(/*syncCpu=*/true);
switch (mode) {
case TrimMemoryMode::Complete:
@@ -119,11 +120,6 @@ void CacheManager::trimMemory(TrimMemoryMode mode) {
SkGraphics::SetFontCacheLimit(mMaxCpuFontCacheBytes);
break;
}
// We must sync the cpu to make sure deletions of resources still queued up on the GPU actually
// happen.
mGrContext->flush({});
mGrContext->submit(true);
}
void CacheManager::trimStaleResources() {