Skip to content
  • Vlad Zahorodnii's avatar
    screencast: Use fences to avoid stalling the graphics pipeline · 9c20df50
    Vlad Zahorodnii authored
    Currently, we use glFinish() to ensure that stream consumers don't see
    corrupted or rather incomplete buffers. This is a serious issue because
    glFinish() not only prevents the gpu from processing new GL commands,
    but it also blocks the compositor.
    
    This change addresses the blocking issue by using native fences. With
    the proposed change, after finishing recording a frame, a fence is
    inserted in the command stream. When the native fence is signaled, the
    pending pipewire buffer will be enqueued.
    
    If the EGL_ANDROID_native_fence_sync extension is not supported, we'll
    fall back to using glFinish().
    9c20df50