[Mesa-dev] [PATCH] egl: Remove skeleton implementation of EGL_MESA_screen_surface

Marek Olšák maraeo at gmail.com
Mon May 11 11:05:05 PDT 2015


Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Fri, May 1, 2015 at 5:35 PM, Adam Jackson <ajax at redhat.com> wrote:
> No backend wires this up to anything, and the extension spec has been
> marked obsolete for 4+ years.
>
> Signed-off-by: Adam Jackson <ajax at redhat.com>
> ---
>  include/EGL/eglmesaext.h      |  46 ------
>  src/egl/main/Makefile.sources |   4 -
>  src/egl/main/eglapi.c         | 278 --------------------------------
>  src/egl/main/eglapi.h         |  31 ----
>  src/egl/main/eglconfig.c      |   4 -
>  src/egl/main/eglcurrent.c     |   8 -
>  src/egl/main/egldisplay.h     |   1 -
>  src/egl/main/eglfallbacks.c   |  18 ---
>  src/egl/main/eglmode.c        | 357 ------------------------------------------
>  src/egl/main/eglmode.h        |  88 -----------
>  src/egl/main/eglscreen.c      | 235 ---------------------------
>  src/egl/main/eglscreen.h      | 117 --------------
>  src/egl/main/eglsurface.c     |  55 -------
>  13 files changed, 1242 deletions(-)
>  delete mode 100644 src/egl/main/eglmode.c
>  delete mode 100644 src/egl/main/eglmode.h
>  delete mode 100644 src/egl/main/eglscreen.c
>  delete mode 100644 src/egl/main/eglscreen.h
>
> diff --git a/include/EGL/eglmesaext.h b/include/EGL/eglmesaext.h
> index 595babd..d344e7c 100644
> --- a/include/EGL/eglmesaext.h
> +++ b/include/EGL/eglmesaext.h
> @@ -34,52 +34,6 @@ extern "C" {
>
>  #include <EGL/eglplatform.h>
>
> -/* EGL_MESA_screen extension  >>> PRELIMINARY <<< */
> -#ifndef EGL_MESA_screen_surface
> -#define EGL_MESA_screen_surface 1
> -
> -#define EGL_BAD_SCREEN_MESA                    0x4000
> -#define EGL_BAD_MODE_MESA                      0x4001
> -#define EGL_SCREEN_COUNT_MESA                  0x4002
> -#define EGL_SCREEN_POSITION_MESA               0x4003
> -#define EGL_SCREEN_POSITION_GRANULARITY_MESA   0x4004
> -#define EGL_MODE_ID_MESA                       0x4005
> -#define EGL_REFRESH_RATE_MESA                  0x4006
> -#define EGL_OPTIMAL_MESA                       0x4007
> -#define EGL_INTERLACED_MESA                    0x4008
> -#define EGL_SCREEN_BIT_MESA                    0x08
> -
> -typedef khronos_uint32_t EGLScreenMESA;
> -typedef khronos_uint32_t EGLModeMESA;
> -
> -#ifdef EGL_EGLEXT_PROTOTYPES
> -EGLAPI EGLBoolean EGLAPIENTRY eglChooseModeMESA(EGLDisplay dpy, EGLScreenMESA screen, const EGLint *attrib_list, EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes);
> -EGLAPI EGLBoolean EGLAPIENTRY eglGetModesMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes);
> -EGLAPI EGLBoolean EGLAPIENTRY eglGetModeAttribMESA(EGLDisplay dpy, EGLModeMESA mode, EGLint attribute, EGLint *value);
> -EGLAPI EGLBoolean EGLAPIENTRY eglGetScreensMESA(EGLDisplay dpy, EGLScreenMESA *screens, EGLint max_screens, EGLint *num_screens);
> -EGLAPI EGLSurface EGLAPIENTRY eglCreateScreenSurfaceMESA(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
> -EGLAPI EGLBoolean EGLAPIENTRY eglShowScreenSurfaceMESA(EGLDisplay dpy, EGLint screen, EGLSurface surface, EGLModeMESA mode);
> -EGLAPI EGLBoolean EGLAPIENTRY eglScreenPositionMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLint x, EGLint y);
> -EGLAPI EGLBoolean EGLAPIENTRY eglQueryScreenMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLint attribute, EGLint *value);
> -EGLAPI EGLBoolean EGLAPIENTRY eglQueryScreenSurfaceMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLSurface *surface);
> -EGLAPI EGLBoolean EGLAPIENTRY eglQueryScreenModeMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *mode);
> -EGLAPI const char * EGLAPIENTRY eglQueryModeStringMESA(EGLDisplay dpy, EGLModeMESA mode);
> -#endif /* EGL_EGLEXT_PROTOTYPES */
> -
> -typedef EGLBoolean (EGLAPIENTRYP PFNEGLCHOOSEMODEMESA) (EGLDisplay dpy, EGLScreenMESA screen, const EGLint *attrib_list, EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes);
> -typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETMODESMESA) (EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes);
> -typedef EGLBoolean (EGLAPIENTRYP PFNEGLGetModeATTRIBMESA) (EGLDisplay dpy, EGLModeMESA mode, EGLint attribute, EGLint *value);
> -typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSCRREENSMESA) (EGLDisplay dpy, EGLScreenMESA *screens, EGLint max_screens, EGLint *num_screens);
> -typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATESCREENSURFACEMESA) (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
> -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSHOWSCREENSURFACEMESA) (EGLDisplay dpy, EGLint screen, EGLSurface surface, EGLModeMESA mode);
> -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSCREENPOSIITONMESA) (EGLDisplay dpy, EGLScreenMESA screen, EGLint x, EGLint y);
> -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSCREENMESA) (EGLDisplay dpy, EGLScreenMESA screen, EGLint attribute, EGLint *value);
> -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSCREENSURFACEMESA) (EGLDisplay dpy, EGLScreenMESA screen, EGLSurface *surface);
> -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSCREENMODEMESA) (EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *mode);
> -typedef const char * (EGLAPIENTRYP PFNEGLQUERYMODESTRINGMESA) (EGLDisplay dpy, EGLModeMESA mode);
> -
> -#endif /* EGL_MESA_screen_surface */
> -
>  #ifndef EGL_MESA_copy_context
>  #define EGL_MESA_copy_context 1
>
> diff --git a/src/egl/main/Makefile.sources b/src/egl/main/Makefile.sources
> index 304c773..e39a80f 100644
> --- a/src/egl/main/Makefile.sources
> +++ b/src/egl/main/Makefile.sources
> @@ -22,10 +22,6 @@ LIBEGL_C_FILES := \
>         eglimage.h \
>         egllog.c \
>         egllog.h \
> -       eglmode.c \
> -       eglmode.h \
> -       eglscreen.c \
> -       eglscreen.h \
>         eglstring.c \
>         eglstring.h \
>         eglsurface.c \
> diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c
> index ec41aa3..745ec46 100644
> --- a/src/egl/main/eglapi.c
> +++ b/src/egl/main/eglapi.c
> @@ -98,8 +98,6 @@
>  #include "egldriver.h"
>  #include "eglsurface.h"
>  #include "eglconfig.h"
> -#include "eglscreen.h"
> -#include "eglmode.h"
>  #include "eglimage.h"
>  #include "eglsync.h"
>  #include "eglstring.h"
> @@ -155,12 +153,6 @@
>  #define _EGL_CHECK_CONFIG(disp, conf, ret, drv) \
>     _EGL_CHECK_OBJECT(disp, Config, conf, ret, drv)
>
> -#define _EGL_CHECK_SCREEN(disp, scrn, ret, drv) \
> -   _EGL_CHECK_OBJECT(disp, Screen, scrn, ret, drv)
> -
> -#define _EGL_CHECK_MODE(disp, m, ret, drv) \
> -   _EGL_CHECK_OBJECT(disp, Mode, m, ret, drv)
> -
>  #define _EGL_CHECK_SYNC(disp, s, ret, drv) \
>     _EGL_CHECK_OBJECT(disp, Sync, s, ret, drv)
>
> @@ -236,40 +228,6 @@ _eglCheckSync(_EGLDisplay *disp, _EGLSync *s, const char *msg)
>  }
>
>
> -#ifdef EGL_MESA_screen_surface
> -
> -
> -static inline _EGLDriver *
> -_eglCheckScreen(_EGLDisplay *disp, _EGLScreen *scrn, const char *msg)
> -{
> -   _EGLDriver *drv = _eglCheckDisplay(disp, msg);
> -   if (!drv)
> -      return NULL;
> -   if (!scrn) {
> -      _eglError(EGL_BAD_SCREEN_MESA, msg);
> -      return NULL;
> -   }
> -   return drv;
> -}
> -
> -
> -static inline _EGLDriver *
> -_eglCheckMode(_EGLDisplay *disp, _EGLMode *m, const char *msg)
> -{
> -   _EGLDriver *drv = _eglCheckDisplay(disp, msg);
> -   if (!drv)
> -      return NULL;
> -   if (!m) {
> -      _eglError(EGL_BAD_MODE_MESA, msg);
> -      return NULL;
> -   }
> -   return drv;
> -}
> -
> -
> -#endif /* EGL_MESA_screen_surface */
> -
> -
>  /**
>   * Lookup and lock a display.
>   */
> @@ -383,7 +341,6 @@ _eglCreateExtensionsString(_EGLDisplay *dpy)
>
>     char *exts = dpy->ExtensionsString;
>
> -   _EGL_CHECK_EXTENSION(MESA_screen_surface);
>     _EGL_CHECK_EXTENSION(MESA_copy_context);
>     _EGL_CHECK_EXTENSION(MESA_drm_display);
>     _EGL_CHECK_EXTENSION(MESA_drm_image);
> @@ -1196,20 +1153,6 @@ eglGetProcAddress(const char *procname)
>        { "eglWaitGL", (_EGLProc) eglWaitGL },
>        { "eglWaitNative", (_EGLProc) eglWaitNative },
>  #endif /* _EGL_GET_CORE_ADDRESSES */
> -#ifdef EGL_MESA_screen_surface
> -      { "eglChooseModeMESA", (_EGLProc) eglChooseModeMESA },
> -      { "eglGetModesMESA", (_EGLProc) eglGetModesMESA },
> -      { "eglGetModeAttribMESA", (_EGLProc) eglGetModeAttribMESA },
> -      { "eglCopyContextMESA", (_EGLProc) eglCopyContextMESA },
> -      { "eglGetScreensMESA", (_EGLProc) eglGetScreensMESA },
> -      { "eglCreateScreenSurfaceMESA", (_EGLProc) eglCreateScreenSurfaceMESA },
> -      { "eglShowScreenSurfaceMESA", (_EGLProc) eglShowScreenSurfaceMESA },
> -      { "eglScreenPositionMESA", (_EGLProc) eglScreenPositionMESA },
> -      { "eglQueryScreenMESA", (_EGLProc) eglQueryScreenMESA },
> -      { "eglQueryScreenSurfaceMESA", (_EGLProc) eglQueryScreenSurfaceMESA },
> -      { "eglQueryScreenModeMESA", (_EGLProc) eglQueryScreenModeMESA },
> -      { "eglQueryModeStringMESA", (_EGLProc) eglQueryModeStringMESA },
> -#endif /* EGL_MESA_screen_surface */
>  #ifdef EGL_MESA_drm_display
>        { "eglGetDRMDisplayMESA", (_EGLProc) eglGetDRMDisplayMESA },
>  #endif
> @@ -1273,227 +1216,6 @@ eglGetProcAddress(const char *procname)
>  }
>
>
> -#ifdef EGL_MESA_screen_surface
> -
> -
> -/*
> - * EGL_MESA_screen extension
> - */
> -
> -EGLBoolean EGLAPIENTRY
> -eglChooseModeMESA(EGLDisplay dpy, EGLScreenMESA screen,
> -                  const EGLint *attrib_list, EGLModeMESA *modes,
> -                  EGLint modes_size, EGLint *num_modes)
> -{
> -   _EGLDisplay *disp = _eglLockDisplay(dpy);
> -   _EGLScreen *scrn = _eglLookupScreen(screen, disp);
> -   _EGLDriver *drv;
> -   EGLBoolean ret;
> -
> -   _EGL_CHECK_SCREEN(disp, scrn, EGL_FALSE, drv);
> -   ret = drv->API.ChooseModeMESA(drv, disp, scrn, attrib_list,
> -         modes, modes_size, num_modes);
> -
> -   RETURN_EGL_EVAL(disp, ret);
> -}
> -
> -
> -EGLBoolean EGLAPIENTRY
> -eglGetModesMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *modes,
> -                EGLint mode_size, EGLint *num_mode)
> -{
> -   _EGLDisplay *disp = _eglLockDisplay(dpy);
> -   _EGLScreen *scrn = _eglLookupScreen(screen, disp);
> -   _EGLDriver *drv;
> -   EGLBoolean ret;
> -
> -   _EGL_CHECK_SCREEN(disp, scrn, EGL_FALSE, drv);
> -   ret = drv->API.GetModesMESA(drv, disp, scrn, modes, mode_size, num_mode);
> -
> -   RETURN_EGL_EVAL(disp, ret);
> -}
> -
> -
> -EGLBoolean EGLAPIENTRY
> -eglGetModeAttribMESA(EGLDisplay dpy, EGLModeMESA mode,
> -                     EGLint attribute, EGLint *value)
> -{
> -   _EGLDisplay *disp = _eglLockDisplay(dpy);
> -   _EGLMode *m = _eglLookupMode(mode, disp);
> -   _EGLDriver *drv;
> -   EGLBoolean ret;
> -
> -   _EGL_CHECK_MODE(disp, m, EGL_FALSE, drv);
> -   ret = drv->API.GetModeAttribMESA(drv, disp, m, attribute, value);
> -
> -   RETURN_EGL_EVAL(disp, ret);
> -}
> -
> -
> -EGLBoolean EGLAPIENTRY
> -eglCopyContextMESA(EGLDisplay dpy, EGLContext source, EGLContext dest,
> -                   EGLint mask)
> -{
> -   _EGLDisplay *disp = _eglLockDisplay(dpy);
> -   _EGLContext *source_context = _eglLookupContext(source, disp);
> -   _EGLContext *dest_context = _eglLookupContext(dest, disp);
> -   _EGLDriver *drv;
> -   EGLBoolean ret;
> -
> -   _EGL_CHECK_CONTEXT(disp, source_context, EGL_FALSE, drv);
> -   if (!dest_context)
> -      RETURN_EGL_ERROR(disp, EGL_BAD_CONTEXT, EGL_FALSE);
> -
> -   ret = drv->API.CopyContextMESA(drv, disp,
> -         source_context, dest_context, mask);
> -
> -   RETURN_EGL_EVAL(disp, ret);
> -}
> -
> -
> -EGLBoolean EGLAPIENTRY
> -eglGetScreensMESA(EGLDisplay dpy, EGLScreenMESA *screens,
> -                  EGLint max_screens, EGLint *num_screens)
> -{
> -   _EGLDisplay *disp = _eglLockDisplay(dpy);
> -   _EGLDriver *drv;
> -   EGLBoolean ret;
> -
> -   _EGL_CHECK_DISPLAY(disp, EGL_FALSE, drv);
> -   ret = drv->API.GetScreensMESA(drv, disp, screens, max_screens, num_screens);
> -
> -   RETURN_EGL_EVAL(disp, ret);
> -}
> -
> -
> -EGLSurface EGLAPIENTRY
> -eglCreateScreenSurfaceMESA(EGLDisplay dpy, EGLConfig config,
> -                           const EGLint *attrib_list)
> -{
> -   _EGLDisplay *disp = _eglLockDisplay(dpy);
> -   _EGLConfig *conf = _eglLookupConfig(config, disp);
> -   _EGLDriver *drv;
> -   _EGLSurface *surf;
> -   EGLSurface ret;
> -
> -   _EGL_CHECK_CONFIG(disp, conf, EGL_NO_SURFACE, drv);
> -
> -   surf = drv->API.CreateScreenSurfaceMESA(drv, disp, conf, attrib_list);
> -   ret = (surf) ? _eglLinkSurface(surf) : EGL_NO_SURFACE;
> -
> -   RETURN_EGL_EVAL(disp, ret);
> -}
> -
> -
> -EGLBoolean EGLAPIENTRY
> -eglShowScreenSurfaceMESA(EGLDisplay dpy, EGLint screen,
> -                         EGLSurface surface, EGLModeMESA mode)
> -{
> -   _EGLDisplay *disp = _eglLockDisplay(dpy);
> -   _EGLScreen *scrn = _eglLookupScreen((EGLScreenMESA) screen, disp);
> -   _EGLSurface *surf = _eglLookupSurface(surface, disp);
> -   _EGLMode *m = _eglLookupMode(mode, disp);
> -   _EGLDriver *drv;
> -   EGLBoolean ret;
> -
> -   _EGL_CHECK_SCREEN(disp, scrn, EGL_FALSE, drv);
> -   if (!surf && surface != EGL_NO_SURFACE)
> -      RETURN_EGL_ERROR(disp, EGL_BAD_SURFACE, EGL_FALSE);
> -   if (!m && mode != EGL_NO_MODE_MESA)
> -      RETURN_EGL_ERROR(disp, EGL_BAD_MODE_MESA, EGL_FALSE);
> -
> -   ret = drv->API.ShowScreenSurfaceMESA(drv, disp, scrn, surf, m);
> -
> -   RETURN_EGL_EVAL(disp, ret);
> -}
> -
> -
> -EGLBoolean EGLAPIENTRY
> -eglScreenPositionMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLint x, EGLint y)
> -{
> -   _EGLDisplay *disp = _eglLockDisplay(dpy);
> -   _EGLScreen *scrn = _eglLookupScreen(screen, disp);
> -   _EGLDriver *drv;
> -   EGLBoolean ret;
> -
> -   _EGL_CHECK_SCREEN(disp, scrn, EGL_FALSE, drv);
> -   ret = drv->API.ScreenPositionMESA(drv, disp, scrn, x, y);
> -
> -   RETURN_EGL_EVAL(disp, ret);
> -}
> -
> -
> -EGLBoolean EGLAPIENTRY
> -eglQueryScreenMESA(EGLDisplay dpy, EGLScreenMESA screen,
> -                   EGLint attribute, EGLint *value)
> -{
> -   _EGLDisplay *disp = _eglLockDisplay(dpy);
> -   _EGLScreen *scrn = _eglLookupScreen(screen, disp);
> -   _EGLDriver *drv;
> -   EGLBoolean ret;
> -
> -   _EGL_CHECK_SCREEN(disp, scrn, EGL_FALSE, drv);
> -   ret = drv->API.QueryScreenMESA(drv, disp, scrn, attribute, value);
> -
> -   RETURN_EGL_EVAL(disp, ret);
> -}
> -
> -
> -EGLBoolean EGLAPIENTRY
> -eglQueryScreenSurfaceMESA(EGLDisplay dpy, EGLScreenMESA screen,
> -                          EGLSurface *surface)
> -{
> -   _EGLDisplay *disp = _eglLockDisplay(dpy);
> -   _EGLScreen *scrn = _eglLookupScreen((EGLScreenMESA) screen, disp);
> -   _EGLDriver *drv;
> -   _EGLSurface *surf;
> -   EGLBoolean ret;
> -
> -   _EGL_CHECK_SCREEN(disp, scrn, EGL_FALSE, drv);
> -   ret = drv->API.QueryScreenSurfaceMESA(drv, disp, scrn, &surf);
> -   if (ret && surface)
> -      *surface = _eglGetSurfaceHandle(surf);
> -
> -   RETURN_EGL_EVAL(disp, ret);
> -}
> -
> -
> -EGLBoolean EGLAPIENTRY
> -eglQueryScreenModeMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *mode)
> -{
> -   _EGLDisplay *disp = _eglLockDisplay(dpy);
> -   _EGLScreen *scrn = _eglLookupScreen((EGLScreenMESA) screen, disp);
> -   _EGLDriver *drv;
> -   _EGLMode *m;
> -   EGLBoolean ret;
> -
> -   _EGL_CHECK_SCREEN(disp, scrn, EGL_FALSE, drv);
> -   ret = drv->API.QueryScreenModeMESA(drv, disp, scrn, &m);
> -   if (ret && mode)
> -      *mode = m->Handle;
> -
> -   RETURN_EGL_EVAL(disp, ret);
> -}
> -
> -
> -const char * EGLAPIENTRY
> -eglQueryModeStringMESA(EGLDisplay dpy, EGLModeMESA mode)
> -{
> -   _EGLDisplay *disp = _eglLockDisplay(dpy);
> -   _EGLMode *m = _eglLookupMode(mode, disp);
> -   _EGLDriver *drv;
> -   const char *ret;
> -
> -   _EGL_CHECK_MODE(disp, m, NULL, drv);
> -   ret = drv->API.QueryModeStringMESA(drv, disp, m);
> -
> -   RETURN_EGL_EVAL(disp, ret);
> -}
> -
> -
> -#endif /* EGL_MESA_screen_surface */
> -
> -
>  #ifdef EGL_MESA_drm_display
>
>  EGLDisplay EGLAPIENTRY
> diff --git a/src/egl/main/eglapi.h b/src/egl/main/eglapi.h
> index 5226886..44b9e1c 100644
> --- a/src/egl/main/eglapi.h
> +++ b/src/egl/main/eglapi.h
> @@ -79,22 +79,6 @@ typedef _EGLProc (*GetProcAddress_t)(_EGLDriver *drv, const char *procname);
>
>
>
> -#ifdef EGL_MESA_screen_surface
> -typedef EGLBoolean (*ChooseModeMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *screen, const EGLint *attrib_list, EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes);
> -typedef EGLBoolean (*GetModesMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *screen, EGLModeMESA *modes, EGLint mode_size, EGLint *num_mode);
> -typedef EGLBoolean (*GetModeAttribMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLMode *mode, EGLint attribute, EGLint *value);
> -typedef EGLBoolean (*CopyContextMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *source, _EGLContext *dest, EGLint mask);
> -typedef EGLBoolean (*GetScreensMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, EGLScreenMESA *screens, EGLint max_screens, EGLint *num_screens);
> -typedef _EGLSurface *(*CreateScreenSurfaceMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *config, const EGLint *attrib_list);
> -typedef EGLBoolean (*ShowScreenSurfaceMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *screen, _EGLSurface *surface, _EGLMode *mode);
> -typedef EGLBoolean (*ScreenPositionMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *screen, EGLint x, EGLint y);
> -typedef EGLBoolean (*QueryScreenMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *screen, EGLint attribute, EGLint *value);
> -typedef EGLBoolean (*QueryScreenSurfaceMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *screen, _EGLSurface **surface);
> -typedef EGLBoolean (*QueryScreenModeMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *screen, _EGLMode **mode);
> -typedef const char * (*QueryModeStringMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLMode *mode);
> -#endif /* EGL_MESA_screen_surface */
> -
> -
>  typedef _EGLSurface *(*CreatePbufferFromClientBuffer_t)(_EGLDriver *drv, _EGLDisplay *dpy, EGLenum buftype, EGLClientBuffer buffer, _EGLConfig *config, const EGLint *attrib_list);
>
>
> @@ -179,21 +163,6 @@ struct _egl_api
>     WaitNative_t WaitNative;
>     GetProcAddress_t GetProcAddress;
>
> -#ifdef EGL_MESA_screen_surface
> -   ChooseModeMESA_t ChooseModeMESA;
> -   GetModesMESA_t GetModesMESA;
> -   GetModeAttribMESA_t GetModeAttribMESA;
> -   CopyContextMESA_t CopyContextMESA;
> -   GetScreensMESA_t GetScreensMESA;
> -   CreateScreenSurfaceMESA_t CreateScreenSurfaceMESA;
> -   ShowScreenSurfaceMESA_t ShowScreenSurfaceMESA;
> -   ScreenPositionMESA_t ScreenPositionMESA;
> -   QueryScreenMESA_t QueryScreenMESA;
> -   QueryScreenSurfaceMESA_t QueryScreenSurfaceMESA;
> -   QueryScreenModeMESA_t QueryScreenModeMESA;
> -   QueryModeStringMESA_t QueryModeStringMESA;
> -#endif /* EGL_MESA_screen_surface */
> -
>     CreatePbufferFromClientBuffer_t CreatePbufferFromClientBuffer;
>
>     CreateImageKHR_t CreateImageKHR;
> diff --git a/src/egl/main/eglconfig.c b/src/egl/main/eglconfig.c
> index db42e95..cf65c69 100644
> --- a/src/egl/main/eglconfig.c
> +++ b/src/egl/main/eglconfig.c
> @@ -323,10 +323,6 @@ _eglValidateConfig(const _EGLConfig *conf, EGLBoolean for_matching)
>                     EGL_VG_ALPHA_FORMAT_PRE_BIT |
>                     EGL_MULTISAMPLE_RESOLVE_BOX_BIT |
>                     EGL_SWAP_BEHAVIOR_PRESERVED_BIT;
> -#ifdef EGL_MESA_screen_surface
> -            if (conf->Display->Extensions.MESA_screen_surface)
> -               mask |= EGL_SCREEN_BIT_MESA;
> -#endif
>              break;
>           case EGL_RENDERABLE_TYPE:
>           case EGL_CONFORMANT:
> diff --git a/src/egl/main/eglcurrent.c b/src/egl/main/eglcurrent.c
> index 6ffc799..835631d 100644
> --- a/src/egl/main/eglcurrent.c
> +++ b/src/egl/main/eglcurrent.c
> @@ -282,14 +282,6 @@ _eglError(EGLint errCode, const char *msg)
>        case EGL_NOT_INITIALIZED:
>           s = "EGL_NOT_INITIALIZED";
>           break;
> -#ifdef EGL_MESA_screen_surface
> -      case EGL_BAD_SCREEN_MESA:
> -         s = "EGL_BAD_SCREEN_MESA";
> -         break;
> -      case EGL_BAD_MODE_MESA:
> -         s = "EGL_BAD_MODE_MESA";
> -         break;
> -#endif
>        default:
>           s = "other EGL error";
>        }
> diff --git a/src/egl/main/egldisplay.h b/src/egl/main/egldisplay.h
> index b6b9ed8..36f50b9 100644
> --- a/src/egl/main/egldisplay.h
> +++ b/src/egl/main/egldisplay.h
> @@ -86,7 +86,6 @@ struct _egl_resource
>   */
>  struct _egl_extensions
>  {
> -   EGLBoolean MESA_screen_surface;
>     EGLBoolean MESA_copy_context;
>     EGLBoolean MESA_drm_display;
>     EGLBoolean MESA_drm_image;
> diff --git a/src/egl/main/eglfallbacks.c b/src/egl/main/eglfallbacks.c
> index 83d7756..d12b849 100644
> --- a/src/egl/main/eglfallbacks.c
> +++ b/src/egl/main/eglfallbacks.c
> @@ -32,8 +32,6 @@
>  #include "eglconfig.h"
>  #include "eglcontext.h"
>  #include "eglsurface.h"
> -#include "eglscreen.h"
> -#include "eglmode.h"
>  #include "eglsync.h"
>
>
> @@ -85,22 +83,6 @@ _eglInitDriverFallbacks(_EGLDriver *drv)
>     drv->API.WaitNative = (WaitNative_t) _eglReturnFalse;
>     drv->API.GetProcAddress = (GetProcAddress_t) _eglReturnFalse;
>
> -#ifdef EGL_MESA_screen_surface
> -   drv->API.CopyContextMESA = (CopyContextMESA_t) _eglReturnFalse;
> -   drv->API.CreateScreenSurfaceMESA =
> -      (CreateScreenSurfaceMESA_t) _eglReturnFalse;
> -   drv->API.ShowScreenSurfaceMESA = (ShowScreenSurfaceMESA_t) _eglReturnFalse;
> -   drv->API.ChooseModeMESA = _eglChooseModeMESA;
> -   drv->API.GetModesMESA = _eglGetModesMESA;
> -   drv->API.GetModeAttribMESA = _eglGetModeAttribMESA;
> -   drv->API.GetScreensMESA = _eglGetScreensMESA;
> -   drv->API.ScreenPositionMESA = _eglScreenPositionMESA;
> -   drv->API.QueryScreenMESA = _eglQueryScreenMESA;
> -   drv->API.QueryScreenSurfaceMESA = _eglQueryScreenSurfaceMESA;
> -   drv->API.QueryScreenModeMESA = _eglQueryScreenModeMESA;
> -   drv->API.QueryModeStringMESA = _eglQueryModeStringMESA;
> -#endif /* EGL_MESA_screen_surface */
> -
>     drv->API.CreateImageKHR = NULL;
>     drv->API.DestroyImageKHR = NULL;
>
> diff --git a/src/egl/main/eglmode.c b/src/egl/main/eglmode.c
> deleted file mode 100644
> index d248ea4..0000000
> --- a/src/egl/main/eglmode.c
> +++ /dev/null
> @@ -1,357 +0,0 @@
> -/**************************************************************************
> - *
> - * Copyright 2008 VMware, Inc.
> - * Copyright 2009-2010 Chia-I Wu <olvaffe at gmail.com>
> - * Copyright 2010 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.
> - *
> - **************************************************************************/
> -
> -
> -#include <assert.h>
> -#include <stdlib.h>
> -#include <string.h>
> -
> -#include "egldisplay.h"
> -#include "eglmode.h"
> -#include "eglcurrent.h"
> -#include "eglscreen.h"
> -
> -
> -#ifdef EGL_MESA_screen_surface
> -
> -
> -#define MIN2(A, B)  (((A) < (B)) ? (A) : (B))
> -
> -
> -/**
> - * Given an EGLModeMESA handle, return the corresponding _EGLMode object
> - * or null if non-existant.
> - */
> -_EGLMode *
> -_eglLookupMode(EGLModeMESA mode, _EGLDisplay *disp)
> -{
> -   EGLint scrnum;
> -
> -   if (!disp || !disp->Screens)
> -      return NULL;
> -
> -   /* loop over all screens on the display */
> -   for (scrnum = 0; scrnum < disp->Screens->Size; scrnum++) {
> -      const _EGLScreen *scrn = disp->Screens->Elements[scrnum];
> -      EGLint idx;
> -
> -      /*
> -       * the mode ids of a screen ranges from scrn->Handle to scrn->Handle +
> -       * scrn->NumModes
> -       */
> -      if (mode >= scrn->Handle &&
> -          mode < scrn->Handle + _EGL_SCREEN_MAX_MODES) {
> -         idx = mode - scrn->Handle;
> -
> -         assert(idx < scrn->NumModes && scrn->Modes[idx].Handle == mode);
> -
> -         return &scrn->Modes[idx];
> -      }
> -   }
> -
> -   return NULL;
> -}
> -
> -
> -/**
> - * Parse the attrib_list to fill in the fields of the given _eglMode
> - * Return EGL_FALSE if any errors, EGL_TRUE otherwise.
> - */
> -static EGLBoolean
> -_eglParseModeAttribs(_EGLMode *mode, const EGLint *attrib_list)
> -{
> -   EGLint i;
> -
> -   /* init all attribs to EGL_DONT_CARE */
> -   mode->Handle = EGL_DONT_CARE;
> -   mode->Width = EGL_DONT_CARE;
> -   mode->Height = EGL_DONT_CARE;
> -   mode->RefreshRate = EGL_DONT_CARE;
> -   mode->Optimal = EGL_DONT_CARE;
> -   mode->Interlaced = EGL_DONT_CARE;
> -   mode->Name = NULL;
> -
> -   for (i = 0; attrib_list && attrib_list[i] != EGL_NONE; i++) {
> -      switch (attrib_list[i]) {
> -      case EGL_MODE_ID_MESA:
> -         mode->Handle = attrib_list[++i];
> -         if (mode->Handle <= 0) {
> -            _eglError(EGL_BAD_PARAMETER, "eglChooseModeMESA(handle)");
> -            return EGL_FALSE;
> -         }
> -         break;
> -      case EGL_WIDTH:
> -         mode->Width = attrib_list[++i];
> -         if (mode->Width <= 0) {
> -            _eglError(EGL_BAD_PARAMETER, "eglChooseModeMESA(width)");
> -            return EGL_FALSE;
> -         }
> -         break;
> -      case EGL_HEIGHT:
> -         mode->Height = attrib_list[++i];
> -         if (mode->Height <= 0) {
> -            _eglError(EGL_BAD_PARAMETER, "eglChooseModeMESA(height)");
> -            return EGL_FALSE;
> -         }
> -         break;
> -      case EGL_REFRESH_RATE_MESA:
> -         mode->RefreshRate = attrib_list[++i];
> -         if (mode->RefreshRate <= 0) {
> -            _eglError(EGL_BAD_PARAMETER, "eglChooseModeMESA(refresh rate)");
> -            return EGL_FALSE;
> -         }
> -         break;
> -      case EGL_INTERLACED_MESA:
> -         mode->Interlaced = attrib_list[++i];
> -         if (mode->Interlaced != EGL_TRUE && mode->Interlaced != EGL_FALSE) {
> -            _eglError(EGL_BAD_PARAMETER, "eglChooseModeMESA(interlaced)");
> -            return EGL_FALSE;
> -         }
> -         break;
> -      case EGL_OPTIMAL_MESA:
> -         mode->Optimal = attrib_list[++i];
> -         if (mode->Optimal != EGL_TRUE && mode->Optimal != EGL_FALSE) {
> -            _eglError(EGL_BAD_PARAMETER, "eglChooseModeMESA(optimal)");
> -            return EGL_FALSE;
> -         }
> -         break;
> -      default:
> -         _eglError(EGL_BAD_ATTRIBUTE, "eglChooseModeMESA");
> -         return EGL_FALSE;
> -      }
> -   }
> -   return EGL_TRUE;
> -}
> -
> -
> -/**
> - * Determine if the candidate mode's attributes are at least as good
> - * as the minimal mode's.
> - * \return EGL_TRUE if qualifies, EGL_FALSE otherwise
> - */
> -static EGLBoolean
> -_eglModeQualifies(const _EGLMode *c, const _EGLMode *min)
> -{
> -   if (min->Handle != EGL_DONT_CARE && c->Handle != min->Handle)
> -      return EGL_FALSE;
> -   if (min->Width != EGL_DONT_CARE && c->Width < min->Width)
> -      return EGL_FALSE;
> -   if (min->Height != EGL_DONT_CARE && c->Height < min->Height)
> -      return EGL_FALSE;
> -   if (min->RefreshRate != EGL_DONT_CARE && c->RefreshRate < min->RefreshRate)
> -      return EGL_FALSE;
> -   if (min->Optimal != EGL_DONT_CARE && c->Optimal != min->Optimal)
> -      return EGL_FALSE;
> -   if (min->Interlaced != EGL_DONT_CARE && c->Interlaced != min->Interlaced)
> -      return EGL_FALSE;
> -
> -   return EGL_TRUE;
> -}
> -
> -
> -/**
> - * Return value of given mode attribute, or -1 if bad attrib.
> - */
> -static EGLint
> -getModeAttrib(const _EGLMode *m, EGLint attrib)
> -{
> -   switch (attrib) {
> -   case EGL_MODE_ID_MESA:
> -      return m->Handle;
> -   case EGL_WIDTH:
> -      return m->Width;
> -   case EGL_HEIGHT:
> -      return m->Height;
> -   case EGL_REFRESH_RATE_MESA:
> -      return m->RefreshRate;
> -   case EGL_OPTIMAL_MESA:
> -      return m->Optimal;
> -   case EGL_INTERLACED_MESA:
> -      return m->Interlaced;
> -   default:
> -      return -1;
> -   }
> -}
> -
> -
> -#define SMALLER 1
> -#define LARGER  2
> -
> -struct sort_info {
> -   EGLint Attrib;
> -   EGLint Order; /* SMALLER or LARGER */
> -};
> -
> -/* the order of these entries is the priority */
> -static struct sort_info SortInfo[] = {
> -   { EGL_OPTIMAL_MESA, LARGER },
> -   { EGL_INTERLACED_MESA, SMALLER },
> -   { EGL_WIDTH, LARGER },
> -   { EGL_HEIGHT, LARGER },
> -   { EGL_REFRESH_RATE_MESA, LARGER },
> -   { EGL_MODE_ID_MESA, SMALLER },
> -   { 0, 0 }
> -};
> -
> -
> -/**
> - * Compare modes 'a' and 'b' and return -1 if a belongs before b, or 1 if a
> - * belongs after b, or 0 if they're equal.
> - * Used by qsort().
> - */
> -static int
> -_eglCompareModes(const void *a, const void *b)
> -{
> -   const _EGLMode *aMode = *((const _EGLMode **) a);
> -   const _EGLMode *bMode = *((const _EGLMode **) b);
> -   EGLint i;
> -
> -   for (i = 0; SortInfo[i].Attrib; i++) {
> -      const EGLint aVal = getModeAttrib(aMode, SortInfo[i].Attrib);
> -      const EGLint bVal = getModeAttrib(bMode, SortInfo[i].Attrib);
> -      if (aVal == bVal) {
> -         /* a tie */
> -         continue;
> -      }
> -      else if (SortInfo[i].Order == SMALLER) {
> -         return (aVal < bVal) ? -1 : 1;
> -      }
> -      else if (SortInfo[i].Order == LARGER) {
> -         return (aVal > bVal) ? -1 : 1;
> -      }
> -   }
> -
> -   /* all attributes identical */
> -   return 0;
> -}
> -
> -
> -/**
> - * Search for EGLModes which match the given attribute list.
> - * Called via eglChooseModeMESA API function.
> - */
> -EGLBoolean
> -_eglChooseModeMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn,
> -                   const EGLint *attrib_list, EGLModeMESA *modes,
> -                   EGLint modes_size, EGLint *num_modes)
> -{
> -   _EGLMode **modeList, min;
> -   EGLint i, count;
> -
> -   if (!_eglParseModeAttribs(&min, attrib_list)) {
> -      /* error code will have been recorded */
> -      return EGL_FALSE;
> -   }
> -
> -   /* allocate array of mode pointers */
> -   modeList = malloc(modes_size * sizeof(_EGLMode *));
> -   if (!modeList) {
> -      _eglError(EGL_BAD_MODE_MESA, "eglChooseModeMESA(out of memory)");
> -      return EGL_FALSE;
> -   }
> -
> -   /* make array of pointers to qualifying modes */
> -   for (i = count = 0; i < scrn->NumModes && count < modes_size; i++) {
> -      if (_eglModeQualifies(scrn->Modes + i, &min)) {
> -         modeList[count++] = scrn->Modes + i;
> -      }
> -   }
> -
> -   /* sort array of pointers */
> -   qsort(modeList, count, sizeof(_EGLMode *), _eglCompareModes);
> -
> -   /* copy mode handles to output array */
> -   for (i = 0; i < count; i++) {
> -      modes[i] = modeList[i]->Handle;
> -   }
> -
> -   free(modeList);
> -
> -   *num_modes = count;
> -
> -   return EGL_TRUE;
> -}
> -
> -
> -
> -/**
> - * Return all possible modes for the given screen.  No sorting of results.
> - * Called via eglGetModesMESA() API function.
> - */
> -EGLBoolean
> -_eglGetModesMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn,
> -                 EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes)
> -{
> -   if (modes) {
> -      EGLint i;
> -      *num_modes = MIN2(scrn->NumModes, modes_size);
> -      for (i = 0; i < *num_modes; i++) {
> -         modes[i] = scrn->Modes[i].Handle;
> -      }
> -   }
> -   else {
> -      /* just return total number of supported modes */
> -      *num_modes = scrn->NumModes;
> -   }
> -
> -   return EGL_TRUE;
> -}
> -
> -
> -/**
> - * Query an attribute of a mode.
> - */
> -EGLBoolean
> -_eglGetModeAttribMESA(_EGLDriver *drv, _EGLDisplay *dpy,
> -                      _EGLMode *m, EGLint attribute, EGLint *value)
> -{
> -   EGLint v;
> -
> -   v = getModeAttrib(m, attribute);
> -   if (v < 0) {
> -      _eglError(EGL_BAD_ATTRIBUTE, "eglGetModeAttribMESA");
> -      return EGL_FALSE;
> -   }
> -   *value = v;
> -   return EGL_TRUE;
> -}
> -
> -
> -/**
> - * Return human-readable string for given mode.
> - * This is the default function called by eglQueryModeStringMESA().
> - */
> -const char *
> -_eglQueryModeStringMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLMode *m)
> -{
> -   return m->Name;
> -}
> -
> -
> -#endif /* EGL_MESA_screen_surface */
> diff --git a/src/egl/main/eglmode.h b/src/egl/main/eglmode.h
> deleted file mode 100644
> index 664074f..0000000
> --- a/src/egl/main/eglmode.h
> +++ /dev/null
> @@ -1,88 +0,0 @@
> -/**************************************************************************
> - *
> - * Copyright 2008 VMware, Inc.
> - * Copyright 2009-2010 Chia-I Wu <olvaffe at gmail.com>
> - * Copyright 2010 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 EGLMODE_INCLUDED
> -#define EGLMODE_INCLUDED
> -
> -#include "egltypedefs.h"
> -
> -
> -#ifdef EGL_MESA_screen_surface
> -
> -
> -#define EGL_NO_MODE_MESA 0
> -
> -
> -/**
> - * Data structure which corresponds to an EGLModeMESA.
> - */
> -struct _egl_mode
> -{
> -   EGLModeMESA Handle;     /* the public/opaque handle which names this mode */
> -   EGLint Width, Height;   /* size in pixels */
> -   EGLint RefreshRate;     /* rate * 1000.0 */
> -   EGLint Optimal;
> -   EGLint Interlaced;
> -   const char *Name;
> -
> -   /* Other possible attributes */
> -   /* interlaced */
> -   /* external sync */
> -};
> -
> -
> -extern _EGLMode *
> -_eglLookupMode(EGLModeMESA mode, _EGLDisplay *dpy);
> -
> -
> -extern EGLBoolean
> -_eglChooseModeMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn,
> -                   const EGLint *attrib_list, EGLModeMESA *modes,
> -                   EGLint modes_size, EGLint *num_modes);
> -
> -
> -extern EGLBoolean
> -_eglGetModesMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn,
> -                 EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes);
> -
> -
> -extern EGLBoolean
> -_eglGetModeAttribMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLMode *m,
> -                      EGLint attribute, EGLint *value);
> -
> -
> -extern const char *
> -_eglQueryModeStringMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLMode *m);
> -
> -
> -#endif /* EGL_MESA_screen_surface */
> -
> -
> -#endif /* EGLMODE_INCLUDED */
> diff --git a/src/egl/main/eglscreen.c b/src/egl/main/eglscreen.c
> deleted file mode 100644
> index 42ac621..0000000
> --- a/src/egl/main/eglscreen.c
> +++ /dev/null
> @@ -1,235 +0,0 @@
> -/**************************************************************************
> - *
> - * Copyright 2008 VMware, Inc.
> - * Copyright 2009-2010 Chia-I Wu <olvaffe at gmail.com>
> - * Copyright 2010 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.
> - *
> - **************************************************************************/
> -
> -
> -/*
> - * Ideas for screen management extension to EGL.
> - *
> - * Each EGLDisplay has one or more screens (CRTs, Flat Panels, etc).
> - * The screens' handles can be obtained with eglGetScreensMESA().
> - *
> - * A new kind of EGLSurface is possible- one which can be directly scanned
> - * out on a screen.  Such a surface is created with eglCreateScreenSurface().
> - *
> - * To actually display a screen surface on a screen, the eglShowSurface()
> - * function is called.
> - */
> -
> -#include <assert.h>
> -#include <stdlib.h>
> -#include <string.h>
> -#include "c11/threads.h"
> -
> -#include "egldisplay.h"
> -#include "eglcurrent.h"
> -#include "eglmode.h"
> -#include "eglsurface.h"
> -#include "eglscreen.h"
> -
> -
> -#ifdef EGL_MESA_screen_surface
> -
> -
> -/* ugh, no atomic op? */
> -static mtx_t _eglNextScreenHandleMutex = _MTX_INITIALIZER_NP;
> -static EGLScreenMESA _eglNextScreenHandle = 1;
> -
> -
> -/**
> - * Return a new screen handle/ID.
> - * NOTE: we never reuse these!
> - */
> -static EGLScreenMESA
> -_eglAllocScreenHandle(void)
> -{
> -   EGLScreenMESA s;
> -
> -   mtx_lock(&_eglNextScreenHandleMutex);
> -   s = _eglNextScreenHandle;
> -   _eglNextScreenHandle += _EGL_SCREEN_MAX_MODES;
> -   mtx_unlock(&_eglNextScreenHandleMutex);
> -
> -   return s;
> -}
> -
> -
> -/**
> - * Initialize an _EGLScreen object to default values.
> - */
> -void
> -_eglInitScreen(_EGLScreen *screen, _EGLDisplay *dpy, EGLint num_modes)
> -{
> -   memset(screen, 0, sizeof(_EGLScreen));
> -
> -   screen->Display = dpy;
> -   screen->NumModes = num_modes;
> -   screen->StepX = 1;
> -   screen->StepY = 1;
> -
> -   if (num_modes > _EGL_SCREEN_MAX_MODES)
> -      num_modes = _EGL_SCREEN_MAX_MODES;
> -   screen->Modes = calloc(num_modes, sizeof(*screen->Modes));
> -   screen->NumModes = (screen->Modes) ? num_modes : 0;
> -}
> -
> -
> -/**
> - * Link a screen to its display and return the handle of the link.
> - * The handle can be passed to client directly.
> - */
> -EGLScreenMESA
> -_eglLinkScreen(_EGLScreen *screen)
> -{
> -   _EGLDisplay *display;
> -   EGLint i;
> -
> -   assert(screen && screen->Display);
> -   display = screen->Display;
> -
> -   if (!display->Screens) {
> -      display->Screens = _eglCreateArray("Screen", 4);
> -      if (!display->Screens)
> -         return (EGLScreenMESA) 0;
> -   }
> -
> -   screen->Handle = _eglAllocScreenHandle();
> -   for (i = 0; i < screen->NumModes; i++)
> -      screen->Modes[i].Handle = screen->Handle + i;
> -
> -   _eglAppendArray(display->Screens, (void *) screen);
> -
> -   return screen->Handle;
> -}
> -
> -
> -/**
> - * Lookup a handle to find the linked config.
> - * Return NULL if the handle has no corresponding linked config.
> - */
> -_EGLScreen *
> -_eglLookupScreen(EGLScreenMESA screen, _EGLDisplay *display)
> -{
> -   EGLint i;
> -
> -   if (!display || !display->Screens)
> -      return NULL;
> -
> -   for (i = 0; i < display->Screens->Size; i++) {
> -      _EGLScreen *scr = (_EGLScreen *) display->Screens->Elements[i];
> -      if (scr->Handle == screen) {
> -         assert(scr->Display == display);
> -         return scr;
> -      }
> -   }
> -   return NULL;
> -}
> -
> -
> -static EGLBoolean
> -_eglFlattenScreen(void *elem, void *buffer)
> -{
> -   _EGLScreen *scr = (_EGLScreen *) elem;
> -   EGLScreenMESA *handle = (EGLScreenMESA *) buffer;
> -   *handle = _eglGetScreenHandle(scr);
> -   return EGL_TRUE;
> -}
> -
> -
> -EGLBoolean
> -_eglGetScreensMESA(_EGLDriver *drv, _EGLDisplay *display, EGLScreenMESA *screens,
> -                   EGLint max_screens, EGLint *num_screens)
> -{
> -   *num_screens = _eglFlattenArray(display->Screens, (void *) screens,
> -         sizeof(screens[0]), max_screens, _eglFlattenScreen);
> -
> -   return EGL_TRUE;
> -}
> -
> -
> -/**
> - * Set a screen's surface origin.
> - */
> -EGLBoolean
> -_eglScreenPositionMESA(_EGLDriver *drv, _EGLDisplay *dpy,
> -                       _EGLScreen *scrn, EGLint x, EGLint y)
> -{
> -   scrn->OriginX = x;
> -   scrn->OriginY = y;
> -
> -   return EGL_TRUE;
> -}
> -
> -
> -/**
> - * Query a screen's current surface.
> - */
> -EGLBoolean
> -_eglQueryScreenSurfaceMESA(_EGLDriver *drv, _EGLDisplay *dpy,
> -                           _EGLScreen *scrn, _EGLSurface **surf)
> -{
> -   *surf = scrn->CurrentSurface;
> -   return EGL_TRUE;
> -}
> -
> -
> -/**
> - * Query a screen's current mode.
> - */
> -EGLBoolean
> -_eglQueryScreenModeMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn,
> -                        _EGLMode **m)
> -{
> -   *m = scrn->CurrentMode;
> -   return EGL_TRUE;
> -}
> -
> -
> -EGLBoolean
> -_eglQueryScreenMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn,
> -                    EGLint attribute, EGLint *value)
> -{
> -   switch (attribute) {
> -   case EGL_SCREEN_POSITION_MESA:
> -      value[0] = scrn->OriginX;
> -      value[1] = scrn->OriginY;
> -      break;
> -   case EGL_SCREEN_POSITION_GRANULARITY_MESA:
> -      value[0] = scrn->StepX;
> -      value[1] = scrn->StepY;
> -      break;
> -   default:
> -      _eglError(EGL_BAD_ATTRIBUTE, "eglQueryScreenMESA");
> -      return EGL_FALSE;
> -   }
> -
> -   return EGL_TRUE;
> -}
> -
> -
> -#endif /* EGL_MESA_screen_surface */
> diff --git a/src/egl/main/eglscreen.h b/src/egl/main/eglscreen.h
> deleted file mode 100644
> index c554e1d..0000000
> --- a/src/egl/main/eglscreen.h
> +++ /dev/null
> @@ -1,117 +0,0 @@
> -/**************************************************************************
> - *
> - * Copyright 2008 VMware, Inc.
> - * Copyright 2009-2010 Chia-I Wu <olvaffe at gmail.com>
> - * Copyright 2010 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 EGLSCREEN_INCLUDED
> -#define EGLSCREEN_INCLUDED
> -
> -#include "c99_compat.h"
> -
> -#include "egltypedefs.h"
> -
> -
> -#ifdef EGL_MESA_screen_surface
> -
> -
> -#define _EGL_SCREEN_MAX_MODES 16
> -
> -
> -/**
> - * Per-screen information.
> - * Note that an EGL screen doesn't have a size.  A screen may be set to
> - * one of several display modes (width/height/scanrate).  The screen
> - * then displays a drawing surface.  The drawing surface must be at least
> - * as large as the display mode's resolution.  If it's larger, the
> - * OriginX and OriginY fields control what part of the surface is visible
> - * on the screen.
> - */
> -struct _egl_screen
> -{
> -   _EGLDisplay *Display;
> -
> -   EGLScreenMESA Handle; /* The public/opaque handle which names this object */
> -
> -   _EGLMode *CurrentMode;
> -   _EGLSurface *CurrentSurface;
> -
> -   EGLint OriginX, OriginY; /**< Origin of scan-out region w.r.t. surface */
> -   EGLint StepX, StepY;     /**< Screen position/origin granularity */
> -
> -   EGLint NumModes;
> -   _EGLMode *Modes;  /**< array [NumModes] */
> -};
> -
> -
> -extern void
> -_eglInitScreen(_EGLScreen *screen, _EGLDisplay *dpy, EGLint num_modes);
> -
> -
> -extern EGLScreenMESA
> -_eglLinkScreen(_EGLScreen *screen);
> -
> -
> -extern _EGLScreen *
> -_eglLookupScreen(EGLScreenMESA screen, _EGLDisplay *dpy);
> -
> -
> -/**
> - * Return the handle of a linked screen.
> - */
> -static inline EGLScreenMESA
> -_eglGetScreenHandle(_EGLScreen *screen)
> -{
> -   return (screen) ? screen->Handle : (EGLScreenMESA) 0;
> -}
> -
> -
> -extern EGLBoolean
> -_eglGetScreensMESA(_EGLDriver *drv, _EGLDisplay *dpy, EGLScreenMESA *screens, EGLint max_screens, EGLint *num_screens);
> -
> -
> -extern EGLBoolean
> -_eglScreenPositionMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, EGLint x, EGLint y);
> -
> -
> -extern EGLBoolean
> -_eglQueryScreenSurfaceMESA(_EGLDriver *drv, _EGLDisplay *dpy,
> -                           _EGLScreen *scrn, _EGLSurface **surface);
> -
> -
> -extern EGLBoolean
> -_eglQueryScreenModeMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, _EGLMode **m);
> -
> -
> -extern EGLBoolean
> -_eglQueryScreenMESA(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *scrn, EGLint attribute, EGLint *value);
> -
> -
> -#endif /* EGL_MESA_screen_surface */
> -
> -
> -#endif /* EGLSCREEN_INCLUDED */
> diff --git a/src/egl/main/eglsurface.c b/src/egl/main/eglsurface.c
> index e2cb73b..76c60e9 100644
> --- a/src/egl/main/eglsurface.c
> +++ b/src/egl/main/eglsurface.c
> @@ -61,50 +61,6 @@ _eglClampSwapInterval(_EGLSurface *surf, EGLint interval)
>  }
>
>
> -#ifdef EGL_MESA_screen_surface
> -static EGLint
> -_eglParseScreenSurfaceAttribList(_EGLSurface *surf, const EGLint *attrib_list)
> -{
> -   EGLint i, err = EGL_SUCCESS;
> -
> -   if (!attrib_list)
> -      return EGL_SUCCESS;
> -
> -   for (i = 0; attrib_list[i] != EGL_NONE; i++) {
> -      EGLint attr = attrib_list[i++];
> -      EGLint val = attrib_list[i];
> -
> -      switch (attr) {
> -      case EGL_WIDTH:
> -         if (val < 0) {
> -            err = EGL_BAD_PARAMETER;
> -            break;
> -         }
> -         surf->Width = val;
> -         break;
> -      case EGL_HEIGHT:
> -         if (val < 0) {
> -            err = EGL_BAD_PARAMETER;
> -            break;
> -         }
> -         surf->Height = val;
> -         break;
> -      default:
> -         err = EGL_BAD_ATTRIBUTE;
> -         break;
> -      }
> -
> -      if (err != EGL_SUCCESS) {
> -         _eglLog(_EGL_WARNING, "bad surface attribute 0x%04x", attr);
> -         break;
> -      }
> -   }
> -
> -   return err;
> -}
> -#endif /* EGL_MESA_screen_surface */
> -
> -
>  /**
>   * Parse the list of surface attributes and return the proper error code.
>   */
> @@ -119,11 +75,6 @@ _eglParseSurfaceAttribList(_EGLSurface *surf, const EGLint *attrib_list)
>     if (!attrib_list)
>        return EGL_SUCCESS;
>
> -#ifdef EGL_MESA_screen_surface
> -   if (type == EGL_SCREEN_BIT_MESA)
> -      return _eglParseScreenSurfaceAttribList(surf, attrib_list);
> -#endif
> -
>     if (dpy->Extensions.NOK_texture_from_pixmap)
>        texture_type |= EGL_PIXMAP_BIT;
>
> @@ -297,12 +248,6 @@ _eglInitSurface(_EGLSurface *surf, _EGLDisplay *dpy, EGLint type,
>     case EGL_PBUFFER_BIT:
>        func = "eglCreatePBufferSurface";
>        break;
> -#ifdef EGL_MESA_screen_surface
> -   case EGL_SCREEN_BIT_MESA:
> -      func = "eglCreateScreenSurface";
> -      renderBuffer = EGL_SINGLE_BUFFER; /* XXX correct? */
> -      break;
> -#endif
>     default:
>        _eglLog(_EGL_WARNING, "Bad type in _eglInitSurface");
>        return EGL_FALSE;
> --
> 2.3.6
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list