From: Adam Jackson Date: Wed, 30 Oct 2013 15:05:40 +0000 (-0400) Subject: glamor/egl: Remove glapi awareness X-Git-Tag: xorg-server-1.15.99.901~34^2~9 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6cc0b7b01599b94af07e9fc8b16134f751ede077;p=platform%2Fupstream%2Fxorg-server.git glamor/egl: Remove glapi awareness We only needed this because glx was directly bashing glapi tables. Since that's not the case anymore, we should just MakeCurrent like a real GL app. v2: Hand-resolve against rebase onto newer server (by anholt) Signed-off-by: Adam Jackson Signed-off-by: Eric Anholt Reviewed-by: Eric Anholt Reviewed-by: Zhigang Gong Reviewed-by: Keith Packard --- diff --git a/glamor/Makefile.am b/glamor/Makefile.am index 6c80f24..15a8b74 100644 --- a/glamor/Makefile.am +++ b/glamor/Makefile.am @@ -46,8 +46,7 @@ libglamor_la_SOURCES = \ glamor_compositerects.c\ glamor_xv.c\ glamor_utils.h\ - glamor.h\ - glapi.h + glamor.h sdk_HEADERS = glamor.h diff --git a/glamor/glamor_egl.c b/glamor/glamor_egl.c index 4257808..b30eeec 100644 --- a/glamor/glamor_egl.c +++ b/glamor/glamor_egl.c @@ -61,9 +61,6 @@ #include "glamor.h" #include "glamor_gl_dispatch.h" -#ifdef GLX_USE_SHARED_DISPATCH -#include "glapi.h" -#endif static const char glamor_name[] = "glamor"; @@ -93,8 +90,6 @@ struct glamor_egl_screen_private { struct gbm_device *gbm; #endif int has_gem; - void *glamor_context; - void *current_context; int gl_context_depth; int dri3_capable; @@ -115,7 +110,6 @@ glamor_egl_get_screen_private(ScrnInfoPtr scrn) scrn->privates[xf86GlamorEGLPrivateIndex].ptr; } -#ifdef GLX_USE_SHARED_DISPATCH _X_EXPORT void glamor_egl_make_current(ScreenPtr screen) { @@ -126,9 +120,7 @@ glamor_egl_make_current(ScreenPtr screen) if (glamor_egl->gl_context_depth++) return; - GET_CURRENT_CONTEXT(glamor_egl->current_context); - - if (glamor_egl->glamor_context != glamor_egl->current_context) { + if (glamor_egl->context != eglGetCurrentContext()) { eglMakeCurrent(glamor_egl->display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); if (!eglMakeCurrent(glamor_egl->display, @@ -149,14 +141,9 @@ glamor_egl_restore_context(ScreenPtr screen) if (--glamor_egl->gl_context_depth) return; - if (glamor_egl->current_context && - glamor_egl->glamor_context != glamor_egl->current_context) - SET_CURRENT_CONTEXT(glamor_egl->current_context); + eglMakeCurrent(glamor_egl->display, EGL_NO_SURFACE, + EGL_NO_SURFACE, EGL_NO_CONTEXT); } -#else -#define glamor_egl_make_current(x) -#define glamor_egl_restore_context(s) -#endif static EGLImageKHR _glamor_egl_create_image(struct glamor_egl_screen_private *glamor_egl, @@ -796,19 +783,14 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd) "Failed to make EGL context current\n"); return FALSE; } -#ifdef GLX_USE_SHARED_DISPATCH - GET_CURRENT_CONTEXT(glamor_egl->glamor_context); -#endif glamor_egl->saved_free_screen = scrn->FreeScreen; scrn->FreeScreen = glamor_egl_free_screen; #ifdef GLAMOR_GLES2 xf86DrvMsg(scrn->scrnIndex, X_INFO, "Using GLES2.\n"); -#ifdef GLX_USE_SHARED_DISPATCH xf86DrvMsg(scrn->scrnIndex, X_WARNING, "Glamor is using GLES2 but GLX needs GL. " "Indirect GLX may not work correctly.\n"); #endif -#endif return TRUE; } diff --git a/glamor/glamor_utils.h b/glamor/glamor_utils.h index 49d2ff7..151a65e 100644 --- a/glamor/glamor_utils.h +++ b/glamor/glamor_utils.h @@ -1834,7 +1834,6 @@ glamor_restore_current(ScreenPtr screen) glamor_egl_restore_context(screen); } -#ifdef GLX_USE_SHARED_DISPATCH static inline glamor_gl_dispatch * glamor_get_dispatch(glamor_screen_private * glamor_priv) { @@ -1850,19 +1849,5 @@ glamor_put_dispatch(glamor_screen_private * glamor_priv) if (glamor_priv->flags & GLAMOR_USE_EGL_SCREEN) glamor_restore_current(glamor_priv->screen); } -#else -#warning "Indirect GLX may be broken, need to implement context switch." -static inline glamor_gl_dispatch * -glamor_get_dispatch(glamor_screen_private * glamor_priv) -{ - return &glamor_priv->_dispatch; -} - -static inline void -glamor_put_dispatch(glamor_screen_private * glamor_priv) -{ -} - -#endif #endif diff --git a/glamor/glapi.h b/glamor/glapi.h deleted file mode 100644 index f61fc84..0000000 --- a/glamor/glapi.h +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.1 - * - * Copyright (C) 1999-2008 Brian Paul 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, sublicense, - * 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 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 - * BRIAN PAUL 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. - */ - -/** - * \mainpage Mesa GL API Module - * - * \section GLAPIIntroduction Introduction - * - * The Mesa GL API module is responsible for dispatching all the - * gl*() functions. All GL functions are dispatched by jumping through - * the current dispatch table (basically a struct full of function - * pointers.) - * - * A per-thread current dispatch table and per-thread current context - * pointer are managed by this module too. - * - * This module is intended to be non-Mesa-specific so it can be used - * with the X/DRI libGL also. - */ - -#ifndef _GLAPI_H -#define _GLAPI_H - -#define GL_GLEXT_PROTOTYPES - -#if GLAMOR_GLES2 -#include -#include -#else -#include -#include "GL/glext.h" -#endif - -/* Is this needed? It is incomplete anyway. */ -#ifdef USE_MGL_NAMESPACE -#define _glapi_set_dispatch _mglapi_set_dispatch -#define _glapi_get_dispatch _mglapi_get_dispatch -#define _glapi_set_context _mglapi_set_context -#define _glapi_get_context _mglapi_get_context -#define _glapi_Dispatch _mglapi_Dispatch -#define _glapi_Context _mglapi_Context -#endif - -typedef void (*_glapi_proc) (void); -struct _glapi_table; - -#if defined (GLX_USE_TLS) - -extern __thread struct _glapi_table *_glapi_tls_Dispatch - __attribute__ ((tls_model("initial-exec"))); - -extern __thread void *_glapi_tls_Context - __attribute__ ((tls_model("initial-exec"))); - -extern const struct _glapi_table *_glapi_Dispatch; -extern const void *_glapi_Context; - -#define GET_DISPATCH() _glapi_tls_Dispatch -#define GET_CURRENT_CONTEXT(C) C = (typeof(C)) _glapi_tls_Context -#define SET_CURRENT_CONTEXT(C) _glapi_tls_Context = (void*)C - -#else - -extern struct _glapi_table *_glapi_Dispatch; -extern void *_glapi_Context; - -#ifdef THREADS - -#define GET_DISPATCH() \ - (_X_LIKELY(_glapi_Dispatch) ? _glapi_Dispatch : _glapi_get_dispatch()) - -#define GET_CURRENT_CONTEXT(C) C = (typeof(C)) \ - (_X_LIKELY(_glapi_Context) ? _glapi_Context : _glapi_get_context()) - -#define SET_CURRENT_CONTEXT(C) do { if (_X_LIKELY(_glapi_Context)) \ - _glapi_Context = (void*)C; \ - else \ - _glapi_set_context(C); } while(0) - -#else - -#define GET_DISPATCH() _glapi_Dispatch -#define GET_CURRENT_CONTEXT(C) C = (typeof(C)) _glapi_Context -#define SET_CURRENT_CONTEXT(C) _glapi_Context = (void*)C - -#endif - -#endif /* defined (GLX_USE_TLS) */ - -extern void - _glapi_set_context(void *context); - -extern void *_glapi_get_context(void); - -#endif