diff options
Diffstat (limited to 'src/egl')
-rw-r--r-- | src/egl/main/egldriver.c | 21 | ||||
-rw-r--r-- | src/egl/main/egldriver.h | 10 |
2 files changed, 30 insertions, 1 deletions
diff --git a/src/egl/main/egldriver.c b/src/egl/main/egldriver.c index e2120e383a8..8cad3d895ec 100644 --- a/src/egl/main/egldriver.c +++ b/src/egl/main/egldriver.c @@ -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; diff --git a/src/egl/main/egldriver.h b/src/egl/main/egldriver.h index bc5e4e2e618..d83bc46f66b 100644 --- a/src/egl/main/egldriver.h +++ b/src/egl/main/egldriver.h @@ -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]; }; |