diff --git a/recipes-kde/apps/krita/files/0001-fix-build-with-GLES2-only.patch b/recipes-kde/apps/krita/files/0001-fix-build-with-GLES2-only.patch new file mode 100644 index 00000000..50d39e83 --- /dev/null +++ b/recipes-kde/apps/krita/files/0001-fix-build-with-GLES2-only.patch @@ -0,0 +1,319 @@ +From 86cad3e0edba28de83725bf7f55ceb68ff57d765 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= +Date: Thu, 15 Mar 2018 14:47:57 +0100 +Subject: [PATCH] fix build with GLES2 only +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Upstream-Status: Pending + +Signed-off-by: Andreas Müller +--- + libs/ui/canvas/kis_mirror_axis.cpp | 5 ++- + libs/ui/opengl/kis_opengl_canvas2.cpp | 18 ++++++++++ + libs/ui/opengl/kis_opengl_image_textures.cpp | 54 ++++++++++++++++++++++++---- + libs/ui/opengl/kis_texture_tile.cpp | 10 ++++++ + 4 files changed, 79 insertions(+), 8 deletions(-) + +diff --git a/libs/ui/canvas/kis_mirror_axis.cpp b/libs/ui/canvas/kis_mirror_axis.cpp +index 47d115c..a873040 100644 +--- a/libs/ui/canvas/kis_mirror_axis.cpp ++++ b/libs/ui/canvas/kis_mirror_axis.cpp +@@ -157,6 +157,7 @@ void KisMirrorAxis::drawDecoration(QPainter& gc, const QRectF& updateArea, const + gc.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); + + QOpenGLContext *ctx = QOpenGLContext::currentContext(); ++#ifdef GL_MULTISAMPLE + bool hasMultisample = ((gc.paintEngine()->type() == QPaintEngine::OpenGL2) && + (ctx->hasExtension("GL_ARB_multisample"))); + +@@ -167,7 +168,7 @@ void KisMirrorAxis::drawDecoration(QPainter& gc, const QRectF& updateArea, const + ctx->functions()->glEnable(GL_MULTISAMPLE); + gc.endNativePainting(); + } +- ++#endif + float halfHandleSize = d->handleSize / 2; + + d->recomputeVisibleAxes(gc.viewport()); +@@ -225,11 +226,13 @@ void KisMirrorAxis::drawDecoration(QPainter& gc, const QRectF& updateArea, const + } + } + ++#ifdef GL_MULTISAMPLE + if (hasMultisample) { + gc.beginNativePainting(); + ctx->functions()->glDisable(GL_MULTISAMPLE); + gc.endNativePainting(); + } ++#endif + + } + +diff --git a/libs/ui/opengl/kis_opengl_canvas2.cpp b/libs/ui/opengl/kis_opengl_canvas2.cpp +index ab471b0..c7f09b3 100644 +--- a/libs/ui/opengl/kis_opengl_canvas2.cpp ++++ b/libs/ui/opengl/kis_opengl_canvas2.cpp +@@ -45,8 +45,10 @@ + #include + + #ifndef Q_OS_OSX ++#ifndef QT_OPENGL_ES_2 + #include + #endif ++#endif + + #define NEAR_VAL -1000.0 + #define FAR_VAL 1000.0 +@@ -103,7 +105,9 @@ public: + QVector2D texCoords[6]; + + #ifndef Q_OS_OSX ++#ifndef QT_OPENGL_ES_2 + QOpenGLFunctions_2_1 *glFn201; ++#endif + #endif + + int xToColWithWrapCompensation(int x, const QRect &imageRect) { +@@ -231,6 +235,7 @@ void KisOpenGLCanvas2::initializeGL() + KisOpenGL::initializeContext(context()); + initializeOpenGLFunctions(); + #ifndef Q_OS_OSX ++#ifndef QT_OPENGL_ES_2 + if (!KisOpenGL::hasOpenGLES()) { + d->glFn201 = context()->versionFunctions(); + if (!d->glFn201) { +@@ -239,6 +244,7 @@ void KisOpenGLCanvas2::initializeGL() + } else { + d->glFn201 = nullptr; + } ++#endif + #endif + + KisConfig cfg; +@@ -396,18 +402,28 @@ void KisOpenGLCanvas2::paintToolOutline(const QPainterPath &path) + d->cursorShader->setUniformValue(d->cursorShader->location(Uniform::ModelViewProjection), modelMatrix); + + if (!KisOpenGL::hasOpenGLES()) { ++#ifdef GL_LINE_SMOOTH_HINT + glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); ++#endif + ++#ifdef GL_COLOR_LOGIC_OP + glEnable(GL_COLOR_LOGIC_OP); ++#endif + #ifndef Q_OS_OSX ++#ifndef QT_OPENGL_ES_2 + if (d->glFn201) { + d->glFn201->glLogicOp(GL_XOR); + } ++#endif + #else ++#ifdef GL_XOR + glLogicOp(GL_XOR); ++#endif + #endif + } else { ++#ifdef GL_BLEND + glEnable(GL_BLEND); ++#endif + glBlendFuncSeparate(GL_ONE_MINUS_DST_COLOR, GL_ZERO, GL_ONE, GL_ONE); + } + +@@ -446,7 +462,9 @@ void KisOpenGLCanvas2::paintToolOutline(const QPainterPath &path) + } + + if (!KisOpenGL::hasOpenGLES()) { ++#ifdef GL_COLOR_LOGIC_OP + glDisable(GL_COLOR_LOGIC_OP); ++#endif + } else { + glDisable(GL_BLEND); + } +diff --git a/libs/ui/opengl/kis_opengl_image_textures.cpp b/libs/ui/opengl/kis_opengl_image_textures.cpp +index 1210c7b..8aa84b7 100644 +--- a/libs/ui/opengl/kis_opengl_image_textures.cpp ++++ b/libs/ui/opengl/kis_opengl_image_textures.cpp +@@ -408,7 +408,11 @@ void KisOpenGLImageTextures::generateCheckerTexture(const QImage &checkImage) + if (checkImage.width() != BACKGROUND_TEXTURE_SIZE || checkImage.height() != BACKGROUND_TEXTURE_SIZE) { + img = checkImage.scaled(BACKGROUND_TEXTURE_SIZE, BACKGROUND_TEXTURE_SIZE); + } ++#ifdef GL_RGBA8 + GLint format = GL_BGRA, internalFormat = GL_RGBA8; ++#else ++ GLint format = GL_BGRA, internalFormat = GL_BGRA; ++#endif + if (KisOpenGL::hasOpenGLES()) { + if (ctx->hasExtension(QByteArrayLiteral("GL_EXT_texture_format_BGRA8888"))) { + format = GL_BGRA_EXT; +@@ -541,18 +545,25 @@ void KisOpenGLImageTextures::updateTextureFormat() + QOpenGLContext *ctx = QOpenGLContext::currentContext(); + if (!(m_image && ctx)) return; + ++#ifdef GL_RGBA8 + if (!KisOpenGL::hasOpenGLES()) { + m_texturesInfo.internalFormat = GL_RGBA8; + m_texturesInfo.type = GL_UNSIGNED_BYTE; + m_texturesInfo.format = GL_BGRA; +- } else { ++ } else ++#endif ++ { + m_texturesInfo.internalFormat = GL_BGRA8_EXT; + m_texturesInfo.type = GL_UNSIGNED_BYTE; + m_texturesInfo.format = GL_BGRA_EXT; + if(!ctx->hasExtension(QByteArrayLiteral("GL_EXT_texture_format_BGRA8888"))) { + // The red and blue channels are swapped, but it will be re-swapped + // by texture swizzle mask set in KisTextureTile::setTextureParameters ++#ifdef GL_RGBA8 + m_texturesInfo.internalFormat = GL_RGBA8; ++#else ++ m_texturesInfo.internalFormat = GL_RGBA; ++#endif + m_texturesInfo.type = GL_UNSIGNED_BYTE; + m_texturesInfo.format = GL_RGBA; + } +@@ -569,32 +580,48 @@ void KisOpenGLImageTextures::updateTextureFormat() + if (colorModelId == RGBAColorModelID) { + if (colorDepthId == Float16BitsColorDepthID) { + ++#ifdef GL_RGBA16F + if (KisOpenGL::hasOpenGLES()) { + m_texturesInfo.internalFormat = GL_RGBA16F; + dbgUI << "Using half (GLES)"; +- } else if (ctx->hasExtension("GL_ARB_texture_float")) { ++ } else ++#endif ++#ifdef GL_RGBA16F_ARB ++ if (ctx->hasExtension("GL_ARB_texture_float")) { + m_texturesInfo.internalFormat = GL_RGBA16F_ARB; + dbgUI << "Using ARB half"; + } +- else if (ctx->hasExtension("GL_ATI_texture_float")) { ++ else ++#endif ++#ifdef GL_RGBA_FLOAT16_ATI ++ if (ctx->hasExtension("GL_ATI_texture_float")) { + m_texturesInfo.internalFormat = GL_RGBA_FLOAT16_ATI; + dbgUI << "Using ATI half"; + } ++#endif ++ // make ifdefs 'else' happy ++ if(false) {} + + bool haveBuiltInOpenExr = false; + #ifdef HAVE_OPENEXR + haveBuiltInOpenExr = true; + #endif + ++#ifdef GL_HALF_FLOAT + if (haveBuiltInOpenExr && KisOpenGL::hasOpenGLES()) { + m_texturesInfo.type = GL_HALF_FLOAT; + destinationColorDepthId = Float16BitsColorDepthID; + dbgUI << "Pixel type half (GLES)"; +- } else if (haveBuiltInOpenExr && ctx->hasExtension("GL_ARB_half_float_pixel")) { ++ } else ++#endif ++#ifdef GL_HALF_FLOAT_ARB ++ if (haveBuiltInOpenExr && ctx->hasExtension("GL_ARB_half_float_pixel")) { + m_texturesInfo.type = GL_HALF_FLOAT_ARB; + destinationColorDepthId = Float16BitsColorDepthID; + dbgUI << "Pixel type half"; +- } else { ++ } else ++#endif ++ { + m_texturesInfo.type = GL_FLOAT; + destinationColorDepthId = Float32BitsColorDepthID; + dbgUI << "Pixel type float"; +@@ -602,22 +629,32 @@ void KisOpenGLImageTextures::updateTextureFormat() + m_texturesInfo.format = GL_RGBA; + } + else if (colorDepthId == Float32BitsColorDepthID) { ++ m_texturesInfo.internalFormat = GL_RGBA; ++#ifdef GL_RGBA32F + if (KisOpenGL::hasOpenGLES()) { + m_texturesInfo.internalFormat = GL_RGBA32F; + dbgUI << "Using float (GLES)"; +- } else if (ctx->hasExtension("GL_ARB_texture_float")) { ++ } else ++#endif ++#ifdef GL_RGBA32F_ARB ++ if (ctx->hasExtension("GL_ARB_texture_float")) { + m_texturesInfo.internalFormat = GL_RGBA32F_ARB; + dbgUI << "Using ARB float"; +- } else if (ctx->hasExtension("GL_ATI_texture_float")) { ++ } else ++#endif ++#ifdef GL_RGBA_FLOAT32_ATI ++ if (ctx->hasExtension("GL_ATI_texture_float")) { + m_texturesInfo.internalFormat = GL_RGBA_FLOAT32_ATI; + dbgUI << "Using ATI float"; + } ++#endif + + m_texturesInfo.type = GL_FLOAT; + m_texturesInfo.format = GL_RGBA; + destinationColorDepthId = Float32BitsColorDepthID; + } + else if (colorDepthId == Integer16BitsColorDepthID) { ++#ifdef GL_RGBA16 + if (!KisOpenGL::hasOpenGLES()) { + m_texturesInfo.internalFormat = GL_RGBA16; + m_texturesInfo.type = GL_UNSIGNED_SHORT; +@@ -625,9 +662,11 @@ void KisOpenGLImageTextures::updateTextureFormat() + destinationColorDepthId = Integer16BitsColorDepthID; + dbgUI << "Using 16 bits rgba"; + } ++#endif + // TODO: for ANGLE, see if we can convert to 16f to support 10-bit display + } + } ++#ifdef GL_RGBA16 + else { + // We will convert the colorspace to 16 bits rgba, instead of 8 bits + if (colorDepthId == Integer16BitsColorDepthID && !KisOpenGL::hasOpenGLES()) { +@@ -639,6 +678,7 @@ void KisOpenGLImageTextures::updateTextureFormat() + } + // TODO: for ANGLE, see if we can convert to 16f to support 10-bit display + } ++#endif + + if (!m_internalColorManagementActive && + colorModelId != destinationColorModelId) { +diff --git a/libs/ui/opengl/kis_texture_tile.cpp b/libs/ui/opengl/kis_texture_tile.cpp +index d8fb03d..90e9996 100644 +--- a/libs/ui/opengl/kis_texture_tile.cpp ++++ b/libs/ui/opengl/kis_texture_tile.cpp +@@ -34,17 +34,27 @@ void KisTextureTile::setTextureParameters() + + f->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + f->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); ++#ifdef GL_TEXTURE_MIN_LOD + f->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_LOD, 0); ++#endif ++#ifdef GL_TEXTURE_MAX_LOD + f->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LOD, m_numMipmapLevels); ++#endif ++#ifdef GL_TEXTURE_BASE_LEVEL + f->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0); ++#endif ++#ifdef GL_TEXTURE_MAX_LEVEL + f->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, m_numMipmapLevels); ++#endif + ++#ifdef GL_RGBA8 + if (m_texturesInfo->internalFormat == GL_RGBA8 && m_texturesInfo->format == GL_RGBA) { + // If image format is RGBA8, swap the red and blue channels for the proper colour + // This is for OpenGL ES support and only used if lacking GL_EXT_texture_format_BGRA8888 + f->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_BLUE); + f->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, GL_RED); + } ++#endif + + f->glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + } +-- +2.14.3 + diff --git a/recipes-kde/apps/krita/files/0001-fix-build-with-GLES2.patch b/recipes-kde/apps/krita/files/0001-fix-build-with-GLES2.patch deleted file mode 100644 index 9eeb9691..00000000 --- a/recipes-kde/apps/krita/files/0001-fix-build-with-GLES2.patch +++ /dev/null @@ -1,178 +0,0 @@ -From a13f4cb491973ece28266bef9aa54706f0393fc6 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Andreas=20M=C3=BCller?= -Date: Tue, 7 Jun 2016 00:04:14 +0200 -Subject: [PATCH] fix build with GLES2 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: Andreas Müller ---- - libs/ui/canvas/kis_mirror_axis.cpp | 15 ------- - libs/ui/opengl/kis_opengl_canvas2.cpp | 16 ---------------- - libs/ui/opengl/kis_opengl_image_textures.cpp | 60 +++------------------------- - 3 files changed, 8 insertions(+), 73 deletions(-) - -diff --git a/libs/ui/canvas/kis_mirror_axis.cpp b/libs/ui/canvas/kis_mirror_axis.cpp -index 468dbf4..4823f39 100644 ---- a/libs/ui/canvas/kis_mirror_axis.cpp -+++ b/libs/ui/canvas/kis_mirror_axis.cpp -@@ -144,16 +144,6 @@ void KisMirrorAxis::drawDecoration(QPainter& gc, const QRectF& updateArea, const - gc.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); - - QOpenGLContext *ctx = QOpenGLContext::currentContext(); -- bool hasMultisample = ((gc.paintEngine()->type() == QPaintEngine::OpenGL2) && -- (ctx->hasExtension("GL_ARB_multisample"))); -- -- // QPainter cannot anti-alias the edges of circles etc. when using OpenGL -- // So instead, use native OpenGL anti-aliasing when available. -- if (hasMultisample) { -- gc.beginNativePainting(); -- ctx->functions()->glEnable(GL_MULTISAMPLE); -- gc.endNativePainting(); -- } - - float halfHandleSize = d->handleSize / 2; - -@@ -207,11 +197,6 @@ void KisMirrorAxis::drawDecoration(QPainter& gc, const QRectF& updateArea, const - } - } - -- if (hasMultisample) { -- gc.beginNativePainting(); -- ctx->functions()->glDisable(GL_MULTISAMPLE); -- gc.endNativePainting(); -- } - - } - -diff --git a/libs/ui/opengl/kis_opengl_canvas2.cpp b/libs/ui/opengl/kis_opengl_canvas2.cpp -index 75ca046..8d3164b 100644 ---- a/libs/ui/opengl/kis_opengl_canvas2.cpp -+++ b/libs/ui/opengl/kis_opengl_canvas2.cpp -@@ -102,9 +102,6 @@ public: - QVector3D vertices[6]; - QVector2D texCoords[6]; - --#ifndef Q_OS_OSX -- QOpenGLFunctions_2_1 *glFn201; --#endif - - int xToColWithWrapCompensation(int x, const QRect &imageRect) { - int firstImageColumn = openGLImageTextures->xToCol(imageRect.left()); -@@ -230,12 +227,6 @@ void KisOpenGLCanvas2::initializeGL() - { - KisOpenGL::initializeContext(context()); - initializeOpenGLFunctions(); --#ifndef Q_OS_OSX -- d->glFn201 = context()->versionFunctions(); -- if (!d->glFn201) { -- warnUI << "Cannot obtain QOpenGLFunctions_2_1, glLogicOp cannot be used"; -- } --#endif - - KisConfig cfg; - d->openGLImageTextures->setProofingConfig(canvas()->proofingConfiguration()); -@@ -395,17 +386,6 @@ void KisOpenGLCanvas2::paintToolOutline(const QPainterPath &path) - modelMatrix = projectionMatrix * modelMatrix; - d->cursorShader->setUniformValue(d->cursorShader->location(Uniform::ModelViewProjection), modelMatrix); - -- glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); -- -- glEnable(GL_COLOR_LOGIC_OP); --#ifndef Q_OS_OSX -- if (d->glFn201) { -- d->glFn201->glLogicOp(GL_XOR); -- } --#else -- glLogicOp(GL_XOR); --#endif -- - // Paint the tool outline - if (KisOpenGL::hasOpenGL3()) { - d->outlineVAO.bind(); -@@ -440,8 +420,6 @@ void KisOpenGLCanvas2::paintToolOutline(const QPainterPath &path) - d->outlineVAO.release(); - } - -- glDisable(GL_COLOR_LOGIC_OP); -- - d->cursorShader->release(); - } - -diff --git a/libs/ui/opengl/kis_opengl_image_textures.cpp b/libs/ui/opengl/kis_opengl_image_textures.cpp -index 835d41e..c16d0e7 100644 ---- a/libs/ui/opengl/kis_opengl_image_textures.cpp -+++ b/libs/ui/opengl/kis_opengl_image_textures.cpp -@@ -511,63 +511,13 @@ void KisOpenGLImageTextures::updateTextureFormat() - dbgUI << "Choosing texture format:"; - - if (colorModelId == RGBAColorModelID) { -- if (colorDepthId == Float16BitsColorDepthID) { -- -- if (ctx->hasExtension("GL_ARB_texture_float")) { -- m_texturesInfo.internalFormat = GL_RGBA16F_ARB; -- dbgUI << "Using ARB half"; -- } -- else if (ctx->hasExtension("GL_ATI_texture_float")) { -- m_texturesInfo.internalFormat = GL_RGBA_FLOAT16_ATI; -- dbgUI << "Using ATI half"; -- } -- -- bool haveBuiltInOpenExr = false; --#ifdef HAVE_OPENEXR -- haveBuiltInOpenExr = true; --#endif -- -- if (haveBuiltInOpenExr && ctx->hasExtension("GL_ARB_half_float_pixel")) { -- m_texturesInfo.type = GL_HALF_FLOAT_ARB; -- destinationColorDepthId = Float16BitsColorDepthID; -- dbgUI << "Pixel type half"; -- } else { -- m_texturesInfo.type = GL_FLOAT; -- destinationColorDepthId = Float32BitsColorDepthID; -- dbgUI << "Pixel type float"; -- } -+ if (colorDepthId == Float16BitsColorDepthID || -+ colorDepthId == Float32BitsColorDepthID) { -+ m_texturesInfo.type = GL_FLOAT; -+ destinationColorDepthId = Float32BitsColorDepthID; -+ dbgUI << "Pixel type float"; - m_texturesInfo.format = GL_RGBA; - } -- else if (colorDepthId == Float32BitsColorDepthID) { -- if (ctx->hasExtension("GL_ARB_texture_float")) { -- m_texturesInfo.internalFormat = GL_RGBA32F_ARB; -- dbgUI << "Using ARB float"; -- } else if (ctx->hasExtension("GL_ATI_texture_float")) { -- m_texturesInfo.internalFormat = GL_RGBA_FLOAT32_ATI; -- dbgUI << "Using ATI float"; -- } -- -- m_texturesInfo.type = GL_FLOAT; -- m_texturesInfo.format = GL_RGBA; -- destinationColorDepthId = Float32BitsColorDepthID; -- } -- else if (colorDepthId == Integer16BitsColorDepthID) { -- m_texturesInfo.internalFormat = GL_RGBA16; -- m_texturesInfo.type = GL_UNSIGNED_SHORT; -- m_texturesInfo.format = GL_BGRA; -- destinationColorDepthId = Integer16BitsColorDepthID; -- dbgUI << "Using 16 bits rgba"; -- } -- } -- else { -- // We will convert the colorspace to 16 bits rgba, instead of 8 bits -- if (colorDepthId == Integer16BitsColorDepthID) { -- m_texturesInfo.internalFormat = GL_RGBA16; -- m_texturesInfo.type = GL_UNSIGNED_SHORT; -- m_texturesInfo.format = GL_BGRA; -- destinationColorDepthId = Integer16BitsColorDepthID; -- dbgUI << "Using conversion to 16 bits rgba"; -- } - } - - if (!m_internalColorManagementActive && --- -2.5.5 - diff --git a/recipes-kde/apps/krita/krita_3.2.1.bb b/recipes-kde/apps/krita/krita_3.3.3.bb similarity index 86% rename from recipes-kde/apps/krita/krita_3.2.1.bb rename to recipes-kde/apps/krita/krita_3.3.3.bb index 78f6d9ab..b3304bae 100644 --- a/recipes-kde/apps/krita/krita_3.2.1.bb +++ b/recipes-kde/apps/krita/krita_3.3.3.bb @@ -34,10 +34,10 @@ DEPENDS += " \ SRC_URI = " \ ${KDE_MIRROR}/stable/${BPN}/${PV}/${BPN}-${PV}.tar.gz \ - file://0001-fix-build-with-GLES2.patch \ + file://0001-fix-build-with-GLES2-only.patch \ " -SRC_URI[md5sum] = "00896775772991182e927248eb3ef198" -SRC_URI[sha256sum] = "ef06cee677d75861edca0e1f825bca42ff59b7200aeb827e16f8d1fb5ef14e39" +SRC_URI[md5sum] = "eb3224bbf09b7b88364c6308cd5a5d18" +SRC_URI[sha256sum] = "bec04e3392e9b311477c5c6a50e2201b43a3afda91d9b24a0fc8e3399585865d" OECMAKE_GENERATOR="Unix Makefiles"