[Mesa-dev] [PATCH] egl: Remove eglQueryString virtual dispatch.

Matt Turner mattst88 at gmail.com
Fri Mar 13 17:59:14 PDT 2015


---
Chad, you suggested it would be nice to remove the locking from
eglQueryString, but I don't see a way to do it. eglQueryString has
to generate EGL_NOT_INITIALIZED if the display is valid but not
initialized, and without locking it seems that there would be a
race between eglInitialize and eglQueryString. Is that the case,
or have I misunderstood something?

 src/egl/main/Makefile.sources |  2 --
 src/egl/main/eglapi.c         | 15 ++++++++---
 src/egl/main/eglapi.h         |  2 --
 src/egl/main/eglfallbacks.c   |  2 --
 src/egl/main/eglmisc.c        | 58 -------------------------------------------
 src/egl/main/eglmisc.h        | 42 -------------------------------
 6 files changed, 12 insertions(+), 109 deletions(-)
 delete mode 100644 src/egl/main/eglmisc.c
 delete mode 100644 src/egl/main/eglmisc.h

diff --git a/src/egl/main/Makefile.sources b/src/egl/main/Makefile.sources
index 75f060a..304c773 100644
--- a/src/egl/main/Makefile.sources
+++ b/src/egl/main/Makefile.sources
@@ -22,8 +22,6 @@ LIBEGL_C_FILES := \
 	eglimage.h \
 	egllog.c \
 	egllog.h \
-	eglmisc.c \
-	eglmisc.h \
 	eglmode.c \
 	eglmode.h \
 	eglscreen.c \
diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c
index bd8ffa0..e224560 100644
--- a/src/egl/main/eglapi.c
+++ b/src/egl/main/eglapi.c
@@ -526,7 +526,6 @@ eglQueryString(EGLDisplay dpy, EGLint name)
 {
    _EGLDisplay *disp;
    _EGLDriver *drv;
-   const char *ret;
 
    if (dpy == EGL_NO_DISPLAY && name == EGL_EXTENSIONS) {
       RETURN_EGL_SUCCESS(NULL, _eglGlobal.ClientExtensionString);
@@ -534,9 +533,19 @@ eglQueryString(EGLDisplay dpy, EGLint name)
 
    disp = _eglLockDisplay(dpy);
    _EGL_CHECK_DISPLAY(disp, NULL, drv);
-   ret = drv->API.QueryString(drv, disp, name);
 
-   RETURN_EGL_EVAL(disp, ret);
+   switch (name) {
+   case EGL_VENDOR:
+      RETURN_EGL_SUCCESS(disp, _EGL_VENDOR_STRING);
+   case EGL_VERSION:
+      RETURN_EGL_SUCCESS(disp, disp->VersionString);
+   case EGL_EXTENSIONS:
+      RETURN_EGL_SUCCESS(disp, disp->ExtensionsString);
+   case EGL_CLIENT_APIS:
+      RETURN_EGL_SUCCESS(disp, disp->ClientAPIsString);
+   default:
+      RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, NULL);
+   }
 }
 
 
diff --git a/src/egl/main/eglapi.h b/src/egl/main/eglapi.h
index cb01cab..0626719 100644
--- a/src/egl/main/eglapi.h
+++ b/src/egl/main/eglapi.h
@@ -71,7 +71,6 @@ typedef EGLBoolean (*SwapBuffers_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurfa
 typedef EGLBoolean (*CopyBuffers_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surface, void *native_pixmap_target);
 
 /* misc funcs */
-typedef const char *(*QueryString_t)(_EGLDriver *drv, _EGLDisplay *dpy, EGLint name);
 typedef EGLBoolean (*WaitClient_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *ctx);
 typedef EGLBoolean (*WaitNative_t)(_EGLDriver *drv, _EGLDisplay *dpy, EGLint engine);
 
@@ -170,7 +169,6 @@ struct _egl_api
    SwapBuffers_t SwapBuffers;
    CopyBuffers_t CopyBuffers;
 
-   QueryString_t QueryString;
    WaitClient_t WaitClient;
    WaitNative_t WaitNative;
    GetProcAddress_t GetProcAddress;
diff --git a/src/egl/main/eglfallbacks.c b/src/egl/main/eglfallbacks.c
index 0b70e92..be59643 100644
--- a/src/egl/main/eglfallbacks.c
+++ b/src/egl/main/eglfallbacks.c
@@ -32,7 +32,6 @@
 #include "eglconfig.h"
 #include "eglcontext.h"
 #include "eglsurface.h"
-#include "eglmisc.h"
 #include "eglscreen.h"
 #include "eglmode.h"
 #include "eglsync.h"
@@ -85,7 +84,6 @@ _eglInitDriverFallbacks(_EGLDriver *drv)
    drv->API.WaitClient = (WaitClient_t) _eglReturnFalse;
    drv->API.WaitNative = (WaitNative_t) _eglReturnFalse;
    drv->API.GetProcAddress = (GetProcAddress_t) _eglReturnFalse;
-   drv->API.QueryString = _eglQueryString;
 
 #ifdef EGL_MESA_screen_surface
    drv->API.CopyContextMESA = (CopyContextMESA_t) _eglReturnFalse;
diff --git a/src/egl/main/eglmisc.c b/src/egl/main/eglmisc.c
deleted file mode 100644
index 3ca3524..0000000
--- a/src/egl/main/eglmisc.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/**************************************************************************
- *
- * Copyright 2008 VMware, Inc.
- * Copyright 2009-2010 Chia-I Wu <olvaffe at gmail.com>
- * Copyright 2010-2011 LunarG, Inc.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- **************************************************************************/
-
-
-/**
- * Small/misc EGL functions
- */
-
-
-#include "eglcurrent.h"
-#include "eglmisc.h"
-#include "egldisplay.h"
-
-const char *
-_eglQueryString(_EGLDriver *drv, _EGLDisplay *dpy, EGLint name)
-{
-   (void) drv;
-
-   switch (name) {
-   case EGL_VENDOR:
-      return _EGL_VENDOR_STRING;
-   case EGL_VERSION:
-      return dpy->VersionString;
-   case EGL_EXTENSIONS:
-      return dpy->ExtensionsString;
-   case EGL_CLIENT_APIS:
-      return dpy->ClientAPIsString;
-   default:
-      _eglError(EGL_BAD_PARAMETER, "eglQueryString");
-      return NULL;
-   }
-}
diff --git a/src/egl/main/eglmisc.h b/src/egl/main/eglmisc.h
deleted file mode 100644
index 068b38c..0000000
--- a/src/egl/main/eglmisc.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/**************************************************************************
- *
- * Copyright 2008 VMware, Inc.
- * Copyright 2009-2010 Chia-I Wu <olvaffe at gmail.com>
- * Copyright 2010-2011 LunarG, Inc.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- **************************************************************************/
-
-
-#ifndef EGLMISC_INCLUDED
-#define EGLMISC_INCLUDED
-
-
-#include "egltypedefs.h"
-
-
-extern const char *
-_eglQueryString(_EGLDriver *drv, _EGLDisplay *dpy, EGLint name);
-
-
-#endif /* EGLMISC_INCLUDED */
-- 
2.0.5



More information about the mesa-dev mailing list