From fb2fbed0359c1661bf3c21121acd2d1db970c383 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Sat, 15 Oct 2011 14:14:44 +0200 Subject: [PATCH] Generate texture coordinates for limited NPOT support Fixes rendering issues with R300 and similar GPUs. If the texture uses GL_TEXTURE_RECTANGLE_ARB as target the tex coordinates need to be adjusted. This at least fixes missing text on EffectFrames with graphicssystem native on R300. Hopefully more issues are resolved by the change. BUG: 269576 CCBUG: 282882 FIXED-IN: 4.7.3 --- libkwineffects/kwingltexture.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/libkwineffects/kwingltexture.cpp b/libkwineffects/kwingltexture.cpp index 6fa1b3393e..4155fb16f3 100644 --- a/libkwineffects/kwingltexture.cpp +++ b/libkwineffects/kwingltexture.cpp @@ -280,11 +280,18 @@ void GLTexture::render(QRegion region, const QRect& rect) r.x() + rect.width(), r.y(), r.x() + rect.width(), r.y() + rect.height() }; +#ifdef KWIN_HAVE_OPENGLES + const float texWidth = 1.0f; + const float texHeight = 1.0f; +#else + const float texWidth = (target() == GL_TEXTURE_RECTANGLE_ARB) ? width() : 1.0f; + const float texHeight = (target() == GL_TEXTURE_RECTANGLE_ARB) ? height() : 1.0f; +#endif const float texcoords[ 4 * 2 ] = { - 0.0f, d->m_yInverted ? 0.0f : 1.0f, // y needs to be swapped (normalized coords) - 0.0f, d->m_yInverted ? 1.0f : 0.0f, - 1.0f, d->m_yInverted ? 0.0f : 1.0f, - 1.0f, d->m_yInverted ? 1.0f : 0.0f + 0.0f, d->m_yInverted ? 0.0f : texHeight, // y needs to be swapped (normalized coords) + 0.0f, d->m_yInverted ? texHeight : 0.0f, + texWidth, d->m_yInverted ? 0.0f : texHeight, + texWidth, d->m_yInverted ? texHeight : 0.0f }; d->m_vbo->setData(4, 2, verts, texcoords); }