Merge branch 'Plasma/5.16'
This commit is contained in:
commit
ea97928426
2 changed files with 30 additions and 6 deletions
|
@ -350,7 +350,6 @@ add_feature_info("prctl/procctl tracing control"
|
|||
"Required for disallowing ptrace on kwin_wayland process")
|
||||
|
||||
check_include_file("sys/sysmacros.h" HAVE_SYS_SYSMACROS_H)
|
||||
configure_file(config-kwin.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kwin.h )
|
||||
|
||||
check_include_file("linux/vt.h" HAVE_LINUX_VT_H)
|
||||
add_feature_info("linux/vt.h"
|
||||
|
@ -366,6 +365,8 @@ add_feature_info("SCHED_RESET_ON_FORK"
|
|||
HAVE_SCHED_RESET_ON_FORK
|
||||
"Required for running kwin_wayland with real-time scheduling")
|
||||
|
||||
configure_file(config-kwin.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kwin.h )
|
||||
|
||||
########### global ###############
|
||||
set(kwin_effects_dbus_xml ${CMAKE_CURRENT_SOURCE_DIR}/org.kde.kwin.Effects.xml)
|
||||
|
||||
|
|
|
@ -126,7 +126,30 @@ void BlurEffect::updateTexture()
|
|||
m_renderTargets.reserve(m_downSampleIterations + 2);
|
||||
m_renderTextures.reserve(m_downSampleIterations + 2);
|
||||
|
||||
const GLenum textureFormat = GLPlatform::instance()->isGLES() ? GL_RGBA8 : GL_SRGB8_ALPHA8;
|
||||
GLenum textureFormat = GL_RGBA8;
|
||||
|
||||
// Check the color encoding of the default framebuffer
|
||||
if (!GLPlatform::instance()->isGLES()) {
|
||||
GLuint prevFbo = 0;
|
||||
glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, reinterpret_cast<GLint *>(&prevFbo));
|
||||
|
||||
if (prevFbo != 0) {
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
}
|
||||
|
||||
GLenum colorEncoding = GL_LINEAR;
|
||||
glGetFramebufferAttachmentParameteriv(GL_DRAW_FRAMEBUFFER, GL_BACK_LEFT,
|
||||
GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING,
|
||||
reinterpret_cast<GLint *>(&colorEncoding));
|
||||
|
||||
if (prevFbo != 0) {
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, prevFbo);
|
||||
}
|
||||
|
||||
if (colorEncoding == GL_SRGB) {
|
||||
textureFormat = GL_SRGB8_ALPHA8;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i <= m_downSampleIterations; i++) {
|
||||
m_renderTextures.append(GLTexture(textureFormat, effects->virtualScreenSize() / (1 << i)));
|
||||
|
@ -643,7 +666,7 @@ void BlurEffect::doBlur(const QRegion& shape, const QRect& screen, const float o
|
|||
|
||||
const QRegion expandedBlurRegion = expand(shape) & expand(screen);
|
||||
|
||||
const bool isGLES = GLPlatform::instance()->isGLES();
|
||||
const bool useSRGB = m_renderTextures.first().internalFormat() == GL_SRGB8_ALPHA8;
|
||||
|
||||
// Upload geometry for the down and upsample iterations
|
||||
GLVertexBuffer *vbo = GLVertexBuffer::streamingBuffer();
|
||||
|
@ -668,7 +691,7 @@ void BlurEffect::doBlur(const QRegion& shape, const QRect& screen, const float o
|
|||
if (isDock) {
|
||||
m_renderTargets.last()->blitFromFramebuffer(sourceRect, destRect);
|
||||
|
||||
if (!isGLES) {
|
||||
if (useSRGB) {
|
||||
glEnable(GL_FRAMEBUFFER_SRGB);
|
||||
}
|
||||
|
||||
|
@ -676,7 +699,7 @@ void BlurEffect::doBlur(const QRegion& shape, const QRect& screen, const float o
|
|||
} else {
|
||||
m_renderTargets.first()->blitFromFramebuffer(sourceRect, destRect);
|
||||
|
||||
if (!isGLES) {
|
||||
if (useSRGB) {
|
||||
glEnable(GL_FRAMEBUFFER_SRGB);
|
||||
}
|
||||
|
||||
|
@ -703,7 +726,7 @@ void BlurEffect::doBlur(const QRegion& shape, const QRect& screen, const float o
|
|||
|
||||
upscaleRenderToScreen(vbo, blurRectCount * (m_downSampleIterations + 1), shape.rectCount() * 6, screenProjection, windowRect.topLeft());
|
||||
|
||||
if (!isGLES) {
|
||||
if (useSRGB) {
|
||||
glDisable(GL_FRAMEBUFFER_SRGB);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue