From 6afce78128a4a73e1d57cbd61c240f54c6b09831 Mon Sep 17 00:00:00 2001 From: Veluri Mithun Date: Wed, 23 Jan 2019 22:44:25 +0530 Subject: [PATCH] egl: Implement EGL API for MESA_query_driver Signed-off-by: Veluri Mithun Reviewed-by: Eric Engestrom Reviewed-by: Emil Velikov --- src/egl/main/eglapi.c | 33 +++++++++++++++++++++++++++++++++ src/egl/main/eglapi.h | 2 ++ src/egl/main/egldisplay.h | 1 + src/egl/main/eglentrypoint.h | 2 ++ 4 files changed, 38 insertions(+) diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index bfd79a5952d..dd9b5b989cb 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -528,6 +528,7 @@ _eglCreateExtensionsString(_EGLDisplay *dpy) _eglAppendExtension(&exts, "EGL_MESA_configless_context"); _EGL_CHECK_EXTENSION(MESA_drm_image); _EGL_CHECK_EXTENSION(MESA_image_dma_buf_export); + _EGL_CHECK_EXTENSION(MESA_query_driver); _EGL_CHECK_EXTENSION(NOK_swap_region); _EGL_CHECK_EXTENSION(NOK_texture_from_pixmap); @@ -2649,6 +2650,38 @@ eglQueryDisplayAttribEXT(EGLDisplay dpy, RETURN_EGL_SUCCESS(disp, EGL_TRUE); } +static char * EGLAPIENTRY +eglGetDisplayDriverConfig(EGLDisplay dpy) +{ + _EGLDisplay *disp = _eglLockDisplay(dpy); + _EGLDriver *drv; + char *ret; + + _EGL_FUNC_START(disp, EGL_NONE, NULL, NULL); + _EGL_CHECK_DISPLAY(disp, NULL, drv); + + assert(disp->Extensions.MESA_query_driver); + + ret = drv->API.QueryDriverConfig(disp); + RETURN_EGL_EVAL(disp, ret); +} + +static const char * EGLAPIENTRY +eglGetDisplayDriverName(EGLDisplay dpy) +{ + _EGLDisplay *disp = _eglLockDisplay(dpy); + _EGLDriver *drv; + const char *ret; + + _EGL_FUNC_START(disp, EGL_NONE, NULL, NULL); + _EGL_CHECK_DISPLAY(disp, NULL, drv); + + assert(disp->Extensions.MESA_query_driver); + + ret = drv->API.QueryDriverName(disp); + RETURN_EGL_EVAL(disp, ret); +} + __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress(const char *procname) { diff --git a/src/egl/main/eglapi.h b/src/egl/main/eglapi.h index 07ddf34a032..5e1581b9ce5 100644 --- a/src/egl/main/eglapi.h +++ b/src/egl/main/eglapi.h @@ -55,6 +55,8 @@ struct _egl_api /* driver funcs */ EGLBoolean (*Initialize)(_EGLDriver *, _EGLDisplay *dpy); EGLBoolean (*Terminate)(_EGLDriver *, _EGLDisplay *dpy); + const char *(*QueryDriverName)(_EGLDisplay *dpy); + char *(*QueryDriverConfig)(_EGLDisplay *dpy); /* config funcs */ EGLBoolean (*GetConfigs)(_EGLDriver *drv, _EGLDisplay *dpy, diff --git a/src/egl/main/egldisplay.h b/src/egl/main/egldisplay.h index fae90520368..5cc503734bc 100644 --- a/src/egl/main/egldisplay.h +++ b/src/egl/main/egldisplay.h @@ -138,6 +138,7 @@ struct _egl_extensions EGLBoolean MESA_drm_image; EGLBoolean MESA_image_dma_buf_export; + EGLBoolean MESA_query_driver; EGLBoolean NOK_swap_region; EGLBoolean NOK_texture_from_pixmap; diff --git a/src/egl/main/eglentrypoint.h b/src/egl/main/eglentrypoint.h index 69a6c1bf4c7..44e971e023a 100644 --- a/src/egl/main/eglentrypoint.h +++ b/src/egl/main/eglentrypoint.h @@ -42,6 +42,8 @@ EGL_ENTRYPOINT(eglGetCurrentContext) EGL_ENTRYPOINT(eglGetCurrentDisplay) EGL_ENTRYPOINT(eglGetCurrentSurface) EGL_ENTRYPOINT(eglGetDisplay) +EGL_ENTRYPOINT(eglGetDisplayDriverConfig) +EGL_ENTRYPOINT(eglGetDisplayDriverName) EGL_ENTRYPOINT(eglGetError) EGL_ENTRYPOINT(eglGetPlatformDisplay) EGL_ENTRYPOINT(eglGetPlatformDisplayEXT) -- 2.30.2