summaryrefslogtreecommitdiff
path: root/cogl/cogl-renderer.c
diff options
context:
space:
mode:
Diffstat (limited to 'cogl/cogl-renderer.c')
-rw-r--r--cogl/cogl-renderer.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/cogl/cogl-renderer.c b/cogl/cogl-renderer.c
index 04ffc76a..453e0865 100644
--- a/cogl/cogl-renderer.c
+++ b/cogl/cogl-renderer.c
@@ -72,6 +72,9 @@
#ifdef COGL_HAS_SDL_SUPPORT
#include "cogl-winsys-sdl-private.h"
#endif
+#ifdef COGL_HAS_DRM_SUPPORT
+#include "cogl-winsys-drm-private.h"
+#endif
#if COGL_HAS_XLIB_SUPPORT
#include "cogl-xlib-renderer.h"
@@ -87,6 +90,9 @@ extern const CoglDriverVtable _cogl_driver_gl;
extern const CoglTextureDriver _cogl_texture_driver_gles;
extern const CoglDriverVtable _cogl_driver_gles;
#endif
+#if defined (HAVE_COGL_DRM)
+extern const CoglDriverVtable _cogl_driver_drm;
+#endif
extern const CoglDriverVtable _cogl_driver_nop;
@@ -119,6 +125,9 @@ static CoglWinsysVtableGetter _cogl_winsys_vtable_getters[] =
#ifdef COGL_HAS_SDL_SUPPORT
_cogl_winsys_sdl_get_vtable,
#endif
+#ifdef COGL_HAS_SDL_SUPPORT
+ _cogl_winsys_drm_get_vtable,
+#endif
_cogl_winsys_stub_get_vtable,
};
@@ -319,6 +328,17 @@ _cogl_renderer_choose_driver (CoglRenderer *renderer,
}
#endif
+#ifdef HAVE_COGL_DRM
+ if (renderer->driver_override == COGL_DRIVER_DRM ||
+ (renderer->driver_override == COGL_DRIVER_ANY &&
+ (driver_name == NULL || !g_ascii_strcasecmp (driver_name, "drm"))))
+ {
+ renderer->driver = COGL_DRIVER_DRM;
+ libgl_name = NULL;
+ goto found;
+ }
+#endif
+
if (renderer->driver_override == COGL_DRIVER_NOP ||
(renderer->driver_override == COGL_DRIVER_ANY &&
(driver_name == NULL || !g_ascii_strcasecmp (driver_name, "nop"))))
@@ -386,6 +406,13 @@ found:
break;
#endif
+#if defined (HAVE_COGL_DRM)
+ case COGL_DRIVER_DRM:
+ renderer->driver_vtable = &_cogl_driver_drm;
+ renderer->texture_driver = NULL;
+ break;
+#endif
+
case COGL_DRIVER_NOP:
default:
renderer->driver_vtable = &_cogl_driver_nop;