diff options
author | Lingfeng Yang <lfy@google.com> | 2021-02-17 09:39:38 -0800 |
---|---|---|
committer | Lingfeng Yang <lfy@google.com> | 2021-02-17 09:41:14 -0800 |
commit | e492671d6fe511dd1c6577a8bb1f918b20ce1821 (patch) | |
tree | 59f9db5ffaea0c83afeaef0b58c5354426a74d6f /stream-servers/RenderControl.cpp | |
parent | ae05926336285b90979d06b9a683162b374b95cb (diff) | |
download | vulkan-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.cpp | 15 |
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); |