gfxstream: stream-renderer: add waitSyncResource interface

Useful for syncing against a specific resource. This will only be
applicable to colorBuffer resources.

Add waitSync implementation for ColorBufferVk

BUG=343234676
TEST=gfxstream guest ANGLE + gfxstream guest Zink + end2endtests

Change-Id: I8268f3b3637984f3d4d1cd6127fdd542978790c0
diff --git a/host/virtio-gpu-gfxstream-renderer.cpp b/host/virtio-gpu-gfxstream-renderer.cpp
index 9bd4aa5..cf058d4 100644
--- a/host/virtio-gpu-gfxstream-renderer.cpp
+++ b/host/virtio-gpu-gfxstream-renderer.cpp
@@ -1797,6 +1797,21 @@
         return success ? 0 : -1;
     }
 
+    int waitSyncResource(uint32_t res_handle) {
+        auto it = mResources.find(res_handle);
+        if (it == mResources.end()) {
+            stream_renderer_error("waitSyncResource could not find resource: %d", res_handle);
+            return -EINVAL;
+        }
+        auto& entry = it->second;
+        if (ResType::COLOR_BUFFER != entry.type) {
+            stream_renderer_error("waitSyncResource is undefined for non-ColorBuffer resource.");
+            return -EINVAL;
+        }
+
+        return mVirtioGpuOps->wait_sync_color_buffer(res_handle);
+    }
+
     int resourceMapInfo(uint32_t res_handle, uint32_t* map_info) {
         auto it = mResources.find(res_handle);
         if (it == mResources.end()) return -EINVAL;
@@ -2101,6 +2116,10 @@
     return sRenderer()->platformDestroySharedEglContext(context);
 }
 
+VG_EXPORT int stream_renderer_wait_sync_resource(uint32_t res_handle) {
+    return sRenderer()->waitSyncResource(res_handle);
+}
+
 VG_EXPORT int stream_renderer_resource_map_info(uint32_t res_handle, uint32_t* map_info) {
     return sRenderer()->resourceMapInfo(res_handle, map_info);
 }