Browse Source

kmsdrm: Implement GL_DefaultProfileConfig for Raspberry Pi compatibility.

If we think this might be a Raspberry Pi device, default to ES2. Otherwise,
accept SDL's higher-level defaults.
Ryan C. Gordon 4 years ago
parent
commit
224aa45b59

+ 13 - 0
src/video/kmsdrm/SDL_kmsdrmopengles.c

@@ -34,6 +34,19 @@
 
 /* EGL implementation of SDL OpenGL support */
 
+void
+KMSDRM_GLES_DefaultProfileConfig(_THIS, int *mask, int *major, int *minor)
+{
+    /* if SDL was _also_ built with the Raspberry Pi driver (so we're
+       definitely a Pi device), default to GLES2. */
+#if SDL_VIDEO_DRIVER_RPI
+    *mask = SDL_GL_CONTEXT_PROFILE_ES;
+    *major = 2;
+    *minor = 0;
+#endif
+}
+
+
 int
 KMSDRM_GLES_LoadLibrary(_THIS, const char *path) {
     NativeDisplayType display = (NativeDisplayType)((SDL_VideoData *)_this->driverdata)->gbm_dev;

+ 1 - 0
src/video/kmsdrm/SDL_kmsdrmopengles.h

@@ -36,6 +36,7 @@
 #define KMSDRM_GLES_DeleteContext SDL_EGL_DeleteContext
 #define KMSDRM_GLES_GetSwapInterval SDL_EGL_GetSwapInterval
 
+extern void KMSDRM_GLES_DefaultProfileConfig(_THIS, int *mask, int *major, int *minor);
 extern int KMSDRM_GLES_SetSwapInterval(_THIS, int interval);
 extern int KMSDRM_GLES_LoadLibrary(_THIS, const char *path);
 extern SDL_GLContext KMSDRM_GLES_CreateContext(_THIS, SDL_Window * window);

+ 1 - 0
src/video/kmsdrm/SDL_kmsdrmvideo.c

@@ -784,6 +784,7 @@ KMSDRM_CreateDevice(int devindex)
     device->DestroyWindow = KMSDRM_DestroyWindow;
     device->GetWindowWMInfo = KMSDRM_GetWindowWMInfo;
 #if SDL_VIDEO_OPENGL_EGL
+    device->GL_DefaultProfileConfig = KMSDRM_GLES_DefaultProfileConfig;
     device->GL_LoadLibrary = KMSDRM_GLES_LoadLibrary;
     device->GL_GetProcAddress = KMSDRM_GLES_GetProcAddress;
     device->GL_UnloadLibrary = KMSDRM_GLES_UnloadLibrary;