Mesa (master): egl: Remove hash table for surfaces.

Brian Paul brianp at kemper.freedesktop.org
Tue Aug 18 14:59:18 UTC 2009


Module: Mesa
Branch: master
Commit: 7a9f52800932c02f5b425158b4978d0c1d2f4fd3
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7a9f52800932c02f5b425158b4978d0c1d2f4fd3

Author: Chia-I Wu <olvaffe at gmail.com>
Date:   Fri Aug 14 17:29:23 2009 +0800

egl: Remove hash table for surfaces.

The hash table was used to map a surface to a handle.  It is simpler to
cast directly.

Signed-off-by: Chia-I Wu <olvaffe at gmail.com>

---

 src/egl/main/egldisplay.c |   35 ++++++-----------------------------
 src/egl/main/egldisplay.h |    3 ---
 src/egl/main/eglsurface.h |    1 -
 3 files changed, 6 insertions(+), 33 deletions(-)

diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c
index 0693f25..7f2d035 100644
--- a/src/egl/main/egldisplay.c
+++ b/src/egl/main/egldisplay.c
@@ -18,8 +18,6 @@
 
 static _EGL_DECLARE_MUTEX(_eglDisplayInitMutex);
 static _EGLHashtable *_eglDisplayHash;
-/* TODO surface hash table should be per-display */
-static _EGLHashtable *_eglSurfaceHash;
 
 
 /**
@@ -47,8 +45,6 @@ _eglFiniDisplay(void)
 
       _eglDeleteHashTable(_eglDisplayHash);
       _eglDisplayHash = NULL;
-      _eglDeleteHashTable(_eglSurfaceHash);
-      _eglSurfaceHash = NULL;
    }
    _eglUnlockMutex(&_eglDisplayInitMutex);
 }
@@ -64,7 +60,6 @@ _eglInitDisplay(void)
       /* check again after acquiring lock */
       if (!_eglDisplayHash) {
          _eglDisplayHash = _eglNewHashTable();
-         _eglSurfaceHash = _eglNewHashTable();
 
          _eglAddAtExitCall(_eglFiniDisplay);
       }
@@ -90,9 +85,6 @@ _eglNewDisplay(NativeDisplayType nativeDisplay)
       dpy->Xdpy = (Display *) nativeDisplay;
 #endif
 
-      _eglInitDisplay();
-      dpy->SurfaceHash = _eglSurfaceHash;
-
       dpy->DriverName = _eglPreloadDriver(dpy);
       if (!dpy->DriverName) {
          free(dpy);
@@ -319,18 +311,10 @@ _eglLookupContext(EGLContext ctx, _EGLDisplay *dpy)
 EGLSurface
 _eglLinkSurface(_EGLSurface *surf, _EGLDisplay *dpy)
 {
-   EGLuint key;
-
    surf->Display = dpy;
    surf->Next = dpy->SurfaceList;
    dpy->SurfaceList = surf;
-
-   key = _eglHashGenKey(dpy->SurfaceHash);
-   assert(key);
-   _eglHashInsert(dpy->SurfaceHash, key, surf);
-
-   surf->Handle = (EGLSurface) _eglUIntToPointer(key);
-   return surf->Handle;
+   return (EGLSurface) surf;
 }
 
 
@@ -342,10 +326,6 @@ void
 _eglUnlinkSurface(_EGLSurface *surf)
 {
    _EGLSurface *prev;
-   EGLuint key = _eglPointerToUInt((void *) surf->Handle);
-
-   _eglHashRemove(surf->Display->SurfaceHash, key);
-   surf->Handle = EGL_NO_SURFACE;
 
    prev = surf->Display->SurfaceList;
    if (prev != surf) {
@@ -371,12 +351,9 @@ _eglUnlinkSurface(_EGLSurface *surf)
  * Return the handle of a linked surface, or EGL_NO_SURFACE.
  */
 EGLSurface
-_eglGetSurfaceHandle(_EGLSurface *surface)
+_eglGetSurfaceHandle(_EGLSurface *surf)
 {
-   if (surface)
-      return surface->Handle;
-   else
-      return EGL_NO_SURFACE;
+   return (EGLSurface) ((surf && surf->Display) ? surf : EGL_NO_SURFACE);
 }
 
 
@@ -385,8 +362,8 @@ _eglGetSurfaceHandle(_EGLSurface *surface)
  * Return NULL if the handle has no corresponding linked surface.
  */
 _EGLSurface *
-_eglLookupSurface(EGLSurface surf, _EGLDisplay *dpy)
+_eglLookupSurface(EGLSurface surface, _EGLDisplay *dpy)
 {
-   EGLuint key = _eglPointerToUInt((void *) surf);
-   return (_EGLSurface *) _eglHashLookup(dpy->SurfaceHash, key);
+   _EGLSurface *surf = (_EGLSurface *) surface;
+   return (surf && surf->Display) ? surf : NULL;
 }
diff --git a/src/egl/main/egldisplay.h b/src/egl/main/egldisplay.h
index e1cbbac..dfc54f1 100644
--- a/src/egl/main/egldisplay.h
+++ b/src/egl/main/egldisplay.h
@@ -52,9 +52,6 @@ struct _egl_display
    _EGLContext *ContextList;
    _EGLSurface *SurfaceList;
 
-   /* hash table to map surfaces to handles */
-   _EGLHashtable *SurfaceHash;
-
 #ifdef _EGL_PLATFORM_X
    Display *Xdpy;
 #endif
diff --git a/src/egl/main/eglsurface.h b/src/egl/main/eglsurface.h
index cfae697..f6d44b5 100644
--- a/src/egl/main/eglsurface.h
+++ b/src/egl/main/eglsurface.h
@@ -13,7 +13,6 @@ struct _egl_surface
    /* Managed by EGLDisplay for linking */
    _EGLDisplay *Display;
    _EGLSurface *Next;
-   EGLSurface Handle;
 
    /* The bound status of the surface */
    _EGLContext *Binding;




More information about the mesa-commit mailing list