summaryrefslogtreecommitdiff
path: root/stream-servers/RenderControl.cpp
diff options
context:
space:
mode:
authorLingfeng Yang <lfy@google.com>2021-02-17 09:39:38 -0800
committerLingfeng Yang <lfy@google.com>2021-02-17 09:41:14 -0800
commite492671d6fe511dd1c6577a8bb1f918b20ce1821 (patch)
tree59f9db5ffaea0c83afeaef0b58c5354426a74d6f /stream-servers/RenderControl.cpp
parentae05926336285b90979d06b9a683162b374b95cb (diff)
downloadvulkan-cereal-e492671d6fe511dd1c6577a8bb1f918b20ce1821.tar.gz
Make rcCreateSyncKHR check for a current RenderThreadInfo
And create a trivial context if there's no RenderThreadInfo. Bug: 177241396 Change-Id: I222767666266dcdce0f1e73f47b9702fb5e2639e
Diffstat (limited to 'stream-servers/RenderControl.cpp')
-rw-r--r--stream-servers/RenderControl.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/stream-servers/RenderControl.cpp b/stream-servers/RenderControl.cpp
index 6ba28d43..26f0d1fc 100644
--- a/stream-servers/RenderControl.cpp
+++ b/stream-servers/RenderControl.cpp
@@ -1111,6 +1111,21 @@ static void rcCreateSyncKHR(EGLenum type,
// guaranteed, and we need to make sure
// rcTriggerWait is registered.
emugl_sync_register_trigger_wait(rcTriggerWait);
+
+ RenderThreadInfo *tInfo = RenderThreadInfo::get();
+
+ if (!tInfo->currContext) {
+ auto fb = FrameBuffer::getFB();
+ uint32_t create_sync_cxt, create_sync_surf;
+ fb->createTrivialContext(0, // There is no context to share.
+ &create_sync_cxt,
+ &create_sync_surf);
+ fb->bindContext(create_sync_cxt,
+ create_sync_surf,
+ create_sync_surf);
+ // This context is then cleaned up when the render thread exits.
+ }
+
FenceSync* fenceSync = new FenceSync(hasNativeFence,
destroy_when_signaled);