# SDL: \[KMSDRM\] Enable full OpenGL detection (MESA/libglvnd) on both the make and cmake buildsystems.

**URL:** <https://discourse.libsdl.org/t/sdl-kmsdrm-enable-full-opengl-detection-mesa-libglvnd-on-both-the-make-and-cmake-buildsystems/30911>\
**Category:** SDL Commits\
**Created:** [March 16, 2021, 1:48am UTC](https://discourse.libsdl.org/t/sdl-kmsdrm-enable-full-opengl-detection-mesa-libglvnd-on-both-the-make-and-cmake-buildsystems/30911 "2021-03-16T01:48:02Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![SDLPushPostBot](https://discourse.libsdl.org/user_avatar/discourse.libsdl.org/sdlpushpostbot/32/4370_2.png) [@SDLPushPostBot](https://discourse.libsdl.org/u/SDLPushPostBot)\
**Post date:** [March 16, 2021, 1:48am UTC](https://discourse.libsdl.org/t/sdl-kmsdrm-enable-full-opengl-detection-mesa-libglvnd-on-both-the-make-and-cmake-buildsystems/30911/1 "2021-03-16T01:48:02Z")

</div>

> <https://github.com/libsdl-org/SDL/commit/e213f37a450ca6b0746aa3acd2e5e76635e13468>

```diff
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

```
