Fix VkHardwareBufferTest so semaphore signals after queue change.

No-Tree-Checks: true
No-Try: true
No-Presubmit: true
Bug: skia:8611
Change-Id: Ia714b5fd8df794960a8c1176bb7e231c7e8b01b5
Reviewed-on: https://skia-review.googlesource.com/c/175435
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
diff --git a/tests/VkHardwareBufferTest.cpp b/tests/VkHardwareBufferTest.cpp
index 169918d..3ec475a 100644
--- a/tests/VkHardwareBufferTest.cpp
+++ b/tests/VkHardwareBufferTest.cpp
@@ -1054,11 +1054,13 @@
 
 bool VulkanTestHelper::flushSurfaceAndSignalSemaphore(skiatest::Reporter* reporter,
                                                       sk_sp<SkSurface> surface) {
+    surface->flush();
+    surface.reset();
     GrBackendSemaphore semaphore;
     if (!this->setupSemaphoreForSignaling(reporter, &semaphore)) {
         return false;
     }
-    GrSemaphoresSubmitted submitted = surface->flushAndSignalSemaphores(1, &semaphore);
+    GrSemaphoresSubmitted submitted = fGrContext->flushAndSignalSemaphores(1, &semaphore);
     if (GrSemaphoresSubmitted::kNo == submitted) {
         ERRORF(reporter, "Failing call to flushAndSignalSemaphores on SkSurface");
         return false;
@@ -1436,12 +1438,10 @@
         ///////////////////////////////////////////////////////////////////////////
 
         if (shareSyncs) {
-            if (!srcHelper->flushSurfaceAndSignalSemaphore(reporter, surface)) {
+            if (!srcHelper->flushSurfaceAndSignalSemaphore(reporter, std::move(surface))) {
                 cleanup_resources(srcHelper.get(), dstHelper.get(), buffer);
                 return;
             }
-
-            surface.reset();
         } else {
             surface.reset();
             srcHelper->doClientSync();