| 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 |
| |