SDL: Merge commit 'e213f37a450ca6b0746aa3acd2e5e76635e13468' into main

From e213f37a450ca6b0746aa3acd2e5e76635e13468 Mon Sep 17 00:00:00 2001
From: vanfanel <[EMAIL REDACTED]>
Date: Mon, 15 Mar 2021 12:53:16 +0100
Subject: [PATCH] [KMSDRM] Enable full OpenGL detection (MESA/libglvnd) on both
 the make and cmake buildsystems.

---
 CMakeLists.txt        |  1 +
 cmake/sdlchecks.cmake | 16 ++++++++++++++++
 configure.ac          | 22 ++++++++++++++++++++++
 3 files changed, 39 insertions(+)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1d4b9f236..4fef44774 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1197,6 +1197,7 @@ elseif(UNIX AND NOT APPLE AND NOT ANDROID AND NOT RISCOS)
     # Need to check EGL before checking KMSDRM because KMSDRM depends on it.
     CheckEGLKMSDRM()
     CheckKMSDRM()
+    CheckOpenGLKMSDRM()
   endif()
 
   if(UNIX)
diff --git a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake
index 364cdb3cb..64089c6bd 100644
--- a/cmake/sdlchecks.cmake
+++ b/cmake/sdlchecks.cmake
@@ -777,6 +777,22 @@ macro(CheckVivante)
   endif(VIDEO_VIVANTE)
 endmacro(CheckVivante)
 
+# Requires:
+# - libglvnd
+macro(CheckOpenGLKMSDRM)
+  if(VIDEO_OPENGL AND HAVE_VIDEO_KMSDRM)
+    check_c_source_compiles("
+        #include <GL/gl.h>
+        int main(int argc, char** argv) {}" HAVE_VIDEO_OPENGL)
+
+    if(HAVE_VIDEO_OPENGL)
+      set(HAVE_VIDEO_OPENGL TRUE)
+      set(SDL_VIDEO_OPENGL 1)
+      set(SDL_VIDEO_RENDER_OGL 1)
+    endif()
+  endif()
+endmacro()
+
 # Requires:
 # - nada
 macro(CheckOpenGLX11)
diff --git a/configure.ac b/configure.ac
index 30d17a1ba..4d0a9802b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2384,6 +2384,27 @@ CheckOpenGLX11()
     fi
 }
 
+dnl Find KMSDRM OpenGL (GLVND)
+CheckOpenGLKMSDRM()
+{
+    if test x$enable_video = xyes -a x$enable_video_opengl = xyes -a x$enable_video_kmsdrm = xyes; then
+        AC_MSG_CHECKING(for OpenGL (GLVND) support)
+        video_opengl=no
+        AC_TRY_COMPILE([
+         #include <GL/gl.h>
+        ],[  
+        ],[  
+        video_opengl=yes
+        ])   
+        AC_MSG_RESULT($video_opengl)
+        if test x$video_opengl = xyes; then 
+            AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ]) 
+            AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ]) 
+            SUMMARY_video="${SUMMARY_video} opengl"
+        fi   
+    fi   
+}
+
 dnl Check to see if OpenGL ES support is desired
 AC_ARG_ENABLE(video-opengles,
 [AS_HELP_STRING([--enable-video-opengles], [include OpenGL ES support [default=yes]])],
@@ -3656,6 +3677,7 @@ case "$host" in
         # Need to check for EGL first because KMSDRM depends on it.
         CheckEGLKMSDRM
         CheckKMSDRM
+        CheckOpenGLKMSDRM
         CheckOpenGLX11
         CheckOpenGLESX11
         CheckVulkan