kumquat-buildroot/package/rpi-userland/0007-GLES2-gl2ext.h-add-GLint64-GLuint64-and-GLsync-typed.patch
Peter Seiderer e008c0bb10 package/rpi-userland: add GLint64, GLuint64 and GLsync typedefs to GLES2/gl2ext.h
Fixes:

  - https://bugs.busybox.net/show_bug.cgi?id=13796

.../host/arm-linucleus-linux-gnueabihf/sysroot/usr/include/gstreamer-1.0/gst/gl/glprototypes/gstgl_compat.h:40:18: error: conflicting declaration ‘typedef void* GLsync’
   40 | typedef gpointer GLsync;
      |                  ^~~~~~

.../host/arm-linucleus-linux-gnueabihf/sysroot/usr/include/qt5/QtGui/qopengles2ext.h:24:26: note: previous declaration as ‘typedef struct __GLsync* GLsync’
   24 | typedef struct __GLsync *GLsync;
      |                          ^~~~~~

File gstgl_compat.h:

 39 #if !GST_GL_HAVE_GLSYNC
 40 typedef gpointer GLsync;
 41 #endif

File qopengles2ext.h:

   1 #ifndef __gles2_gl2ext_h_
   2 #define __gles2_gl2ext_h_ 1
   3
   4 #if 0
   5 #pragma qt_no_master_include
   6 #pragma qt_sync_skip_header_check
   7 #pragma qt_sync_stop_processing
   8 #endif
   9
  10 #ifdef __cplusplus
  11 extern "C" {
  12 #endif
  13
  14 #ifndef __gl3_h_
  15 /* These types are defined with reference to <inttypes.h>
  16  * in the Apple extension spec, but here we use the Khronos
  17  * portable types in khrplatform.h, and assume those types
  18  * are always defined.
  19  * If any other extensions using these types are defined,
  20  * the typedefs must move out of this block and be shared.
  21  */
  22 typedef khronos_int64_t GLint64;
  23 typedef khronos_uint64_t GLuint64;
  24 typedef struct __GLsync *GLsync;
  25 #endif

The problem is that rpi-userland doesn't define GLsync, and both
GStreamer and Qt have their own definition of GLsync in this case, but
they are not the same.

We reported this issue to:

 * rpi-userland, to get the headers updated:
   https://github.com/raspberrypi/userland/issues/469#issuecomment-1193864294

 * gstreamer, to get their bogus definition of GLsync fixed:
   https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/973

In the mean time, fix this by adding the missing definitions to
rpi-userland, so that GStreamer and Qt don't try to provide their own.

Signed-off-by: Peter Seiderer <ps.report@gmx.net>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2022-07-25 14:56:12 +02:00

100 lines
3.2 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From ffb8eafe2d745ddf2f44101ffc4e6599ed096e69 Mon Sep 17 00:00:00 2001
From: Peter Seiderer <ps.report@gmx.net>
Date: Mon, 10 May 2021 19:15:48 +0200
Subject: [PATCH] GLES2/gl2ext.h: add GLint64, GLuint64 and GLsync typedefs
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fixes:
.../host/arm-linucleus-linux-gnueabihf/sysroot/usr/include/gstreamer-1.0/gst/gl/glprototypes/gstgl_compat.h:40:18: error: conflicting declaration typedef void* GLsync
40 | typedef gpointer GLsync;
| ^~~~~~
.../host/arm-linucleus-linux-gnueabihf/sysroot/usr/include/qt5/QtGui/qopengles2ext.h:24:26: note: previous declaration as typedef struct __GLsync* GLsync
24 | typedef struct __GLsync *GLsync;
| ^~~~~~
File gstgl_compat.h:
39 #if !GST_GL_HAVE_GLSYNC
40 typedef gpointer GLsync;
41 #endif
File qopengles2ext.h:
1 #ifndef __gles2_gl2ext_h_
2 #define __gles2_gl2ext_h_ 1
3
4 #if 0
5 #pragma qt_no_master_include
6 #pragma qt_sync_skip_header_check
7 #pragma qt_sync_stop_processing
8 #endif
9
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13
14 #ifndef __gl3_h_
15 /* These types are defined with reference to <inttypes.h>
16 * in the Apple extension spec, but here we use the Khronos
17 * portable types in khrplatform.h, and assume those types
18 * are always defined.
19 * If any other extensions using these types are defined,
20 * the typedefs must move out of this block and be shared.
21 */
22 typedef khronos_int64_t GLint64;
23 typedef khronos_uint64_t GLuint64;
24 typedef struct __GLsync *GLsync;
25 #endif
The problem is that rpi-userland doesn't define GLsync, and both
GStreamer and Qt have their own definition of GLsync in this case, but
they are not the same.
We reported this issue to:
* rpi-userland, to get the headers updated:
https://github.com/raspberrypi/userland/issues/469#issuecomment-1193864294
* gstreamer, to get their bogus definition of GLsync fixed:
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/973
In the mean time, fix this by adding the missing definitions to
rpi-userland, so that GStreamer and Qt don't try to provide their own.
Signed-off-by: Peter Seiderer <ps.report@gmx.net>
---
interface/khronos/include/GLES2/gl2ext.h | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/interface/khronos/include/GLES2/gl2ext.h b/interface/khronos/include/GLES2/gl2ext.h
index 4eacf7f..96e87ec 100644
--- a/interface/khronos/include/GLES2/gl2ext.h
+++ b/interface/khronos/include/GLES2/gl2ext.h
@@ -33,6 +33,19 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
extern "C" {
#endif
+#ifndef __gl3_h_
+/* These types are defined with reference to <inttypes.h>
+ * in the Apple extension spec, but here we use the Khronos
+ * portable types in khrplatform.h, and assume those types
+ * are always defined.
+ * If any other extensions using these types are defined,
+ * the typedefs must move out of this block and be shared.
+ */
+typedef khronos_int64_t GLint64;
+typedef khronos_uint64_t GLuint64;
+typedef struct __GLsync *GLsync;
+#endif
+
/* We want this */
#ifndef GL_GLEXT_PROTOTYPES
#define GL_GLEXT_PROTOTYPES
--
2.31.1