summaryrefslogtreecommitdiffstats
path: root/platform/linuxbsd/wayland/detect_prime_egl.h
diff options
context:
space:
mode:
authorRiteo <riteo@posteo.net>2024-06-01 20:04:16 +0200
committerRiteo <riteo@posteo.net>2024-06-04 08:43:34 +0200
commit8f69f2969433ba88b8eda923ef2d576f81a959c1 (patch)
treec07b83cae7ee0d3fc71a87041a1244c7eafbae3c /platform/linuxbsd/wayland/detect_prime_egl.h
parent705b7a0b0bd535c95e4e8fb439f3d84b3fb4f427 (diff)
downloadredot-engine-8f69f2969433ba88b8eda923ef2d576f81a959c1.tar.gz
EGL: Use EGL_EXT_platform_base whenever possible
This avoids any assumption from the driver, which would otherwise select a specific platform and potentially mess up everything, resulting usually in a display server failure.
Diffstat (limited to 'platform/linuxbsd/wayland/detect_prime_egl.h')
-rw-r--r--platform/linuxbsd/wayland/detect_prime_egl.h28
1 files changed, 26 insertions, 2 deletions
diff --git a/platform/linuxbsd/wayland/detect_prime_egl.h b/platform/linuxbsd/wayland/detect_prime_egl.h
index 26351b0dce..3391e020d8 100644
--- a/platform/linuxbsd/wayland/detect_prime_egl.h
+++ b/platform/linuxbsd/wayland/detect_prime_egl.h
@@ -34,6 +34,30 @@
#ifdef GLES3_ENABLED
#ifdef EGL_ENABLED
+#ifdef GLAD_ENABLED
+#include "thirdparty/glad/glad/egl.h"
+#include "thirdparty/glad/glad/gl.h"
+#else
+#include <EGL/egl.h>
+#include <EGL/eglext.h>
+#include <GL/glcorearb.h>
+
+#define GLAD_EGL_VERSION_1_5 1
+
+#ifdef EGL_EXT_platform_base
+#define GLAD_EGL_EXT_platform_base 1
+#endif
+
+#define KHRONOS_STATIC 1
+extern "C" EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT(EGLenum platform, void *native_display, const EGLint *attrib_list);
+#undef KHRONOS_STATIC
+
+#endif // GLAD_ENABLED
+
+#ifndef EGL_EXT_platform_base
+#define GLAD_EGL_EXT_platform_base 0
+#endif
+
class DetectPrimeEGL {
private:
struct Vendor {
@@ -53,10 +77,10 @@ private:
{ nullptr, 0 }
};
- static void create_context();
+ static void create_context(EGLenum p_platform_enum);
public:
- static int detect_prime();
+ static int detect_prime(EGLenum p_platform_enum);
};
#endif // GLES3_ENABLED