[neon/extras/subtitlecomposer/Neon/release] debian/patches: Add patch from Gentoo to fix gles build fail on arm.

Scarlett Moore null at kde.org
Thu Oct 19 12:36:25 BST 2023


Git commit 2d32d5e9875497cd36c6ce8dd933bac961b65d31 by Scarlett Moore.
Committed on 19/10/2023 at 13:35.
Pushed by scarlettmoore into branch 'Neon/release'.

Add patch from Gentoo to fix gles build fail on arm.

A  +122  -0    debian/patches/gles_support.patch
M  +1    -0    debian/patches/series

https://invent.kde.org/neon/extras/subtitlecomposer/-/commit/2d32d5e9875497cd36c6ce8dd933bac961b65d31

diff --git a/debian/patches/gles_support.patch b/debian/patches/gles_support.patch
new file mode 100644
index 0000000..4ee43c9
--- /dev/null
+++ b/debian/patches/gles_support.patch
@@ -0,0 +1,122 @@
+From 167a941f8070f4a9abacb3aa2f61ee6ee00d6cb8 Mon Sep 17 00:00:00 2001
+From: Mladen Milinkovic <maxrd2 at smoothware.net>
+Date: Thu, 7 Oct 2021 19:37:23 +0200
+Subject: [PATCH] GLRenderer: added GLES support
+
+---
+ src/videoplayer/backend/glrenderer.cpp | 44 ++++++++++++++++++++++----
+ 1 file changed, 38 insertions(+), 6 deletions(-)
+
+diff --git a/src/videoplayer/backend/glrenderer.cpp b/src/videoplayer/backend/glrenderer.cpp
+index 7c9c38b..5cb985d 100644
+--- a/src/videoplayer/backend/glrenderer.cpp
++++ b/src/videoplayer/backend/glrenderer.cpp
+@@ -20,6 +20,7 @@ extern "C" {
+ }
+
+ #define DEBUG_GL 0
++#define FORCE_GLES 0
+ #define OPENGL_CORE 0
+ #define OPENGL_VER 2,0
+
+@@ -33,6 +34,17 @@ extern "C" {
+ #define asGL(glCall) glCall
+ #endif
+
++#if defined(GL_ES_VERSION_2_0) || FORCE_GLES
++#define USE_GLES
++#define TEXTURE_RGB_FORMAT GL_RGBA
++// NOTE: we don't currently support more than 8bpp on GLES
++#define TEXTURE_U16_FORMAT GL_R8
++#else
++#undef USE_GLES
++#define TEXTURE_RGB_FORMAT GL_BGRA
++#define TEXTURE_U16_FORMAT GL_R16
++#endif
++
+ using namespace SubtitleComposer;
+
+ enum { ID_Y, ID_U, ID_V, ID_OVR, ID_SIZE };
+@@ -82,6 +94,9 @@ void
+ GLRenderer::setupProfile()
+ {
+ 	QSurfaceFormat format(QSurfaceFormat::defaultFormat());
++#if FORCE_GLES
++	format.setRenderableType(QSurfaceFormat::OpenGLES);
++#endif
+ 	format.setVersion(OPENGL_VER);
+ #if DEBUG_GL
+ 	format.setOption(QSurfaceFormat::DebugContext);
+@@ -126,7 +141,7 @@ GLRenderer::setFrameFormat(int width, int height, int compBits, int crWidthShift
+ 	m_crHeight = crHeight;
+
+ 	m_glType = compBytes == 1 ? GL_UNSIGNED_BYTE : GL_UNSIGNED_SHORT;
+-	m_glFormat = compBytes == 1 ? GL_R8 : GL_R16;
++	m_glFormat = compBytes == 1 ? GL_R8 : TEXTURE_U16_FORMAT;
+
+ 	delete[] m_bufYUV;
+ 	m_bufSize = bufSize;
+@@ -261,7 +276,11 @@ GLRenderer::initShader()
+ 	delete m_vertShader;
+ 	m_vertShader = new QOpenGLShader(QOpenGLShader::Vertex, this);
+ 	bool success = m_vertShader->compileSourceCode(
++#ifdef USE_GLES
++		"#version 100\n"
++#else
+ 		"#version 120\n"
++#endif
+ 		"attribute vec4 vPos;"
+ 		"attribute vec2 vVidTex;"
+ 		"attribute vec2 vOvrTex;"
+@@ -288,7 +307,13 @@ GLRenderer::initShader()
+ 		csms.append(QString::number(csm[i], 'g', 10));
+ 	}
+
+-	success = m_fragShader->compileSourceCode(QStringLiteral("#version 120\n"
++	success = m_fragShader->compileSourceCode(QStringLiteral(
++#ifdef USE_GLES
++		"#version 100\n"
++		"precision mediump float;\n"
++#else
++		"#version 120\n"
++#endif
+ 		"varying vec2 vfVidTex;"
+ 		"varying vec2 vfOvrTex;"
+ 		"uniform sampler2D texY;"
+@@ -348,8 +373,15 @@ GLRenderer::initializeGL()
+ 	QMutexLocker l(&m_texMutex);
+
+ 	initializeOpenGLFunctions();
+-	qDebug() << "OpenGL version: " << reinterpret_cast<const char *>(glGetString(GL_VERSION));
+-	qDebug() << "GLSL version: " << reinterpret_cast<const char *>(glGetString(GL_SHADING_LANGUAGE_VERSION));
++	qDebug().nospace() << "GL API: OpenGL " << (format().renderableType() == QSurfaceFormat::OpenGLES ? "ES" : "Desktop")
++		<< ' ' << format().majorVersion() << "." << format().minorVersion()
++#ifdef USE_GLES
++		<< " (compiled for OpenGL ES)";
++#else
++		<< " (compiled for OpenGL Desktop)";
++#endif
++	qDebug() << "OpenGL version:" << reinterpret_cast<const char *>(glGetString(GL_VERSION));
++	qDebug() << "GLSL version:" << reinterpret_cast<const char *>(glGetString(GL_SHADING_LANGUAGE_VERSION));
+
+ 	if(m_vao.create())
+ 		m_vao.bind();
+@@ -453,13 +485,13 @@ GLRenderer::uploadMM(int texWidth, int texHeight, T *texBuf, const T *texSrc)
+ 			if(D == 1) {
+ 				asGL(glTexImage2D(GL_TEXTURE_2D, level, m_glFormat, texWidth, texHeight, 0, GL_RED, m_glType, texSrc));
+ 			} else { // D == 4
+-				asGL(glTexImage2D(GL_TEXTURE_2D, level, GL_RGBA8, texWidth, texHeight, 0, GL_BGRA, GL_UNSIGNED_BYTE, texSrc));
++				asGL(glTexImage2D(GL_TEXTURE_2D, level, GL_RGBA8, texWidth, texHeight, 0, TEXTURE_RGB_FORMAT, GL_UNSIGNED_BYTE, texSrc));
+ 			}
+ 		} else {
+ 			if(D == 1) {
+ 				asGL(glTexSubImage2D(GL_TEXTURE_2D, level, 0, 0, texWidth, texHeight, GL_RED, m_glType, texSrc));
+ 			} else { // D == 4
+-				asGL(glTexSubImage2D(GL_TEXTURE_2D, level, 0, 0, texWidth, texHeight, GL_BGRA, GL_UNSIGNED_BYTE, texSrc));
++				asGL(glTexSubImage2D(GL_TEXTURE_2D, level, 0, 0, texWidth, texHeight, TEXTURE_RGB_FORMAT, GL_UNSIGNED_BYTE, texSrc));
+			}
+ 		}
+
+--
+GitLab
+
diff --git a/debian/patches/series b/debian/patches/series
index 51c5b74..1444505 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,3 @@
 upstream_Fix-compilation-with-ffmpeg5-63.patch
 upstream_VideoPlayer-Fix-usage-of-deprecated-removed-AVCodec-.patch
+gles_support.patch


More information about the Neon-commits mailing list