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")
|
"Required for disallowing ptrace on kwin_wayland process")
|
||||||
|
|
||||||
check_include_file("sys/sysmacros.h" HAVE_SYS_SYSMACROS_H)
|
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)
|
check_include_file("linux/vt.h" HAVE_LINUX_VT_H)
|
||||||
add_feature_info("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
|
HAVE_SCHED_RESET_ON_FORK
|
||||||
"Required for running kwin_wayland with real-time scheduling")
|
"Required for running kwin_wayland with real-time scheduling")
|
||||||
|
|
||||||
|
configure_file(config-kwin.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kwin.h )
|
||||||
|
|
||||||
########### global ###############
|
########### global ###############
|
||||||
set(kwin_effects_dbus_xml ${CMAKE_CURRENT_SOURCE_DIR}/org.kde.kwin.Effects.xml)
|
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_renderTargets.reserve(m_downSampleIterations + 2);
|
||||||
m_renderTextures.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++) {
|
for (int i = 0; i <= m_downSampleIterations; i++) {
|
||||||
m_renderTextures.append(GLTexture(textureFormat, effects->virtualScreenSize() / (1 << 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 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
|
// Upload geometry for the down and upsample iterations
|
||||||
GLVertexBuffer *vbo = GLVertexBuffer::streamingBuffer();
|
GLVertexBuffer *vbo = GLVertexBuffer::streamingBuffer();
|
||||||
|
@ -668,7 +691,7 @@ void BlurEffect::doBlur(const QRegion& shape, const QRect& screen, const float o
|
||||||
if (isDock) {
|
if (isDock) {
|
||||||
m_renderTargets.last()->blitFromFramebuffer(sourceRect, destRect);
|
m_renderTargets.last()->blitFromFramebuffer(sourceRect, destRect);
|
||||||
|
|
||||||
if (!isGLES) {
|
if (useSRGB) {
|
||||||
glEnable(GL_FRAMEBUFFER_SRGB);
|
glEnable(GL_FRAMEBUFFER_SRGB);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -676,7 +699,7 @@ void BlurEffect::doBlur(const QRegion& shape, const QRect& screen, const float o
|
||||||
} else {
|
} else {
|
||||||
m_renderTargets.first()->blitFromFramebuffer(sourceRect, destRect);
|
m_renderTargets.first()->blitFromFramebuffer(sourceRect, destRect);
|
||||||
|
|
||||||
if (!isGLES) {
|
if (useSRGB) {
|
||||||
glEnable(GL_FRAMEBUFFER_SRGB);
|
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());
|
upscaleRenderToScreen(vbo, blurRectCount * (m_downSampleIterations + 1), shape.rectCount() * 6, screenProjection, windowRect.topLeft());
|
||||||
|
|
||||||
if (!isGLES) {
|
if (useSRGB) {
|
||||||
glDisable(GL_FRAMEBUFFER_SRGB);
|
glDisable(GL_FRAMEBUFFER_SRGB);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue