added boolean extension flags to _EGLDriver
authorBrian Paul <brian.paul@tungstengraphics.com>
Mon, 16 May 2005 02:15:42 +0000 (02:15 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Mon, 16 May 2005 02:15:42 +0000 (02:15 +0000)
src/egl/main/egldriver.c
src/egl/main/egldriver.h

index e2120e3..8cad3d8 100644 (file)
@@ -197,6 +197,24 @@ _eglInitDriverFallbacks(_EGLDriver *drv)
 }
 
 
+/**
+ * Examine the individual extension enable/disable flags and recompute
+ * the driver's Extensions string.
+ */
+static void
+UpdateExtensionsString(_EGLDriver *drv)
+{
+   drv->Extensions[0] = 0;
+
+   if (drv->MESA_screen_surface)
+      strcat(drv->Extensions, "EGL_MESA_screen_surface");
+   if (drv->MESA_copy_context)
+      strcat(drv->Extensions, "EGL_MESA_copy_context");
+   assert(strlen(drv->Extensions) < MAX_EXTENSIONS_LEN);
+}
+
+
+
 const char *
 _eglQueryString(_EGLDriver *drv, EGLDisplay dpy, EGLint name)
 {
@@ -208,7 +226,8 @@ _eglQueryString(_EGLDriver *drv, EGLDisplay dpy, EGLint name)
    case EGL_VERSION:
       return "1.0";
    case EGL_EXTENSIONS:
-      return "";
+      UpdateExtensionsString(drv);
+      return drv->Extensions;
    default:
       _eglError(EGL_BAD_PARAMETER, "eglQueryString");
       return NULL;
index bc5e4e2..d83bc46 100644 (file)
@@ -4,6 +4,9 @@
 
 #include "egltypedefs.h"
 
+/* should probably use a dynamic-lengh string, but this will do */
+#define MAX_EXTENSIONS_LEN 1000
+
 
 /* driver funcs */
 typedef EGLBoolean (*Initialize_t)(_EGLDriver *, EGLDisplay dpy, EGLint *major, EGLint *minor);
@@ -114,6 +117,13 @@ struct _egl_driver
    QueryScreenSurfaceMESA_t QueryScreenSurfaceMESA;
    QueryScreenModeMESA_t QueryScreenModeMESA;
    QueryModeStringMESA_t QueryModeStringMESA;
+
+   /* Extension enable flags */
+   EGLBoolean MESA_screen_surface;
+   EGLBoolean MESA_copy_context;
+
+   /* Extensions string */
+   char Extensions[MAX_EXTENSIONS_LEN];
 };