Additionally:
- hide the GLTexture implementation using dpointers
- drop the unused function SceneOpenGL::Texture::optimizeBindDamage()
- Texture::load now loads a new texture and does not update the existing one
REVIEW: 101999
Removes the Extension::glxAvailable() from kwinglobals and
implements the functionality in CompositingPrefs, where it
is only needed. There used to be one additional check in
scene_opengl_glx.cpp which is moved into composite.cpp
before the OpenGL Scene is created.
REVIEW: 102002
All the functionality of Overlay Window is moved to its own class
OverlayWindow. It is created and owned by class Scene, since almost
all function calls are called from this class.
REVIEW: 101866
Adding a new method to retrieve whether the OpenGL implementation
uses any kind of software emulation and no software emulation can
provide GLSL support, even if it claims so.
Thanks to Maurel for testing again and again proposed patches.
BUG: 271166
If OpenGL compositing is tried in GLX with a Mesa driver not
at least 7.10 we stop OpenGL compositing.
For OpenGL ES we just assume that all Mesa drivers are fine, so
no requirement.
This solves the regression with NVIDIA drivers resulting in a black screen.
Apparently NVIDIA does not support glXCopySubBuffer and the copying of pixels
fails with a shader bound.
So unbinding the shader before copying the pixels and rebinding the shader
afterwards resolves the issue.
This allows to remove the temporary hack to make NVIDIA work, again.
Apparently glXQueryDrawable does not work in NVIDIA blob for binding
a texture from an icon. This fixes an abort, but the root cause should
be found and fixed properly.
Our primary target is Texture From Pixmap and it is supported
by all important drivers nowadays. If a driver is not able to
support TFP using OpenGL at all is probably no good idea and
XRender is more suited.
A color can be specified to render the geometry of the VBO.
For legacy painting glColor is used, for shader a uniform is set.
In order to allow rendering without texcoords, it is possible to pass
a null pointer as texcoords.
Shader added to scene which just renders a colored geometry without texturing.