Skip to content
  • Erik Kurzinger's avatar
    platforms/drm: set read buffer in GbmSurface::makeContextCurrent · e2d271b6
    Erik Kurzinger authored and Nicolas Fella's avatar Nicolas Fella committed
    The first time the GBM backend's EGL context is made current after
    creation, both the read and draw surfaces are set to EGL_NO_SURFACE.
    This will set the GL read and draw buffers to GL_NONE in accordance with
    the EGL spec.
    
    When a real surface is later made current, however, the spec is arguably
    unclear on whether the read and draw buffers should remain set to
    GL_NONE or whether they should be restored to the default GL_BACK.  The
    Mesa driver does the latter, the NVIDIA driver does the former.
    
    To work around this difference, Kwin has an explicit call to
    glDrawBuffer in GbmSurface::makeContextCurrent. It does not have a
    corresponding call to glReadBuffer, though, which can cause some desktop
    effects such as background contrast to render incorrectly with the
    NVIDIA driver. This change adds that missing call.
    
    (cherry picked from commit e6d2bc15)
    e2d271b6