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);
}