Commit 5b8e3ecf authored by Jocelyn Turcotte's avatar Jocelyn Turcotte
Browse files

Wait on sync point fences instead of creating a new fence


Posting a runnable on the GPU thread's message loop and creating a GL
fence sync there assumes that there is a current GL context, and that
synchronizing with this context will make sure that we wait for all
GL context producing any of our consumed texture mailboxes.

This is however not always the case like when:
- The current GL context on the GPU thread is destroyed right before
  our runnable is handled, displaying errors on the console that
  glFlush needs a current context.
- The GL driver will do extra scheduling and let the scene graph
  thread synchronize its GL command stream only with the GL context
  in which the fence sync was created.

To remedy the situation, make sure that Chromium creates a fence sync
for every sync points associated with a mailbox that we consume and
do so directly in the GL context associated with the originating
glInsertSyncPointCHROMIUM call. Wait for all those syncs on the Qt
side afterward.

This might also help with a few erratic behaviors noticed on some
embedded GL drivers.

Change-Id: I5fc60fcf51497477b2e1b3a535d0a141954fc6e5
Reviewed-by: default avatarAndras Becsi <andras.becsi@digia.com>
parent 41efc549
Branches
Tags
No related merge requests found
Showing with 82 additions and 72 deletions
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment