Add a qtbase patch to fix the qwindow-compositor display issue of NTOP (Non-Power-Of-Two) textures for GPU which does not spport GL_REPEAT wrap mode. The same patch is included at QT5.11.
Signed-off-by: Eric Ruei <[email protected]> --- ...ure-Set-wrap-mode-if-NPOT-textures-are-no.patch | 65 ++++++++++++++++++++++ meta-arago-distro/recipes-qt/qt5/qtbase_%.bbappend | 3 +- 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 meta-arago-distro/recipes-qt/qt5/qtbase/0001-QOpenGLTexture-Set-wrap-mode-if-NPOT-textures-are-no.patch diff --git a/meta-arago-distro/recipes-qt/qt5/qtbase/0001-QOpenGLTexture-Set-wrap-mode-if-NPOT-textures-are-no.patch b/meta-arago-distro/recipes-qt/qt5/qtbase/0001-QOpenGLTexture-Set-wrap-mode-if-NPOT-textures-are-no.patch new file mode 100644 index 0000000..84a0195 --- /dev/null +++ b/meta-arago-distro/recipes-qt/qt5/qtbase/0001-QOpenGLTexture-Set-wrap-mode-if-NPOT-textures-are-no.patch @@ -0,0 +1,65 @@ +From fbb9c0461c14196ac7100c90088c15263d0cccbb Mon Sep 17 00:00:00 2001 +From: Johan Klokkhammer Helsing <[email protected]> +Date: Tue, 3 Apr 2018 14:42:15 +0200 +Subject: [PATCH] QOpenGLTexture: Set wrap mode if NPOT textures are not fully + supported + +The OpenGL wrap mode defaults to GL_REPEAT although it is not supported for +non-power-of-two textures on hardware that only has limited support. + +I.e. the following would create a texture with an invalid wrap mode: + + auto *t = new QOpenGLTexture(QOpenGLTexture::Target2D); + t.setSize(123, 456); + +This patch adds a check in QOpenGLWindow::setSize to see if it's called with a +non-power-of-two size on hardware without full support, and if so sets wrapMode +to ClampToEdge (which should work on devices with limited support). + +Task-number: QTBUG-67418 +Change-Id: I56e9f4383dbf5430c2bc5e4e9e585712b3603c13 +Reviewed-by: Laszlo Agocs <[email protected]> +--- + src/gui/opengl/qopengltexture.cpp | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/src/gui/opengl/qopengltexture.cpp b/src/gui/opengl/qopengltexture.cpp +index b825b56..cea4b51 100644 +--- a/src/gui/opengl/qopengltexture.cpp ++++ b/src/gui/opengl/qopengltexture.cpp +@@ -2800,6 +2800,11 @@ QOpenGLTexture::TextureFormat QOpenGLTexture::format() const + return d->format; + } + ++static bool isNpot(int width, int height = 1, int depth = 1) ++{ ++ return width & (width-1) || height & (height-1) || depth & (depth-1); ++} ++ + /*! + Sets the dimensions of this texture object to \a width, + \a height, and \a depth. The default for each dimension is 1. +@@ -2807,6 +2812,10 @@ QOpenGLTexture::TextureFormat QOpenGLTexture::format() const + implementation. Allocating storage for a texture less than the + maximum size can still fail if your system is low on resources. + ++ If a non-power-of-two \a width, \a height or \a depth is provided and your ++ OpenGL implementation doesn't have support for repeating non-power-of-two ++ textures, then the wrap mode is automatically set to ClampToEdge. ++ + \sa width(), height(), depth() + */ + void QOpenGLTexture::setSize(int width, int height, int depth) +@@ -2819,6 +2828,9 @@ void QOpenGLTexture::setSize(int width, int height, int depth) + return; + } + ++ if (isNpot(width, height, depth) && !hasFeature(Feature::NPOTTextureRepeat) && d->target != Target::TargetRectangle) ++ d->setWrapMode(WrapMode::ClampToEdge); ++ + switch (d->target) { + case QOpenGLTexture::Target1D: + case QOpenGLTexture::Target1DArray: +-- +1.9.1 + diff --git a/meta-arago-distro/recipes-qt/qt5/qtbase_%.bbappend b/meta-arago-distro/recipes-qt/qt5/qtbase_%.bbappend index 62f49e4..571261e 100644 --- a/meta-arago-distro/recipes-qt/qt5/qtbase_%.bbappend +++ b/meta-arago-distro/recipes-qt/qt5/qtbase_%.bbappend @@ -4,7 +4,7 @@ GLES_EXTRA_DEPS = "libdrm wayland" PACKAGECONFIG[gles2] = "-opengl es2 -eglfs,,virtual/libgles2 virtual/egl ${GLES_EXTRA_DEPS}" -PR_append = ".arago12" +PR_append = ".arago13" QT_CONFIG_FLAGS += "-qpa ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', 'eglfs', d)}" @@ -18,6 +18,7 @@ SRC_URI += "\ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', '', "${QT_EGLFS_PATCHES}", d)}\ file://0001-deform-Fix-how-controls-are-shown.patch \ file://0002-deform-disable-opengl-button.patch \ + file://0001-QOpenGLTexture-Set-wrap-mode-if-NPOT-textures-are-no.patch \ " python do_patch_append() { -- 1.9.1 _______________________________________________ meta-arago mailing list [email protected] http://arago-project.org/cgi-bin/mailman/listinfo/meta-arago
