Browse Source

[KMSDRM] Modify SDL_CreateRenderer() to create an opengles2 renderer when the KMSDRM backend is being used and no renderer name has been specified.

Vanfanel 4 years ago
parent
commit
108bb5aabe
1 changed files with 22 additions and 0 deletions
  1. 22 0
      src/render/SDL_render.c

+ 22 - 0
src/render/SDL_render.c

@@ -838,6 +838,28 @@ SDL_CreateRenderer(SDL_Window * window, int index, Uint32 flags)
             }
         }
 
+#if SDL_VIDEO_DRIVER_KMSDRM
+
+    /* Even if full OpenGL works with the KMSDRM backend, GLES2 renderer is still preferred. */
+    if ((SDL_strcmp(SDL_GetCurrentVideoDriver(), "KMSDRM") == 0) && (!renderer)) {
+
+        for (index = 0; index < n; ++index) {
+
+            const SDL_RenderDriver *driver = render_drivers[index];
+
+            if ((SDL_strcmp(driver->info.name, "opengles2") == 0) && (!renderer)) {
+                /* Create a new renderer instance */
+                renderer = driver->CreateRenderer(window, flags);
+                if (renderer) {
+                    /* Got an OpenGL_ES2 renderer as expected for KMSDRM by default. */
+                    break;
+                }
+            }
+        }
+    }
+
+#endif
+
         if (!renderer) {
             for (index = 0; index < n; ++index) {
                 const SDL_RenderDriver *driver = render_drivers[index];