Update skia flush call APIs.

Test: manual
Change-Id: I72fa57b04f1b4ea594063ddb4ce6af9507b1fcdb
diff --git a/libs/hwui/pipeline/skia/SkiaPipeline.cpp b/libs/hwui/pipeline/skia/SkiaPipeline.cpp
index 5088494..89a1c71 100644
--- a/libs/hwui/pipeline/skia/SkiaPipeline.cpp
+++ b/libs/hwui/pipeline/skia/SkiaPipeline.cpp
@@ -145,7 +145,7 @@
         if (cachedContext.get() != currentContext) {
             if (cachedContext.get()) {
                 ATRACE_NAME("flush layers (context changed)");
-                cachedContext->flush();
+                cachedContext->flushAndSubmit();
             }
             cachedContext.reset(SkSafeRef(currentContext));
         }
@@ -153,7 +153,7 @@
 
     if (cachedContext.get()) {
         ATRACE_NAME("flush layers");
-        cachedContext->flush();
+        cachedContext->flushAndSubmit();
     }
 }
 
@@ -450,7 +450,7 @@
     }
 
     ATRACE_NAME("flush commands");
-    surface->getCanvas()->flush();
+    surface->flushAndSubmit();
 
     Properties::skpCaptureEnabled = previousSkpEnabled;
 }
diff --git a/libs/hwui/renderthread/CacheManager.cpp b/libs/hwui/renderthread/CacheManager.cpp
index d177855..2bd52d4 100644
--- a/libs/hwui/renderthread/CacheManager.cpp
+++ b/libs/hwui/renderthread/CacheManager.cpp
@@ -101,7 +101,7 @@
         return;
     }
 
-    mGrContext->flush();
+    mGrContext->flushAndSubmit();
 
     switch (mode) {
         case TrimMemoryMode::Complete:
@@ -122,14 +122,17 @@
 
     // We must sync the cpu to make sure deletions of resources still queued up on the GPU actually
     // happen.
-    mGrContext->flush(kSyncCpu_GrFlushFlag, 0, nullptr);
+    GrFlushInfo info;
+    info.fFlags = kSyncCpu_GrFlushFlag;
+    mGrContext->flush(info);
+    mGrContext->submit(true);
 }
 
 void CacheManager::trimStaleResources() {
     if (!mGrContext) {
         return;
     }
-    mGrContext->flush();
+    mGrContext->flushAndSubmit();
     mGrContext->purgeResourcesNotUsedInMs(std::chrono::seconds(30));
 }
 
diff --git a/libs/hwui/renderthread/VulkanManager.cpp b/libs/hwui/renderthread/VulkanManager.cpp
index ba70afc..3cb1607 100644
--- a/libs/hwui/renderthread/VulkanManager.cpp
+++ b/libs/hwui/renderthread/VulkanManager.cpp
@@ -459,7 +459,7 @@
                 // The following flush blocks the GPU immediately instead of waiting for other
                 // drawing ops. It seems dequeue_fence is not respected otherwise.
                 // TODO: remove the flush after finding why backendSemaphore is not working.
-                bufferInfo->skSurface->flush();
+                bufferInfo->skSurface->flushAndSubmit();
             }
         }
     }
@@ -525,9 +525,15 @@
     int fenceFd = -1;
     DestroySemaphoreInfo* destroyInfo =
             new DestroySemaphoreInfo(mDestroySemaphore, mDevice, semaphore);
+    GrFlushInfo flushInfo;
+    flushInfo.fNumSemaphores = 1;
+    flushInfo.fSignalSemaphores = &backendSemaphore;
+    flushInfo.fFinishedProc = destroy_semaphore;
+    flushInfo.fFinishedContext = destroyInfo;
     GrSemaphoresSubmitted submitted = bufferInfo->skSurface->flush(
-            SkSurface::BackendSurfaceAccess::kPresent, kNone_GrFlushFlags, 1, &backendSemaphore,
-            destroy_semaphore, destroyInfo);
+            SkSurface::BackendSurfaceAccess::kPresent, flushInfo);
+    ALOGE_IF(!bufferInfo->skSurface->getContext(), "Surface is not backed by gpu");
+    bufferInfo->skSurface->getContext()->submit();
     if (submitted == GrSemaphoresSubmitted::kYes) {
         VkSemaphoreGetFdInfoKHR getFdInfo;
         getFdInfo.sType = VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR;
@@ -612,7 +618,7 @@
 
     // Skia takes ownership of the semaphore and will delete it once the wait has finished.
     grContext->wait(1, &beSemaphore);
-    grContext->flush();
+    grContext->flushAndSubmit();
 
     return OK;
 }
@@ -648,8 +654,13 @@
     // Even if Skia fails to submit the semaphore, it will still call the destroy_semaphore callback
     // which will remove its ref to the semaphore. The VulkanManager must still release its ref,
     // when it is done with the semaphore.
-    GrSemaphoresSubmitted submitted = grContext->flush(kNone_GrFlushFlags, 1, &backendSemaphore,
-                                                       destroy_semaphore, destroyInfo);
+    GrFlushInfo flushInfo;
+    flushInfo.fNumSemaphores = 1;
+    flushInfo.fSignalSemaphores = &backendSemaphore;
+    flushInfo.fFinishedProc = destroy_semaphore;
+    flushInfo.fFinishedContext = destroyInfo;
+    GrSemaphoresSubmitted submitted = grContext->flush(flushInfo);
+    grContext->submit();
 
     if (submitted == GrSemaphoresSubmitted::kNo) {
         ALOGE("VulkanManager::createReleaseFence: Failed to submit semaphore");
diff --git a/libs/hwui/tests/unit/CacheManagerTests.cpp b/libs/hwui/tests/unit/CacheManagerTests.cpp
index c83a3c8..a4d7b82 100644
--- a/libs/hwui/tests/unit/CacheManagerTests.cpp
+++ b/libs/hwui/tests/unit/CacheManagerTests.cpp
@@ -47,7 +47,7 @@
         sk_sp<SkSurface> surface = SkSurface::MakeRenderTarget(grContext, SkBudgeted::kYes, info);
         surface->getCanvas()->drawColor(SK_AlphaTRANSPARENT);
 
-        grContext->flush();
+        grContext->flushAndSubmit();
 
         surfaces.push_back(surface);
     }