Commit e2d271b6 authored by Erik Kurzinger's avatar Erik Kurzinger Committed by Nicolas Fella
Browse files

platforms/drm: set read buffer in GbmSurface::makeContextCurrent

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)
parent 418a34c2
Pipeline #177202 passed with stage
in 21 minutes and 49 seconds
......@@ -377,6 +377,7 @@ bool EglGbmBackend::makeContextCurrent(const Output::RenderData &render) const
}
if (!GLPlatform::instance()->isGLES()) {
glDrawBuffer(GL_BACK);
glReadBuffer(GL_BACK);
}
return true;
}
......
Supports Markdown
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