From c2399ba262748f14654404d34cf4eadb8d3df5c0 Mon Sep 17 00:00:00 2001 From: Conn O'Griofa Date: Thu, 5 Oct 2017 20:19:55 +0100 Subject: [PATCH 1/3] Raspberry Pi: fix ES 1/PVR support & autodetect Mesa driver * The brcmGLESv2 vendor library also supports ES PVR/1 profiles * Fallback to standard Mesa libraries if the VC4 driver is loaded --- src/video/SDL_egl.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c index 9ccc2c3e1..9e10c2bc5 100644 --- a/src/video/SDL_egl.c +++ b/src/video/SDL_egl.c @@ -44,12 +44,12 @@ #if SDL_VIDEO_DRIVER_RPI /* Raspbian places the OpenGL ES/EGL binaries in a non standard path */ -#define DEFAULT_EGL "/opt/vc/lib/libbrcmEGL.so" -#define DEFAULT_OGL_ES2 "/opt/vc/lib/libbrcmGLESv2.so" -#define ALT_EGL "/opt/vc/lib/libEGL.so" -#define ALT_OGL_ES2 "/opt/vc/lib/libGLESv2.so" -#define DEFAULT_OGL_ES_PVR "/opt/vc/lib/libGLES_CM.so" -#define DEFAULT_OGL_ES "/opt/vc/lib/libGLESv1_CM.so" +#define DEFAULT_EGL ( vc4 ? "libEGL.so" : "/opt/vc/lib/libbrcmEGL.so" ) +#define DEFAULT_OGL_ES2 ( vc4 ? "libGLESv2.so.2" : "/opt/vc/lib/libbrcmGLESv2.so" ) +#define ALT_EGL ( vc4 ? "libEGL.so" : "/opt/vc/lib/libEGL.so" ) +#define ALT_OGL_ES2 ( vc4 ? "libGLESv2.so.2" : "/opt/vc/lib/libGLESv2.so" ) +#define DEFAULT_OGL_ES_PVR ( vc4 ? "libGLES_CM.so.1" : "/opt/vc/lib/libbrcmGLESv2.so" ) +#define DEFAULT_OGL_ES ( vc4 ? "libGLESv1_CM.so.1" : "/opt/vc/lib/libbrcmGLESv2.so" ) #elif SDL_VIDEO_DRIVER_ANDROID || SDL_VIDEO_DRIVER_VIVANTE /* Android */ @@ -256,6 +256,9 @@ SDL_EGL_LoadLibrary(_THIS, const char *egl_path, NativeDisplayType native_displa #if SDL_VIDEO_DRIVER_WINDOWS || SDL_VIDEO_DRIVER_WINRT const char *d3dcompiler; #endif +#if SDL_VIDEO_DRIVER_RPI + SDL_bool vc4 = (0 == access("/sys/module/vc4/", F_OK)); +#endif if (_this->egl_data) { return SDL_SetError("OpenGL ES context already created"); From e3cd9b2aa827a40ff237e9a27c6a585170219184 Mon Sep 17 00:00:00 2001 From: Conn O'Griofa Date: Thu, 5 Oct 2017 20:22:24 +0100 Subject: [PATCH 2/3] debian/rules: enable KMS DRM driver by default The vendor/Mesa driver can now be autodetected during runtime. --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index f134b0543..389740d30 100755 --- a/debian/rules +++ b/debian/rules @@ -9,7 +9,7 @@ confflags = --disable-rpath --disable-video-directfb \ --disable-x11-shared --disable-video-opengl --enable-video-opengles \ --disable-esd --disable-pulseaudio \ --disable-input-tslib \ - --enable-video-rpi + --enable-video-rpi --enable-video-kmsdrm %: dh $@ --parallel From be1d2aeccd52d4be9ed137868103bb06d4813397 Mon Sep 17 00:00:00 2001 From: Conn O'Griofa Date: Thu, 5 Oct 2017 23:29:47 +0000 Subject: [PATCH 3/3] SDL_video: try to bootstrap KMSDRM before RPI video driver Allow better coexistence between RPI's vendor libraries and VC4 mesa driver. --- src/video/SDL_video.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 60b214718..37401f52e 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -97,12 +97,12 @@ static VideoBootStrap *bootstrap[] = { #if SDL_VIDEO_DRIVER_PSP &PSP_bootstrap, #endif -#if SDL_VIDEO_DRIVER_RPI - &RPI_bootstrap, -#endif #if SDL_VIDEO_DRIVER_KMSDRM &KMSDRM_bootstrap, #endif +#if SDL_VIDEO_DRIVER_RPI + &RPI_bootstrap, +#endif #if SDL_VIDEO_DRIVER_NACL &NACL_bootstrap, #endif