diff options
164 files changed, 902 insertions, 2236 deletions
| diff --git a/configs/autoconf.in b/configs/autoconf.in index b94d9bce46..f63618ebea 100644 --- a/configs/autoconf.in +++ b/configs/autoconf.in @@ -22,6 +22,8 @@ LDFLAGS = @LDFLAGS@  EXTRA_LIB_PATH = @EXTRA_LIB_PATH@  RADEON_CFLAGS = @RADEON_CFLAGS@  RADEON_LDFLAGS = @RADEON_LDFLAGS@ +INTEL_LIBS = @INTEL_LIBS@ +INTEL_CFLAGS = @INTEL_CFLAGS@  # Assembler  MESA_ASM_SOURCES = @MESA_ASM_SOURCES@ diff --git a/configure.ac b/configure.ac index b2a969bc8c..d3fbd02713 100644 --- a/configure.ac +++ b/configure.ac @@ -447,8 +447,6 @@ AC_SUBST([GALLIUM_WINSYS_DIRS])  AC_SUBST([GALLIUM_WINSYS_DRM_DIRS])  AC_SUBST([GALLIUM_DRIVERS_DIRS])  AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS]) -AC_SUBST([RADEON_CFLAGS]) -AC_SUBST([RADEON_LDFLAGS])  dnl  dnl User supplied program configuration @@ -576,13 +574,6 @@ dri)      GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"      DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED" -    PKG_CHECK_MODULES([LIBDRM_RADEON], [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED], HAVE_LIBDRM_RADEON=yes, HAVE_LIBDRM_RADEON=no) - -    if test "$HAVE_LIBDRM_RADEON" = yes; then -	RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS" -	RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS -    fi -      # find the DRI deps for libGL      if test "$x11_pkgconfig" = yes; then          # add xcb modules if necessary @@ -802,6 +793,27 @@ AC_SUBST([DRI_DIRS])  AC_SUBST([EXPAT_INCLUDES])  AC_SUBST([DRI_LIB_DEPS]) +case $DRI_DIRS in +*i915*|*i965*) +    PKG_CHECK_MODULES([INTEL], [libdrm_intel]) +    ;; + +*radeon*|*r200*|*r300*|*r600*) +    PKG_CHECK_MODULES([LIBDRM_RADEON], +		      [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED], +		      HAVE_LIBDRM_RADEON=yes, +		      HAVE_LIBDRM_RADEON=no) + +    if test "$HAVE_LIBDRM_RADEON" = yes; then +	RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS" +	RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS +    fi +    ;; +esac +AC_SUBST([RADEON_CFLAGS]) +AC_SUBST([RADEON_LDFLAGS]) + +  dnl  dnl OSMesa configuration  dnl diff --git a/src/egl/drivers/dri/egldri.c b/src/egl/drivers/dri/egldri.c index 9e400be624..ca6821dad0 100644 --- a/src/egl/drivers/dri/egldri.c +++ b/src/egl/drivers/dri/egldri.c @@ -675,13 +675,13 @@ __eglCreateContextWithConfig(__DRInativeDisplay* ndpy, int screen,                               drm_context_t * hHWContext)  {      __DRIscreen *pDRIScreen; -    __DRIscreenPrivate *psp; +    __DRIscreen *psp;      pDRIScreen = __eglFindDRIScreen(ndpy, screen);      if ( (pDRIScreen == NULL) || (pDRIScreen->private == NULL) ) {          return GL_FALSE;      } -    psp = (__DRIscreenPrivate *) pDRIScreen->private; +    psp = (__DRIscreen *) pDRIScreen->private;      if (psp->fd) {          if (drmCreateContext(psp->fd, hHWContext)) {              _eglLog(_EGL_WARNING, "drmCreateContext failed."); @@ -691,14 +691,14 @@ __eglCreateContextWithConfig(__DRInativeDisplay* ndpy, int screen,      }  #if 0      __DRIscreen *pDRIScreen; -    __DRIscreenPrivate *psp; +    __DRIscreen *psp;      pDRIScreen = __glXFindDRIScreen(dpy, screen);      if ( (pDRIScreen == NULL) || (pDRIScreen->private == NULL) ) {          return GL_FALSE;      } -    psp = (__DRIscreenPrivate *) pDRIScreen->private; +    psp = (__DRIscreen *) pDRIScreen->private;      if (psp->fd) {          if (drmCreateContext(psp->fd, hHWContext)) { @@ -716,13 +716,13 @@ static GLboolean  __eglDestroyContext( __DRInativeDisplay * ndpy, int screen,  __DRIid context )  {      __DRIscreen *pDRIScreen; -    __DRIscreenPrivate *psp; +    __DRIscreen *psp;      pDRIScreen = __eglFindDRIScreen(ndpy, screen);      if ( (pDRIScreen == NULL) || (pDRIScreen->private == NULL) ) {          return GL_FALSE;      } -    psp = (__DRIscreenPrivate *) pDRIScreen->private; +    psp = (__DRIscreen *) pDRIScreen->private;      if (psp->fd)        drmDestroyContext(psp->fd, context); @@ -735,13 +735,13 @@ __eglCreateDrawable(__DRInativeDisplay * ndpy, int screen,                      __DRIid drawable, drm_drawable_t * hHWDrawable)  {      __DRIscreen *pDRIScreen; -    __DRIscreenPrivate *psp; +    __DRIscreen *psp;      pDRIScreen = __eglFindDRIScreen(ndpy, screen);      if ( (pDRIScreen == NULL) || (pDRIScreen->private == NULL) ) {          return GL_FALSE;      } -    psp = (__DRIscreenPrivate *) pDRIScreen->private; +    psp = (__DRIscreen *) pDRIScreen->private;      if (psp->fd) {          if (drmCreateDrawable(psp->fd, hHWDrawable)) {              _eglLog(_EGL_WARNING, "drmCreateDrawable failed."); @@ -756,13 +756,13 @@ static GLboolean  __eglDestroyDrawable( __DRInativeDisplay * ndpy, int screen, __DRIid drawable )  {      __DRIscreen *pDRIScreen; -    __DRIscreenPrivate *psp; +    __DRIscreen *psp;      pDRIScreen = __eglFindDRIScreen(ndpy, screen);      if ( (pDRIScreen == NULL) || (pDRIScreen->private == NULL) ) {          return GL_FALSE;      } -    psp = (__DRIscreenPrivate *) pDRIScreen->private; +    psp = (__DRIscreen *) pDRIScreen->private;      if (psp->fd)        drmDestroyDrawable(psp->fd, drawable); @@ -778,7 +778,7 @@ __eglGetDrawableInfo(__DRInativeDisplay * ndpy, int screen, __DRIid drawable,                       int* numBackClipRects, drm_clip_rect_t ** pBackClipRects )  {      __DRIscreen *pDRIScreen; -    __DRIscreenPrivate *psp; +    __DRIscreen *psp;      driSurface *surf = Lookup_driSurface((EGLSurface) drawable);     pDRIScreen = __eglFindDRIScreen(ndpy, screen); @@ -786,7 +786,7 @@ __eglGetDrawableInfo(__DRInativeDisplay * ndpy, int screen, __DRIid drawable,     if ( (pDRIScreen == NULL) || (pDRIScreen->private == NULL) ) {         return GL_FALSE;     } -   psp = (__DRIscreenPrivate *) pDRIScreen->private; +   psp = (__DRIscreen *) pDRIScreen->private;     *X = 0;     *Y = 0;     *W = surf->Base.Width; @@ -807,7 +807,7 @@ __eglGetDrawableInfo(__DRInativeDisplay * ndpy, int screen, __DRIid drawable,      GLXDrawable drawable = (GLXDrawable) draw;      drm_clip_rect_t * cliprect;      Display* display = (Display*)dpy; -    __DRIcontextPrivate *pcp = (__DRIcontextPrivate *)CurrentContext->driContext.private; +    __DRIcontext *pcp = (__DRIcontext *)CurrentContext->driContext.private;      if (drawable == 0) {          return GL_FALSE;      } diff --git a/src/gallium/state_trackers/dri/dri_context.c b/src/gallium/state_trackers/dri/dri_context.c index 8819936fca..f2e5f3fb23 100644 --- a/src/gallium/state_trackers/dri/dri_context.c +++ b/src/gallium/state_trackers/dri/dri_context.c @@ -44,9 +44,9 @@  GLboolean  dri_create_context(const __GLcontextModes * visual, -		   __DRIcontextPrivate * cPriv, void *sharedContextPrivate) +		   __DRIcontext * cPriv, void *sharedContextPrivate)  { -   __DRIscreenPrivate *sPriv = cPriv->driScreenPriv; +   __DRIscreen *sPriv = cPriv->driScreenPriv;     struct dri_screen *screen = dri_screen(sPriv);     struct dri_context *ctx = NULL;     struct st_context *st_share = NULL; @@ -97,7 +97,7 @@ dri_create_context(const __GLcontextModes * visual,  }  void -dri_destroy_context(__DRIcontextPrivate * cPriv) +dri_destroy_context(__DRIcontext * cPriv)  {     struct dri_context *ctx = dri_context(cPriv); @@ -116,7 +116,7 @@ dri_destroy_context(__DRIcontextPrivate * cPriv)  }  GLboolean -dri_unbind_context(__DRIcontextPrivate * cPriv) +dri_unbind_context(__DRIcontext * cPriv)  {     if (cPriv) {        struct dri_context *ctx = dri_context(cPriv); @@ -133,9 +133,9 @@ dri_unbind_context(__DRIcontextPrivate * cPriv)  }  GLboolean -dri_make_current(__DRIcontextPrivate * cPriv, -		 __DRIdrawablePrivate * driDrawPriv, -		 __DRIdrawablePrivate * driReadPriv) +dri_make_current(__DRIcontext * cPriv, +		 __DRIdrawable * driDrawPriv, +		 __DRIdrawable * driReadPriv)  {     if (cPriv) {        struct dri_context *ctx = dri_context(cPriv); diff --git a/src/gallium/state_trackers/dri/dri_context.h b/src/gallium/state_trackers/dri/dri_context.h index 4650178734..13f497462f 100644 --- a/src/gallium/state_trackers/dri/dri_context.h +++ b/src/gallium/state_trackers/dri/dri_context.h @@ -44,10 +44,10 @@ struct dri_drawable;  struct dri_context  {     /* dri */ -   __DRIscreenPrivate *sPriv; -   __DRIcontextPrivate *cPriv; -   __DRIdrawablePrivate *dPriv; -   __DRIdrawablePrivate *rPriv; +   __DRIscreen *sPriv; +   __DRIcontext *cPriv; +   __DRIdrawable *dPriv; +   __DRIdrawable *rPriv;     driOptionCache optionCache; @@ -67,7 +67,7 @@ struct dri_context  };  static INLINE struct dri_context * -dri_context(__DRIcontextPrivate * driContextPriv) +dri_context(__DRIcontext * driContextPriv)  {     return (struct dri_context *)driContextPriv->driverPrivate;  } @@ -99,18 +99,18 @@ dri_unlock(struct dri_context *ctx)   */  extern struct dri1_api_lock_funcs dri1_lf; -void dri_destroy_context(__DRIcontextPrivate * driContextPriv); +void dri_destroy_context(__DRIcontext * driContextPriv); -boolean dri_unbind_context(__DRIcontextPrivate * driContextPriv); +boolean dri_unbind_context(__DRIcontext * driContextPriv);  boolean -dri_make_current(__DRIcontextPrivate * driContextPriv, -		 __DRIdrawablePrivate * driDrawPriv, -		 __DRIdrawablePrivate * driReadPriv); +dri_make_current(__DRIcontext * driContextPriv, +		 __DRIdrawable * driDrawPriv, +		 __DRIdrawable * driReadPriv);  boolean  dri_create_context(const __GLcontextModes * visual, -		   __DRIcontextPrivate * driContextPriv, +		   __DRIcontext * driContextPriv,  		   void *sharedContextPrivate);  /*********************************************************************** diff --git a/src/gallium/state_trackers/dri/dri_drawable.c b/src/gallium/state_trackers/dri/dri_drawable.c index 4b12243ddf..1058dd38c2 100644 --- a/src/gallium/state_trackers/dri/dri_drawable.c +++ b/src/gallium/state_trackers/dri/dri_drawable.c @@ -118,7 +118,7 @@ dri2_check_if_pixmap(__DRIbuffer *buffers, int count)   * This will be called a drawable is known to have been resized.   */  void -dri_get_buffers(__DRIdrawablePrivate * dPriv) +dri_get_buffers(__DRIdrawable * dPriv)  {     struct dri_drawable *drawable = dri_drawable(dPriv); @@ -299,8 +299,8 @@ dri_flush_frontbuffer(struct pipe_screen *screen,   * This is called when we need to set up GL rendering to a new X window.   */  boolean -dri_create_buffer(__DRIscreenPrivate * sPriv, -		  __DRIdrawablePrivate * dPriv, +dri_create_buffer(__DRIscreen * sPriv, +		  __DRIdrawable * dPriv,  		  const __GLcontextModes * visual, boolean isPixmap)  {     struct dri_screen *screen = sPriv->private; @@ -416,7 +416,7 @@ dri_swap_fences_push_back(struct dri_drawable *draw,  }  void -dri_destroy_buffer(__DRIdrawablePrivate * dPriv) +dri_destroy_buffer(__DRIdrawable * dPriv)  {     struct dri_drawable *drawable = dri_drawable(dPriv);     struct pipe_fence_handle *fence; @@ -434,8 +434,8 @@ dri_destroy_buffer(__DRIdrawablePrivate * dPriv)  static void  dri1_update_drawables_locked(struct dri_context *ctx, -			     __DRIdrawablePrivate * driDrawPriv, -			     __DRIdrawablePrivate * driReadPriv) +			     __DRIdrawable * driDrawPriv, +			     __DRIdrawable * driReadPriv)  {     if (ctx->stLostLock) {        ctx->stLostLock = FALSE; @@ -458,8 +458,8 @@ dri1_update_drawables_locked(struct dri_context *ctx,  static void  dri1_propagate_drawable_change(struct dri_context *ctx)  { -   __DRIdrawablePrivate *dPriv = ctx->dPriv; -   __DRIdrawablePrivate *rPriv = ctx->rPriv; +   __DRIdrawable *dPriv = ctx->dPriv; +   __DRIdrawable *rPriv = ctx->rPriv;     boolean flushed = FALSE;     if (dPriv && ctx->d_stamp != dPriv->lastStamp) { @@ -532,7 +532,7 @@ static void  dri1_swap_copy(struct dri_context *ctx,  	       struct pipe_surface *dst,  	       struct pipe_surface *src, -	       __DRIdrawablePrivate * dPriv, const struct drm_clip_rect *bbox) +	       __DRIdrawable * dPriv, const struct drm_clip_rect *bbox)  {     struct pipe_context *pipe = ctx->pipe;     struct drm_clip_rect clip; @@ -563,7 +563,7 @@ dri1_swap_copy(struct dri_context *ctx,  static void  dri1_copy_to_front(struct dri_context *ctx,  		   struct pipe_surface *surf, -		   __DRIdrawablePrivate * dPriv, +		   __DRIdrawable * dPriv,  		   const struct drm_clip_rect *sub_box,  		   struct pipe_fence_handle **fence)  { @@ -636,7 +636,7 @@ dri1_flush_frontbuffer(struct pipe_screen *screen,  }  void -dri_swap_buffers(__DRIdrawablePrivate * dPriv) +dri_swap_buffers(__DRIdrawable * dPriv)  {     struct dri_context *ctx;     struct pipe_surface *back_surf; @@ -668,7 +668,7 @@ dri_swap_buffers(__DRIdrawablePrivate * dPriv)  }  void -dri_copy_sub_buffer(__DRIdrawablePrivate * dPriv, int x, int y, int w, int h) +dri_copy_sub_buffer(__DRIdrawable * dPriv, int x, int y, int w, int h)  {     struct pipe_screen *screen = dri_screen(dPriv->driScreenPriv)->pipe_screen;     struct drm_clip_rect sub_bbox; diff --git a/src/gallium/state_trackers/dri/dri_drawable.h b/src/gallium/state_trackers/dri/dri_drawable.h index b910930db4..80bb5d7f61 100644 --- a/src/gallium/state_trackers/dri/dri_drawable.h +++ b/src/gallium/state_trackers/dri/dri_drawable.h @@ -41,8 +41,8 @@ struct dri_context;  struct dri_drawable  {     /* dri */ -   __DRIdrawablePrivate *dPriv; -   __DRIscreenPrivate *sPriv; +   __DRIdrawable *dPriv; +   __DRIscreen *sPriv;     unsigned attachments[8];     unsigned num_attachments; @@ -67,7 +67,7 @@ struct dri_drawable  };  static INLINE struct dri_drawable * -dri_drawable(__DRIdrawablePrivate * driDrawPriv) +dri_drawable(__DRIdrawable * driDrawPriv)  {     return (struct dri_drawable *)driDrawPriv->driverPrivate;  } @@ -76,22 +76,22 @@ dri_drawable(__DRIdrawablePrivate * driDrawPriv)   * dri_drawable.c   */  boolean -dri_create_buffer(__DRIscreenPrivate * sPriv, -		  __DRIdrawablePrivate * dPriv, +dri_create_buffer(__DRIscreen * sPriv, +		  __DRIdrawable * dPriv,  		  const __GLcontextModes * visual, boolean isPixmap);  void  dri_flush_frontbuffer(struct pipe_screen *screen,  		      struct pipe_surface *surf, void *context_private); -void dri_swap_buffers(__DRIdrawablePrivate * dPriv); +void dri_swap_buffers(__DRIdrawable * dPriv);  void -dri_copy_sub_buffer(__DRIdrawablePrivate * dPriv, int x, int y, int w, int h); +dri_copy_sub_buffer(__DRIdrawable * dPriv, int x, int y, int w, int h); -void dri_get_buffers(__DRIdrawablePrivate * dPriv); +void dri_get_buffers(__DRIdrawable * dPriv); -void dri_destroy_buffer(__DRIdrawablePrivate * dPriv); +void dri_destroy_buffer(__DRIdrawable * dPriv);  void dri2_set_tex_buffer2(__DRIcontext *pDRICtx, GLint target,                            GLint glx_texture_format, __DRIdrawable *dPriv); diff --git a/src/gallium/state_trackers/dri/dri_screen.c b/src/gallium/state_trackers/dri/dri_screen.c index cb864d45d5..bb12baf281 100644 --- a/src/gallium/state_trackers/dri/dri_screen.c +++ b/src/gallium/state_trackers/dri/dri_screen.c @@ -202,7 +202,7 @@ dri_fill_in_modes(struct dri_screen *screen,   * Get information about previous buffer swaps.   */  static int -dri_get_swap_info(__DRIdrawablePrivate * dPriv, __DRIswapInfo * sInfo) +dri_get_swap_info(__DRIdrawable * dPriv, __DRIswapInfo * sInfo)  {     if (dPriv == NULL || dPriv->driverPrivate == NULL || sInfo == NULL)        return -1; @@ -220,7 +220,7 @@ dri_copy_version(struct dri1_api_version *dst,  }  static const __DRIconfig ** -dri_init_screen(__DRIscreenPrivate * sPriv) +dri_init_screen(__DRIscreen * sPriv)  {     struct dri_screen *screen;     const __DRIconfig **configs; @@ -285,7 +285,7 @@ dri_init_screen(__DRIscreenPrivate * sPriv)   * Returns the __GLcontextModes supported by this driver.   */  static const __DRIconfig ** -dri_init_screen2(__DRIscreenPrivate * sPriv) +dri_init_screen2(__DRIscreen * sPriv)  {     struct dri_screen *screen;     struct drm_create_screen_arg arg; @@ -319,7 +319,7 @@ dri_init_screen2(__DRIscreenPrivate * sPriv)  }  static void -dri_destroy_screen(__DRIscreenPrivate * sPriv) +dri_destroy_screen(__DRIscreen * sPriv)  {     struct dri_screen *screen = dri_screen(sPriv); @@ -346,4 +346,12 @@ PUBLIC const struct __DriverAPIRec driDriverAPI = {     .InitScreen2 = dri_init_screen2,  }; +/* This is the table of extensions that the loader will dlsym() for. */ +PUBLIC const __DRIextension *__driDriverExtensions[] = { +    &driCoreExtension.base, +    &driLegacyExtension.base, +    &driDRI2Extension.base, +    NULL +}; +  /* vim: set sw=3 ts=8 sts=3 expandtab: */ diff --git a/src/gallium/state_trackers/dri/dri_screen.h b/src/gallium/state_trackers/dri/dri_screen.h index f6c56d0f0c..03387a0e81 100644 --- a/src/gallium/state_trackers/dri/dri_screen.h +++ b/src/gallium/state_trackers/dri/dri_screen.h @@ -42,7 +42,7 @@  struct dri_screen  {     /* dri */ -   __DRIscreenPrivate *sPriv; +   __DRIscreen *sPriv;     /**      * Configuration cache with default values for all contexts @@ -63,7 +63,7 @@ struct dri_screen  /** cast wrapper */  static INLINE struct dri_screen * -dri_screen(__DRIscreenPrivate * sPriv) +dri_screen(__DRIscreen * sPriv)  {     return (struct dri_screen *)sPriv->private;  } diff --git a/src/glx/mini/miniglx.c b/src/glx/mini/miniglx.c index 874b88bc49..e9a10b4ac7 100644 --- a/src/glx/mini/miniglx.c +++ b/src/glx/mini/miniglx.c @@ -2278,14 +2278,14 @@ __glXCreateContextWithConfig(__DRInativeDisplay *dpy, int screen,          int fbconfigID, void *contextID, drm_context_t *hHWContext)  {      __DRIscreen *pDRIScreen; -    __DRIscreenPrivate *psp; +    __DRIscreen *psp;      pDRIScreen = __glXFindDRIScreen(dpy, screen);      if ( (pDRIScreen == NULL) || (pDRIScreen->private == NULL) ) {          return GL_FALSE;      } -    psp = (__DRIscreenPrivate *) pDRIScreen->private; +    psp = (__DRIscreen *) pDRIScreen->private;      if (psp->fd) {          if (drmCreateContext(psp->fd, hHWContext)) { @@ -2310,9 +2310,9 @@ __glXGetDrawableInfo(__DRInativeDisplay *dpy, int scrn,      GLXDrawable drawable = (GLXDrawable) draw;      drm_clip_rect_t * cliprect;      Display* display = (Display*)dpy; -    __DRIscreenPrivate *psp = display->driScreen.private; -    __DRIcontextPrivate *pcp = (__DRIcontextPrivate *)CurrentContext->driContext.private; -    __DRIdrawablePrivate *pdp = pcp->driDrawablePriv; +    __DRIscreen *psp = display->driScreen.private; +    __DRIcontext *pcp = (__DRIcontext *)CurrentContext->driContext.private; +    __DRIdrawable *pdp = pcp->driDrawablePriv;      if (drawable == 0) {          return GL_FALSE;      } @@ -2357,7 +2357,7 @@ xf86DRI_CreateDrawable(__DRInativeDisplay *dpy, int screen, __DRIid drawable,  {    Display *display = (Display *)dpy; -  __DRIscreenPrivate *psp = display->driScreen.private; +  __DRIscreen *psp = display->driScreen.private;    int ret;    ret = drmCreateDrawable(psp->fd, hHWDrawable); diff --git a/src/glx/x11/dri_glx.c b/src/glx/x11/dri_glx.c index 88487b6c96..a890feeab2 100644 --- a/src/glx/x11/dri_glx.c +++ b/src/glx/x11/dri_glx.c @@ -290,7 +290,7 @@ static const __DRIextension *loader_extensions[] = {   * \param driDpy DRI display information.   * \param createNewScreen  Pointer to the client-side driver's   *               \c __driCreateNewScreen function. - * \returns A pointer to the \c __DRIscreenPrivate structure returned by + * \returns A pointer to the \c __DRIscreen structure returned by   *          the client-side driver on success, or \c NULL on failure.   */  static void * diff --git a/src/mesa/drivers/dri/common/dri_util.c b/src/mesa/drivers/dri/common/dri_util.c index 547f18a009..0e01d74265 100644 --- a/src/mesa/drivers/dri/common/dri_util.c +++ b/src/mesa/drivers/dri/common/dri_util.c @@ -97,7 +97,7 @@ driIntersectArea( drm_clip_rect_t rect1, drm_clip_rect_t rect2 )   *    * \internal   * This function calls __DriverAPIRec::UnbindContext, and then decrements - * __DRIdrawablePrivateRec::refcount which must be non-zero for a successful + * __DRIdrawableRec::refcount which must be non-zero for a successful   * return.   *    * While casting the opaque private pointers associated with the parameters @@ -167,7 +167,7 @@ static int driBindContext(__DRIcontext *pcp,  			  __DRIdrawable *pdp,  			  __DRIdrawable *prp)  { -    __DRIscreenPrivate *psp = NULL; +    __DRIscreen *psp = NULL;      /* Bind the drawable to the context */ @@ -220,7 +220,7 @@ static int driBindContext(__DRIcontext *pcp,   *   * \param pdp pointer to the private drawable information to update.   *  - * This function basically updates the __DRIdrawablePrivate struct's + * This function basically updates the __DRIdrawable struct's   * cliprect information by calling \c __DRIinterfaceMethods::getDrawableInfo.   * This is usually called by the DRI_VALIDATE_DRAWABLE_INFO macro which   * compares the __DRIdrwablePrivate pStamp and lastStamp values.  If @@ -228,10 +228,10 @@ static int driBindContext(__DRIcontext *pcp,   * info.   */  void -__driUtilUpdateDrawableInfo(__DRIdrawablePrivate *pdp) +__driUtilUpdateDrawableInfo(__DRIdrawable *pdp)  { -    __DRIscreenPrivate *psp = pdp->driScreenPriv; -    __DRIcontextPrivate *pcp = pdp->driContextPriv; +    __DRIscreen *psp = pdp->driScreenPriv; +    __DRIcontext *pcp = pdp->driContextPriv;      if (!pcp   	|| ((pdp != pcp->driDrawablePriv) && (pdp != pcp->driReadablePriv))) { @@ -309,7 +309,7 @@ static void driReportDamage(__DRIdrawable *pdp,   * \param drawablePrivate opaque pointer to the per-drawable private info.   *    * \internal - * This function calls __DRIdrawablePrivate::swapBuffers. + * This function calls __DRIdrawable::swapBuffers.   *    * Is called directly from glXSwapBuffers().   */ @@ -497,7 +497,7 @@ static void dri_get_drawable(__DRIdrawable *pdp)  static void dri_put_drawable(__DRIdrawable *pdp)  { -    __DRIscreenPrivate *psp; +    __DRIscreen *psp;      if (pdp) {  	pdp->refcount--; @@ -560,7 +560,7 @@ driDestroyContext(__DRIcontext *pcp)   *          success, or \c NULL on failure.   *    * \internal - * This function allocates and fills a __DRIcontextPrivateRec structure.  It + * This function allocates and fills a __DRIcontextRec structure.  It   * performs some device independent initialization and passes all the   * relevent information to __DriverAPIRec::CreateContext to create the   * context. @@ -841,7 +841,7 @@ const __DRIlegacyExtension driLegacyExtension = {      driCreateNewContext,  }; -/** Legacy DRI interface */ +/** DRI2 interface */  const __DRIdri2Extension driDRI2Extension = {      { __DRI_DRI2, __DRI_DRI2_VERSION },      dri2CreateNewScreen, @@ -849,14 +849,6 @@ const __DRIdri2Extension driDRI2Extension = {      dri2CreateNewContext,  }; -/* This is the table of extensions that the loader will dlsym() for. */ -PUBLIC const __DRIextension *__driDriverExtensions[] = { -    &driCoreExtension.base, -    &driLegacyExtension.base, -    &driDRI2Extension.base, -    NULL -}; -  static int  driFrameTracking(__DRIdrawable *drawable, GLboolean enable)  { @@ -871,7 +863,7 @@ driQueryFrameTracking(__DRIdrawable *dpriv,     __DRIswapInfo   sInfo;     int             status;     int64_t         ust; -   __DRIscreenPrivate *psp = dpriv->driScreenPriv; +   __DRIscreen *psp = dpriv->driScreenPriv;     status = dpriv->driScreenPriv->DriverAPI.GetSwapInfo( dpriv, & sInfo );     if ( status == 0 ) { @@ -921,14 +913,14 @@ const __DRIframeTrackingExtension driFrameTrackingExtension = {   *       be possible to cache the sync rate?   */  float -driCalculateSwapUsage( __DRIdrawablePrivate *dPriv, int64_t last_swap_ust, +driCalculateSwapUsage( __DRIdrawable *dPriv, int64_t last_swap_ust,  		       int64_t current_ust )  {     int32_t   n;     int32_t   d;     int       interval;     float     usage = 1.0; -   __DRIscreenPrivate *psp = dPriv->driScreenPriv; +   __DRIscreen *psp = dPriv->driScreenPriv;     if ( (*psp->systemTime->getMSCRate)(dPriv, &n, &d, dPriv->loaderPrivate) ) {        interval = (dPriv->swap_interval != 0) ? dPriv->swap_interval : 1; diff --git a/src/mesa/drivers/dri/common/dri_util.h b/src/mesa/drivers/dri/common/dri_util.h index c95a5c8299..35d8b8ff93 100644 --- a/src/mesa/drivers/dri/common/dri_util.h +++ b/src/mesa/drivers/dri/common/dri_util.h @@ -59,16 +59,12 @@  typedef struct __DRIswapInfoRec        __DRIswapInfo; -/* Typedefs to avoid rewriting the world. */ -typedef struct __DRIscreenRec	__DRIscreenPrivate; -typedef struct __DRIdrawableRec	__DRIdrawablePrivate; -typedef struct __DRIcontextRec	__DRIcontextPrivate; -  /**   * Extensions.   */  extern const __DRIlegacyExtension driLegacyExtension;  extern const __DRIcoreExtension driCoreExtension; +extern const __DRIdri2Extension driDRI2Extension;  extern const __DRIextension driReadDrawableExtension;  extern const __DRIcopySubBufferExtension driCopySubBufferExtension;  extern const __DRIswapControlExtension driSwapControlExtension; diff --git a/src/mesa/drivers/dri/common/drirenderbuffer.c b/src/mesa/drivers/dri/common/drirenderbuffer.c index 4e7e92c82b..3126ea8476 100644 --- a/src/mesa/drivers/dri/common/drirenderbuffer.c +++ b/src/mesa/drivers/dri/common/drirenderbuffer.c @@ -56,7 +56,7 @@ driDeleteRenderbuffer(struct gl_renderbuffer *rb)  driRenderbuffer *  driNewRenderbuffer(gl_format format, GLvoid *addr,                     GLint cpp, GLint offset, GLint pitch, -                   __DRIdrawablePrivate *dPriv) +                   __DRIdrawable *dPriv)  {     driRenderbuffer *drb; @@ -196,7 +196,7 @@ driFlipRenderbuffers(struct gl_framebuffer *fb, GLboolean flipped)   * gl_framebuffer object.   */  void -driUpdateFramebufferSize(GLcontext *ctx, const __DRIdrawablePrivate *dPriv) +driUpdateFramebufferSize(GLcontext *ctx, const __DRIdrawable *dPriv)  {     struct gl_framebuffer *fb = (struct gl_framebuffer *) dPriv->driverPrivate;     if (fb && (dPriv->w != fb->Width || dPriv->h != fb->Height)) { diff --git a/src/mesa/drivers/dri/common/drirenderbuffer.h b/src/mesa/drivers/dri/common/drirenderbuffer.h index 3a5cbcdaac..677511334d 100644 --- a/src/mesa/drivers/dri/common/drirenderbuffer.h +++ b/src/mesa/drivers/dri/common/drirenderbuffer.h @@ -43,10 +43,10 @@ typedef struct {     GLint flippedPitch;     GLvoid *flippedData;  /* mmap'd address of buffer memory, if used */ -   /* Pointer to corresponding __DRIdrawablePrivate.  This is used to compute +   /* Pointer to corresponding __DRIdrawable.  This is used to compute      * the window's position within the framebuffer.      */ -   __DRIdrawablePrivate *dPriv; +   __DRIdrawable *dPriv;     /* XXX this is for radeon/r200 only.  We should really create a new      * r200Renderbuffer class, derived from this class...  not a huge deal. @@ -66,14 +66,14 @@ typedef struct {  extern driRenderbuffer *  driNewRenderbuffer(gl_format format, GLvoid *addr,                     GLint cpp, GLint offset, GLint pitch, -                   __DRIdrawablePrivate *dPriv); +                   __DRIdrawable *dPriv);  extern void  driFlipRenderbuffers(struct gl_framebuffer *fb, GLboolean flipped);  extern void -driUpdateFramebufferSize(GLcontext *ctx, const __DRIdrawablePrivate *dPriv); +driUpdateFramebufferSize(GLcontext *ctx, const __DRIdrawable *dPriv);  #endif /* DRIRENDERBUFFER_H */ diff --git a/src/mesa/drivers/dri/common/vblank.c b/src/mesa/drivers/dri/common/vblank.c index 12aeaa108f..49b22a2dc7 100644 --- a/src/mesa/drivers/dri/common/vblank.c +++ b/src/mesa/drivers/dri/common/vblank.c @@ -34,12 +34,12 @@  #include "vblank.h"  #include "xmlpool.h" -static unsigned int msc_to_vblank(__DRIdrawablePrivate * dPriv, int64_t msc) +static unsigned int msc_to_vblank(__DRIdrawable * dPriv, int64_t msc)  {     return (unsigned int)(msc - dPriv->msc_base + dPriv->vblank_base);  } -static int64_t vblank_to_msc(__DRIdrawablePrivate * dPriv, unsigned int vblank) +static int64_t vblank_to_msc(__DRIdrawable * dPriv, unsigned int vblank)  {     return (int64_t)(vblank - dPriv->vblank_base + dPriv->msc_base);  } @@ -64,8 +64,8 @@ static int64_t vblank_to_msc(__DRIdrawablePrivate * dPriv, unsigned int vblank)   * \return       Zero is returned on success.  A negative errno value   *               is returned on failure.   */ -int driDrawableGetMSC32( __DRIscreenPrivate * priv, -			 __DRIdrawablePrivate * dPriv, +int driDrawableGetMSC32( __DRIscreen * priv, +			 __DRIdrawable * dPriv,  			 int64_t * count)  {     drmVBlank vbl; @@ -122,7 +122,7 @@ int driDrawableGetMSC32( __DRIscreenPrivate * priv,   * \return            Zero on success or \c GLX_BAD_CONTEXT on failure.   */ -int driWaitForMSC32( __DRIdrawablePrivate *priv, +int driWaitForMSC32( __DRIdrawable *priv,  		     int64_t target_msc, int64_t divisor, int64_t remainder,  		     int64_t * msc )  { @@ -278,7 +278,7 @@ static int do_wait( drmVBlank * vbl, GLuint * vbl_seq, int fd )   */  static unsigned -driGetDefaultVBlankInterval( const  __DRIdrawablePrivate *priv ) +driGetDefaultVBlankInterval( const  __DRIdrawable *priv )  {     if ( (priv->vblFlags & (VBLANK_FLAG_THROTTLE | VBLANK_FLAG_SYNC)) != 0 ) {        return 1; @@ -295,7 +295,7 @@ driGetDefaultVBlankInterval( const  __DRIdrawablePrivate *priv )   * direct rendering context.   */ -void driDrawableInitVBlank( __DRIdrawablePrivate *priv ) +void driDrawableInitVBlank( __DRIdrawable *priv )  {     if ( priv->swap_interval == (unsigned)-1 &&  	!( priv->vblFlags & VBLANK_FLAG_NO_IRQ ) ) { @@ -320,7 +320,7 @@ void driDrawableInitVBlank( __DRIdrawablePrivate *priv )   */  unsigned -driGetVBlankInterval( const  __DRIdrawablePrivate *priv ) +driGetVBlankInterval( const  __DRIdrawable *priv )  {     if ( (priv->vblFlags & VBLANK_FLAG_INTERVAL) != 0 ) {        /* this must have been initialized when the drawable was first bound @@ -340,7 +340,7 @@ driGetVBlankInterval( const  __DRIdrawablePrivate *priv )   */  void -driGetCurrentVBlank( __DRIdrawablePrivate *priv ) +driGetCurrentVBlank( __DRIdrawable *priv )  {     drmVBlank vbl; @@ -366,7 +366,7 @@ driGetCurrentVBlank( __DRIdrawablePrivate *priv )   */  int -driWaitForVBlank( __DRIdrawablePrivate *priv, GLboolean * missed_deadline ) +driWaitForVBlank( __DRIdrawable *priv, GLboolean * missed_deadline )  {     drmVBlank vbl;     unsigned   original_seq; diff --git a/src/mesa/drivers/dri/common/vblank.h b/src/mesa/drivers/dri/common/vblank.h index 8b2c761a11..29d1ad8003 100644 --- a/src/mesa/drivers/dri/common/vblank.h +++ b/src/mesa/drivers/dri/common/vblank.h @@ -44,17 +44,17 @@  #define VBLANK_FLAG_SECONDARY (1U << 8)  /* Wait for secondary vblank.  					  */ -extern int driGetMSC32( __DRIscreenPrivate * priv, int64_t * count ); -extern int driDrawableGetMSC32( __DRIscreenPrivate * priv, -				__DRIdrawablePrivate * drawablePrivate, +extern int driGetMSC32( __DRIscreen * priv, int64_t * count ); +extern int driDrawableGetMSC32( __DRIscreen * priv, +				__DRIdrawable * drawablePrivate,  				int64_t * count); -extern int driWaitForMSC32( __DRIdrawablePrivate *priv, +extern int driWaitForMSC32( __DRIdrawable *priv,      int64_t target_msc, int64_t divisor, int64_t remainder, int64_t * msc );  extern GLuint driGetDefaultVBlankFlags( const driOptionCache *optionCache ); -extern void driDrawableInitVBlank ( __DRIdrawablePrivate *priv ); -extern unsigned driGetVBlankInterval( const  __DRIdrawablePrivate *priv ); -extern void driGetCurrentVBlank( __DRIdrawablePrivate *priv ); -extern int driWaitForVBlank( __DRIdrawablePrivate *priv, +extern void driDrawableInitVBlank ( __DRIdrawable *priv ); +extern unsigned driGetVBlankInterval( const  __DRIdrawable *priv ); +extern void driGetCurrentVBlank( __DRIdrawable *priv ); +extern int driWaitForVBlank( __DRIdrawable *priv,  			     GLboolean * missed_deadline );  #undef usleep diff --git a/src/mesa/drivers/dri/fb/fb_dri.c b/src/mesa/drivers/dri/fb/fb_dri.c index fd869b2fe7..f37241dd69 100644 --- a/src/mesa/drivers/dri/fb/fb_dri.c +++ b/src/mesa/drivers/dri/fb/fb_dri.c @@ -64,9 +64,9 @@ typedef struct {     GLcontext *glCtx;		/* Mesa context */     struct { -      __DRIcontextPrivate *context;	 -      __DRIscreenPrivate *screen;	 -      __DRIdrawablePrivate *drawable; /* drawable bound to this ctx */ +      __DRIcontext *context;	 +      __DRIscreen *screen;	 +      __DRIdrawable *drawable; /* drawable bound to this ctx */     } dri;  } fbContext, *fbContextPtr; @@ -313,14 +313,14 @@ fbSetSpanFunctions(driRenderbuffer *drb, const GLvisual *vis)  /* Initialize the driver specific screen private data.   */  static GLboolean -fbInitDriver( __DRIscreenPrivate *sPriv ) +fbInitDriver( __DRIscreen *sPriv )  {     sPriv->private = NULL;     return GL_TRUE;  }  static void -fbDestroyScreen( __DRIscreenPrivate *sPriv ) +fbDestroyScreen( __DRIscreen *sPriv )  {  } @@ -329,7 +329,7 @@ fbDestroyScreen( __DRIscreenPrivate *sPriv )   */  static GLboolean  fbCreateContext( const __GLcontextModes *glVisual, -		 __DRIcontextPrivate *driContextPriv, +		 __DRIcontext *driContextPriv,  		 void *sharedContextPrivate)  {     fbContextPtr fbmesa; @@ -384,7 +384,7 @@ fbCreateContext( const __GLcontextModes *glVisual,  static void -fbDestroyContext( __DRIcontextPrivate *driContextPriv ) +fbDestroyContext( __DRIcontext *driContextPriv )  {     GET_CURRENT_CONTEXT(ctx);     fbContextPtr fbmesa = (fbContextPtr) driContextPriv->driverPrivate; @@ -415,8 +415,8 @@ fbDestroyContext( __DRIcontextPrivate *driContextPriv )   * data.   */  static GLboolean -fbCreateBuffer( __DRIscreenPrivate *driScrnPriv, -		__DRIdrawablePrivate *driDrawPriv, +fbCreateBuffer( __DRIscreen *driScrnPriv, +		__DRIdrawable *driDrawPriv,  		const __GLcontextModes *mesaVis,  		GLboolean isPixmap )  { @@ -478,7 +478,7 @@ fbCreateBuffer( __DRIscreenPrivate *driScrnPriv,  static void -fbDestroyBuffer(__DRIdrawablePrivate *driDrawPriv) +fbDestroyBuffer(__DRIdrawable *driDrawPriv)  {     _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL);  } @@ -488,7 +488,7 @@ fbDestroyBuffer(__DRIdrawablePrivate *driDrawPriv)  /* If the backbuffer is on a videocard, this is extraordinarily slow!   */  static void -fbSwapBuffers( __DRIdrawablePrivate *dPriv ) +fbSwapBuffers( __DRIdrawable *dPriv )  {     struct gl_framebuffer *mesa_framebuffer = (struct gl_framebuffer *)dPriv->driverPrivate;     struct gl_renderbuffer * front_renderbuffer = mesa_framebuffer->Attachment[BUFFER_FRONT_LEFT].Renderbuffer; @@ -532,9 +532,9 @@ fbSwapBuffers( __DRIdrawablePrivate *dPriv )   * buffer `b'.   */  static GLboolean -fbMakeCurrent( __DRIcontextPrivate *driContextPriv, -	       __DRIdrawablePrivate *driDrawPriv, -	       __DRIdrawablePrivate *driReadPriv ) +fbMakeCurrent( __DRIcontext *driContextPriv, +	       __DRIdrawable *driDrawPriv, +	       __DRIdrawable *driReadPriv )  {     if ( driContextPriv ) {        fbContextPtr newFbCtx =  @@ -556,7 +556,7 @@ fbMakeCurrent( __DRIcontextPrivate *driContextPriv,  /* Force the context `c' to be unbound from its buffer.   */  static GLboolean -fbUnbindContext( __DRIcontextPrivate *driContextPriv ) +fbUnbindContext( __DRIcontext *driContextPriv )  {     return GL_TRUE;  } @@ -657,7 +657,7 @@ struct DRIDriverRec __driDriver = {  };  static __GLcontextModes * -fbFillInModes( __DRIscreenPrivate *psp, +fbFillInModes( __DRIscreen *psp,  	       unsigned pixel_bits, unsigned depth_bits,  	       unsigned stencil_bits, GLboolean have_back_buffer )  { @@ -745,7 +745,7 @@ fbFillInModes( __DRIscreenPrivate *psp,   * with the \c __GLcontextModes that the driver can support for windows or   * pbuffers.   *  - * \return A pointer to a \c __DRIscreenPrivate on success, or \c NULL on  + * \return A pointer to a \c __DRIscreen on success, or \c NULL on    *         failure.   */  PUBLIC @@ -759,7 +759,7 @@ void * __driCreateNewScreen( __DRInativeDisplay *dpy, int scrn, __DRIscreen *psc                                     int internal_api_version,                                     __GLcontextModes ** driver_modes )  { -   __DRIscreenPrivate *psp; +   __DRIscreen *psp;     static const __DRIversion ddx_expected = { 4, 0, 0 };     static const __DRIversion dri_expected = { 4, 0, 0 };     static const __DRIversion drm_expected = { 1, 5, 0 }; @@ -785,3 +785,10 @@ void * __driCreateNewScreen( __DRInativeDisplay *dpy, int scrn, __DRIscreen *psc            return (void *) psp;  } + +/* This is the table of extensions that the loader will dlsym() for. */ +PUBLIC const __DRIextension *__driDriverExtensions[] = { +    &driCoreExtension.base, +    &driLegacyExtension.base, +    NULL +}; diff --git a/src/mesa/drivers/dri/fb/fb_egl.c b/src/mesa/drivers/dri/fb/fb_egl.c index eb7adf8224..02e44bb8ee 100644 --- a/src/mesa/drivers/dri/fb/fb_egl.c +++ b/src/mesa/drivers/dri/fb/fb_egl.c @@ -84,9 +84,9 @@ typedef struct fb_context     _EGLContext Base;  /* base class/object */     GLcontext *glCtx;     struct { -      __DRIcontextPrivate *context;	 -      __DRIscreenPrivate *screen;	 -      __DRIdrawablePrivate *drawable; /* drawable bound to this ctx */ +      __DRIcontext *context;	 +      __DRIscreen *screen;	 +      __DRIdrawable *drawable; /* drawable bound to this ctx */     } dri;  } fbContext, *fbContextPtr; diff --git a/src/mesa/drivers/dri/ffb/ffb_bitmap.c b/src/mesa/drivers/dri/ffb/ffb_bitmap.c index f89c0412df..611afddfaf 100644 --- a/src/mesa/drivers/dri/ffb/ffb_bitmap.c +++ b/src/mesa/drivers/dri/ffb/ffb_bitmap.c @@ -46,7 +46,7 @@ ffb_bitmap(GLcontext *ctx, GLint px, GLint py,  {  	ffbContextPtr fmesa = FFB_CONTEXT(ctx);  	ffb_fbcPtr ffb = fmesa->regs; -	__DRIdrawablePrivate *dPriv = fmesa->driDrawable; +	__DRIdrawable *dPriv = fmesa->driDrawable;  	unsigned int ppc, pixel;  	GLint row, col, row_stride;  	const GLubyte *src; diff --git a/src/mesa/drivers/dri/ffb/ffb_clear.c b/src/mesa/drivers/dri/ffb/ffb_clear.c index 776fb487f8..dfe60f36f2 100644 --- a/src/mesa/drivers/dri/ffb/ffb_clear.c +++ b/src/mesa/drivers/dri/ffb/ffb_clear.c @@ -123,7 +123,7 @@ CreatorComputePageFillFixups(struct ff_fixups *fixups,  }  static void -ffb_do_clear(GLcontext *ctx, __DRIdrawablePrivate *dPriv) +ffb_do_clear(GLcontext *ctx, __DRIdrawable *dPriv)  {  	ffbContextPtr fmesa = FFB_CONTEXT(ctx);  	FFBDRIPtr gDRIPriv = (FFBDRIPtr) fmesa->driScreen->pDevPriv; @@ -252,7 +252,7 @@ ffb_do_clear(GLcontext *ctx, __DRIdrawablePrivate *dPriv)  void ffbDDClear(GLcontext *ctx, GLbitfield mask)  {  	ffbContextPtr fmesa = FFB_CONTEXT(ctx); -	__DRIdrawablePrivate *dPriv = fmesa->driDrawable; +	__DRIdrawable *dPriv = fmesa->driDrawable;  	unsigned int stcmask = BUFFER_BIT_STENCIL;  #ifdef CLEAR_TRACE diff --git a/src/mesa/drivers/dri/ffb/ffb_context.h b/src/mesa/drivers/dri/ffb/ffb_context.h index 77f87d41c3..4d1d53ff59 100644 --- a/src/mesa/drivers/dri/ffb/ffb_context.h +++ b/src/mesa/drivers/dri/ffb/ffb_context.h @@ -273,8 +273,8 @@ do {	if ((STATE_MASK) & ~((FMESA)->state_dirty)) {	\  	unsigned int		setupnewinputs;  	unsigned int		new_gl_state; -	__DRIdrawablePrivate	*driDrawable; -	__DRIscreenPrivate	*driScreen; +	__DRIdrawable	*driDrawable; +	__DRIscreen	*driScreen;  	ffbScreenPrivate	*ffbScreen;  	ffb_dri_state_t		*ffb_sarea;  } ffbContextRec, *ffbContextPtr; diff --git a/src/mesa/drivers/dri/ffb/ffb_depth.c b/src/mesa/drivers/dri/ffb/ffb_depth.c index 71f204d21e..5d509ff696 100644 --- a/src/mesa/drivers/dri/ffb/ffb_depth.c +++ b/src/mesa/drivers/dri/ffb/ffb_depth.c @@ -49,7 +49,7 @@ static void FFBWriteDepthSpan( GLcontext *ctx,  #endif  	if (ctx->Depth.Mask) {  		ffbContextPtr fmesa = FFB_CONTEXT(ctx); -		__DRIdrawablePrivate *dPriv = fmesa->driDrawable; +		__DRIdrawable *dPriv = fmesa->driDrawable;  		GLuint *zptr;  		GLuint i; @@ -110,7 +110,7 @@ static void FFBWriteDepthPixels( GLcontext *ctx,  #endif  	if (ctx->Depth.Mask) {  		ffbContextPtr fmesa = FFB_CONTEXT(ctx); -		__DRIdrawablePrivate *dPriv = fmesa->driDrawable; +		__DRIdrawable *dPriv = fmesa->driDrawable;  		char *zbase;  		GLuint i; @@ -153,7 +153,7 @@ static void FFBReadDepthSpan( GLcontext *ctx,  {          GLuint *depth = (GLuint *) values;  	ffbContextPtr fmesa = FFB_CONTEXT(ctx); -	__DRIdrawablePrivate *dPriv = fmesa->driDrawable; +	__DRIdrawable *dPriv = fmesa->driDrawable;  	GLuint *zptr;  	GLuint i; @@ -194,7 +194,7 @@ static void FFBReadDepthPixels( GLcontext *ctx,  {          GLuint *depth = (GLuint *) values;  	ffbContextPtr fmesa = FFB_CONTEXT(ctx); -	__DRIdrawablePrivate *dPriv = fmesa->driDrawable; +	__DRIdrawable *dPriv = fmesa->driDrawable;  	char *zbase;  	GLuint i; diff --git a/src/mesa/drivers/dri/ffb/ffb_span.c b/src/mesa/drivers/dri/ffb/ffb_span.c index 0d3d604095..8ec33a11bc 100644 --- a/src/mesa/drivers/dri/ffb/ffb_span.c +++ b/src/mesa/drivers/dri/ffb/ffb_span.c @@ -45,7 +45,7 @@  		UNLOCK_HARDWARE(fmesa); \  #define LOCAL_VARS						\ -	__DRIdrawablePrivate *dPriv = fmesa->driDrawable;	\ +	__DRIdrawable *dPriv = fmesa->driDrawable;	\  	GLuint height = dPriv->h;				\          GLuint p;						\  	char *buf; 						\ diff --git a/src/mesa/drivers/dri/ffb/ffb_state.c b/src/mesa/drivers/dri/ffb/ffb_state.c index 5eb8f417ff..6f8a46d1fc 100644 --- a/src/mesa/drivers/dri/ffb/ffb_state.c +++ b/src/mesa/drivers/dri/ffb/ffb_state.c @@ -384,7 +384,7 @@ ffbDDStencilOpSeparate(GLcontext *ctx, GLenum face, GLenum fail,  static void ffbCalcViewportRegs(GLcontext *ctx)  {  	ffbContextPtr fmesa = FFB_CONTEXT(ctx); -	__DRIdrawablePrivate *dPriv = fmesa->driDrawable; +	__DRIdrawable *dPriv = fmesa->driDrawable;  	GLuint xmin, xmax, ymin, ymax, zmin, zmax;  	unsigned int vcmin, vcmax; @@ -430,7 +430,7 @@ void ffbCalcViewport(GLcontext *ctx)  	ffbContextPtr fmesa = FFB_CONTEXT(ctx);  	const GLfloat *v = ctx->Viewport._WindowMap.m;  	GLfloat *m = fmesa->hw_viewport; -	__DRIdrawablePrivate *dPriv = fmesa->driDrawable; +	__DRIdrawable *dPriv = fmesa->driDrawable;  	m[MAT_SX] =   v[MAT_SX];  	m[MAT_TX] =   v[MAT_TX] + dPriv->x + SUBPIXEL_X; @@ -762,7 +762,7 @@ static void ffbDDLineStipple(GLcontext *ctx, GLint factor, GLushort pattern)  void ffbXformAreaPattern(ffbContextPtr fmesa, const GLubyte *mask)  { -	__DRIdrawablePrivate *dPriv = fmesa->driDrawable; +	__DRIdrawable *dPriv = fmesa->driDrawable;  	int i, lines, xoff;  	lines = 0; diff --git a/src/mesa/drivers/dri/ffb/ffb_stencil.c b/src/mesa/drivers/dri/ffb/ffb_stencil.c index 921a83d274..ce8ef43c91 100644 --- a/src/mesa/drivers/dri/ffb/ffb_stencil.c +++ b/src/mesa/drivers/dri/ffb/ffb_stencil.c @@ -48,7 +48,7 @@ static void FFBWriteStencilSpan( GLcontext *ctx,  #endif  	if (ctx->Depth.Mask) {  		ffbContextPtr fmesa = FFB_CONTEXT(ctx); -		__DRIdrawablePrivate *dPriv = fmesa->driDrawable; +		__DRIdrawable *dPriv = fmesa->driDrawable;  		GLuint *zptr;  		GLuint i; @@ -93,7 +93,7 @@ static void FFBWriteStencilPixels( GLcontext *ctx,  #endif  	if (ctx->Depth.Mask) {  		ffbContextPtr fmesa = FFB_CONTEXT(ctx); -		__DRIdrawablePrivate *dPriv = fmesa->driDrawable; +		__DRIdrawable *dPriv = fmesa->driDrawable;  		char *zbase;  		GLuint i; @@ -136,7 +136,7 @@ static void FFBReadStencilSpan( GLcontext *ctx,  {          GLubyte *stencil = (GLubyte *) values;  	ffbContextPtr fmesa = FFB_CONTEXT(ctx); -	__DRIdrawablePrivate *dPriv = fmesa->driDrawable; +	__DRIdrawable *dPriv = fmesa->driDrawable;  	GLuint *zptr;  	GLuint i; @@ -176,7 +176,7 @@ static void FFBReadStencilPixels( GLcontext *ctx,  {          GLubyte *stencil = (GLubyte *) values;  	ffbContextPtr fmesa = FFB_CONTEXT(ctx); -	__DRIdrawablePrivate *dPriv = fmesa->driDrawable; +	__DRIdrawable *dPriv = fmesa->driDrawable;  	char *zbase;  	GLuint i; diff --git a/src/mesa/drivers/dri/ffb/ffb_tris.c b/src/mesa/drivers/dri/ffb/ffb_tris.c index e7dd960ba1..8bf5ae498f 100644 --- a/src/mesa/drivers/dri/ffb/ffb_tris.c +++ b/src/mesa/drivers/dri/ffb/ffb_tris.c @@ -351,7 +351,7 @@ static struct {  #define LOCAL_VARS(n)				\     ffbContextPtr fmesa = FFB_CONTEXT(ctx);	\ -   __DRIdrawablePrivate *dPriv = fmesa->driDrawable; \ +   __DRIdrawable *dPriv = fmesa->driDrawable; \     ffb_color color[n] = { { 0 } };		\     (void) color; (void) dPriv; diff --git a/src/mesa/drivers/dri/ffb/ffb_xmesa.c b/src/mesa/drivers/dri/ffb/ffb_xmesa.c index 09cc26d09e..88285f454e 100644 --- a/src/mesa/drivers/dri/ffb/ffb_xmesa.c +++ b/src/mesa/drivers/dri/ffb/ffb_xmesa.c @@ -62,7 +62,7 @@  #include "drirenderbuffer.h"  static GLboolean -ffbInitDriver(__DRIscreenPrivate *sPriv) +ffbInitDriver(__DRIscreen *sPriv)  {  	ffbScreenPrivate *ffbScreen;  	FFBDRIPtr gDRIPriv = (FFBDRIPtr) sPriv->pDevPriv; @@ -154,7 +154,7 @@ ffbInitDriver(__DRIscreenPrivate *sPriv)  static void -ffbDestroyScreen(__DRIscreenPrivate *sPriv) +ffbDestroyScreen(__DRIscreen *sPriv)  {  	ffbScreenPrivate *ffbScreen = sPriv->private;  	FFBDRIPtr gDRIPriv = (FFBDRIPtr) sPriv->pDevPriv; @@ -183,12 +183,12 @@ static const struct tnl_pipeline_stage *ffb_pipeline[] = {  /* Create and initialize the Mesa and driver specific context data */  static GLboolean  ffbCreateContext(const __GLcontextModes *mesaVis, -                 __DRIcontextPrivate *driContextPriv, +                 __DRIcontext *driContextPriv,                   void *sharedContextPrivate)  {  	ffbContextPtr fmesa;  	GLcontext *ctx, *shareCtx; -	__DRIscreenPrivate *sPriv; +	__DRIscreen *sPriv;  	ffbScreenPrivate *ffbScreen;  	char *debug;  	struct dd_function_table functions; @@ -306,7 +306,7 @@ ffbCreateContext(const __GLcontextModes *mesaVis,  }  static void -ffbDestroyContext(__DRIcontextPrivate *driContextPriv) +ffbDestroyContext(__DRIcontext *driContextPriv)  {  	ffbContextPtr fmesa = (ffbContextPtr) driContextPriv->driverPrivate; @@ -328,8 +328,8 @@ ffbDestroyContext(__DRIcontextPrivate *driContextPriv)  /* Create and initialize the Mesa and driver specific pixmap buffer data */  static GLboolean -ffbCreateBuffer(__DRIscreenPrivate *driScrnPriv, -                __DRIdrawablePrivate *driDrawPriv, +ffbCreateBuffer(__DRIscreen *driScrnPriv, +                __DRIdrawable *driDrawPriv,                  const __GLcontextModes *mesaVis,                  GLboolean isPixmap )  { @@ -392,7 +392,7 @@ ffbCreateBuffer(__DRIscreenPrivate *driScrnPriv,  static void -ffbDestroyBuffer(__DRIdrawablePrivate *driDrawPriv) +ffbDestroyBuffer(__DRIdrawable *driDrawPriv)  {     _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL);  } @@ -401,7 +401,7 @@ ffbDestroyBuffer(__DRIdrawablePrivate *driDrawPriv)  #define USE_FAST_SWAP  static void -ffbSwapBuffers( __DRIdrawablePrivate *dPriv ) +ffbSwapBuffers( __DRIdrawable *dPriv )  {  	ffbContextPtr fmesa = (ffbContextPtr) dPriv->driContextPriv->driverPrivate;  	unsigned int fbc, wid, wid_reg_val, dac_db_bit; @@ -532,9 +532,9 @@ static void ffb_init_wid(ffbContextPtr fmesa, unsigned int wid)  /* Force the context `c' to be the current context and associate with it     buffer `b' */  static GLboolean -ffbMakeCurrent(__DRIcontextPrivate *driContextPriv, -               __DRIdrawablePrivate *driDrawPriv, -               __DRIdrawablePrivate *driReadPriv) +ffbMakeCurrent(__DRIcontext *driContextPriv, +               __DRIdrawable *driDrawPriv, +               __DRIdrawable *driReadPriv)  {  	if (driContextPriv) {  		ffbContextPtr fmesa = (ffbContextPtr) driContextPriv->driverPrivate; @@ -581,15 +581,15 @@ ffbMakeCurrent(__DRIcontextPrivate *driContextPriv,  /* Force the context `c' to be unbound from its buffer */  static GLboolean -ffbUnbindContext(__DRIcontextPrivate *driContextPriv) +ffbUnbindContext(__DRIcontext *driContextPriv)  {  	return GL_TRUE;  }  void ffbXMesaUpdateState(ffbContextPtr fmesa)  { -	__DRIdrawablePrivate *dPriv = fmesa->driDrawable; -	__DRIscreenPrivate *sPriv = fmesa->driScreen; +	__DRIdrawable *dPriv = fmesa->driDrawable; +	__DRIscreen *sPriv = fmesa->driScreen;  	int stamp = dPriv->lastStamp;  	DRI_VALIDATE_DRAWABLE_INFO(sPriv, dPriv); @@ -607,7 +607,7 @@ void ffbXMesaUpdateState(ffbContextPtr fmesa)  }  static const __DRIconfig ** -ffbFillInModes( __DRIscreenPrivate *psp, +ffbFillInModes( __DRIscreen *psp,  		unsigned pixel_bits, unsigned depth_bits,  		unsigned stencil_bits, GLboolean have_back_buffer )  { @@ -722,3 +722,10 @@ const struct __DriverAPIRec driDriverAPI = {     .WaitForSBC      = NULL,     .SwapBuffersMSC  = NULL  }; + +/* This is the table of extensions that the loader will dlsym() for. */ +PUBLIC const __DRIextension *__driDriverExtensions[] = { +    &driCoreExtension.base, +    &driLegacyExtension.base, +    NULL +}; diff --git a/src/mesa/drivers/dri/ffb/ffb_xmesa.h b/src/mesa/drivers/dri/ffb/ffb_xmesa.h index 255da4c5f8..2b1740d221 100644 --- a/src/mesa/drivers/dri/ffb/ffb_xmesa.h +++ b/src/mesa/drivers/dri/ffb/ffb_xmesa.h @@ -11,7 +11,7 @@  #include "ffb_fifo.h"  typedef struct { -	__DRIscreenPrivate		*sPriv; +	__DRIscreen		*sPriv;  	ffb_fbcPtr			regs;  	ffb_dacPtr			dac;  	volatile char			*sfb8r; diff --git a/src/mesa/drivers/dri/gamma/gamma_context.c b/src/mesa/drivers/dri/gamma/gamma_context.c index b0ac299daa..bab5b69a8e 100644 --- a/src/mesa/drivers/dri/gamma/gamma_context.c +++ b/src/mesa/drivers/dri/gamma/gamma_context.c @@ -68,11 +68,11 @@ static const struct tnl_pipeline_stage *gamma_pipeline[] = {  };  GLboolean gammaCreateContext( const __GLcontextModes *glVisual, -			     __DRIcontextPrivate *driContextPriv, +			     __DRIcontext *driContextPriv,                       	     void *sharedContextPrivate)  {     GLcontext *ctx, *shareCtx; -   __DRIscreenPrivate *sPriv = driContextPriv->driScreenPriv; +   __DRIscreen *sPriv = driContextPriv->driScreenPriv;     gammaContextPtr gmesa;     gammaScreenPtr gammascrn;     GLINTSAREADRIPtr saPriv=(GLINTSAREADRIPtr)(((char*)sPriv->pSAREA)+ diff --git a/src/mesa/drivers/dri/gamma/gamma_context.h b/src/mesa/drivers/dri/gamma/gamma_context.h index a32ccb6007..c386aa3007 100644 --- a/src/mesa/drivers/dri/gamma/gamma_context.h +++ b/src/mesa/drivers/dri/gamma/gamma_context.h @@ -58,10 +58,10 @@ typedef union {  #define MAX_TEXTURE_STACK       2  extern void	  gammaDDUpdateHWState(GLcontext *ctx); -extern gammaScreenPtr	  gammaCreateScreen(__DRIscreenPrivate *sPriv); -extern void	  gammaDestroyScreen(__DRIscreenPrivate *sPriv); +extern gammaScreenPtr	  gammaCreateScreen(__DRIscreen *sPriv); +extern void	  gammaDestroyScreen(__DRIscreen *sPriv);  extern GLboolean gammaCreateContext( const __GLcontextModes *glVisual, -                                     __DRIcontextPrivate *driContextPriv, +                                     __DRIcontext *driContextPriv,                                       void *sharedContextPrivate);  #define GAMMA_UPLOAD_ALL	0xffffffff @@ -230,9 +230,9 @@ typedef void (*gamma_point_func)( gammaContextPtr,  struct gamma_context {  	GLcontext 		*glCtx;		/* Mesa context */ -	__DRIcontextPrivate	*driContext; -	__DRIscreenPrivate	*driScreen; -	__DRIdrawablePrivate	*driDrawable; +	__DRIcontext	*driContext; +	__DRIscreen	*driScreen; +	__DRIdrawable	*driDrawable;  	GLuint 			new_gl_state;  	GLuint 			new_state; diff --git a/src/mesa/drivers/dri/gamma/gamma_lock.c b/src/mesa/drivers/dri/gamma/gamma_lock.c index 8f2d01688c..cd4acef24d 100644 --- a/src/mesa/drivers/dri/gamma/gamma_lock.c +++ b/src/mesa/drivers/dri/gamma/gamma_lock.c @@ -19,8 +19,8 @@ int prevLockLine = 0;   */  void gammaGetLock( gammaContextPtr gmesa, GLuint flags )  { -   __DRIdrawablePrivate *dPriv = gmesa->driDrawable; -   __DRIscreenPrivate *sPriv = gmesa->driScreen; +   __DRIdrawable *dPriv = gmesa->driDrawable; +   __DRIscreen *sPriv = gmesa->driScreen;     drmGetLock( gmesa->driFd, gmesa->hHWContext, flags ); diff --git a/src/mesa/drivers/dri/gamma/gamma_macros.h b/src/mesa/drivers/dri/gamma/gamma_macros.h index c15483b770..d962dcdb56 100644 --- a/src/mesa/drivers/dri/gamma/gamma_macros.h +++ b/src/mesa/drivers/dri/gamma/gamma_macros.h @@ -245,8 +245,8 @@ do {                                                                       \  #ifdef DO_VALIDATE  #define VALIDATE_DRAWABLE_INFO_NO_LOCK(gcp)                                \  do {                                                                       \ -    /*__DRIscreenPrivate *psp = gcp->driScreen;*/                          \ -    __DRIdrawablePrivate *pdp = gcp->driDrawable;                          \ +    /*__DRIscreen *psp = gcp->driScreen;*/                          \ +    __DRIdrawable *pdp = gcp->driDrawable;                          \                                                                             \      if (*(pdp->pStamp) != pdp->lastStamp) {                                \  	int old_index = pdp->index;                                        \ @@ -301,7 +301,7 @@ do {                                                                       \  #define VALIDATE_DRAWABLE_INFO(gcp)                                    \  do {                                                                       \ -    __DRIscreenPrivate *psp = gcp->driScreen;                          \ +    __DRIscreen *psp = gcp->driScreen;                          \  if (gcp->driDrawable) { \      DRM_SPINLOCK(&psp->pSAREA->drawable_lock, psp->drawLockID);            \      VALIDATE_DRAWABLE_INFO_NO_LOCK(gcp);                               \ diff --git a/src/mesa/drivers/dri/gamma/gamma_screen.c b/src/mesa/drivers/dri/gamma/gamma_screen.c index f899ebec96..f72a4a5696 100644 --- a/src/mesa/drivers/dri/gamma/gamma_screen.c +++ b/src/mesa/drivers/dri/gamma/gamma_screen.c @@ -29,7 +29,7 @@  #include "main/imports.h" -gammaScreenPtr gammaCreateScreen( __DRIscreenPrivate *sPriv ) +gammaScreenPtr gammaCreateScreen( __DRIscreen *sPriv )  {     gammaScreenPtr gammaScreen;     GLINTDRIPtr gDRIPriv = (GLINTDRIPtr)sPriv->pDevPriv; @@ -129,7 +129,7 @@ gammaScreenPtr gammaCreateScreen( __DRIscreenPrivate *sPriv )  /* Destroy the device specific screen private data struct.   */ -void gammaDestroyScreen( __DRIscreenPrivate *sPriv ) +void gammaDestroyScreen( __DRIscreen *sPriv )  {      gammaScreenPtr gammaScreen = (gammaScreenPtr)sPriv->private; diff --git a/src/mesa/drivers/dri/gamma/gamma_screen.h b/src/mesa/drivers/dri/gamma/gamma_screen.h index 7f0ed6f80e..c716ea89c2 100644 --- a/src/mesa/drivers/dri/gamma/gamma_screen.h +++ b/src/mesa/drivers/dri/gamma/gamma_screen.h @@ -11,7 +11,7 @@ typedef struct {      drmBufMapPtr  bufs;              /* Map of DMA buffers */ -    __DRIscreenPrivate *driScreen; /* Back pointer to DRI screen */ +    __DRIscreen *driScreen; /* Back pointer to DRI screen */      int		cpp;      int		frontPitch; diff --git a/src/mesa/drivers/dri/gamma/gamma_span.c b/src/mesa/drivers/dri/gamma/gamma_span.c index cdaaac3f3a..3f0b81800c 100644 --- a/src/mesa/drivers/dri/gamma/gamma_span.c +++ b/src/mesa/drivers/dri/gamma/gamma_span.c @@ -10,8 +10,8 @@  #define LOCAL_VARS							\     gammaContextPtr gmesa = GAMMA_CONTEXT(ctx);				\     gammaScreenPtr gammascrn = gmesa->gammaScreen;			\ -   __DRIscreenPrivate *sPriv = gmesa->driScreen;			\ -   __DRIdrawablePrivate *dPriv = gmesa->driDrawable;			\ +   __DRIscreen *sPriv = gmesa->driScreen;			\ +   __DRIdrawable *dPriv = gmesa->driDrawable;			\     GLuint pitch = sPriv->fbWidth * gammascrn->cpp;		\     GLuint height = dPriv->h;						\     char *buf = (char *)(sPriv->pFB +					\ @@ -24,8 +24,8 @@  /* FIXME! Depth/Stencil read/writes don't work ! */  #define LOCAL_DEPTH_VARS				\     gammaScreenPtr gammascrn = gmesa->gammaScreen;	\ -   __DRIdrawablePrivate *dPriv = gmesa->driDrawable;	\ -   __DRIscreenPrivate *sPriv = gmesa->driScreen;	\ +   __DRIdrawable *dPriv = gmesa->driDrawable;	\ +   __DRIscreen *sPriv = gmesa->driScreen;	\     GLuint pitch = gammascrn->depthPitch;		\     GLuint height = dPriv->h;				\     char *buf = (char *)(sPriv->pFB +			\ diff --git a/src/mesa/drivers/dri/gamma/gamma_state.c b/src/mesa/drivers/dri/gamma/gamma_state.c index bdd1c86ab7..47df37466d 100644 --- a/src/mesa/drivers/dri/gamma/gamma_state.c +++ b/src/mesa/drivers/dri/gamma/gamma_state.c @@ -1070,7 +1070,7 @@ static void gammaDDReadBuffer( GLcontext *ctx, GLenum mode )  void gammaUpdateWindow( GLcontext *ctx )  {     gammaContextPtr gmesa = GAMMA_CONTEXT(ctx); -   __DRIdrawablePrivate *dPriv = gmesa->driDrawable; +   __DRIdrawable *dPriv = gmesa->driDrawable;     GLfloat xoffset = (GLfloat)dPriv->x;     GLfloat yoffset = gmesa->driScreen->fbHeight - (GLfloat)dPriv->y - dPriv->h;     const GLfloat *v = ctx->Viewport._WindowMap.m; @@ -1109,7 +1109,7 @@ static void gammaDDDepthRange( GLcontext *ctx, GLclampd nearval,  void gammaUpdateViewportOffset( GLcontext *ctx )  {     gammaContextPtr gmesa = GAMMA_CONTEXT(ctx); -   __DRIdrawablePrivate *dPriv = gmesa->driDrawable; +   __DRIdrawable *dPriv = gmesa->driDrawable;     GLfloat xoffset = (GLfloat)dPriv->x;     GLfloat yoffset = gmesa->driScreen->fbHeight - (GLfloat)dPriv->y - dPriv->h;     const GLfloat *v = ctx->Viewport._WindowMap.m; diff --git a/src/mesa/drivers/dri/gamma/gamma_xmesa.c b/src/mesa/drivers/dri/gamma/gamma_xmesa.c index 7b5b53589c..e49ab5bae3 100644 --- a/src/mesa/drivers/dri/gamma/gamma_xmesa.c +++ b/src/mesa/drivers/dri/gamma/gamma_xmesa.c @@ -36,7 +36,7 @@  #include "vbo/vbo.h"  static GLboolean  -gammaInitDriver(__DRIscreenPrivate *sPriv) +gammaInitDriver(__DRIscreen *sPriv)  {      sPriv->private = (void *) gammaCreateScreen( sPriv ); @@ -49,7 +49,7 @@ gammaInitDriver(__DRIscreenPrivate *sPriv)  }  static void  -gammaDestroyContext(__DRIcontextPrivate *driContextPriv) +gammaDestroyContext(__DRIcontext *driContextPriv)  {      gammaContextPtr gmesa = (gammaContextPtr)driContextPriv->driverPrivate; @@ -72,8 +72,8 @@ gammaDestroyContext(__DRIcontextPrivate *driContextPriv)  static GLboolean -gammaCreateBuffer( __DRIscreenPrivate *driScrnPriv, -                   __DRIdrawablePrivate *driDrawPriv, +gammaCreateBuffer( __DRIscreen *driScrnPriv, +                   __DRIdrawable *driDrawPriv,                     const __GLcontextModes *mesaVis,                     GLboolean isPixmap )  { @@ -94,17 +94,17 @@ gammaCreateBuffer( __DRIscreenPrivate *driScrnPriv,  static void -gammaDestroyBuffer(__DRIdrawablePrivate *driDrawPriv) +gammaDestroyBuffer(__DRIdrawable *driDrawPriv)  {     _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL);  }  static void -gammaSwapBuffers( __DRIdrawablePrivate *dPriv ) +gammaSwapBuffers( __DRIdrawable *dPriv )  {     if (dPriv->driContextPriv && dPriv->driContextPriv->driverPrivate) {      gammaContextPtr gmesa; -    __DRIscreenPrivate *driScrnPriv; +    __DRIscreen *driScrnPriv;      GLcontext *ctx;      gmesa = (gammaContextPtr) dPriv->driContextPriv->driverPrivate; @@ -127,7 +127,7 @@ gammaSwapBuffers( __DRIdrawablePrivate *dPriv )  	int i;  	int nRect = dPriv->numClipRects;  	drm_clip_rect_t *pRect = dPriv->pClipRects; -	__DRIscreenPrivate *driScrnPriv = gmesa->driScreen; +	__DRIscreen *driScrnPriv = gmesa->driScreen;     	GLINTDRIPtr gDRIPriv = (GLINTDRIPtr)driScrnPriv->pDevPriv;  	CHECK_DMA_BUFFER(gmesa, 2); @@ -193,9 +193,9 @@ gammaSwapBuffers( __DRIdrawablePrivate *dPriv )  }  static GLboolean  -gammaMakeCurrent(__DRIcontextPrivate *driContextPriv, -		 __DRIdrawablePrivate *driDrawPriv, -		 __DRIdrawablePrivate *driReadPriv) +gammaMakeCurrent(__DRIcontext *driContextPriv, +		 __DRIdrawable *driDrawPriv, +		 __DRIdrawable *driReadPriv)  {      if (driContextPriv) {  	GET_CURRENT_CONTEXT(ctx); @@ -232,7 +232,7 @@ newGammaCtx->new_state |= GAMMA_NEW_WINDOW; /* FIXME */  static GLboolean  -gammaUnbindContext( __DRIcontextPrivate *driContextPriv ) +gammaUnbindContext( __DRIcontext *driContextPriv )  {     return GL_TRUE;  } @@ -254,12 +254,19 @@ const struct __DriverAPIRec driDriverAPI = {  /*   * This is the bootstrap function for the driver.   * The __driCreateScreen name is the symbol that libGL.so fetches. - * Return:  pointer to a __DRIscreenPrivate. + * Return:  pointer to a __DRIscreen.   */  void *__driCreateScreen(Display *dpy, int scrn, __DRIscreen *psc,                          int numConfigs, __GLXvisualConfig *config)  { -   __DRIscreenPrivate *psp; +   __DRIscreen *psp;     psp = __driUtilCreateScreen(dpy, scrn, psc, numConfigs, config, &gammaAPI);     return (void *) psp;  } + +/* This is the table of extensions that the loader will dlsym() for. */ +PUBLIC const __DRIextension *__driDriverExtensions[] = { +    &driCoreExtension.base, +    &driLegacyExtension.base, +    NULL +}; diff --git a/src/mesa/drivers/dri/i810/i810context.c b/src/mesa/drivers/dri/i810/i810context.c index 7311b2e765..bd9cfe5c0f 100644 --- a/src/mesa/drivers/dri/i810/i810context.c +++ b/src/mesa/drivers/dri/i810/i810context.c @@ -170,12 +170,12 @@ static const struct dri_debug_control debug_control[] =  GLboolean  i810CreateContext( const __GLcontextModes *mesaVis, -                   __DRIcontextPrivate *driContextPriv, +                   __DRIcontext *driContextPriv,                     void *sharedContextPrivate )  {     GLcontext *ctx, *shareCtx;     i810ContextPtr imesa; -   __DRIscreenPrivate *sPriv = driContextPriv->driScreenPriv; +   __DRIscreen *sPriv = driContextPriv->driScreenPriv;     i810ScreenPrivate *i810Screen = (i810ScreenPrivate *)sPriv->private;     I810SAREAPtr saPriv = (I810SAREAPtr)        (((GLubyte *)sPriv->pSAREA) + i810Screen->sarea_priv_offset); @@ -337,7 +337,7 @@ i810CreateContext( const __GLcontextModes *mesaVis,  }  void -i810DestroyContext(__DRIcontextPrivate *driContextPriv) +i810DestroyContext(__DRIcontext *driContextPriv)  {     i810ContextPtr imesa = (i810ContextPtr) driContextPriv->driverPrivate; @@ -378,7 +378,7 @@ i810DestroyContext(__DRIcontextPrivate *driContextPriv)  void i810XMesaSetFrontClipRects( i810ContextPtr imesa )  { -   __DRIdrawablePrivate *dPriv = imesa->driDrawable; +   __DRIdrawable *dPriv = imesa->driDrawable;     imesa->numClipRects = dPriv->numClipRects;     imesa->pClipRects = dPriv->pClipRects; @@ -392,7 +392,7 @@ void i810XMesaSetFrontClipRects( i810ContextPtr imesa )  void i810XMesaSetBackClipRects( i810ContextPtr imesa )  { -   __DRIdrawablePrivate *dPriv = imesa->driDrawable; +   __DRIdrawable *dPriv = imesa->driDrawable;     if (imesa->sarea->pf_enabled == 0 && dPriv->numBackClipRects == 0)     { @@ -430,7 +430,7 @@ static void i810XMesaWindowMoved( i810ContextPtr imesa )  GLboolean -i810UnbindContext(__DRIcontextPrivate *driContextPriv) +i810UnbindContext(__DRIcontext *driContextPriv)  {     i810ContextPtr imesa = (i810ContextPtr) driContextPriv->driverPrivate;     if (imesa) { @@ -444,9 +444,9 @@ i810UnbindContext(__DRIcontextPrivate *driContextPriv)  GLboolean -i810MakeCurrent(__DRIcontextPrivate *driContextPriv, -                __DRIdrawablePrivate *driDrawPriv, -                __DRIdrawablePrivate *driReadPriv) +i810MakeCurrent(__DRIcontext *driContextPriv, +                __DRIdrawable *driDrawPriv, +                __DRIdrawable *driReadPriv)  {     if (driContextPriv) {        i810ContextPtr imesa = (i810ContextPtr) driContextPriv->driverPrivate; @@ -504,8 +504,8 @@ i810UpdatePageFlipping( i810ContextPtr imesa )  void i810GetLock( i810ContextPtr imesa, GLuint flags )  { -   __DRIdrawablePrivate *dPriv = imesa->driDrawable; -   __DRIscreenPrivate *sPriv = imesa->driScreen; +   __DRIdrawable *dPriv = imesa->driDrawable; +   __DRIscreen *sPriv = imesa->driScreen;     I810SAREAPtr sarea = imesa->sarea;     int me = imesa->hHWContext;     unsigned i; @@ -551,7 +551,7 @@ void i810GetLock( i810ContextPtr imesa, GLuint flags )  void -i810SwapBuffers( __DRIdrawablePrivate *dPriv ) +i810SwapBuffers( __DRIdrawable *dPriv )  {     if (dPriv->driContextPriv && dPriv->driContextPriv->driverPrivate) {        i810ContextPtr imesa; diff --git a/src/mesa/drivers/dri/i810/i810context.h b/src/mesa/drivers/dri/i810/i810context.h index 4b8c71d7c6..19529db020 100644 --- a/src/mesa/drivers/dri/i810/i810context.h +++ b/src/mesa/drivers/dri/i810/i810context.h @@ -170,8 +170,8 @@ struct i810_context_t {     drm_hw_lock_t *driHwLock;     int driFd; -   __DRIdrawablePrivate *driDrawable; -   __DRIscreenPrivate *driScreen; +   __DRIdrawable *driDrawable; +   __DRIscreen *driScreen;     i810ScreenPrivate *i810Screen;      I810SAREAPtr sarea;  }; diff --git a/src/mesa/drivers/dri/i810/i810ioctl.c b/src/mesa/drivers/dri/i810/i810ioctl.c index 3df9c2ac47..623d50c5cb 100644 --- a/src/mesa/drivers/dri/i810/i810ioctl.c +++ b/src/mesa/drivers/dri/i810/i810ioctl.c @@ -50,7 +50,7 @@ static drmBufPtr i810_get_buffer_ioctl( i810ContextPtr imesa )  static void i810Clear( GLcontext *ctx, GLbitfield mask )  {     i810ContextPtr imesa = I810_CONTEXT( ctx ); -   __DRIdrawablePrivate *dPriv = imesa->driDrawable; +   __DRIdrawable *dPriv = imesa->driDrawable;     const GLuint colorMask = *((GLuint *) &ctx->Color.ColorMask);     drmI810Clear clear;     unsigned int i; @@ -149,7 +149,7 @@ static void i810Clear( GLcontext *ctx, GLbitfield mask )  /*   * Copy the back buffer to the front buffer.    */ -void i810CopyBuffer( const __DRIdrawablePrivate *dPriv )  +void i810CopyBuffer( const __DRIdrawable *dPriv )   {     i810ContextPtr imesa;     drm_clip_rect_t *pbox; @@ -197,7 +197,7 @@ void i810CopyBuffer( const __DRIdrawablePrivate *dPriv )  /*   * XXX implement when full-screen extension is done.   */ -void i810PageFlip( const __DRIdrawablePrivate *dPriv )  +void i810PageFlip( const __DRIdrawable *dPriv )   {    i810ContextPtr imesa;    int tmp, ret; diff --git a/src/mesa/drivers/dri/i810/i810ioctl.h b/src/mesa/drivers/dri/i810/i810ioctl.h index dfd6e21088..926e38ce51 100644 --- a/src/mesa/drivers/dri/i810/i810ioctl.h +++ b/src/mesa/drivers/dri/i810/i810ioctl.h @@ -14,8 +14,8 @@ void i810WaitAge( i810ContextPtr imesa, int age );  void i810DmaFinish( i810ContextPtr imesa );  void i810RegetLockQuiescent( i810ContextPtr imesa );  void i810InitIoctlFuncs( struct dd_function_table *functions ); -void i810CopyBuffer( const __DRIdrawablePrivate *dpriv ); -void i810PageFlip( const __DRIdrawablePrivate *dpriv ); +void i810CopyBuffer( const __DRIdrawable *dpriv ); +void i810PageFlip( const __DRIdrawable *dpriv );  int i810_check_copy(int fd);  #define I810_STATECHANGE(imesa, flag)				\ diff --git a/src/mesa/drivers/dri/i810/i810screen.c b/src/mesa/drivers/dri/i810/i810screen.c index 2f6b8631ff..2a30782afd 100644 --- a/src/mesa/drivers/dri/i810/i810screen.c +++ b/src/mesa/drivers/dri/i810/i810screen.c @@ -54,7 +54,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  #include "GL/internal/dri_interface.h"  static const __DRIconfig ** -i810FillInModes( __DRIscreenPrivate *psp, +i810FillInModes( __DRIscreen *psp,  		 unsigned pixel_bits, unsigned depth_bits,  		 unsigned stencil_bits, GLboolean have_back_buffer )  { @@ -255,7 +255,7 @@ i810InitScreen(__DRIscreen *sPriv)  }  static void -i810DestroyScreen(__DRIscreenPrivate *sPriv) +i810DestroyScreen(__DRIscreen *sPriv)  {     i810ScreenPrivate *i810Screen = (i810ScreenPrivate *)sPriv->private; @@ -274,8 +274,8 @@ i810DestroyScreen(__DRIscreenPrivate *sPriv)   * Create a buffer which corresponds to the window.   */  static GLboolean -i810CreateBuffer( __DRIscreenPrivate *driScrnPriv, -                  __DRIdrawablePrivate *driDrawPriv, +i810CreateBuffer( __DRIscreen *driScrnPriv, +                  __DRIdrawable *driDrawPriv,                    const __GLcontextModes *mesaVis,                    GLboolean isPixmap )  { @@ -335,7 +335,7 @@ i810CreateBuffer( __DRIscreenPrivate *driScrnPriv,  static void -i810DestroyBuffer(__DRIdrawablePrivate *driDrawPriv) +i810DestroyBuffer(__DRIdrawable *driDrawPriv)  {     _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL);  } @@ -356,3 +356,10 @@ const struct __DriverAPIRec driDriverAPI = {     .WaitForSBC      = NULL,     .SwapBuffersMSC  = NULL  }; + +/* This is the table of extensions that the loader will dlsym() for. */ +PUBLIC const __DRIextension *__driDriverExtensions[] = { +    &driCoreExtension.base, +    &driLegacyExtension.base, +    NULL +}; diff --git a/src/mesa/drivers/dri/i810/i810screen.h b/src/mesa/drivers/dri/i810/i810screen.h index b29937665a..734e2fb002 100644 --- a/src/mesa/drivers/dri/i810/i810screen.h +++ b/src/mesa/drivers/dri/i810/i810screen.h @@ -71,7 +71,7 @@ typedef struct {     int textureSize;     int logTextureGranularity; -   __DRIscreenPrivate *driScrnPriv; +   __DRIscreen *driScrnPriv;     drmBufMapPtr  bufs;     unsigned int sarea_priv_offset;  } i810ScreenPrivate; @@ -79,21 +79,21 @@ typedef struct {  extern GLboolean  i810CreateContext( const __GLcontextModes *mesaVis, -                   __DRIcontextPrivate *driContextPriv, +                   __DRIcontext *driContextPriv,                     void *sharedContextPrivate );  extern void -i810DestroyContext(__DRIcontextPrivate *driContextPriv); +i810DestroyContext(__DRIcontext *driContextPriv);  extern GLboolean -i810UnbindContext(__DRIcontextPrivate *driContextPriv); +i810UnbindContext(__DRIcontext *driContextPriv);  extern GLboolean -i810MakeCurrent(__DRIcontextPrivate *driContextPriv, -                __DRIdrawablePrivate *driDrawPriv, -                __DRIdrawablePrivate *driReadPriv); +i810MakeCurrent(__DRIcontext *driContextPriv, +                __DRIdrawable *driDrawPriv, +                __DRIdrawable *driReadPriv);  extern void -i810SwapBuffers(__DRIdrawablePrivate *driDrawPriv); +i810SwapBuffers(__DRIdrawable *driDrawPriv);  #endif diff --git a/src/mesa/drivers/dri/i810/i810span.c b/src/mesa/drivers/dri/i810/i810span.c index 510723f445..6576f6745e 100644 --- a/src/mesa/drivers/dri/i810/i810span.c +++ b/src/mesa/drivers/dri/i810/i810span.c @@ -15,7 +15,7 @@  #define LOCAL_VARS					\     i810ContextPtr imesa = I810_CONTEXT(ctx);	        \ -   __DRIdrawablePrivate *dPriv = imesa->driDrawable;	\ +   __DRIdrawable *dPriv = imesa->driDrawable;	\     driRenderbuffer *drb = (driRenderbuffer *) rb;	\     GLuint pitch = drb->pitch;				\     GLuint height = dPriv->h;				\ @@ -27,7 +27,7 @@  #define LOCAL_DEPTH_VARS				\     i810ContextPtr imesa = I810_CONTEXT(ctx);	        \ -   __DRIdrawablePrivate *dPriv = imesa->driDrawable;	\ +   __DRIdrawable *dPriv = imesa->driDrawable;	\     driRenderbuffer *drb = (driRenderbuffer *) rb;	\     GLuint pitch = drb->pitch;				\     GLuint height = dPriv->h;				\ diff --git a/src/mesa/drivers/dri/i810/i810state.c b/src/mesa/drivers/dri/i810/i810state.c index 1e7a6cfe47..642245c61c 100644 --- a/src/mesa/drivers/dri/i810/i810state.c +++ b/src/mesa/drivers/dri/i810/i810state.c @@ -641,7 +641,7 @@ static void i810Enable(GLcontext *ctx, GLenum cap, GLboolean state)  void i810EmitDrawingRectangle( i810ContextPtr imesa )  { -   __DRIdrawablePrivate *dPriv = imesa->driDrawable; +   __DRIdrawable *dPriv = imesa->driDrawable;     i810ScreenPrivate *i810Screen = imesa->i810Screen;     int x0 = imesa->drawX;     int y0 = imesa->drawY; diff --git a/src/mesa/drivers/dri/i915/Makefile b/src/mesa/drivers/dri/i915/Makefile index 37f15aa767..cf32476f40 100644 --- a/src/mesa/drivers/dri/i915/Makefile +++ b/src/mesa/drivers/dri/i915/Makefile @@ -34,7 +34,6 @@ DRIVER_SOURCES = \  	intel_pixel_read.c \  	intel_buffers.c \  	intel_blit.c \ -	intel_swapbuffers.c \  	i915_tex_layout.c \  	i915_texstate.c \  	i915_context.c \ @@ -64,7 +63,8 @@ DRIVER_DEFINES = -I../intel -I../intel/server -DI915 \  	$(shell pkg-config libdrm --atleast-version=2.3.1 \  				&& echo "-DDRM_VBLANK_FLIP=DRM_VBLANK_FLIP") -DRI_LIB_DEPS += -ldrm_intel +INCLUDES += $(INTEL_CFLAGS) +DRI_LIB_DEPS += $(INTEL_LIBS)  include ../Makefile.template diff --git a/src/mesa/drivers/dri/i915/i830_context.c b/src/mesa/drivers/dri/i915/i830_context.c index 840946f908..4cb6305988 100644 --- a/src/mesa/drivers/dri/i915/i830_context.c +++ b/src/mesa/drivers/dri/i915/i830_context.c @@ -53,7 +53,7 @@ extern const struct tnl_pipeline_stage *intel_pipeline[];  GLboolean  i830CreateContext(const __GLcontextModes * mesaVis, -                  __DRIcontextPrivate * driContextPriv, +                  __DRIcontext * driContextPriv,                    void *sharedContextPrivate)  {     struct dd_function_table functions; diff --git a/src/mesa/drivers/dri/i915/i830_context.h b/src/mesa/drivers/dri/i915/i830_context.h index f73cbbf88b..592ae53976 100644 --- a/src/mesa/drivers/dri/i915/i830_context.h +++ b/src/mesa/drivers/dri/i915/i830_context.h @@ -178,7 +178,7 @@ i830_state_draw_region(struct intel_context *intel,   */  extern GLboolean  i830CreateContext(const __GLcontextModes * mesaVis, -                  __DRIcontextPrivate * driContextPriv, +                  __DRIcontext * driContextPriv,                    void *sharedContextPrivate);  /* i830_tex.c, i830_texstate.c diff --git a/src/mesa/drivers/dri/i915/i830_vtbl.c b/src/mesa/drivers/dri/i915/i830_vtbl.c index 1e3c8301d8..4471ca2bbb 100644 --- a/src/mesa/drivers/dri/i915/i830_vtbl.c +++ b/src/mesa/drivers/dri/i915/i830_vtbl.c @@ -298,7 +298,7 @@ i830_emit_invarient_state(struct intel_context *intel)  {     BATCH_LOCALS; -   BEGIN_BATCH(29, IGNORE_CLIPRECTS); +   BEGIN_BATCH(29);     OUT_BATCH(_3DSTATE_DFLT_DIFFUSE_CMD);     OUT_BATCH(0); @@ -366,7 +366,7 @@ i830_emit_invarient_state(struct intel_context *intel)  #define emit( intel, state, size )			\ -   intel_batchbuffer_data(intel->batch, state, size, IGNORE_CLIPRECTS ) +   intel_batchbuffer_data(intel->batch, state, size )  static GLuint  get_dirty(struct i830_hw_state *state) @@ -429,13 +429,9 @@ i830_emit_state(struct intel_context *intel)      * It might be better to talk about explicit places where      * scheduling is allowed, rather than assume that it is whenever a      * batchbuffer fills up. -    * -    * Set the space as LOOP_CLIPRECTS now, since that's what our primitives -    * will be emitted under.      */     intel_batchbuffer_require_space(intel->batch, -				   get_state_size(state) + INTEL_PRIM_EMIT_SIZE, -				   LOOP_CLIPRECTS); +				   get_state_size(state) + INTEL_PRIM_EMIT_SIZE);     count = 0;   again:     aper_count = 0; @@ -491,17 +487,14 @@ i830_emit_state(struct intel_context *intel)     }     if (dirty & I830_UPLOAD_BUFFERS) { -      GLuint count = 9;  +      GLuint count = 15;        DBG("I830_UPLOAD_BUFFERS:\n");        if (state->depth_region)            count += 3; -      if (intel->constant_cliprect) -          count += 6; - -      BEGIN_BATCH(count, IGNORE_CLIPRECTS); +      BEGIN_BATCH(count);        OUT_BATCH(state->Buffer[I830_DESTREG_CBUFADDR0]);        OUT_BATCH(state->Buffer[I830_DESTREG_CBUFADDR1]);        OUT_RELOC(state->draw_region->buffer, @@ -523,15 +516,13 @@ i830_emit_state(struct intel_context *intel)        OUT_BATCH(state->Buffer[I830_DESTREG_SR1]);        OUT_BATCH(state->Buffer[I830_DESTREG_SR2]); -      if (intel->constant_cliprect) { -	 assert(state->Buffer[I830_DESTREG_DRAWRECT0] != MI_NOOP); -	 OUT_BATCH(state->Buffer[I830_DESTREG_DRAWRECT0]); -	 OUT_BATCH(state->Buffer[I830_DESTREG_DRAWRECT1]); -	 OUT_BATCH(state->Buffer[I830_DESTREG_DRAWRECT2]); -	 OUT_BATCH(state->Buffer[I830_DESTREG_DRAWRECT3]); -	 OUT_BATCH(state->Buffer[I830_DESTREG_DRAWRECT4]); -	 OUT_BATCH(state->Buffer[I830_DESTREG_DRAWRECT5]); -      } +      assert(state->Buffer[I830_DESTREG_DRAWRECT0] != MI_NOOP); +      OUT_BATCH(state->Buffer[I830_DESTREG_DRAWRECT0]); +      OUT_BATCH(state->Buffer[I830_DESTREG_DRAWRECT1]); +      OUT_BATCH(state->Buffer[I830_DESTREG_DRAWRECT2]); +      OUT_BATCH(state->Buffer[I830_DESTREG_DRAWRECT3]); +      OUT_BATCH(state->Buffer[I830_DESTREG_DRAWRECT4]); +      OUT_BATCH(state->Buffer[I830_DESTREG_DRAWRECT5]);        ADVANCE_BATCH();     } @@ -544,7 +535,7 @@ i830_emit_state(struct intel_context *intel)        if ((dirty & I830_UPLOAD_TEX(i))) {           DBG("I830_UPLOAD_TEX(%d):\n", i); -         BEGIN_BATCH(I830_TEX_SETUP_SIZE + 1, IGNORE_CLIPRECTS); +         BEGIN_BATCH(I830_TEX_SETUP_SIZE + 1);           OUT_BATCH(state->Tex[i][I830_TEXREG_TM0LI]);           if (state->tex_buffer[i]) { @@ -673,23 +664,14 @@ i830_state_draw_region(struct intel_context *intel,     }     state->Buffer[I830_DESTREG_DV1] = value; -   if (intel->constant_cliprect) { -      state->Buffer[I830_DESTREG_DRAWRECT0] = _3DSTATE_DRAWRECT_INFO; -      state->Buffer[I830_DESTREG_DRAWRECT1] = 0; -      state->Buffer[I830_DESTREG_DRAWRECT2] = 0; /* xmin, ymin */ -      state->Buffer[I830_DESTREG_DRAWRECT3] = -	 (ctx->DrawBuffer->Width & 0xffff) | -	 (ctx->DrawBuffer->Height << 16); -      state->Buffer[I830_DESTREG_DRAWRECT4] = 0; /* xoff, yoff */ -      state->Buffer[I830_DESTREG_DRAWRECT5] = 0; -   } else { -      state->Buffer[I830_DESTREG_DRAWRECT0] = MI_NOOP; -      state->Buffer[I830_DESTREG_DRAWRECT1] = MI_NOOP; -      state->Buffer[I830_DESTREG_DRAWRECT2] = MI_NOOP; -      state->Buffer[I830_DESTREG_DRAWRECT3] = MI_NOOP; -      state->Buffer[I830_DESTREG_DRAWRECT4] = MI_NOOP; -      state->Buffer[I830_DESTREG_DRAWRECT5] = MI_NOOP; -   } +   state->Buffer[I830_DESTREG_DRAWRECT0] = _3DSTATE_DRAWRECT_INFO; +   state->Buffer[I830_DESTREG_DRAWRECT1] = 0; +   state->Buffer[I830_DESTREG_DRAWRECT2] = 0; /* xmin, ymin */ +   state->Buffer[I830_DESTREG_DRAWRECT3] = +      (ctx->DrawBuffer->Width & 0xffff) | +      (ctx->DrawBuffer->Height << 16); +   state->Buffer[I830_DESTREG_DRAWRECT4] = 0; /* xoff, yoff */ +   state->Buffer[I830_DESTREG_DRAWRECT5] = 0;     I830_STATECHANGE(i830, I830_UPLOAD_BUFFERS); diff --git a/src/mesa/drivers/dri/i915/i915_context.c b/src/mesa/drivers/dri/i915/i915_context.c index 0485be2cc1..7c7711da09 100644 --- a/src/mesa/drivers/dri/i915/i915_context.c +++ b/src/mesa/drivers/dri/i915/i915_context.c @@ -100,7 +100,7 @@ extern const struct tnl_pipeline_stage *intel_pipeline[];  GLboolean  i915CreateContext(const __GLcontextModes * mesaVis, -                  __DRIcontextPrivate * driContextPriv, +                  __DRIcontext * driContextPriv,                    void *sharedContextPrivate)  {     struct dd_function_table functions; diff --git a/src/mesa/drivers/dri/i915/i915_context.h b/src/mesa/drivers/dri/i915/i915_context.h index 25418d5f7a..f55b551139 100644 --- a/src/mesa/drivers/dri/i915/i915_context.h +++ b/src/mesa/drivers/dri/i915/i915_context.h @@ -318,7 +318,7 @@ do {									\   * i915_context.c   */  extern GLboolean i915CreateContext(const __GLcontextModes * mesaVis, -                                   __DRIcontextPrivate * driContextPriv, +                                   __DRIcontext * driContextPriv,                                     void *sharedContextPrivate); diff --git a/src/mesa/drivers/dri/i915/i915_vtbl.c b/src/mesa/drivers/dri/i915/i915_vtbl.c index 9f7635a953..266e6848c3 100644 --- a/src/mesa/drivers/dri/i915/i915_vtbl.c +++ b/src/mesa/drivers/dri/i915/i915_vtbl.c @@ -174,7 +174,7 @@ i915_emit_invarient_state(struct intel_context *intel)  {     BATCH_LOCALS; -   BEGIN_BATCH(17, IGNORE_CLIPRECTS); +   BEGIN_BATCH(17);     OUT_BATCH(_3DSTATE_AA_CMD |               AA_LINE_ECAAR_WIDTH_ENABLE | @@ -220,7 +220,7 @@ i915_emit_invarient_state(struct intel_context *intel)  #define emit(intel, state, size )		     \ -   intel_batchbuffer_data(intel->batch, state, size, IGNORE_CLIPRECTS ) +   intel_batchbuffer_data(intel->batch, state, size)  static GLuint  get_dirty(struct i915_hw_state *state) @@ -301,13 +301,9 @@ i915_emit_state(struct intel_context *intel)      * It might be better to talk about explicit places where      * scheduling is allowed, rather than assume that it is whenever a      * batchbuffer fills up. -    * -    * Set the space as LOOP_CLIPRECTS now, since that's what our primitives -    * will be emitted under.      */     intel_batchbuffer_require_space(intel->batch, -				   get_state_size(state) + INTEL_PRIM_EMIT_SIZE, -				   LOOP_CLIPRECTS); +				   get_state_size(state) + INTEL_PRIM_EMIT_SIZE);     count = 0;   again:     aper_count = 0; @@ -373,7 +369,7 @@ i915_emit_state(struct intel_context *intel)     }     if (dirty & I915_UPLOAD_BUFFERS) { -      GLuint count = 9; +      GLuint count = 15;        if (INTEL_DEBUG & DEBUG_STATE)           fprintf(stderr, "I915_UPLOAD_BUFFERS:\n"); @@ -381,10 +377,7 @@ i915_emit_state(struct intel_context *intel)        if (state->depth_region)            count += 3; -      if (intel->constant_cliprect) -          count += 6; - -      BEGIN_BATCH(count, IGNORE_CLIPRECTS); +      BEGIN_BATCH(count);        OUT_BATCH(state->Buffer[I915_DESTREG_CBUFADDR0]);        OUT_BATCH(state->Buffer[I915_DESTREG_CBUFADDR1]);        OUT_RELOC(state->draw_region->buffer, @@ -406,15 +399,13 @@ i915_emit_state(struct intel_context *intel)        OUT_BATCH(state->Buffer[I915_DESTREG_SR1]);        OUT_BATCH(state->Buffer[I915_DESTREG_SR2]); -      if (intel->constant_cliprect) { -	 assert(state->Buffer[I915_DESTREG_DRAWRECT0] != MI_NOOP); -	 OUT_BATCH(state->Buffer[I915_DESTREG_DRAWRECT0]); -	 OUT_BATCH(state->Buffer[I915_DESTREG_DRAWRECT1]); -	 OUT_BATCH(state->Buffer[I915_DESTREG_DRAWRECT2]); -	 OUT_BATCH(state->Buffer[I915_DESTREG_DRAWRECT3]); -	 OUT_BATCH(state->Buffer[I915_DESTREG_DRAWRECT4]); -	 OUT_BATCH(state->Buffer[I915_DESTREG_DRAWRECT5]); -      } +      assert(state->Buffer[I915_DESTREG_DRAWRECT0] != MI_NOOP); +      OUT_BATCH(state->Buffer[I915_DESTREG_DRAWRECT0]); +      OUT_BATCH(state->Buffer[I915_DESTREG_DRAWRECT1]); +      OUT_BATCH(state->Buffer[I915_DESTREG_DRAWRECT2]); +      OUT_BATCH(state->Buffer[I915_DESTREG_DRAWRECT3]); +      OUT_BATCH(state->Buffer[I915_DESTREG_DRAWRECT4]); +      OUT_BATCH(state->Buffer[I915_DESTREG_DRAWRECT5]);        ADVANCE_BATCH();     } @@ -441,7 +432,7 @@ i915_emit_state(struct intel_context *intel)           if (dirty & I915_UPLOAD_TEX(i))              nr++; -      BEGIN_BATCH(2 + nr * 3, IGNORE_CLIPRECTS); +      BEGIN_BATCH(2 + nr * 3);        OUT_BATCH(_3DSTATE_MAP_STATE | (3 * nr));        OUT_BATCH((dirty & I915_UPLOAD_TEX_ALL) >> I915_UPLOAD_TEX_0_SHIFT);        for (i = 0; i < I915_TEX_UNITS; i++) @@ -465,7 +456,7 @@ i915_emit_state(struct intel_context *intel)           }        ADVANCE_BATCH(); -      BEGIN_BATCH(2 + nr * 3, IGNORE_CLIPRECTS); +      BEGIN_BATCH(2 + nr * 3);        OUT_BATCH(_3DSTATE_SAMPLER_STATE | (3 * nr));        OUT_BATCH((dirty & I915_UPLOAD_TEX_ALL) >> I915_UPLOAD_TEX_0_SHIFT);        for (i = 0; i < I915_TEX_UNITS; i++) @@ -623,23 +614,14 @@ i915_state_draw_region(struct intel_context *intel,     }     state->Buffer[I915_DESTREG_DV1] = value; -   if (intel->constant_cliprect) { -      state->Buffer[I915_DESTREG_DRAWRECT0] = _3DSTATE_DRAWRECT_INFO; -      state->Buffer[I915_DESTREG_DRAWRECT1] = 0; -      state->Buffer[I915_DESTREG_DRAWRECT2] = 0; /* xmin, ymin */ -      state->Buffer[I915_DESTREG_DRAWRECT3] = -	 (ctx->DrawBuffer->Width & 0xffff) | -	 (ctx->DrawBuffer->Height << 16); -      state->Buffer[I915_DESTREG_DRAWRECT4] = 0; /* xoff, yoff */ -      state->Buffer[I915_DESTREG_DRAWRECT5] = 0; -   } else { -      state->Buffer[I915_DESTREG_DRAWRECT0] = MI_NOOP; -      state->Buffer[I915_DESTREG_DRAWRECT1] = MI_NOOP; -      state->Buffer[I915_DESTREG_DRAWRECT2] = MI_NOOP; -      state->Buffer[I915_DESTREG_DRAWRECT3] = MI_NOOP; -      state->Buffer[I915_DESTREG_DRAWRECT4] = MI_NOOP; -      state->Buffer[I915_DESTREG_DRAWRECT5] = MI_NOOP; -   } +   state->Buffer[I915_DESTREG_DRAWRECT0] = _3DSTATE_DRAWRECT_INFO; +   state->Buffer[I915_DESTREG_DRAWRECT1] = 0; +   state->Buffer[I915_DESTREG_DRAWRECT2] = 0; /* xmin, ymin */ +   state->Buffer[I915_DESTREG_DRAWRECT3] = +      (ctx->DrawBuffer->Width & 0xffff) | +      (ctx->DrawBuffer->Height << 16); +   state->Buffer[I915_DESTREG_DRAWRECT4] = 0; /* xoff, yoff */ +   state->Buffer[I915_DESTREG_DRAWRECT5] = 0;     I915_STATECHANGE(i915, I915_UPLOAD_BUFFERS);  } diff --git a/src/mesa/drivers/dri/i915/intel_tris.c b/src/mesa/drivers/dri/i915/intel_tris.c index 63c5ae96dc..e99baf8e0e 100644 --- a/src/mesa/drivers/dri/i915/intel_tris.c +++ b/src/mesa/drivers/dri/i915/intel_tris.c @@ -89,7 +89,6 @@ intel_flush_inline_primitive(struct intel_context *intel)  static void intel_start_inline(struct intel_context *intel, uint32_t prim)  { -   uint32_t batch_flags = LOOP_CLIPRECTS;     BATCH_LOCALS;     intel->vtbl.emit_state(intel); @@ -101,7 +100,7 @@ static void intel_start_inline(struct intel_context *intel, uint32_t prim)     /* Emit a slot which will be filled with the inline primitive      * command later.      */ -   BEGIN_BATCH(2, batch_flags); +   BEGIN_BATCH(2);     OUT_BATCH(0);     assert((intel->batch->dirty_state & (1<<1)) == 0); @@ -252,7 +251,7 @@ void intel_flush_prim(struct intel_context *intel)  #endif     if (intel->gen >= 3) { -      BEGIN_BATCH(5, LOOP_CLIPRECTS); +      BEGIN_BATCH(5);        OUT_BATCH(_3DSTATE_LOAD_STATE_IMMEDIATE_1 |  		I1_LOAD_S(0) | I1_LOAD_S(1) | 1);        assert((offset & !S0_VB_OFFSET_MASK) == 0); @@ -270,7 +269,7 @@ void intel_flush_prim(struct intel_context *intel)     } else {        struct i830_context *i830 = i830_context(&intel->ctx); -      BEGIN_BATCH(5, LOOP_CLIPRECTS); +      BEGIN_BATCH(5);        OUT_BATCH(_3DSTATE_LOAD_STATE_IMMEDIATE_1 |  		I1_LOAD_S(0) | I1_LOAD_S(2) | 1);        /* S0 */ diff --git a/src/mesa/drivers/dri/i965/Makefile b/src/mesa/drivers/dri/i965/Makefile index 7a55333e89..7758a792fd 100644 --- a/src/mesa/drivers/dri/i965/Makefile +++ b/src/mesa/drivers/dri/i965/Makefile @@ -24,7 +24,6 @@ DRIVER_SOURCES = \  	intel_pixel_draw.c \  	intel_pixel_read.c \  	intel_state.c \ -	intel_swapbuffers.c \  	intel_syncobj.c \  	intel_tex.c \  	intel_tex_copy.c \ @@ -96,7 +95,8 @@ ASM_SOURCES =  DRIVER_DEFINES = -I../intel -I../intel/server -DRI_LIB_DEPS += -ldrm_intel +INCLUDES += $(INTEL_CFLAGS) +DRI_LIB_DEPS += $(INTEL_LIBS)  include ../Makefile.template diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index d8af2c512b..7bb15956b5 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -77,7 +77,7 @@ static void brwInitDriverFunctions( struct dd_function_table *functions )  }  GLboolean brwCreateContext( const __GLcontextModes *mesaVis, -			    __DRIcontextPrivate *driContextPriv, +			    __DRIcontext *driContextPriv,  			    void *sharedContextPrivate)  {     struct dd_function_table functions; diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h index ea5503e2fe..0dd3087143 100644 --- a/src/mesa/drivers/dri/i965/brw_context.h +++ b/src/mesa/drivers/dri/i965/brw_context.h @@ -679,7 +679,7 @@ void brwInitVtbl( struct brw_context *brw );   * brw_context.c   */  GLboolean brwCreateContext( const __GLcontextModes *mesaVis, -			    __DRIcontextPrivate *driContextPriv, +			    __DRIcontext *driContextPriv,  			    void *sharedContextPrivate);  /*====================================================================== diff --git a/src/mesa/drivers/dri/i965/brw_curbe.c b/src/mesa/drivers/dri/i965/brw_curbe.c index aadcfbe2da..190310afbb 100644 --- a/src/mesa/drivers/dri/i965/brw_curbe.c +++ b/src/mesa/drivers/dri/i965/brw_curbe.c @@ -340,7 +340,7 @@ static void emit_constant_buffer(struct brw_context *brw)     struct intel_context *intel = &brw->intel;     GLuint sz = brw->curbe.total_size; -   BEGIN_BATCH(2, IGNORE_CLIPRECTS); +   BEGIN_BATCH(2);     if (sz == 0) {        OUT_BATCH((CMD_CONST_BUFFER << 16) | (2 - 2));        OUT_BATCH(0); diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c index 7ad860898f..df281b27d5 100644 --- a/src/mesa/drivers/dri/i965/brw_draw.c +++ b/src/mesa/drivers/dri/i965/brw_draw.c @@ -157,7 +157,7 @@ static void brw_emit_prim(struct brw_context *brw,     }     if (prim_packet.verts_per_instance) {        intel_batchbuffer_data( brw->intel.batch, &prim_packet, -			      sizeof(prim_packet), LOOP_CLIPRECTS); +			      sizeof(prim_packet));     }     if (intel->always_flush_cache) {        intel_batchbuffer_emit_mi_flush(intel->batch); @@ -339,13 +339,6 @@ static GLboolean brw_try_draw_prims( GLcontext *ctx,      * so can't access it earlier.      */ -   LOCK_HARDWARE(intel); - -   if (!intel->constant_cliprect && intel->driDrawable->numClipRects == 0) { -      UNLOCK_HARDWARE(intel); -      return GL_TRUE; -   } -     for (i = 0; i < nr_prims; i++) {        uint32_t hw_prim; @@ -356,8 +349,7 @@ static GLboolean brw_try_draw_prims( GLcontext *ctx,         * an upper bound of how much we might emit in a single         * brw_try_draw_prims().         */ -      intel_batchbuffer_require_space(intel->batch, intel->batch->size / 4, -				      LOOP_CLIPRECTS); +      intel_batchbuffer_require_space(intel->batch, intel->batch->size / 4);        hw_prim = brw_set_prim(brw, prim[i].mode); @@ -404,7 +396,6 @@ static GLboolean brw_try_draw_prims( GLcontext *ctx,     if (intel->always_flush_batch)        intel_batchbuffer_flush(intel->batch);   out: -   UNLOCK_HARDWARE(intel);     brw_state_cache_check_size(brw); diff --git a/src/mesa/drivers/dri/i965/brw_draw_upload.c b/src/mesa/drivers/dri/i965/brw_draw_upload.c index 2c9902c90f..c773b71507 100644 --- a/src/mesa/drivers/dri/i965/brw_draw_upload.c +++ b/src/mesa/drivers/dri/i965/brw_draw_upload.c @@ -494,7 +494,7 @@ static void brw_emit_vertices(struct brw_context *brw)      * a VE loads from them.      */     if (brw->vb.nr_enabled == 0) { -      BEGIN_BATCH(3, IGNORE_CLIPRECTS); +      BEGIN_BATCH(3);        OUT_BATCH((CMD_VERTEX_ELEMENT << 16) | 1);        OUT_BATCH((0 << BRW_VE0_INDEX_SHIFT) |  		BRW_VE0_VALID | @@ -514,7 +514,7 @@ static void brw_emit_vertices(struct brw_context *brw)      * are interleaved or from the same VBO.  TBD if this makes a      * performance difference.      */ -   BEGIN_BATCH(1 + brw->vb.nr_enabled * 4, IGNORE_CLIPRECTS); +   BEGIN_BATCH(1 + brw->vb.nr_enabled * 4);     OUT_BATCH((CMD_VERTEX_BUFFER << 16) |  	     ((1 + brw->vb.nr_enabled * 4) - 2)); @@ -537,7 +537,7 @@ static void brw_emit_vertices(struct brw_context *brw)     }     ADVANCE_BATCH(); -   BEGIN_BATCH(1 + brw->vb.nr_enabled * 2, IGNORE_CLIPRECTS); +   BEGIN_BATCH(1 + brw->vb.nr_enabled * 2);     OUT_BATCH((CMD_VERTEX_ELEMENT << 16) | ((1 + brw->vb.nr_enabled * 2) - 2));     for (i = 0; i < brw->vb.nr_enabled; i++) {        struct brw_vertex_element *input = brw->vb.enabled[i]; @@ -704,7 +704,7 @@ static void brw_emit_index_buffer(struct brw_context *brw)        ib.header.bits.index_format = get_index_type(index_buffer->type);        ib.header.bits.cut_index_enable = 0; -      BEGIN_BATCH(4, IGNORE_CLIPRECTS); +      BEGIN_BATCH(4);        OUT_BATCH( ib.header.dword );        OUT_RELOC(brw->ib.bo,  		I915_GEM_DOMAIN_VERTEX, 0, diff --git a/src/mesa/drivers/dri/i965/brw_misc_state.c b/src/mesa/drivers/dri/i965/brw_misc_state.c index d437b1e030..7b70f787b7 100644 --- a/src/mesa/drivers/dri/i965/brw_misc_state.c +++ b/src/mesa/drivers/dri/i965/brw_misc_state.c @@ -78,10 +78,7 @@ static void upload_drawing_rect(struct brw_context *brw)     struct intel_context *intel = &brw->intel;     GLcontext *ctx = &intel->ctx; -   if (!intel->constant_cliprect) -      return; - -   BEGIN_BATCH(4, NO_LOOP_CLIPRECTS); +   BEGIN_BATCH(4);     OUT_BATCH(_3DSTATE_DRAWRECT_INFO_I965);     OUT_BATCH(0); /* xmin, ymin */     OUT_BATCH(((ctx->DrawBuffer->Width - 1) & 0xffff) | @@ -116,7 +113,7 @@ static void upload_binding_table_pointers(struct brw_context *brw)  {     struct intel_context *intel = &brw->intel; -   BEGIN_BATCH(6, IGNORE_CLIPRECTS); +   BEGIN_BATCH(6);     OUT_BATCH(CMD_BINDING_TABLE_PTRS << 16 | (6 - 2));     if (brw->vs.bind_bo != NULL)        OUT_RELOC(brw->vs.bind_bo, I915_GEM_DOMAIN_SAMPLER, 0, 0); /* vs */ @@ -150,7 +147,7 @@ static void upload_pipelined_state_pointers(struct brw_context *brw )  {     struct intel_context *intel = &brw->intel; -   BEGIN_BATCH(7, IGNORE_CLIPRECTS); +   BEGIN_BATCH(7);     OUT_BATCH(CMD_PIPELINED_STATE_POINTERS << 16 | (7 - 2));     OUT_RELOC(brw->vs.state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);     if (brw->gs.prog_active) @@ -215,7 +212,7 @@ static void emit_depthbuffer(struct brw_context *brw)     unsigned int len = (intel->is_g4x || intel->is_ironlake) ? 6 : 5;     if (region == NULL) { -      BEGIN_BATCH(len, IGNORE_CLIPRECTS); +      BEGIN_BATCH(len);        OUT_BATCH(CMD_DEPTH_BUFFER << 16 | (len - 2));        OUT_BATCH((BRW_DEPTHFORMAT_D32_FLOAT << 18) |  		(BRW_SURFACE_NULL << 29)); @@ -247,7 +244,7 @@ static void emit_depthbuffer(struct brw_context *brw)        assert(region->tiling != I915_TILING_X); -      BEGIN_BATCH(len, IGNORE_CLIPRECTS); +      BEGIN_BATCH(len);        OUT_BATCH(CMD_DEPTH_BUFFER << 16 | (len - 2));        OUT_BATCH(((region->pitch * region->cpp) - 1) |  		(format << 18) | @@ -330,7 +327,7 @@ const struct brw_tracked_state brw_polygon_stipple = {  static void upload_polygon_stipple_offset(struct brw_context *brw)  { -   __DRIdrawablePrivate *dPriv = brw->intel.driDrawable; +   __DRIdrawable *dPriv = brw->intel.driDrawable;     struct brw_polygon_stipple_offset bpso;     memset(&bpso, 0, sizeof(bpso)); @@ -513,7 +510,7 @@ static void upload_state_base_address( struct brw_context *brw )      * batchbuffer, so we can emit relocations inline.      */     if (intel->is_ironlake) { -       BEGIN_BATCH(8, IGNORE_CLIPRECTS); +       BEGIN_BATCH(8);         OUT_BATCH(CMD_STATE_BASE_ADDRESS << 16 | (8 - 2));         OUT_BATCH(1); /* General state base address */         OUT_BATCH(1); /* Surface state base address */ @@ -524,7 +521,7 @@ static void upload_state_base_address( struct brw_context *brw )         OUT_BATCH(1); /* Instruction access upper bound */         ADVANCE_BATCH();     } else { -       BEGIN_BATCH(6, IGNORE_CLIPRECTS); +       BEGIN_BATCH(6);         OUT_BATCH(CMD_STATE_BASE_ADDRESS << 16 | (6 - 2));         OUT_BATCH(1); /* General state base address */         OUT_BATCH(1); /* Surface state base address */ diff --git a/src/mesa/drivers/dri/i965/brw_queryobj.c b/src/mesa/drivers/dri/i965/brw_queryobj.c index a195bc32b0..5399a74244 100644 --- a/src/mesa/drivers/dri/i965/brw_queryobj.c +++ b/src/mesa/drivers/dri/i965/brw_queryobj.c @@ -188,7 +188,7 @@ brw_emit_query_begin(struct brw_context *brw)     if (brw->query.active || is_empty_list(&brw->query.active_head))        return; -   BEGIN_BATCH(4, IGNORE_CLIPRECTS); +   BEGIN_BATCH(4);     OUT_BATCH(_3DSTATE_PIPE_CONTROL |  	     PIPE_CONTROL_DEPTH_STALL |  	     PIPE_CONTROL_WRITE_DEPTH_COUNT); @@ -227,7 +227,7 @@ brw_emit_query_end(struct brw_context *brw)     if (!brw->query.active)        return; -   BEGIN_BATCH(4, IGNORE_CLIPRECTS); +   BEGIN_BATCH(4);     OUT_BATCH(_3DSTATE_PIPE_CONTROL |  	     PIPE_CONTROL_DEPTH_STALL |  	     PIPE_CONTROL_WRITE_DEPTH_COUNT); diff --git a/src/mesa/drivers/dri/i965/brw_state.h b/src/mesa/drivers/dri/i965/brw_state.h index 14d5319796..9c9d145c4b 100644 --- a/src/mesa/drivers/dri/i965/brw_state.h +++ b/src/mesa/drivers/dri/i965/brw_state.h @@ -151,7 +151,7 @@ void brw_state_cache_bo_delete(struct brw_cache *cache, dri_bo *bo);  /***********************************************************************   * brw_state_batch.c   */ -#define BRW_BATCH_STRUCT(brw, s) intel_batchbuffer_data( brw->intel.batch, (s), sizeof(*(s)), IGNORE_CLIPRECTS) +#define BRW_BATCH_STRUCT(brw, s) intel_batchbuffer_data( brw->intel.batch, (s), sizeof(*(s)))  #define BRW_CACHED_BATCH_STRUCT(brw, s) brw_cached_batch_struct( brw, (s), sizeof(*(s)) )  GLboolean brw_cached_batch_struct( struct brw_context *brw, diff --git a/src/mesa/drivers/dri/i965/brw_state_batch.c b/src/mesa/drivers/dri/i965/brw_state_batch.c index 7821898cf9..ed8120d617 100644 --- a/src/mesa/drivers/dri/i965/brw_state_batch.c +++ b/src/mesa/drivers/dri/i965/brw_state_batch.c @@ -48,7 +48,7 @@ GLboolean brw_cached_batch_struct( struct brw_context *brw,     struct header *newheader = (struct header *)data;     if (brw->emit_state_always) { -      intel_batchbuffer_data(brw->intel.batch, data, sz, IGNORE_CLIPRECTS); +      intel_batchbuffer_data(brw->intel.batch, data, sz);        return GL_TRUE;     } @@ -75,7 +75,7 @@ GLboolean brw_cached_batch_struct( struct brw_context *brw,   emit:     memcpy(item->header, newheader, sz); -   intel_batchbuffer_data(brw->intel.batch, data, sz, IGNORE_CLIPRECTS); +   intel_batchbuffer_data(brw->intel.batch, data, sz);     return GL_TRUE;  } diff --git a/src/mesa/drivers/dri/intel/intel_batchbuffer.c b/src/mesa/drivers/dri/intel/intel_batchbuffer.c index 2eae9b66d8..3a4b21a844 100644 --- a/src/mesa/drivers/dri/intel/intel_batchbuffer.c +++ b/src/mesa/drivers/dri/intel/intel_batchbuffer.c @@ -94,7 +94,6 @@ intel_batchbuffer_reset(struct intel_batchbuffer *batch)     batch->size = intel->maxBatchSize;     batch->ptr = batch->map;     batch->dirty_state = ~0; -   batch->cliprect_mode = IGNORE_CLIPRECTS;  }  struct intel_batchbuffer * @@ -129,13 +128,10 @@ intel_batchbuffer_free(struct intel_batchbuffer *batch)  /* TODO: Push this whole function into bufmgr.   */  static void -do_flush_locked(struct intel_batchbuffer *batch, -		GLuint used, GLboolean allow_unlock) +do_flush_locked(struct intel_batchbuffer *batch, GLuint used)  {     struct intel_context *intel = batch->intel;     int ret = 0; -   unsigned int num_cliprects = 0; -   struct drm_clip_rect *cliprects = NULL;     int x_off = 0, y_off = 0;     if (batch->buffer) @@ -146,31 +142,7 @@ do_flush_locked(struct intel_batchbuffer *batch,     batch->map = NULL;     batch->ptr = NULL; - -   if (batch->cliprect_mode == LOOP_CLIPRECTS) { -      intel_get_cliprects(intel, &cliprects, &num_cliprects, &x_off, &y_off); -   } -   /* Dispatch the batchbuffer, if it has some effect (nonzero cliprects). -    * Can't short-circuit like this once we have hardware contexts, but we -    * should always be in DRI2 mode by then anyway. -    */ -   if ((batch->cliprect_mode != LOOP_CLIPRECTS || -	num_cliprects != 0) && !intel->no_hw) { -      dri_bo_exec(batch->buf, used, cliprects, num_cliprects, -		  (x_off & 0xffff) | (y_off << 16)); -   } - -   if (batch->cliprect_mode == LOOP_CLIPRECTS && num_cliprects == 0) { -      if (allow_unlock) { -	 /* If we are not doing any actual user-visible rendering, -	  * do a sched_yield to keep the app from pegging the cpu while -	  * achieving nothing. -	  */ -         UNLOCK_HARDWARE(intel); -         sched_yield(); -         LOCK_HARDWARE(intel); -      } -   } +   dri_bo_exec(batch->buf, used, NULL, 0, (x_off & 0xffff) | (y_off << 16));     if (INTEL_DEBUG & DEBUG_BATCH) {        dri_bo_map(batch->buf, GL_FALSE); @@ -183,7 +155,6 @@ do_flush_locked(struct intel_batchbuffer *batch,     }     if (ret != 0) { -      UNLOCK_HARDWARE(intel);        exit(1);     }     intel->vtbl.new_batch(intel); @@ -201,10 +172,8 @@ _intel_batchbuffer_flush(struct intel_batchbuffer *batch, const char *file,        drm_intel_bo_reference(intel->first_post_swapbuffers_batch);     } -   if (used == 0) { -      batch->cliprect_mode = IGNORE_CLIPRECTS; +   if (used == 0)        return; -   }     if (INTEL_DEBUG & DEBUG_BATCH)        fprintf(stderr, "%s:%d: Batchbuffer flush with %db used\n", file, line, @@ -252,9 +221,7 @@ _intel_batchbuffer_flush(struct intel_batchbuffer *batch, const char *file,     /* TODO: Just pass the relocation list and dma buffer up to the      * kernel.      */ -   LOCK_HARDWARE(intel); -   do_flush_locked(batch, used, GL_FALSE); -   UNLOCK_HARDWARE(intel); +   do_flush_locked(batch, used);     if (INTEL_DEBUG & DEBUG_SYNC) {        fprintf(stderr, "waiting for idle\n"); @@ -296,11 +263,10 @@ intel_batchbuffer_emit_reloc(struct intel_batchbuffer *batch,  void  intel_batchbuffer_data(struct intel_batchbuffer *batch, -                       const void *data, GLuint bytes, -		       enum cliprect_mode cliprect_mode) +                       const void *data, GLuint bytes)  {     assert((bytes & 3) == 0); -   intel_batchbuffer_require_space(batch, bytes, cliprect_mode); +   intel_batchbuffer_require_space(batch, bytes);     __memcpy(batch->ptr, data, bytes);     batch->ptr += bytes;  } @@ -317,7 +283,7 @@ intel_batchbuffer_emit_mi_flush(struct intel_batchbuffer *batch)     struct intel_context *intel = batch->intel;     if (intel->gen >= 4) { -      BEGIN_BATCH(4, IGNORE_CLIPRECTS); +      BEGIN_BATCH(4);        OUT_BATCH(_3DSTATE_PIPE_CONTROL |  		PIPE_CONTROL_INSTRUCTION_FLUSH |  		PIPE_CONTROL_WRITE_FLUSH | @@ -327,7 +293,7 @@ intel_batchbuffer_emit_mi_flush(struct intel_batchbuffer *batch)        OUT_BATCH(0); /* write data */        ADVANCE_BATCH();     } else { -      BEGIN_BATCH(1, IGNORE_CLIPRECTS); +      BEGIN_BATCH(1);        OUT_BATCH(MI_FLUSH);        ADVANCE_BATCH();     } diff --git a/src/mesa/drivers/dri/intel/intel_batchbuffer.h b/src/mesa/drivers/dri/intel/intel_batchbuffer.h index d4a94454dd..b052b724d8 100644 --- a/src/mesa/drivers/dri/intel/intel_batchbuffer.h +++ b/src/mesa/drivers/dri/intel/intel_batchbuffer.h @@ -10,35 +10,6 @@  #define BATCH_SZ 16384  #define BATCH_RESERVED 16 -enum cliprect_mode { -   /** -    * Batchbuffer contents may be looped over per cliprect, but do not -    * require it. -    */ -   IGNORE_CLIPRECTS, -   /** -    * Batchbuffer contents require looping over per cliprect at batch submit -    * time. -    * -    * This will be upgraded to NO_LOOP_CLIPRECTS when there's a single -    * constant cliprect, as in DRI2 or FBO rendering. -    */ -   LOOP_CLIPRECTS, -   /** -    * Batchbuffer contents contain drawing that should not be executed multiple -    * times. -    */ -   NO_LOOP_CLIPRECTS, -   /** -    * Batchbuffer contents contain drawing that already handles cliprects, such -    * as 2D drawing to front/back/depth that doesn't respect DRAWING_RECTANGLE. -    * -    * Equivalent behavior to NO_LOOP_CLIPRECTS, but may not persist in batch -    * outside of LOCK/UNLOCK.  This is upgraded to just NO_LOOP_CLIPRECTS when -    * there's a constant cliprect, as in DRI2 or FBO rendering. -    */ -   REFERENCES_CLIPRECTS -};  struct intel_batchbuffer  { @@ -51,8 +22,6 @@ struct intel_batchbuffer     GLubyte *map;     GLubyte *ptr; -   enum cliprect_mode cliprect_mode; -     GLuint size;     /** Tracking of BEGIN_BATCH()/OUT_BATCH()/ADVANCE_BATCH() debugging */ @@ -85,8 +54,7 @@ void intel_batchbuffer_reset(struct intel_batchbuffer *batch);   * intel_buffer_dword() calls.   */  void intel_batchbuffer_data(struct intel_batchbuffer *batch, -                            const void *data, GLuint bytes, -			    enum cliprect_mode cliprect_mode); +                            const void *data, GLuint bytes);  void intel_batchbuffer_release_space(struct intel_batchbuffer *batch,                                       GLuint bytes); @@ -121,36 +89,19 @@ intel_batchbuffer_emit_dword(struct intel_batchbuffer *batch, GLuint dword)  static INLINE void  intel_batchbuffer_require_space(struct intel_batchbuffer *batch, -                                GLuint sz, -				enum cliprect_mode cliprect_mode) +                                GLuint sz)  {     assert(sz < batch->size - 8);     if (intel_batchbuffer_space(batch) < sz)        intel_batchbuffer_flush(batch); - -   if ((cliprect_mode == LOOP_CLIPRECTS || -	cliprect_mode == REFERENCES_CLIPRECTS) && -       batch->intel->constant_cliprect) -      cliprect_mode = NO_LOOP_CLIPRECTS; - -   if (cliprect_mode != IGNORE_CLIPRECTS) { -      if (batch->cliprect_mode == IGNORE_CLIPRECTS) { -	 batch->cliprect_mode = cliprect_mode; -      } else { -	 if (batch->cliprect_mode != cliprect_mode) { -	    intel_batchbuffer_flush(batch); -	    batch->cliprect_mode = cliprect_mode; -	 } -      } -   }  }  /* Here are the crusty old macros, to be removed:   */  #define BATCH_LOCALS -#define BEGIN_BATCH(n, cliprect_mode) do {				\ -   intel_batchbuffer_require_space(intel->batch, (n)*4, cliprect_mode); \ +#define BEGIN_BATCH(n) do {				\ +   intel_batchbuffer_require_space(intel->batch, (n)*4); \     assert(intel->batch->emit.start_ptr == NULL);			\     intel->batch->emit.total = (n) * 4;					\     intel->batch->emit.start_ptr = intel->batch->ptr;			\ diff --git a/src/mesa/drivers/dri/intel/intel_blit.c b/src/mesa/drivers/dri/intel/intel_blit.c index da9beba030..55bee0084c 100644 --- a/src/mesa/drivers/dri/intel/intel_blit.c +++ b/src/mesa/drivers/dri/intel/intel_blit.c @@ -42,134 +42,6 @@  #define FILE_DEBUG_FLAG DEBUG_BLIT -/** - * Copy the back color buffer to the front color buffer.  - * Used for SwapBuffers(). - */ -void -intelCopyBuffer(const __DRIdrawablePrivate * dPriv, -                const drm_clip_rect_t * rect) -{ - -   struct intel_context *intel; - -   DBG("%s\n", __FUNCTION__); - -   assert(dPriv); - -   intel = intelScreenContext(dPriv->driScreenPriv->private); -   if (!intel) -      return; - -   /* The LOCK_HARDWARE is required for the cliprects.  Buffer offsets -    * should work regardless. -    */ -   LOCK_HARDWARE(intel); - -   if (dPriv && dPriv->numClipRects) { -      struct intel_framebuffer *intel_fb = dPriv->driverPrivate; -      struct intel_region *src, *dst; -      int nbox = dPriv->numClipRects; -      drm_clip_rect_t *pbox = dPriv->pClipRects; -      int cpp; -      int src_pitch, dst_pitch; -      unsigned short src_x, src_y; -      int BR13, CMD; -      int i; -      dri_bo *aper_array[3]; - -      src = intel_get_rb_region(&intel_fb->Base, BUFFER_BACK_LEFT); -      dst = intel_get_rb_region(&intel_fb->Base, BUFFER_FRONT_LEFT); - -      src_pitch = src->pitch * src->cpp; -      dst_pitch = dst->pitch * dst->cpp; - -      cpp = src->cpp; - -      ASSERT(intel_fb); -      ASSERT(intel_fb->Base.Name == 0);    /* Not a user-created FBO */ -      ASSERT(src); -      ASSERT(dst); -      ASSERT(src->cpp == dst->cpp); - -      if (cpp == 2) { -	 BR13 = (0xCC << 16) | BR13_565; -	 CMD = XY_SRC_COPY_BLT_CMD; -      } -      else { -	 BR13 = (0xCC << 16) | BR13_8888; -	 CMD = XY_SRC_COPY_BLT_CMD | XY_BLT_WRITE_ALPHA | XY_BLT_WRITE_RGB; -      } - -      assert(src->tiling != I915_TILING_Y); -      assert(dst->tiling != I915_TILING_Y); -#ifndef I915 -      if (src->tiling != I915_TILING_NONE) { -	 CMD |= XY_SRC_TILED; -	 src_pitch /= 4; -      } -      if (dst->tiling != I915_TILING_NONE) { -	 CMD |= XY_DST_TILED; -	 dst_pitch /= 4; -      } -#endif -      /* do space/cliprects check before going any further */ -      intel_batchbuffer_require_space(intel->batch, 8 * 4, -				      REFERENCES_CLIPRECTS); -   again: -      aper_array[0] = intel->batch->buf; -      aper_array[1] = dst->buffer; -      aper_array[2] = src->buffer; - -      if (dri_bufmgr_check_aperture_space(aper_array, 3) != 0) { -	intel_batchbuffer_flush(intel->batch); -	goto again; -      } - -      for (i = 0; i < nbox; i++, pbox++) { -	 drm_clip_rect_t box = *pbox; - -	 if (rect) { -	    if (!intel_intersect_cliprects(&box, &box, rect)) -	       continue; -	 } - -	 if (box.x1 >= box.x2 || -	     box.y1 >= box.y2) -	    continue; - -	 assert(box.x1 < box.x2); -	 assert(box.y1 < box.y2); -	 src_x = box.x1 - dPriv->x + dPriv->backX; -	 src_y = box.y1 - dPriv->y + dPriv->backY; - -	 BEGIN_BATCH(8, REFERENCES_CLIPRECTS); -	 OUT_BATCH(CMD); -	 OUT_BATCH(BR13 | dst_pitch); -	 OUT_BATCH((box.y1 << 16) | box.x1); -	 OUT_BATCH((box.y2 << 16) | box.x2); - -	 OUT_RELOC(dst->buffer, -		   I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, -		   0); -	 OUT_BATCH((src_y << 16) | src_x); -	 OUT_BATCH(src_pitch); -	 OUT_RELOC(src->buffer, -		   I915_GEM_DOMAIN_RENDER, 0, -		   0); -	 ADVANCE_BATCH(); -      } - -      /* Flush the rendering and the batch so that the results all land on the -       * screen in a timely fashion. -       */ -      intel_batchbuffer_emit_mi_flush(intel->batch); -      intel_batchbuffer_flush(intel->batch); -   } - -   UNLOCK_HARDWARE(intel); -} -  static GLuint translate_raster_op(GLenum logicop)  {     switch(logicop) { @@ -245,7 +117,6 @@ intelEmitCopyBlit(struct intel_context *intel,     } while (pass < 2);     if (pass >= 2) { -       LOCK_HARDWARE(intel);         dri_bo_map(dst_buffer, GL_TRUE);         dri_bo_map(src_buffer, GL_FALSE);         _mesa_copy_rect((GLubyte *)dst_buffer->virtual + dst_offset, @@ -259,12 +130,11 @@ intelEmitCopyBlit(struct intel_context *intel,         dri_bo_unmap(src_buffer);         dri_bo_unmap(dst_buffer); -       UNLOCK_HARDWARE(intel);         return GL_TRUE;     } -   intel_batchbuffer_require_space(intel->batch, 8 * 4, NO_LOOP_CLIPRECTS); +   intel_batchbuffer_require_space(intel->batch, 8 * 4);     DBG("%s src:buf(%p)/%d+%d %d,%d dst:buf(%p)/%d+%d %d,%d sz:%dx%d\n",         __FUNCTION__,         src_buffer, src_pitch, src_offset, src_x, src_y, @@ -309,7 +179,7 @@ intelEmitCopyBlit(struct intel_context *intel,     assert(dst_x < dst_x2);     assert(dst_y < dst_y2); -   BEGIN_BATCH(8, NO_LOOP_CLIPRECTS); +   BEGIN_BATCH(8);     OUT_BATCH(CMD);     OUT_BATCH(BR13 | (uint16_t)dst_pitch);     OUT_BATCH((dst_y << 16) | dst_x); @@ -367,8 +237,6 @@ intelClearWithBlit(GLcontext *ctx, GLbitfield mask)        skipBuffers = BUFFER_BIT_STENCIL;     } -   LOCK_HARDWARE(intel); -     intel_get_cliprects(intel, &cliprects, &num_cliprects, &x_off, &y_off);     if (num_cliprects) {        GLint cx, cy, cw, ch; @@ -525,7 +393,7 @@ intelClearWithBlit(GLcontext *ctx, GLbitfield mask)                 assert(x1 < x2);                 assert(y1 < y2); -               BEGIN_BATCH(6, REFERENCES_CLIPRECTS); +               BEGIN_BATCH(6);                 OUT_BATCH(CMD);                 OUT_BATCH(BR13);                 OUT_BATCH((y1 << 16) | x1); @@ -540,8 +408,6 @@ intelClearWithBlit(GLcontext *ctx, GLbitfield mask)           }        }     } - -   UNLOCK_HARDWARE(intel);  }  GLboolean @@ -583,8 +449,7 @@ intelEmitImmediateColorExpandBlit(struct intel_context *intel,     intel_batchbuffer_require_space( intel->batch,  				    (8 * 4) +  				    (3 * 4) + -				    dwords * 4, -				    REFERENCES_CLIPRECTS ); +				    dwords * 4 );     opcode = XY_SETUP_BLT_CMD;     if (cpp == 4) @@ -606,7 +471,7 @@ intelEmitImmediateColorExpandBlit(struct intel_context *intel,     if (dst_tiling != I915_TILING_NONE)        blit_cmd |= XY_DST_TILED; -   BEGIN_BATCH(8 + 3, REFERENCES_CLIPRECTS); +   BEGIN_BATCH(8 + 3);     OUT_BATCH(opcode);     OUT_BATCH(br13);     OUT_BATCH((0 << 16) | 0); /* clip x1, y1 */ @@ -625,8 +490,7 @@ intelEmitImmediateColorExpandBlit(struct intel_context *intel,     intel_batchbuffer_data( intel->batch,  			   src_bits, -			   dwords * 4, -			   REFERENCES_CLIPRECTS ); +			   dwords * 4 );     intel_batchbuffer_emit_mi_flush(intel->batch); diff --git a/src/mesa/drivers/dri/intel/intel_blit.h b/src/mesa/drivers/dri/intel/intel_blit.h index 240cb7cd1b..eb66fe0481 100644 --- a/src/mesa/drivers/dri/intel/intel_blit.h +++ b/src/mesa/drivers/dri/intel/intel_blit.h @@ -30,7 +30,7 @@  #include "intel_context.h" -extern void intelCopyBuffer(const __DRIdrawablePrivate * dpriv, +extern void intelCopyBuffer(const __DRIdrawable * dpriv,                              const drm_clip_rect_t * rect);  extern void intelClearWithBlit(GLcontext * ctx, GLbitfield mask); diff --git a/src/mesa/drivers/dri/intel/intel_buffers.c b/src/mesa/drivers/dri/intel/intel_buffers.c index 97d56e4e67..7c4b79f743 100644 --- a/src/mesa/drivers/dri/intel/intel_buffers.c +++ b/src/mesa/drivers/dri/intel/intel_buffers.c @@ -102,33 +102,15 @@ intel_get_cliprects(struct intel_context *intel,  		    unsigned int *num_cliprects,  		    int *x_off, int *y_off)  { -   __DRIdrawablePrivate *dPriv = intel->driDrawable; +   intel->fboRect.x1 = 0; +   intel->fboRect.y1 = 0; +   intel->fboRect.x2 = intel->ctx.DrawBuffer->Width; +   intel->fboRect.y2 = intel->ctx.DrawBuffer->Height; -   if (intel->constant_cliprect) { -      /* FBO or DRI2 rendering, which can just use the fb's size. */ -      intel->fboRect.x1 = 0; -      intel->fboRect.y1 = 0; -      intel->fboRect.x2 = intel->ctx.DrawBuffer->Width; -      intel->fboRect.y2 = intel->ctx.DrawBuffer->Height; - -      *cliprects = &intel->fboRect; -      *num_cliprects = 1; -      *x_off = 0; -      *y_off = 0; -   } else if (intel->front_cliprects || dPriv->numBackClipRects == 0) { -      /* use the front clip rects */ -      *cliprects = dPriv->pClipRects; -      *num_cliprects = dPriv->numClipRects; -      *x_off = dPriv->x; -      *y_off = dPriv->y; -   } -   else { -      /* use the back clip rects */ -      *num_cliprects = dPriv->numBackClipRects; -      *cliprects = dPriv->pBackClipRects; -      *x_off = dPriv->backX; -      *y_off = dPriv->backY; -   } +   *cliprects = &intel->fboRect; +   *num_cliprects = 1; +   *x_off = 0; +   *y_off = 0;  } @@ -202,7 +184,6 @@ intel_draw_buffer(GLcontext * ctx, struct gl_framebuffer *fb)         || (fb->_NumColorDrawBuffers == 0)) {        /* writing to 0  */        colorRegions[0] = NULL; -      intel->constant_cliprect = GL_TRUE;     }     else if (fb->_NumColorDrawBuffers > 1) {         int i; @@ -212,34 +193,23 @@ intel_draw_buffer(GLcontext * ctx, struct gl_framebuffer *fb)             irb = intel_renderbuffer(fb->_ColorDrawBuffers[i]);             colorRegions[i] = irb ? irb->region : NULL;         } -       intel->constant_cliprect = GL_TRUE;     }     else {        /* Get the intel_renderbuffer for the single colorbuffer we're drawing -       * into, and set up cliprects if it's a DRI1 window front buffer. +       * into.         */        if (fb->Name == 0) { -	 intel->constant_cliprect = intel->driScreen->dri2.enabled;  	 /* drawing to window system buffer */ -	 if (fb->_ColorDrawBufferIndexes[0] == BUFFER_FRONT_LEFT) { -	    if (!intel->constant_cliprect && !intel->front_cliprects) -	       intel_batchbuffer_flush(intel->batch); -	    intel->front_cliprects = GL_TRUE; +	 if (fb->_ColorDrawBufferIndexes[0] == BUFFER_FRONT_LEFT)  	    colorRegions[0] = intel_get_rb_region(fb, BUFFER_FRONT_LEFT); -	 } -	 else { -	    if (!intel->constant_cliprect && intel->front_cliprects) -	       intel_batchbuffer_flush(intel->batch); -	    intel->front_cliprects = GL_FALSE; +	 else  	    colorRegions[0] = intel_get_rb_region(fb, BUFFER_BACK_LEFT); -	 }        }        else {  	 /* drawing to user-created FBO */  	 struct intel_renderbuffer *irb;  	 irb = intel_renderbuffer(fb->_ColorDrawBuffers[0]);  	 colorRegions[0] = (irb && irb->region) ? irb->region : NULL; -	 intel->constant_cliprect = GL_TRUE;        }     } diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c index eccba5bd23..13a28f0419 100644 --- a/src/mesa/drivers/dri/intel/intel_context.c +++ b/src/mesa/drivers/dri/intel/intel_context.c @@ -55,10 +55,8 @@  #include "intel_decode.h"  #include "intel_bufmgr.h"  #include "intel_screen.h" -#include "intel_swapbuffers.h"  #include "drirenderbuffer.h" -#include "vblank.h"  #include "utils.h"  #include "xmlpool.h"            /* for symbolic values of enum-type options */ @@ -193,10 +191,11 @@ intel_bits_per_pixel(const struct intel_renderbuffer *rb)  void  intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable)  { -   struct intel_framebuffer *intel_fb = drawable->driverPrivate; +   struct gl_framebuffer *fb = drawable->driverPrivate;     struct intel_renderbuffer *rb;     struct intel_region *region, *depth_region;     struct intel_context *intel = context->driverPrivate; +   struct intel_renderbuffer *front_rb, *back_rb, *depth_rb, *stencil_rb;     __DRIbuffer *buffers = NULL;     __DRIscreen *screen;     int i, count; @@ -212,26 +211,25 @@ intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable)     if (screen->dri2.loader         && (screen->dri2.loader->base.version > 2)         && (screen->dri2.loader->getBuffersWithFormat != NULL)) { -      struct intel_renderbuffer *depth_rb; -      struct intel_renderbuffer *stencil_rb; + +      front_rb = intel_get_renderbuffer(fb, BUFFER_FRONT_LEFT); +      back_rb = intel_get_renderbuffer(fb, BUFFER_BACK_LEFT); +      depth_rb = intel_get_renderbuffer(fb, BUFFER_DEPTH); +      stencil_rb = intel_get_renderbuffer(fb, BUFFER_STENCIL);        i = 0;        if ((intel->is_front_buffer_rendering ||  	   intel->is_front_buffer_reading || -	   !intel_fb->color_rb[1]) -	   && intel_fb->color_rb[0]) { +	   !back_rb) && front_rb) {  	 attachments[i++] = __DRI_BUFFER_FRONT_LEFT; -	 attachments[i++] = intel_bits_per_pixel(intel_fb->color_rb[0]); +	 attachments[i++] = intel_bits_per_pixel(front_rb);        } -      if (intel_fb->color_rb[1]) { +      if (back_rb) {  	 attachments[i++] = __DRI_BUFFER_BACK_LEFT; -	 attachments[i++] = intel_bits_per_pixel(intel_fb->color_rb[1]); +	 attachments[i++] = intel_bits_per_pixel(back_rb);        } -      depth_rb = intel_get_renderbuffer(&intel_fb->Base, BUFFER_DEPTH); -      stencil_rb = intel_get_renderbuffer(&intel_fb->Base, BUFFER_STENCIL); -        if ((depth_rb != NULL) && (stencil_rb != NULL)) {  	 attachments[i++] = __DRI_BUFFER_DEPTH_STENCIL;  	 attachments[i++] = intel_bits_per_pixel(depth_rb); @@ -252,13 +250,13 @@ intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable)  						      drawable->loaderPrivate);     } else if (screen->dri2.loader) {        i = 0; -      if (intel_fb->color_rb[0]) +      if (intel_get_renderbuffer(fb, BUFFER_FRONT_LEFT))  	 attachments[i++] = __DRI_BUFFER_FRONT_LEFT; -      if (intel_fb->color_rb[1]) +      if (intel_get_renderbuffer(fb, BUFFER_BACK_LEFT))  	 attachments[i++] = __DRI_BUFFER_BACK_LEFT; -      if (intel_get_renderbuffer(&intel_fb->Base, BUFFER_DEPTH)) +      if (intel_get_renderbuffer(fb, BUFFER_DEPTH))  	 attachments[i++] = __DRI_BUFFER_DEPTH; -      if (intel_get_renderbuffer(&intel_fb->Base, BUFFER_STENCIL)) +      if (intel_get_renderbuffer(fb, BUFFER_STENCIL))  	 attachments[i++] = __DRI_BUFFER_STENCIL;        buffers = (*screen->dri2.loader->getBuffers)(drawable, @@ -291,32 +289,32 @@ intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable)     for (i = 0; i < count; i++) {         switch (buffers[i].attachment) {         case __DRI_BUFFER_FRONT_LEFT: -	   rb = intel_fb->color_rb[0]; +	   rb = intel_get_renderbuffer(fb, BUFFER_FRONT_LEFT);  	   region_name = "dri2 front buffer";  	   break;         case __DRI_BUFFER_FAKE_FRONT_LEFT: -	   rb = intel_fb->color_rb[0]; +	   rb = intel_get_renderbuffer(fb, BUFFER_FRONT_LEFT);  	   region_name = "dri2 fake front buffer";  	   break;         case __DRI_BUFFER_BACK_LEFT: -	   rb = intel_fb->color_rb[1]; +	   rb = intel_get_renderbuffer(fb, BUFFER_BACK_LEFT);  	   region_name = "dri2 back buffer";  	   break;         case __DRI_BUFFER_DEPTH: -	   rb = intel_get_renderbuffer(&intel_fb->Base, BUFFER_DEPTH); +	   rb = intel_get_renderbuffer(fb, BUFFER_DEPTH);  	   region_name = "dri2 depth buffer";  	   break;         case __DRI_BUFFER_DEPTH_STENCIL: -	   rb = intel_get_renderbuffer(&intel_fb->Base, BUFFER_DEPTH); +	   rb = intel_get_renderbuffer(fb, BUFFER_DEPTH);  	   region_name = "dri2 depth / stencil buffer";  	   break;         case __DRI_BUFFER_STENCIL: -	   rb = intel_get_renderbuffer(&intel_fb->Base, BUFFER_STENCIL); +	   rb = intel_get_renderbuffer(fb, BUFFER_STENCIL);  	   region_name = "dri2 stencil buffer";  	   break; @@ -363,7 +361,7 @@ intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable)         intel_region_release(®ion);         if (buffers[i].attachment == __DRI_BUFFER_DEPTH_STENCIL) { -	  rb = intel_get_renderbuffer(&intel_fb->Base, BUFFER_STENCIL); +	  rb = intel_get_renderbuffer(fb, BUFFER_STENCIL);  	  if (rb != NULL) {  	     struct intel_region *stencil_region = NULL; @@ -391,9 +389,6 @@ intel_viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h)      void (*old_viewport)(GLcontext *ctx, GLint x, GLint y,  			 GLsizei w, GLsizei h); -    if (!driContext->driScreenPriv->dri2.enabled) -	return; -      if (!intel->meta.internal_viewport_call && ctx->DrawBuffer->Name == 0) {         /* If we're rendering to the fake front buffer, make sure all the pending  	* drawing has landed on the real front buffer.  Otherwise when we @@ -412,7 +407,6 @@ intel_viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h)      old_viewport = ctx->Driver.Viewport;      ctx->Driver.Viewport = NULL;      intel->driDrawable = driContext->driDrawablePriv; -    intelWindowMoved(intel);      intel_draw_buffer(ctx, intel->ctx.DrawBuffer);      ctx->Driver.Viewport = old_viewport;  } @@ -478,13 +472,6 @@ intel_flush(GLcontext *ctx, GLboolean needs_mi_flush)     if (intel->gen < 4)        INTEL_FIREVERTICES(intel); -   /* Emit a flush so that any frontbuffer rendering that might have occurred -    * lands onscreen in a timely manner, even if the X Server doesn't trigger -    * a flush for us. -    */ -   if (!intel->driScreen->dri2.enabled && needs_mi_flush) -      intel_batchbuffer_emit_mi_flush(intel->batch); -     if (intel->batch->map != intel->batch->ptr)        intel_batchbuffer_flush(intel->batch); @@ -590,13 +577,13 @@ intelInitDriverFunctions(struct dd_function_table *functions)  GLboolean  intelInitContext(struct intel_context *intel,                   const __GLcontextModes * mesaVis, -                 __DRIcontextPrivate * driContextPriv, +                 __DRIcontext * driContextPriv,                   void *sharedContextPrivate,                   struct dd_function_table *functions)  {     GLcontext *ctx = &intel->ctx;     GLcontext *shareCtx = (GLcontext *) sharedContextPrivate; -   __DRIscreenPrivate *sPriv = driContextPriv->driScreenPriv; +   __DRIscreen *sPriv = driContextPriv->driScreenPriv;     intelScreenPrivate *intelScreen = (intelScreenPrivate *) sPriv->private;     int bo_reuse_mode; @@ -609,8 +596,8 @@ intelInitContext(struct intel_context *intel,     driContextPriv->driverPrivate = intel;     intel->intelScreen = intelScreen;     intel->driScreen = sPriv; -   intel->sarea = intelScreen->sarea;     intel->driContext = driContextPriv; +   intel->driFd = sPriv->fd;     if (IS_965(intel->intelScreen->deviceID)) {        intel->gen = 4; @@ -632,11 +619,6 @@ intelInitContext(struct intel_context *intel,        intel->is_g4x = GL_TRUE;     } -   /* Dri stuff */ -   intel->hHWContext = driContextPriv->hHWContext; -   intel->driFd = sPriv->fd; -   intel->driHwLock = sPriv->lock; -     driParseConfigFiles(&intel->optionCache, &intelScreen->optionCache,                         intel->driScreen->myNum,  		       (intel->gen >= 4) ? "i965" : "i915"); @@ -750,9 +732,6 @@ intelInitContext(struct intel_context *intel,     if (INTEL_DEBUG & DEBUG_BUFMGR)        dri_bufmgr_set_debug(intel->bufmgr, GL_TRUE); -   if (!sPriv->dri2.enabled) -      intel_recreate_static_regions(intel); -     intel->batch = intel_batchbuffer_alloc(intel);     intel_fbo_init(intel); @@ -801,7 +780,7 @@ intelInitContext(struct intel_context *intel,  }  void -intelDestroyContext(__DRIcontextPrivate * driContextPriv) +intelDestroyContext(__DRIcontext * driContextPriv)  {     struct intel_context *intel =        (struct intel_context *) driContextPriv->driverPrivate; @@ -848,57 +827,6 @@ intelDestroyContext(__DRIcontextPrivate * driContextPriv)            */        } -      /* XXX In intelMakeCurrent() below, the context's static regions are  -       * referenced inside the frame buffer; it's listed as a hack, -       * with a comment of "XXX FBO temporary fix-ups!", but -       * as long as it's there, we should release the regions here. -       * The do/while loop around the block is used to allow the -       * "continue" statements inside the block to exit the block, -       * to avoid many layers of "if" constructs. -       */ -      do { -         __DRIdrawablePrivate * driDrawPriv = intel->driDrawable; -         struct intel_framebuffer *intel_fb; -         struct intel_renderbuffer *irbDepth, *irbStencil; -         if (!driDrawPriv) { -            /* We're already detached from the drawable; exit this block. */ -            continue; -         } -         intel_fb = (struct intel_framebuffer *) driDrawPriv->driverPrivate; -         if (!intel_fb) { -            /* The frame buffer is already gone; exit this block. */ -            continue; -         } -         irbDepth = intel_get_renderbuffer(&intel_fb->Base, BUFFER_DEPTH); -         irbStencil = intel_get_renderbuffer(&intel_fb->Base, BUFFER_STENCIL); - -         /* If the regions of the frame buffer still match the regions -          * of the context, release them.  If they've changed somehow, -          * leave them alone. -          */ -         if (intel_fb->color_rb[0] && intel_fb->color_rb[0]->region == intel->front_region) { -	    intel_renderbuffer_set_region(intel_fb->color_rb[0], NULL); -         } -         if (intel_fb->color_rb[1] && intel_fb->color_rb[1]->region == intel->back_region) { -	    intel_renderbuffer_set_region(intel_fb->color_rb[1], NULL); -         } - -         if (irbDepth && irbDepth->region == intel->depth_region) { -	    intel_renderbuffer_set_region(irbDepth, NULL); -         } -         /* Usually, the stencil buffer is the same as the depth buffer; -          * but they're handled separately in MakeCurrent, so we'll -          * handle them separately here. -          */ -         if (irbStencil && irbStencil->region == intel->depth_region) { -	    intel_renderbuffer_set_region(irbStencil, NULL); -         } -      } while (0); - -      intel_region_release(&intel->front_region); -      intel_region_release(&intel->back_region); -      intel_region_release(&intel->depth_region); -        driDestroyOptionCache(&intel->optionCache);        /* free the Mesa context */ @@ -910,7 +838,7 @@ intelDestroyContext(__DRIcontextPrivate * driContextPriv)  }  GLboolean -intelUnbindContext(__DRIcontextPrivate * driContextPriv) +intelUnbindContext(__DRIcontext * driContextPriv)  {     struct intel_context *intel =        (struct intel_context *) driContextPriv->driverPrivate; @@ -924,11 +852,10 @@ intelUnbindContext(__DRIcontextPrivate * driContextPriv)  }  GLboolean -intelMakeCurrent(__DRIcontextPrivate * driContextPriv, -                 __DRIdrawablePrivate * driDrawPriv, -                 __DRIdrawablePrivate * driReadPriv) +intelMakeCurrent(__DRIcontext * driContextPriv, +                 __DRIdrawable * driDrawPriv, +                 __DRIdrawable * driReadPriv)  { -   __DRIscreenPrivate *psp = driDrawPriv->driScreenPriv;     struct intel_context *intel;     GET_CURRENT_CONTEXT(curCtx); @@ -946,41 +873,12 @@ intelMakeCurrent(__DRIcontextPrivate * driContextPriv,     }     if (driContextPriv) { -      struct intel_framebuffer *intel_fb = -	 (struct intel_framebuffer *) driDrawPriv->driverPrivate; -      GLframebuffer *readFb = (GLframebuffer *) driReadPriv->driverPrivate; +      struct gl_framebuffer *fb = driDrawPriv->driverPrivate; +      struct gl_framebuffer *readFb = driReadPriv->driverPrivate; -      if (driContextPriv->driScreenPriv->dri2.enabled) {      -          intel_update_renderbuffers(driContextPriv, driDrawPriv); -          if (driDrawPriv != driReadPriv) -              intel_update_renderbuffers(driContextPriv, driReadPriv); -      } else { -          /* XXX FBO temporary fix-ups!  These are released in  -           * intelDextroyContext(), above.  Changes here should be -           * reflected there. -           */ -          /* if the renderbuffers don't have regions, init them from the context */ -         struct intel_renderbuffer *irbDepth -            = intel_get_renderbuffer(&intel_fb->Base, BUFFER_DEPTH); -         struct intel_renderbuffer *irbStencil -            = intel_get_renderbuffer(&intel_fb->Base, BUFFER_STENCIL); - -         if (intel_fb->color_rb[0]) { -	    intel_renderbuffer_set_region(intel_fb->color_rb[0], -					  intel->front_region); -         } -         if (intel_fb->color_rb[1]) { -	    intel_renderbuffer_set_region(intel_fb->color_rb[1], -					  intel->back_region); -         } - -         if (irbDepth) { -	    intel_renderbuffer_set_region(irbDepth, intel->depth_region); -         } -         if (irbStencil) { -	    intel_renderbuffer_set_region(irbStencil, intel->depth_region); -         } -      } +      intel_update_renderbuffers(driContextPriv, driDrawPriv); +      if (driDrawPriv != driReadPriv) +	 intel_update_renderbuffers(driContextPriv, driReadPriv);        /* set GLframebuffer size to match window, if needed */        driUpdateFramebufferSize(&intel->ctx, driDrawPriv); @@ -989,37 +887,10 @@ intelMakeCurrent(__DRIcontextPrivate * driContextPriv,  	 driUpdateFramebufferSize(&intel->ctx, driReadPriv);        } -      _mesa_make_current(&intel->ctx, &intel_fb->Base, readFb); - +      _mesa_make_current(&intel->ctx, fb, readFb);        intel->driReadDrawable = driReadPriv; - -      if (intel->driDrawable != driDrawPriv) { -         if (driDrawPriv->swap_interval == (unsigned)-1) { -            int i; - -            driDrawPriv->vblFlags = (intel->intelScreen->irq_active != 0) -               ? driGetDefaultVBlankFlags(&intel->optionCache) -               : VBLANK_FLAG_NO_IRQ; - -            /* Prevent error printf if one crtc is disabled, this will -             * be properly calculated in intelWindowMoved() next. -             */ -            driDrawPriv->vblFlags = intelFixupVblank(intel, driDrawPriv); - -            (*psp->systemTime->getUST) (&intel_fb->swap_ust); -            driDrawableInitVBlank(driDrawPriv); -            intel_fb->vbl_waited = driDrawPriv->vblSeq; - -            for (i = 0; i < 2; i++) { -               if (intel_fb->color_rb[i]) -                  intel_fb->color_rb[i]->vbl_pending = driDrawPriv->vblSeq; -            } -         } -         intel->driDrawable = driDrawPriv; -         intelWindowMoved(intel); -      } - -      intel_draw_buffer(&intel->ctx, &intel_fb->Base); +      intel->driDrawable = driDrawPriv; +      intel_draw_buffer(&intel->ctx, fb);     }     else {        _mesa_make_current(NULL, NULL, NULL); @@ -1027,128 +898,3 @@ intelMakeCurrent(__DRIcontextPrivate * driContextPriv,     return GL_TRUE;  } - -static void -intelContendedLock(struct intel_context *intel, GLuint flags) -{ -   __DRIdrawablePrivate *dPriv = intel->driDrawable; -   __DRIscreenPrivate *sPriv = intel->driScreen; -   volatile drm_i915_sarea_t *sarea = intel->sarea; -   int me = intel->hHWContext; - -   drmGetLock(intel->driFd, intel->hHWContext, flags); - -   if (INTEL_DEBUG & DEBUG_LOCK) -      _mesa_printf("%s - got contended lock\n", __progname); - -   /* If the window moved, may need to set a new cliprect now. -    * -    * NOTE: This releases and regains the hw lock, so all state -    * checking must be done *after* this call: -    */ -   if (dPriv) -       DRI_VALIDATE_DRAWABLE_INFO(sPriv, dPriv); - -   if (sarea && sarea->ctxOwner != me) { -      if (INTEL_DEBUG & DEBUG_BUFMGR) { -	 fprintf(stderr, "Lost Context: sarea->ctxOwner %x me %x\n", -		 sarea->ctxOwner, me); -      } -      sarea->ctxOwner = me; -   } - -   /* Drawable changed? -    */ -   if (dPriv && intel->lastStamp != dPriv->lastStamp) { -       intelWindowMoved(intel); -       intel->lastStamp = dPriv->lastStamp; -   } -} - - -_glthread_DECLARE_STATIC_MUTEX(lockMutex); - -/* Lock the hardware and validate our state.   - */ -void LOCK_HARDWARE( struct intel_context *intel ) -{ -    __DRIdrawable *dPriv = intel->driDrawable; -    __DRIscreen *sPriv = intel->driScreen; -    char __ret = 0; -    struct intel_framebuffer *intel_fb = NULL; -    struct intel_renderbuffer *intel_rb = NULL; - -    intel->locked++; -    if (intel->locked >= 2) -       return; - -    if (!sPriv->dri2.enabled) -       _glthread_LOCK_MUTEX(lockMutex); - -    if (intel->driDrawable) { -       intel_fb = intel->driDrawable->driverPrivate; - -       if (intel_fb) -	  intel_rb = -	     intel_get_renderbuffer(&intel_fb->Base, -				    intel_fb->Base._ColorDrawBufferIndexes[0]); -    } - -    if (intel_rb && dPriv->vblFlags && -	!(dPriv->vblFlags & VBLANK_FLAG_NO_IRQ) && -	(intel_fb->vbl_waited - intel_rb->vbl_pending) > (1<<23)) { -	drmVBlank vbl; - -	vbl.request.type = DRM_VBLANK_ABSOLUTE; - -	if ( dPriv->vblFlags & VBLANK_FLAG_SECONDARY ) { -	    vbl.request.type |= DRM_VBLANK_SECONDARY; -	} - -	vbl.request.sequence = intel_rb->vbl_pending; -	drmWaitVBlank(intel->driFd, &vbl); -	intel_fb->vbl_waited = vbl.reply.sequence; -    } - -    if (!sPriv->dri2.enabled) { -	DRM_CAS(intel->driHwLock, intel->hHWContext, -		(DRM_LOCK_HELD|intel->hHWContext), __ret); - -	if (__ret) -	    intelContendedLock( intel, 0 ); -    } - - -    if (INTEL_DEBUG & DEBUG_LOCK) -      _mesa_printf("%s - locked\n", __progname); -} - - -/* Unlock the hardware using the global current context  - */ -void UNLOCK_HARDWARE( struct intel_context *intel ) -{ -    __DRIscreen *sPriv = intel->driScreen; - -   intel->locked--; -   if (intel->locked > 0) -      return; - -   assert(intel->locked == 0); - -   if (!sPriv->dri2.enabled) { -      DRM_UNLOCK(intel->driFd, intel->driHwLock, intel->hHWContext); -      _glthread_UNLOCK_MUTEX(lockMutex); -   } - -   if (INTEL_DEBUG & DEBUG_LOCK) -      _mesa_printf("%s - unlocked\n", __progname); - -   /** -    * Nothing should be left in batch outside of LOCK/UNLOCK which references -    * cliprects. -    */ -   if (intel->batch->cliprect_mode == REFERENCES_CLIPRECTS) -      intel_batchbuffer_flush(intel->batch); -} - diff --git a/src/mesa/drivers/dri/intel/intel_context.h b/src/mesa/drivers/dri/intel/intel_context.h index 09e8223bc7..c7b7235836 100644 --- a/src/mesa/drivers/dri/intel/intel_context.h +++ b/src/mesa/drivers/dri/intel/intel_context.h @@ -184,10 +184,6 @@ struct intel_context     int urb_size; -   struct intel_region *front_region; -   struct intel_region *back_region; -   struct intel_region *depth_region; -     struct intel_batchbuffer *batch;     drm_intel_bo *first_post_swapbuffers_batch;     GLboolean no_batch_wrap; @@ -252,19 +248,6 @@ struct intel_context     intel_tri_func draw_tri;     /** -    * Set to true if a single constant cliprect should be used in the -    * batchbuffer.  Otherwise, cliprects must be calculated at batchbuffer -    * flush time while the lock is held. -    */ -   GLboolean constant_cliprect; - -   /** -    * In !constant_cliprect mode, set to true if the front cliprects should be -    * used instead of back. -    */ -   GLboolean front_cliprects; - -   /**      * Set if rendering has occured to the drawable's front buffer.      *      * This is used in the DRI2 case to detect that glFlush should also copy @@ -295,36 +278,20 @@ struct intel_context     drm_clip_rect_t draw_rect;     drm_clip_rect_t scissor_rect; -   drm_context_t hHWContext; -   drmLock *driHwLock;     int driFd; -   __DRIcontextPrivate *driContext; -   __DRIdrawablePrivate *driDrawable; -   __DRIdrawablePrivate *driReadDrawable; -   __DRIscreenPrivate *driScreen; +   __DRIcontext *driContext; +   __DRIdrawable *driDrawable; +   __DRIdrawable *driReadDrawable; +   __DRIscreen *driScreen;     intelScreenPrivate *intelScreen; -   volatile drm_i915_sarea_t *sarea; - -   GLuint lastStamp;     /**      * Configuration cache      */     driOptionCache optionCache; - -   int64_t swap_ust; -   int64_t swap_missed_ust; - -   GLuint swap_count; -   GLuint swap_missed_count;  }; -/* These are functions now: - */ -void LOCK_HARDWARE( struct intel_context *intel ); -void UNLOCK_HARDWARE( struct intel_context *intel ); -  extern char *__progname; @@ -439,12 +406,10 @@ extern int INTEL_DEBUG;  extern GLboolean intelInitContext(struct intel_context *intel,                                    const __GLcontextModes * mesaVis, -                                  __DRIcontextPrivate * driContextPriv, +                                  __DRIcontext * driContextPriv,                                    void *sharedContextPrivate,                                    struct dd_function_table *functions); -extern void intelGetLock(struct intel_context *intel, GLuint flags); -  extern void intelFinish(GLcontext * ctx);  extern void intelFlush(GLcontext * ctx); diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c b/src/mesa/drivers/dri/intel/intel_fbo.c index 32c43ae185..d58ffd95fa 100644 --- a/src/mesa/drivers/dri/intel/intel_fbo.c +++ b/src/mesa/drivers/dri/intel/intel_fbo.c @@ -222,7 +222,6 @@ static void  intel_resize_buffers(GLcontext *ctx, struct gl_framebuffer *fb,  		     GLuint width, GLuint height)  { -   struct intel_framebuffer *intel_fb = (struct intel_framebuffer*)fb;     int i;     _mesa_resize_framebuffer(ctx, fb, width, height); @@ -233,9 +232,10 @@ intel_resize_buffers(GLcontext *ctx, struct gl_framebuffer *fb,        return;     } +     /* Make sure all window system renderbuffers are up to date */ -   for (i = 0; i < 2; i++) { -      struct gl_renderbuffer *rb = &intel_fb->color_rb[i]->Base; +   for (i = BUFFER_FRONT_LEFT; i <= BUFFER_BACK_RIGHT; i++) { +      struct gl_renderbuffer *rb = fb->Attachment[i].Renderbuffer;        /* only resize if size is changing */        if (rb && (rb->Width != width || rb->Height != height)) { diff --git a/src/mesa/drivers/dri/intel/intel_fbo.h b/src/mesa/drivers/dri/intel/intel_fbo.h index fa43077d6a..586dbbbb25 100644 --- a/src/mesa/drivers/dri/intel/intel_fbo.h +++ b/src/mesa/drivers/dri/intel/intel_fbo.h @@ -34,27 +34,6 @@  struct intel_context;  /** - * Intel framebuffer, derived from gl_framebuffer. - */ -struct intel_framebuffer -{ -   struct gl_framebuffer Base; - -   struct intel_renderbuffer *color_rb[2]; - -   /* VBI -    */ -   GLuint vbl_waited; - -   int64_t swap_ust; -   int64_t swap_missed_ust; - -   GLuint swap_count; -   GLuint swap_missed_count; -}; - - -/**   * Intel renderbuffer, derived from gl_renderbuffer.   */  struct intel_renderbuffer @@ -62,8 +41,6 @@ struct intel_renderbuffer     struct gl_renderbuffer Base;     struct intel_region *region; -   GLuint vbl_pending;   /**< vblank sequence number of pending flip */ -     uint8_t *span_cache;     unsigned long span_cache_offset;  }; @@ -121,7 +98,7 @@ intel_fbo_init(struct intel_context *intel);  extern void -intel_flip_renderbuffers(struct intel_framebuffer *intel_fb); +intel_flip_renderbuffers(struct gl_framebuffer *fb);  static INLINE struct intel_region * diff --git a/src/mesa/drivers/dri/intel/intel_pixel_bitmap.c b/src/mesa/drivers/dri/intel/intel_pixel_bitmap.c index f23f94f35e..85e5ad2cdd 100644 --- a/src/mesa/drivers/dri/intel/intel_pixel_bitmap.c +++ b/src/mesa/drivers/dri/intel/intel_pixel_bitmap.c @@ -236,8 +236,6 @@ do_blit_bitmap( GLcontext *ctx,     if (!intel_check_blit_fragment_ops(ctx, tmpColor[3] == 1.0F))        return GL_FALSE; -   LOCK_HARDWARE(intel); -     intel_get_cliprects(intel, &cliprects, &num_cliprects, &x_off, &y_off);     if (num_cliprects != 0) {        GLuint i; @@ -325,7 +323,6 @@ do_blit_bitmap( GLcontext *ctx,        }     }  out: -   UNLOCK_HARDWARE(intel);     if (INTEL_DEBUG & DEBUG_SYNC)        intel_batchbuffer_flush(intel->batch); diff --git a/src/mesa/drivers/dri/intel/intel_pixel_copy.c b/src/mesa/drivers/dri/intel/intel_pixel_copy.c index 689a00cb00..e002516cdd 100644 --- a/src/mesa/drivers/dri/intel/intel_pixel_copy.c +++ b/src/mesa/drivers/dri/intel/intel_pixel_copy.c @@ -35,28 +35,33 @@  #include "intel_buffers.h"  #include "intel_regions.h"  #include "intel_pixel.h" +#include "intel_fbo.h"  #define FILE_DEBUG_FLAG DEBUG_PIXEL  static struct intel_region *  copypix_src_region(struct intel_context *intel, GLenum type)  { +   struct intel_renderbuffer *depth; + +   depth = (struct intel_renderbuffer *) +      &intel->ctx.DrawBuffer->Attachment[BUFFER_DEPTH].Renderbuffer; +     switch (type) {     case GL_COLOR:        return intel_readbuf_region(intel);     case GL_DEPTH: -      /* Don't think this is really possible execpt at 16bpp, when we have no stencil. -       */ -      if (intel->depth_region && intel->depth_region->cpp == 2) -         return intel->depth_region; +      /* Don't think this is really possible execpt at 16bpp, when we +       * have no stencil. */ +      if (depth && depth->region->cpp == 2) +         return depth->region;     case GL_STENCIL: -      /* Don't think this is really possible.  -       */ +      /* Don't think this is really possible. */        break;     case GL_DEPTH_STENCIL_EXT:        /* Does it matter whether it is stencil/depth or depth/stencil?         */ -      return intel->depth_region; +      return depth->region;     default:        break;     } @@ -134,8 +139,6 @@ do_blit_copypixels(GLcontext * ctx,     intelFlush(&intel->ctx); -   LOCK_HARDWARE(intel); -     intel_get_cliprects(intel, &cliprects, &num_cliprects, &x_off, &y_off);     if (num_cliprects != 0) {        GLint delta_x; @@ -214,13 +217,11 @@ do_blit_copypixels(GLcontext * ctx,  				ctx->Color.ColorLogicOpEnabled ?  				ctx->Color.LogicOp : GL_COPY)) {  	    DBG("%s: blit failure\n", __FUNCTION__); -	    UNLOCK_HARDWARE(intel);  	    return GL_FALSE;  	 }        }     }  out: -   UNLOCK_HARDWARE(intel);     intel_check_front_buffer_rendering(intel); diff --git a/src/mesa/drivers/dri/intel/intel_pixel_read.c b/src/mesa/drivers/dri/intel/intel_pixel_read.c index 20424e2e58..9c0fdc6067 100644 --- a/src/mesa/drivers/dri/intel/intel_pixel_read.c +++ b/src/mesa/drivers/dri/intel/intel_pixel_read.c @@ -77,7 +77,7 @@ do_texture_readpixels(GLcontext * ctx,     struct intel_context *intel = intel_context(ctx);     intelScreenPrivate *screen = intel->intelScreen;     GLint pitch = pack->RowLength ? pack->RowLength : width; -   __DRIdrawablePrivate *dPriv = intel->driDrawable; +   __DRIdrawable *dPriv = intel->driDrawable;     int textureFormat;     GLenum glTextureFormat;     int destFormat, depthFormat, destPitch; @@ -105,15 +105,12 @@ do_texture_readpixels(GLcontext * ctx,        return GL_FALSE;     } -   LOCK_HARDWARE(intel); -     if (intel->driDrawable->numClipRects) {        intel->vtbl.install_meta_state(intel);        intel->vtbl.meta_no_depth_write(intel);        intel->vtbl.meta_no_stencil_write(intel);        if (!driClipRectToFramebuffer(ctx->ReadBuffer, &x, &y, &width, &height)) { -         UNLOCK_HARDWARE(intel);           SET_STATE(i830, state);           if (INTEL_DEBUG & DEBUG_PIXEL)              fprintf(stderr, "%s: cliprect failed\n", __FUNCTION__); @@ -150,7 +147,6 @@ do_texture_readpixels(GLcontext * ctx,        intel->vtbl.leave_meta_state(intel);     } -   UNLOCK_HARDWARE(intel);     intel_region_wait_fence(ctx, dest_region);   /* required by GL */     return GL_TRUE; @@ -224,7 +220,6 @@ do_blit_readpixels(GLcontext * ctx,      * fire with lock held to guarentee cliprects are correct.      */     intelFlush(&intel->ctx); -   LOCK_HARDWARE(intel);     if (intel->driReadDrawable->numClipRects) {        GLboolean all = (width * height * src->cpp == dst->Base.Size && @@ -233,7 +228,7 @@ do_blit_readpixels(GLcontext * ctx,        dri_bo *dst_buffer = intel_bufferobj_buffer(intel, dst,  						  all ? INTEL_WRITE_FULL :  						  INTEL_WRITE_PART); -      __DRIdrawablePrivate *dPriv = intel->driReadDrawable; +      __DRIdrawable *dPriv = intel->driReadDrawable;        int nbox = dPriv->numClipRects;        drm_clip_rect_t *box = dPriv->pClipRects;        drm_clip_rect_t rect; @@ -261,12 +256,10 @@ do_blit_readpixels(GLcontext * ctx,  				rect.y2 - src_rect.y2,  				rect.x2 - rect.x1, rect.y2 - rect.y1,  				GL_COPY)) { -	    UNLOCK_HARDWARE(intel);  	    return GL_FALSE;  	 }        }     } -   UNLOCK_HARDWARE(intel);     if (INTEL_DEBUG & DEBUG_PIXEL)        _mesa_printf("%s - DONE\n", __FUNCTION__); diff --git a/src/mesa/drivers/dri/intel/intel_regions.c b/src/mesa/drivers/dri/intel/intel_regions.c index d6b9dc4446..61aefa01b8 100644 --- a/src/mesa/drivers/dri/intel/intel_regions.c +++ b/src/mesa/drivers/dri/intel/intel_regions.c @@ -362,14 +362,12 @@ intel_region_data(struct intel_context *intel,           intel_region_cow(intel, dst);     } -   LOCK_HARDWARE(intel);     _mesa_copy_rect(intel_region_map(intel, dst) + dst_offset,                     dst->cpp,                     dst->pitch,                     dstx, dsty, width, height, src, src_pitch, srcx, srcy);     intel_region_unmap(intel, dst); -   UNLOCK_HARDWARE(intel);  }  /* Copy rectangular sub-regions. Need better logic about when to @@ -485,7 +483,6 @@ intel_region_cow(struct intel_context *intel, struct intel_region *region)     /* Now blit from the texture buffer to the new buffer:       */ -   LOCK_HARDWARE(intel);     ok = intelEmitCopyBlit(intel,                            region->cpp,                            region->pitch, pbo->buffer, 0, region->tiling, @@ -494,7 +491,6 @@ intel_region_cow(struct intel_context *intel, struct intel_region *region)                            region->pitch, region->height,                            GL_COPY);     assert(ok); -   UNLOCK_HARDWARE(intel);  }  dri_bo * @@ -510,88 +506,3 @@ intel_region_buffer(struct intel_context *intel,     return region->buffer;  } - -static struct intel_region * -intel_recreate_static(struct intel_context *intel, -		      const char *name, -		      struct intel_region *region, -		      intelRegion *region_desc) -{ -   intelScreenPrivate *intelScreen = intel->intelScreen; -   int ret; - -   if (region == NULL) { -      region = calloc(sizeof(*region), 1); -      region->refcount = 1; -      _DBG("%s creating new region %p\n", __FUNCTION__, region); -   } -   else { -      _DBG("%s %p\n", __FUNCTION__, region); -   } - -   if (intel->ctx.Visual.rgbBits == 24) -      region->cpp = 4; -   else -      region->cpp = intel->ctx.Visual.rgbBits / 8; -   region->pitch = intelScreen->pitch; -   region->width = intelScreen->width; -   region->height = intelScreen->height; - -   if (region->buffer != NULL) { -      dri_bo_unreference(region->buffer); -      region->buffer = NULL; -   } - -   assert(region_desc->bo_handle != -1); -   region->buffer = intel_bo_gem_create_from_name(intel->bufmgr, -						  name, -						  region_desc->bo_handle); - -   ret = dri_bo_get_tiling(region->buffer, ®ion->tiling, -			   ®ion->bit_6_swizzle); -   if (ret != 0) { -      fprintf(stderr, "Couldn't get tiling of buffer %d (%s): %s\n", -	      region_desc->bo_handle, name, strerror(-ret)); -      intel_region_release(®ion); -      return NULL; -   } - -   assert(region->buffer != NULL); - -   return region; -} - -/** - * Create intel_region structs to describe the static front, back, and depth - * buffers created by the xserver. - * - * Although FBO's mean we now no longer use these as render targets in - * all circumstances, they won't go away until the back and depth - * buffers become private, and the front buffer will remain even then. - * - * Note that these don't allocate video memory, just describe - * allocations alread made by the X server. - */ -void -intel_recreate_static_regions(struct intel_context *intel) -{ -   intelScreenPrivate *intelScreen = intel->intelScreen; - -   intel->front_region = -      intel_recreate_static(intel, "front", -			    intel->front_region, -			    &intelScreen->front); - -   intel->back_region = -      intel_recreate_static(intel, "back", -			    intel->back_region, -			    &intelScreen->back); - -   /* Still assumes front.cpp == depth.cpp.  We can kill this when we move to -    * private buffers. -    */ -   intel->depth_region = -      intel_recreate_static(intel, "depth", -			    intel->depth_region, -			    &intelScreen->depth); -} diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c index a3d676741a..5165716e09 100644 --- a/src/mesa/drivers/dri/intel/intel_screen.c +++ b/src/mesa/drivers/dri/intel/intel_screen.c @@ -31,7 +31,6 @@  #include "main/renderbuffer.h"  #include "utils.h" -#include "vblank.h"  #include "xmlpool.h"  #include "intel_batchbuffer.h" @@ -41,7 +40,6 @@  #include "intel_extensions.h"  #include "intel_fbo.h"  #include "intel_regions.h" -#include "intel_swapbuffers.h"  #include "intel_screen.h"  #include "intel_span.h"  #include "intel_tex.h" @@ -104,127 +102,6 @@ const GLuint __driNConfigOptions = 11;  static PFNGLXCREATECONTEXTMODES create_context_modes = NULL;  #endif /*USE_NEW_INTERFACE */ -/** - * Map all the memory regions described by the screen. - * \return GL_TRUE if success, GL_FALSE if error. - */ -GLboolean -intelMapScreenRegions(__DRIscreenPrivate * sPriv) -{ -   intelScreenPrivate *intelScreen = (intelScreenPrivate *) sPriv->private; - -   if (0) -      _mesa_printf("TEX 0x%08x ", intelScreen->tex.handle); -   if (intelScreen->tex.size != 0) { -      if (drmMap(sPriv->fd, -		 intelScreen->tex.handle, -		 intelScreen->tex.size, -		 (drmAddress *) & intelScreen->tex.map) != 0) { -	 intelUnmapScreenRegions(intelScreen); -	 return GL_FALSE; -      } -   } - -   return GL_TRUE; -} - -void -intelUnmapScreenRegions(intelScreenPrivate * intelScreen) -{ -   if (intelScreen->tex.map) { -      drmUnmap(intelScreen->tex.map, intelScreen->tex.size); -      intelScreen->tex.map = NULL; -   } -} - - -static void -intelPrintDRIInfo(intelScreenPrivate * intelScreen, -                  __DRIscreenPrivate * sPriv, I830DRIPtr gDRIPriv) -{ -   fprintf(stderr, "*** Front size:   0x%x  offset: 0x%x  pitch: %d\n", -           intelScreen->front.size, intelScreen->front.offset, -           intelScreen->pitch); -   fprintf(stderr, "*** Back size:    0x%x  offset: 0x%x  pitch: %d\n", -           intelScreen->back.size, intelScreen->back.offset, -           intelScreen->pitch); -   fprintf(stderr, "*** Depth size:   0x%x  offset: 0x%x  pitch: %d\n", -           intelScreen->depth.size, intelScreen->depth.offset, -           intelScreen->pitch); -   fprintf(stderr, "*** Texture size: 0x%x  offset: 0x%x\n", -           intelScreen->tex.size, intelScreen->tex.offset); -   fprintf(stderr, "*** Memory : 0x%x\n", gDRIPriv->mem); -} - - -static void -intelPrintSAREA(const drm_i915_sarea_t * sarea) -{ -   fprintf(stderr, "SAREA: sarea width %d  height %d\n", sarea->width, -           sarea->height); -   fprintf(stderr, "SAREA: pitch: %d\n", sarea->pitch); -   fprintf(stderr, -           "SAREA: front offset: 0x%08x  size: 0x%x  handle: 0x%x tiled: %d\n", -           sarea->front_offset, sarea->front_size, -           (unsigned) sarea->front_handle, sarea->front_tiled); -   fprintf(stderr, -           "SAREA: back  offset: 0x%08x  size: 0x%x  handle: 0x%x tiled: %d\n", -           sarea->back_offset, sarea->back_size, -           (unsigned) sarea->back_handle, sarea->back_tiled); -   fprintf(stderr, "SAREA: depth offset: 0x%08x  size: 0x%x  handle: 0x%x tiled: %d\n", -           sarea->depth_offset, sarea->depth_size, -           (unsigned) sarea->depth_handle, sarea->depth_tiled); -   fprintf(stderr, "SAREA: tex   offset: 0x%08x  size: 0x%x  handle: 0x%x\n", -           sarea->tex_offset, sarea->tex_size, (unsigned) sarea->tex_handle); -} - - -/** - * A number of the screen parameters are obtained/computed from - * information in the SAREA.  This function updates those parameters. - */ -static void -intelUpdateScreenFromSAREA(intelScreenPrivate * intelScreen, -                           drm_i915_sarea_t * sarea) -{ -   intelScreen->width = sarea->width; -   intelScreen->height = sarea->height; -   intelScreen->pitch = sarea->pitch; - -   intelScreen->front.offset = sarea->front_offset; -   intelScreen->front.handle = sarea->front_handle; -   intelScreen->front.size = sarea->front_size; -   intelScreen->front.tiled = sarea->front_tiled; - -   intelScreen->back.offset = sarea->back_offset; -   intelScreen->back.handle = sarea->back_handle; -   intelScreen->back.size = sarea->back_size; -   intelScreen->back.tiled = sarea->back_tiled; - -   intelScreen->depth.offset = sarea->depth_offset; -   intelScreen->depth.handle = sarea->depth_handle; -   intelScreen->depth.size = sarea->depth_size; -   intelScreen->depth.tiled = sarea->depth_tiled; - -   if (intelScreen->driScrnPriv->ddx_version.minor >= 9) { -      intelScreen->front.bo_handle = sarea->front_bo_handle; -      intelScreen->back.bo_handle = sarea->back_bo_handle; -      intelScreen->depth.bo_handle = sarea->depth_bo_handle; -   } else { -      intelScreen->front.bo_handle = -1; -      intelScreen->back.bo_handle = -1; -      intelScreen->depth.bo_handle = -1; -   } - -   intelScreen->tex.offset = sarea->tex_offset; -   intelScreen->logTextureGranularity = sarea->log_tex_granularity; -   intelScreen->tex.handle = sarea->tex_handle; -   intelScreen->tex.size = sarea->tex_size; - -   if (0) -      intelPrintSAREA(sarea); -} -  static const __DRItexOffsetExtension intelTexOffsetExtension = {     { __DRI_TEX_OFFSET },     intelSetTexOffset, @@ -238,17 +115,13 @@ static const __DRItexBufferExtension intelTexBufferExtension = {  static const __DRIextension *intelScreenExtensions[] = {      &driReadDrawableExtension, -    &driCopySubBufferExtension.base, -    &driSwapControlExtension.base, -    &driFrameTrackingExtension.base, -    &driMediaStreamCounterExtension.base,      &intelTexOffsetExtension.base,      &intelTexBufferExtension.base,      NULL  };  static GLboolean -intel_get_param(__DRIscreenPrivate *psp, int param, int *value) +intel_get_param(__DRIscreen *psp, int param, int *value)  {     int ret;     struct drm_i915_getparam gp; @@ -265,68 +138,12 @@ intel_get_param(__DRIscreenPrivate *psp, int param, int *value)     return GL_TRUE;  } -static GLboolean intelInitDriver(__DRIscreenPrivate *sPriv) -{ -   intelScreenPrivate *intelScreen; -   I830DRIPtr gDRIPriv = (I830DRIPtr) sPriv->pDevPriv; -   drm_i915_sarea_t *sarea; - -   if (sPriv->devPrivSize != sizeof(I830DRIRec)) { -      fprintf(stderr, -              "\nERROR!  sizeof(I830DRIRec) does not match passed size from device driver\n"); -      return GL_FALSE; -   } - -   /* Allocate the private area */ -   intelScreen = (intelScreenPrivate *) CALLOC(sizeof(intelScreenPrivate)); -   if (!intelScreen) { -      fprintf(stderr, "\nERROR!  Allocating private area failed\n"); -      return GL_FALSE; -   } -   /* parse information in __driConfigOptions */ -   driParseOptionInfo(&intelScreen->optionCache, -                      __driConfigOptions, __driNConfigOptions); - -   intelScreen->driScrnPriv = sPriv; -   sPriv->private = (void *) intelScreen; -   sarea = (drm_i915_sarea_t *) -      (((GLubyte *) sPriv->pSAREA) + gDRIPriv->sarea_priv_offset); -   intelScreen->sarea = sarea; - -   intelScreen->deviceID = gDRIPriv->deviceID; - -   intelUpdateScreenFromSAREA(intelScreen, sarea); - -   if (!intelMapScreenRegions(sPriv)) { -      fprintf(stderr, "\nERROR!  mapping regions\n"); -      _mesa_free(intelScreen); -      sPriv->private = NULL; -      return GL_FALSE; -   } - -   if (0) -      intelPrintDRIInfo(intelScreen, sPriv, gDRIPriv); - -   intelScreen->drmMinor = sPriv->drm_version.minor; - -   /* Determine if IRQs are active? */ -   if (!intel_get_param(sPriv, I915_PARAM_IRQ_ACTIVE, -			&intelScreen->irq_active)) -      return GL_FALSE; - -   sPriv->extensions = intelScreenExtensions; - -   return GL_TRUE; -} - -  static void -intelDestroyScreen(__DRIscreenPrivate * sPriv) +intelDestroyScreen(__DRIscreen * sPriv)  {     intelScreenPrivate *intelScreen = (intelScreenPrivate *) sPriv->private;     dri_bufmgr_destroy(intelScreen->bufmgr); -   intelUnmapScreenRegions(intelScreen);     driDestroyOptionInfo(&intelScreen->optionCache);     FREE(intelScreen); @@ -338,10 +155,12 @@ intelDestroyScreen(__DRIscreenPrivate * sPriv)   * This is called when we need to set up GL rendering to a new X window.   */  static GLboolean -intelCreateBuffer(__DRIscreenPrivate * driScrnPriv, -                  __DRIdrawablePrivate * driDrawPriv, +intelCreateBuffer(__DRIscreen * driScrnPriv, +                  __DRIdrawable * driDrawPriv,                    const __GLcontextModes * mesaVis, GLboolean isPixmap)  { +   struct intel_renderbuffer *rb; +     if (isPixmap) {        return GL_FALSE;          /* not implemented */     } @@ -350,12 +169,12 @@ intelCreateBuffer(__DRIscreenPrivate * driScrnPriv,                               mesaVis->depthBits != 24);        gl_format rgbFormat; -      struct intel_framebuffer *intel_fb = CALLOC_STRUCT(intel_framebuffer); +      struct gl_framebuffer *fb = CALLOC_STRUCT(gl_framebuffer); -      if (!intel_fb) +      if (!fb)  	 return GL_FALSE; -      _mesa_initialize_framebuffer(&intel_fb->Base, mesaVis); +      _mesa_initialize_framebuffer(fb, mesaVis);        if (mesaVis->redBits == 5)  	 rgbFormat = MESA_FORMAT_RGB565; @@ -365,16 +184,12 @@ intelCreateBuffer(__DRIscreenPrivate * driScrnPriv,  	 rgbFormat = MESA_FORMAT_ARGB8888;        /* setup the hardware-based renderbuffers */ -      intel_fb->color_rb[0] = intel_create_renderbuffer(rgbFormat); -      _mesa_add_renderbuffer(&intel_fb->Base, BUFFER_FRONT_LEFT, -			     &intel_fb->color_rb[0]->Base); +      rb = intel_create_renderbuffer(rgbFormat); +      _mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, &rb->Base);        if (mesaVis->doubleBufferMode) { -	 intel_fb->color_rb[1] = intel_create_renderbuffer(rgbFormat); - -         _mesa_add_renderbuffer(&intel_fb->Base, BUFFER_BACK_LEFT, -				&intel_fb->color_rb[1]->Base); - +	 rb = intel_create_renderbuffer(rgbFormat); +         _mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &rb->Base);        }        if (mesaVis->depthBits == 24) { @@ -383,115 +198,63 @@ intelCreateBuffer(__DRIscreenPrivate * driScrnPriv,  	    struct intel_renderbuffer *depthStencilRb  	       = intel_create_renderbuffer(MESA_FORMAT_S8_Z24);  	    /* note: bind RB to two attachment points */ -	    _mesa_add_renderbuffer(&intel_fb->Base, BUFFER_DEPTH, -				   &depthStencilRb->Base); -	    _mesa_add_renderbuffer(&intel_fb->Base, BUFFER_STENCIL, -				   &depthStencilRb->Base); +	    _mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthStencilRb->Base); +	    _mesa_add_renderbuffer(fb, BUFFER_STENCIL, &depthStencilRb->Base);  	 } else {  	    struct intel_renderbuffer *depthRb  	       = intel_create_renderbuffer(MESA_FORMAT_X8_Z24); -	    _mesa_add_renderbuffer(&intel_fb->Base, BUFFER_DEPTH, -				   &depthRb->Base); +	    _mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);  	 }        }        else if (mesaVis->depthBits == 16) {           /* just 16-bit depth buffer, no hw stencil */           struct intel_renderbuffer *depthRb  	    = intel_create_renderbuffer(MESA_FORMAT_Z16); -         _mesa_add_renderbuffer(&intel_fb->Base, BUFFER_DEPTH, &depthRb->Base); +         _mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);        }        /* now add any/all software-based renderbuffers we may need */ -      _mesa_add_soft_renderbuffers(&intel_fb->Base, +      _mesa_add_soft_renderbuffers(fb,                                     GL_FALSE, /* never sw color */                                     GL_FALSE, /* never sw depth */                                     swStencil, mesaVis->accumRedBits > 0,                                     GL_FALSE, /* never sw alpha */                                     GL_FALSE  /* never sw aux */ ); -      driDrawPriv->driverPrivate = (void *) intel_fb; +      driDrawPriv->driverPrivate = fb;        return GL_TRUE;     }  }  static void -intelDestroyBuffer(__DRIdrawablePrivate * driDrawPriv) -{ -   struct intel_framebuffer *intel_fb = driDrawPriv->driverPrivate; -   struct intel_renderbuffer *depth_rb; -   struct intel_renderbuffer *stencil_rb; - -   if (intel_fb) { -      if (intel_fb->color_rb[0]) { -         intel_renderbuffer_set_region(intel_fb->color_rb[0], NULL); -      } - -      if (intel_fb->color_rb[1]) { -         intel_renderbuffer_set_region(intel_fb->color_rb[1], NULL); -      } - -      depth_rb = intel_get_renderbuffer(&intel_fb->Base, BUFFER_DEPTH); -      if (depth_rb) { -         intel_renderbuffer_set_region(depth_rb, NULL); -      } - -      stencil_rb = intel_get_renderbuffer(&intel_fb->Base, BUFFER_STENCIL); -      if (stencil_rb) { -         intel_renderbuffer_set_region(stencil_rb, NULL); -      } -   } - -   _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL); -} - - -/** - * Get information about previous buffer swaps. - */ -static int -intelGetSwapInfo(__DRIdrawablePrivate * dPriv, __DRIswapInfo * sInfo) +intelDestroyBuffer(__DRIdrawable * driDrawPriv)  { -   struct intel_framebuffer *intel_fb; - -   if ((dPriv == NULL) || (dPriv->driverPrivate == NULL) -       || (sInfo == NULL)) { -      return -1; -   } - -   intel_fb = dPriv->driverPrivate; -   sInfo->swap_count = intel_fb->swap_count; -   sInfo->swap_ust = intel_fb->swap_ust; -   sInfo->swap_missed_count = intel_fb->swap_missed_count; - -   sInfo->swap_missed_usage = (sInfo->swap_missed_count != 0) -      ? driCalculateSwapUsage(dPriv, 0, intel_fb->swap_missed_ust) -      : 0.0; - -   return 0; +    struct gl_framebuffer *fb = driDrawPriv->driverPrivate; +   +    _mesa_reference_framebuffer(&fb, NULL);  } -  /* There are probably better ways to do this, such as an   * init-designated function to register chipids and createcontext   * functions.   */  extern GLboolean i830CreateContext(const __GLcontextModes * mesaVis, -                                   __DRIcontextPrivate * driContextPriv, +                                   __DRIcontext * driContextPriv,                                     void *sharedContextPrivate);  extern GLboolean i915CreateContext(const __GLcontextModes * mesaVis, -                                   __DRIcontextPrivate * driContextPriv, +                                   __DRIcontext * driContextPriv,                                     void *sharedContextPrivate);  extern GLboolean brwCreateContext(const __GLcontextModes * mesaVis, -				  __DRIcontextPrivate * driContextPriv, +				  __DRIcontext * driContextPriv,  				  void *sharedContextPrivate);  static GLboolean  intelCreateContext(const __GLcontextModes * mesaVis, -                   __DRIcontextPrivate * driContextPriv, +                   __DRIcontext * driContextPriv,                     void *sharedContextPrivate)  { -   __DRIscreenPrivate *sPriv = driContextPriv->driScreenPriv; +   __DRIscreen *sPriv = driContextPriv->driScreenPriv;     intelScreenPrivate *intelScreen = (intelScreenPrivate *) sPriv->private;  #ifdef I915 @@ -512,120 +275,14 @@ intelCreateContext(const __GLcontextModes * mesaVis,     return GL_FALSE;  } - -static __DRIconfig ** -intelFillInModes(__DRIscreenPrivate *psp, -		 unsigned pixel_bits, unsigned depth_bits, -                 unsigned stencil_bits, GLboolean have_back_buffer) -{ -   __DRIconfig **configs; -   __GLcontextModes *m; -   unsigned depth_buffer_factor; -   unsigned back_buffer_factor; -   int i; - -   /* GLX_SWAP_COPY_OML is only supported because the Intel driver doesn't -    * support pageflipping at all. -    */ -   static const GLenum back_buffer_modes[] = { -      GLX_NONE, GLX_SWAP_UNDEFINED_OML, GLX_SWAP_COPY_OML -   }; - -   uint8_t depth_bits_array[3]; -   uint8_t stencil_bits_array[3]; -   uint8_t msaa_samples_array[1]; - -   depth_bits_array[0] = 0; -   depth_bits_array[1] = depth_bits; -   depth_bits_array[2] = depth_bits; - -   /* Just like with the accumulation buffer, always provide some modes -    * with a stencil buffer.  It will be a sw fallback, but some apps won't -    * care about that. -    */ -   stencil_bits_array[0] = 0; -   stencil_bits_array[1] = 0; -   if (depth_bits == 24) -      stencil_bits_array[1] = (stencil_bits == 0) ? 8 : stencil_bits; - -   stencil_bits_array[2] = (stencil_bits == 0) ? 8 : stencil_bits; - -   msaa_samples_array[0] = 0; - -   depth_buffer_factor = ((depth_bits != 0) || (stencil_bits != 0)) ? 3 : 1; -   back_buffer_factor = (have_back_buffer) ? 3 : 1; - -   if (pixel_bits == 16) { -      configs = driCreateConfigs(GL_RGB, GL_UNSIGNED_SHORT_5_6_5, -				 depth_bits_array, stencil_bits_array, -				 depth_buffer_factor, back_buffer_modes, -				 back_buffer_factor, -				 msaa_samples_array, 1); -   } -   else { -      __DRIconfig **configs_a8r8g8b8; -      __DRIconfig **configs_x8r8g8b8; - -      configs_a8r8g8b8 = driCreateConfigs(GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, -					  depth_bits_array, -					  stencil_bits_array, -					  depth_buffer_factor, -					  back_buffer_modes, -					  back_buffer_factor, -					  msaa_samples_array, 1); -      configs_x8r8g8b8 = driCreateConfigs(GL_BGR, GL_UNSIGNED_INT_8_8_8_8_REV, -					  depth_bits_array, -					  stencil_bits_array, -					  depth_buffer_factor, -					  back_buffer_modes, -					  back_buffer_factor, -					  msaa_samples_array, 1); -      configs = driConcatConfigs(configs_a8r8g8b8, configs_x8r8g8b8); -   } - -   if (configs == NULL) { -    fprintf(stderr, "[%s:%u] Error creating FBConfig!\n", __func__, -              __LINE__); -      return NULL; -   } - -   /* Mark the visual as slow if there are "fake" stencil bits. -    */ -   for (i = 0; configs[i]; i++) { -      m = &configs[i]->modes; -      if ((m->stencilBits != 0) && (m->stencilBits != stencil_bits)) { -         m->visualRating = GLX_SLOW_CONFIG; -      } -   } - -   return configs; -} -  static GLboolean  intel_init_bufmgr(intelScreenPrivate *intelScreen)  { -   int gem_kernel = 0; -   struct drm_i915_getparam gp; -   __DRIscreenPrivate *spriv = intelScreen->driScrnPriv; +   __DRIscreen *spriv = intelScreen->driScrnPriv;     int num_fences = 0;     intelScreen->no_hw = getenv("INTEL_NO_HW") != NULL; -   gp.param = I915_PARAM_HAS_GEM; -   gp.value = &gem_kernel; - -   (void) drmCommandWriteRead(spriv->fd, DRM_I915_GETPARAM, &gp, sizeof(gp)); - -   /* If we've got a new enough DDX that's initializing GEM and giving us -    * object handles for the shared buffers, use that. -    */ -   if (!intelScreen->driScrnPriv->dri2.enabled && -       intelScreen->driScrnPriv->ddx_version.minor < 9) { -      fprintf(stderr, "[%s:%u] Error initializing GEM.\n", -	      __func__, __LINE__); -      return GL_FALSE; -   } -     intelScreen->bufmgr = intel_bufmgr_gem_init(spriv->fd, BATCH_SZ);     /* Otherwise, use the classic buffer manager. */     if (intelScreen->bufmgr == NULL) { @@ -644,69 +301,12 @@ intel_init_bufmgr(intelScreenPrivate *intelScreen)  /**   * This is the driver specific part of the createNewScreen entry point. - * Called when using legacy DRI. - *  - * \todo maybe fold this into intelInitDriver - * - * \return the __GLcontextModes supported by this driver - */ -static const __DRIconfig **intelInitScreen(__DRIscreenPrivate *psp) -{ -   intelScreenPrivate *intelScreen; -#ifdef I915 -   static const __DRIversion ddx_expected = { 1, 5, 0 }; -#else -   static const __DRIversion ddx_expected = { 1, 6, 0 }; -#endif -   static const __DRIversion dri_expected = { 4, 0, 0 }; -   static const __DRIversion drm_expected = { 1, 5, 0 }; -   I830DRIPtr dri_priv = (I830DRIPtr) psp->pDevPriv; - -   if (!driCheckDriDdxDrmVersions2("i915", -                                   &psp->dri_version, &dri_expected, -                                   &psp->ddx_version, &ddx_expected, -                                   &psp->drm_version, &drm_expected)) { -      return NULL; -   } - -   if (!intelInitDriver(psp)) -       return NULL; - -   psp->extensions = intelScreenExtensions; - -   intelScreen = psp->private; -   if (!intel_init_bufmgr(intelScreen)) -       return GL_FALSE; - -   return (const __DRIconfig **) -       intelFillInModes(psp, dri_priv->cpp * 8, -			(dri_priv->cpp == 2) ? 16 : 24, -			(dri_priv->cpp == 2) ? 0  : 8, 1); -} - -struct intel_context *intelScreenContext(intelScreenPrivate *intelScreen) -{ -  /* -   * This should probably change to have the screen allocate a dummy -   * context at screen creation. For now just use the current context. -   */ - -  GET_CURRENT_CONTEXT(ctx); -  if (ctx == NULL) { -     _mesa_problem(NULL, "No current context in intelScreenContext\n"); -     return NULL; -  } -  return intel_context(ctx); -} - -/** - * This is the driver specific part of the createNewScreen entry point.   * Called when using DRI2.   *   * \return the __GLcontextModes supported by this driver   */  static const -__DRIconfig **intelInitScreen2(__DRIscreenPrivate *psp) +__DRIconfig **intelInitScreen2(__DRIscreen *psp)  {     intelScreenPrivate *intelScreen;     GLenum fb_format[3]; @@ -815,19 +415,19 @@ __DRIconfig **intelInitScreen2(__DRIscreenPrivate *psp)  }  const struct __DriverAPIRec driDriverAPI = { -   .InitScreen		 = intelInitScreen,     .DestroyScreen	 = intelDestroyScreen,     .CreateContext	 = intelCreateContext,     .DestroyContext	 = intelDestroyContext,     .CreateBuffer	 = intelCreateBuffer,     .DestroyBuffer	 = intelDestroyBuffer, -   .SwapBuffers		 = intelSwapBuffers,     .MakeCurrent		 = intelMakeCurrent,     .UnbindContext	 = intelUnbindContext, -   .GetSwapInfo		 = intelGetSwapInfo, -   .GetDrawableMSC	 = driDrawableGetMSC32, -   .WaitForMSC		 = driWaitForMSC32, -   .CopySubBuffer	 = intelCopySubBuffer, -     .InitScreen2		 = intelInitScreen2,  }; + +/* This is the table of extensions that the loader will dlsym() for. */ +PUBLIC const __DRIextension *__driDriverExtensions[] = { +    &driCoreExtension.base, +    &driDRI2Extension.base, +    NULL +}; diff --git a/src/mesa/drivers/dri/intel/intel_screen.h b/src/mesa/drivers/dri/intel/intel_screen.h index 14ca0903b6..e87e306d86 100644 --- a/src/mesa/drivers/dri/intel/intel_screen.h +++ b/src/mesa/drivers/dri/intel/intel_screen.h @@ -66,7 +66,7 @@ typedef struct     int logTextureGranularity; -   __DRIscreenPrivate *driScrnPriv; +   __DRIscreen *driScrnPriv;     volatile drm_i915_sarea_t *sarea; @@ -88,18 +88,18 @@ typedef struct -extern GLboolean intelMapScreenRegions(__DRIscreenPrivate * sPriv); +extern GLboolean intelMapScreenRegions(__DRIscreen * sPriv);  extern void intelUnmapScreenRegions(intelScreenPrivate * intelScreen); -extern void intelDestroyContext(__DRIcontextPrivate * driContextPriv); +extern void intelDestroyContext(__DRIcontext * driContextPriv); -extern GLboolean intelUnbindContext(__DRIcontextPrivate * driContextPriv); +extern GLboolean intelUnbindContext(__DRIcontext * driContextPriv);  extern GLboolean -intelMakeCurrent(__DRIcontextPrivate * driContextPriv, -                 __DRIdrawablePrivate * driDrawPriv, -                 __DRIdrawablePrivate * driReadPriv); +intelMakeCurrent(__DRIcontext * driContextPriv, +                 __DRIdrawable * driDrawPriv, +                 __DRIdrawable * driReadPriv);  extern struct intel_context *intelScreenContext(intelScreenPrivate *intelScreen); diff --git a/src/mesa/drivers/dri/intel/intel_span.c b/src/mesa/drivers/dri/intel/intel_span.c index d1681e9088..605734d8e5 100644 --- a/src/mesa/drivers/dri/intel/intel_span.c +++ b/src/mesa/drivers/dri/intel/intel_span.c @@ -517,7 +517,6 @@ intelSpanRenderStart(GLcontext * ctx)     GLuint i;     intelFlush(&intel->ctx); -   LOCK_HARDWARE(intel);     for (i = 0; i < ctx->Const.MaxTextureImageUnits; i++) {        if (ctx->Texture.Unit[i]._ReallyEnabled) { @@ -553,8 +552,6 @@ intelSpanRenderFinish(GLcontext * ctx)     intel_map_unmap_framebuffer(intel, ctx->DrawBuffer, GL_FALSE);     if (ctx->ReadBuffer != ctx->DrawBuffer)        intel_map_unmap_framebuffer(intel, ctx->ReadBuffer, GL_FALSE); - -   UNLOCK_HARDWARE(intel);  } diff --git a/src/mesa/drivers/dri/intel/intel_swapbuffers.c b/src/mesa/drivers/dri/intel/intel_swapbuffers.c deleted file mode 100644 index 5ae1240718..0000000000 --- a/src/mesa/drivers/dri/intel/intel_swapbuffers.c +++ /dev/null @@ -1,248 +0,0 @@ -/************************************************************************** - *  - * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. - * 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 NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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 "intel_blit.h" -#include "intel_buffers.h" -#include "intel_swapbuffers.h" -#include "intel_fbo.h" -#include "intel_batchbuffer.h" -#include "drirenderbuffer.h" -#include "vblank.h" -#include "i915_drm.h" - - - -/* - * Correct a drawablePrivate's set of vblank flags WRT the current context. - * When considering multiple crtcs. - */ -GLuint -intelFixupVblank(struct intel_context *intel, __DRIdrawablePrivate *dPriv) -{ -   if (!intel->intelScreen->driScrnPriv->dri2.enabled && -       intel->intelScreen->driScrnPriv->ddx_version.minor >= 7) { -      volatile drm_i915_sarea_t *sarea = intel->sarea; -      drm_clip_rect_t drw_rect = { .x1 = dPriv->x, .x2 = dPriv->x + dPriv->w, -				   .y1 = dPriv->y, .y2 = dPriv->y + dPriv->h }; -      drm_clip_rect_t planeA_rect = { .x1 = sarea->planeA_x, .y1 = sarea->planeA_y, -				     .x2 = sarea->planeA_x + sarea->planeA_w, -				     .y2 = sarea->planeA_y + sarea->planeA_h }; -      drm_clip_rect_t planeB_rect = { .x1 = sarea->planeB_x, .y1 = sarea->planeB_y, -				     .x2 = sarea->planeB_x + sarea->planeB_w, -				     .y2 = sarea->planeB_y + sarea->planeB_h }; -      GLint areaA = driIntersectArea( drw_rect, planeA_rect ); -      GLint areaB = driIntersectArea( drw_rect, planeB_rect ); -      GLuint flags; - -      /* Update vblank info -       */ -      if (areaB > areaA || (areaA == areaB && areaB > 0)) { -	 flags = dPriv->vblFlags | VBLANK_FLAG_SECONDARY; -      } else { -	 flags = dPriv->vblFlags & ~VBLANK_FLAG_SECONDARY; -      } - -      /* Do the stupid test: Is one of them actually disabled? -       */ -      if (sarea->planeA_w == 0 || sarea->planeA_h == 0) { -	 flags = dPriv->vblFlags | VBLANK_FLAG_SECONDARY; -      } else if (sarea->planeB_w == 0 || sarea->planeB_h == 0) { -	 flags = dPriv->vblFlags & ~VBLANK_FLAG_SECONDARY; -      } - -      return flags; -   } else { -      return dPriv->vblFlags & ~VBLANK_FLAG_SECONDARY; -   } -} - - -/** - * Called from driSwapBuffers() - */ -void -intelSwapBuffers(__DRIdrawablePrivate * dPriv) -{ -   __DRIscreenPrivate *psp = dPriv->driScreenPriv; - -   if (dPriv->driContextPriv && dPriv->driContextPriv->driverPrivate) { -      GET_CURRENT_CONTEXT(ctx); -      struct intel_context *intel; - -      if (ctx == NULL) -	 return; - -      intel = intel_context(ctx); - -      if (ctx->Visual.doubleBufferMode) { -	 GLboolean missed_target; -	 struct intel_framebuffer *intel_fb = dPriv->driverPrivate; -	 int64_t ust; -          -	 _mesa_notifySwapBuffers(ctx);  /* flush pending rendering comands */ - -	/* -	 * The old swapping ioctl was incredibly racy, just wait for vblank -	 * and do the swap ourselves. -	 */ -	 driWaitForVBlank(dPriv, &missed_target); - -	 /* -	  * Update each buffer's vbl_pending so we don't get too out of -	  * sync -	  */ -	 intel_get_renderbuffer(&intel_fb->Base, -		   		BUFFER_BACK_LEFT)->vbl_pending = dPriv->vblSeq; -         intel_get_renderbuffer(&intel_fb->Base, -		   		BUFFER_FRONT_LEFT)->vbl_pending = dPriv->vblSeq; - -	 intelCopyBuffer(dPriv, NULL); - -	 intel_fb->swap_count++; -	 (*psp->systemTime->getUST) (&ust); -	 if (missed_target) { -	    intel_fb->swap_missed_count++; -	    intel_fb->swap_missed_ust = ust - intel_fb->swap_ust; -	 } - -	 intel_fb->swap_ust = ust; -      } -      drmCommandNone(intel->driFd, DRM_I915_GEM_THROTTLE); -   } -   else { -      /* XXX this shouldn't be an error but we can't handle it for now */ -      fprintf(stderr, "%s: drawable has no context!\n", __FUNCTION__); -   } -} - - -/** - * Called from driCopySubBuffer() - */ -void -intelCopySubBuffer(__DRIdrawablePrivate * dPriv, int x, int y, int w, int h) -{ -   if (dPriv->driContextPriv && dPriv->driContextPriv->driverPrivate) { -      struct intel_context *intel = -         (struct intel_context *) dPriv->driContextPriv->driverPrivate; -      GLcontext *ctx = &intel->ctx; - -      if (ctx->Visual.doubleBufferMode) { -         drm_clip_rect_t rect; -         rect.x1 = x + dPriv->x; -         rect.y1 = (dPriv->h - y - h) + dPriv->y; -         rect.x2 = rect.x1 + w; -         rect.y2 = rect.y1 + h; -         _mesa_notifySwapBuffers(ctx);  /* flush pending rendering comands */ -         intelCopyBuffer(dPriv, &rect); -      } -   } -   else { -      /* XXX this shouldn't be an error but we can't handle it for now */ -      fprintf(stderr, "%s: drawable has no context!\n", __FUNCTION__); -   } -} - - -/** - * This will be called whenever the currently bound window is moved/resized. - * XXX: actually, it seems to NOT be called when the window is only moved (BP). - */ -void -intelWindowMoved(struct intel_context *intel) -{ -   GLcontext *ctx = &intel->ctx; -   __DRIdrawablePrivate *dPriv = intel->driDrawable; -   struct intel_framebuffer *intel_fb = dPriv->driverPrivate; - -   if (!intel->intelScreen->driScrnPriv->dri2.enabled && -       intel->intelScreen->driScrnPriv->ddx_version.minor >= 7) { -      GLuint flags = intelFixupVblank(intel, dPriv); - -      /* Check to see if we changed pipes */ -      if (flags != dPriv->vblFlags && dPriv->vblFlags && -	  !(dPriv->vblFlags & VBLANK_FLAG_NO_IRQ)) { -	 int64_t count; -	 drmVBlank vbl; -	 int i; - -	 /* -	  * Deal with page flipping -	  */ -	 vbl.request.type = DRM_VBLANK_ABSOLUTE; - -	 if ( dPriv->vblFlags & VBLANK_FLAG_SECONDARY ) { -	    vbl.request.type |= DRM_VBLANK_SECONDARY; -	 } - -	 for (i = 0; i < 2; i++) { -	    if (!intel_fb->color_rb[i] || -		(intel_fb->vbl_waited - intel_fb->color_rb[i]->vbl_pending) <= -		(1<<23)) -	       continue; - -	    vbl.request.sequence = intel_fb->color_rb[i]->vbl_pending; -	    drmWaitVBlank(intel->driFd, &vbl); -	 } - -	 /* -	  * Update msc_base from old pipe -	  */ -	 driDrawableGetMSC32(dPriv->driScreenPriv, dPriv, &count); -	 dPriv->msc_base = count; -	 /* -	  * Then get new vblank_base and vblSeq values -	  */ -	 dPriv->vblFlags = flags; -	 driGetCurrentVBlank(dPriv); -	 dPriv->vblank_base = dPriv->vblSeq; - -	 intel_fb->vbl_waited = dPriv->vblSeq; - -	 for (i = 0; i < 2; i++) { -	    if (intel_fb->color_rb[i]) -	       intel_fb->color_rb[i]->vbl_pending = intel_fb->vbl_waited; -	 } -      } -   } else { -      dPriv->vblFlags &= ~VBLANK_FLAG_SECONDARY; -   } - -   /* Update Mesa's notion of window size */ -   driUpdateFramebufferSize(ctx, dPriv); -   intel_fb->Base.Initialized = GL_TRUE; /* XXX remove someday */ - -   /* Update hardware scissor */ -   if (ctx->Driver.Scissor != NULL) { -      ctx->Driver.Scissor(ctx, ctx->Scissor.X, ctx->Scissor.Y, -			  ctx->Scissor.Width, ctx->Scissor.Height); -   } - -   /* Re-calculate viewport related state */ -   if (ctx->Driver.DepthRange != NULL) -      ctx->Driver.DepthRange( ctx, ctx->Viewport.Near, ctx->Viewport.Far ); -} diff --git a/src/mesa/drivers/dri/intel/intel_swapbuffers.h b/src/mesa/drivers/dri/intel/intel_swapbuffers.h deleted file mode 100644 index 75bb6242ff..0000000000 --- a/src/mesa/drivers/dri/intel/intel_swapbuffers.h +++ /dev/null @@ -1,52 +0,0 @@ - -/************************************************************************** - *  - * Copyright 2006 Tungsten Graphics, Inc., Cedar Park, Texas. - * 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 NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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 INTEL_SWAPBUFFERS_H -#define INTEL_SWAPBUFFERS_H - -#include "dri_util.h" -#include "drm.h" - -struct intel_context; -struct intel_framebuffer; - - -extern void -intelSwapBuffers(__DRIdrawablePrivate * dPriv); - -extern void -intelCopySubBuffer(__DRIdrawablePrivate * dPriv, int x, int y, int w, int h); - -extern GLuint -intelFixupVblank(struct intel_context *intel, __DRIdrawablePrivate *dPriv); - -extern void -intelWindowMoved(struct intel_context *intel); - - -#endif /* INTEL_SWAPBUFFERS_H */ diff --git a/src/mesa/drivers/dri/intel/intel_tex_copy.c b/src/mesa/drivers/dri/intel/intel_tex_copy.c index ef5aed32f3..d8e71093c4 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_copy.c +++ b/src/mesa/drivers/dri/intel/intel_tex_copy.c @@ -110,7 +110,6 @@ do_copy_texsubimage(struct intel_context *intel,     }     /* intelFlush(ctx); */ -   LOCK_HARDWARE(intel);     {        drm_intel_bo *dst_bo = intel_region_buffer(intel,  						 intelImage->mt->region, @@ -132,13 +131,12 @@ do_copy_texsubimage(struct intel_context *intel,        /* Can't blit to tiled buffers with non-tile-aligned offset. */        if (intelImage->mt->region->tiling == I915_TILING_Y) { -	 UNLOCK_HARDWARE(intel);  	 return GL_FALSE;        }        if (ctx->ReadBuffer->Name == 0) {  	 /* reading from a window, adjust x, y */ -	 const __DRIdrawablePrivate *dPriv = intel->driReadDrawable; +	 const __DRIdrawable *dPriv = intel->driReadDrawable;  	 y = dPriv->y + (dPriv->h - (y + height));  	 x += dPriv->x; @@ -170,13 +168,10 @@ do_copy_texsubimage(struct intel_context *intel,  			     image_x + dstx, image_y + dsty,  			     width, height,  			     GL_COPY)) { -	 UNLOCK_HARDWARE(intel);  	 return GL_FALSE;        }     } -   UNLOCK_HARDWARE(intel); -     return GL_TRUE;  } diff --git a/src/mesa/drivers/dri/intel/intel_tex_image.c b/src/mesa/drivers/dri/intel/intel_tex_image.c index 66d61f93ea..307669f87e 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_image.c +++ b/src/mesa/drivers/dri/intel/intel_tex_image.c @@ -235,7 +235,6 @@ try_pbo_upload(struct intel_context *intel,     if (drm_intel_bo_references(intel->batch->buf, dst_buffer))        intelFlush(&intel->ctx); -   LOCK_HARDWARE(intel);     {        dri_bo *src_buffer = intel_bufferobj_buffer(intel, pbo, INTEL_READ); @@ -245,11 +244,9 @@ try_pbo_upload(struct intel_context *intel,  			     dst_stride, dst_buffer, 0, GL_FALSE,  			     0, 0, dst_x, dst_y, width, height,  			     GL_COPY)) { -	 UNLOCK_HARDWARE(intel);  	 return GL_FALSE;        }     } -   UNLOCK_HARDWARE(intel);     return GL_TRUE;  } @@ -469,8 +466,6 @@ intelTexImage(GLcontext * ctx,  					   pixels, unpack, "glTexImage");     } -   LOCK_HARDWARE(intel); -     if (intelImage->mt) {        if (pixels != NULL) {  	 /* Flush any queued rendering with the texture before mapping. */ @@ -551,8 +546,6 @@ intelTexImage(GLcontext * ctx,           intel_miptree_image_unmap(intel, intelImage->mt);        texImage->Data = NULL;     } - -   UNLOCK_HARDWARE(intel);  } @@ -732,7 +725,7 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,  		   GLint glx_texture_format,  		   __DRIdrawable *dPriv)  { -   struct intel_framebuffer *intel_fb = dPriv->driverPrivate; +   struct gl_framebuffer *fb = dPriv->driverPrivate;     struct intel_context *intel = pDRICtx->driverPrivate;     GLcontext *ctx = &intel->ctx;     struct intel_texture_object *intelObj; @@ -751,7 +744,7 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,     intel_update_renderbuffers(pDRICtx, dPriv); -   rb = intel_fb->color_rb[0]; +   rb = intel_get_renderbuffer(fb, BUFFER_FRONT_LEFT);     /* If the region isn't set, then intel_update_renderbuffers was unable      * to get the buffers for the drawable.      */ diff --git a/src/mesa/drivers/dri/intel/intel_tex_subimage.c b/src/mesa/drivers/dri/intel/intel_tex_subimage.c index 1f68208266..7f1dc89022 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_subimage.c +++ b/src/mesa/drivers/dri/intel/intel_tex_subimage.c @@ -72,8 +72,6 @@ intelTexSubimage(GLcontext * ctx,     if (!pixels)        return; -   LOCK_HARDWARE(intel); -     /* Map buffer if necessary.  Need to lock to prevent other contexts      * from uploading the buffer under us.      */ @@ -129,8 +127,6 @@ intelTexSubimage(GLcontext * ctx,        intel_miptree_image_unmap(intel, intelImage->mt);        texImage->Data = NULL;     } - -   UNLOCK_HARDWARE(intel);  } diff --git a/src/mesa/drivers/dri/mach64/mach64_context.c b/src/mesa/drivers/dri/mach64/mach64_context.c index 2bca293b3c..3b4ef7ffd8 100644 --- a/src/mesa/drivers/dri/mach64/mach64_context.c +++ b/src/mesa/drivers/dri/mach64/mach64_context.c @@ -89,11 +89,11 @@ static const struct dri_extension card_extensions[] =  /* Create the device specific context.    */  GLboolean mach64CreateContext( const __GLcontextModes *glVisual, -			       __DRIcontextPrivate *driContextPriv, +			       __DRIcontext *driContextPriv,                                 void *sharedContextPrivate )  {     GLcontext *ctx, *shareCtx; -   __DRIscreenPrivate *driScreen = driContextPriv->driScreenPriv; +   __DRIscreen *driScreen = driContextPriv->driScreenPriv;     struct dd_function_table functions;     mach64ContextPtr mmesa;     mach64ScreenPtr mach64Screen; @@ -260,7 +260,7 @@ GLboolean mach64CreateContext( const __GLcontextModes *glVisual,  /* Destroy the device specific context.   */ -void mach64DestroyContext( __DRIcontextPrivate *driContextPriv  ) +void mach64DestroyContext( __DRIcontext *driContextPriv  )  {     mach64ContextPtr mmesa = (mach64ContextPtr) driContextPriv->driverPrivate; @@ -307,9 +307,9 @@ void mach64DestroyContext( __DRIcontextPrivate *driContextPriv  )   * buffer `b'.   */  GLboolean -mach64MakeCurrent( __DRIcontextPrivate *driContextPriv, -                 __DRIdrawablePrivate *driDrawPriv, -                 __DRIdrawablePrivate *driReadPriv ) +mach64MakeCurrent( __DRIcontext *driContextPriv, +                 __DRIdrawable *driDrawPriv, +                 __DRIdrawable *driReadPriv )  {     if ( driContextPriv ) {        GET_CURRENT_CONTEXT(ctx); @@ -352,7 +352,7 @@ mach64MakeCurrent( __DRIcontextPrivate *driContextPriv,  /* Force the context `c' to be unbound from its buffer.   */  GLboolean -mach64UnbindContext( __DRIcontextPrivate *driContextPriv ) +mach64UnbindContext( __DRIcontext *driContextPriv )  {     return GL_TRUE;  } diff --git a/src/mesa/drivers/dri/mach64/mach64_context.h b/src/mesa/drivers/dri/mach64/mach64_context.h index 854751626d..18fc859d01 100644 --- a/src/mesa/drivers/dri/mach64/mach64_context.h +++ b/src/mesa/drivers/dri/mach64/mach64_context.h @@ -232,9 +232,9 @@ struct mach64_context {     /* Mirrors of some DRI state      */ -   __DRIcontextPrivate	*driContext;	/* DRI context */ -   __DRIscreenPrivate	*driScreen;	/* DRI screen */ -   __DRIdrawablePrivate	*driDrawable;	/* DRI drawable bound to this ctx */ +   __DRIcontext	*driContext;	/* DRI context */ +   __DRIscreen	*driScreen;	/* DRI screen */ +   __DRIdrawable	*driDrawable;	/* DRI drawable bound to this ctx */     unsigned int lastStamp;		/* mirror driDrawable->lastStamp */ @@ -274,16 +274,16 @@ struct mach64_context {  extern GLboolean mach64CreateContext( const __GLcontextModes *glVisual, -				      __DRIcontextPrivate *driContextPriv, +				      __DRIcontext *driContextPriv,                                        void *sharedContextPrivate ); -extern void mach64DestroyContext( __DRIcontextPrivate * ); +extern void mach64DestroyContext( __DRIcontext * ); -extern GLboolean mach64MakeCurrent( __DRIcontextPrivate *driContextPriv, -                                    __DRIdrawablePrivate *driDrawPriv, -                                    __DRIdrawablePrivate *driReadPriv ); +extern GLboolean mach64MakeCurrent( __DRIcontext *driContextPriv, +                                    __DRIdrawable *driDrawPriv, +                                    __DRIdrawable *driReadPriv ); -extern GLboolean mach64UnbindContext( __DRIcontextPrivate *driContextPriv ); +extern GLboolean mach64UnbindContext( __DRIcontext *driContextPriv );  /* ================================================================   * Byte ordering diff --git a/src/mesa/drivers/dri/mach64/mach64_ioctl.c b/src/mesa/drivers/dri/mach64/mach64_ioctl.c index ef5c0625c3..03587c44fd 100644 --- a/src/mesa/drivers/dri/mach64/mach64_ioctl.c +++ b/src/mesa/drivers/dri/mach64/mach64_ioctl.c @@ -279,7 +279,7 @@ static int mach64WaitForFrameCompletion( mach64ContextPtr mmesa )  /* Copy the back color buffer to the front color buffer.   */ -void mach64CopyBuffer( __DRIdrawablePrivate *dPriv ) +void mach64CopyBuffer( __DRIdrawable *dPriv )  {     mach64ContextPtr mmesa;     GLint nbox, i, ret; @@ -668,7 +668,7 @@ void mach64PerformanceBoxesLocked( mach64ContextPtr mmesa )  static void mach64DDClear( GLcontext *ctx, GLbitfield mask )  {     mach64ContextPtr mmesa = MACH64_CONTEXT( ctx ); -   __DRIdrawablePrivate *dPriv = mmesa->driDrawable; +   __DRIdrawable *dPriv = mmesa->driDrawable;     drm_mach64_clear_t clear;     GLuint flags = 0;     GLint i; diff --git a/src/mesa/drivers/dri/mach64/mach64_ioctl.h b/src/mesa/drivers/dri/mach64/mach64_ioctl.h index 6ef9bc0bca..1ffda1932f 100644 --- a/src/mesa/drivers/dri/mach64/mach64_ioctl.h +++ b/src/mesa/drivers/dri/mach64/mach64_ioctl.h @@ -78,7 +78,7 @@ extern void mach64FireBlitLocked( mach64ContextPtr mmesa, void *buffer,  				  GLint offset, GLint pitch, GLint format,  				  GLint x, GLint y, GLint width, GLint height ); -extern void mach64CopyBuffer( __DRIdrawablePrivate *dPriv ); +extern void mach64CopyBuffer( __DRIdrawable *dPriv );  #if ENABLE_PERF_BOXES  extern void mach64PerformanceCounters( mach64ContextPtr mmesa );  extern void mach64PerformanceBoxesLocked( mach64ContextPtr mmesa ); diff --git a/src/mesa/drivers/dri/mach64/mach64_lock.c b/src/mesa/drivers/dri/mach64/mach64_lock.c index d018ba4174..8653c77da5 100644 --- a/src/mesa/drivers/dri/mach64/mach64_lock.c +++ b/src/mesa/drivers/dri/mach64/mach64_lock.c @@ -51,8 +51,8 @@ int   prevLockLine = 0;   */  void mach64GetLock( mach64ContextPtr mmesa, GLuint flags )  { -   __DRIdrawablePrivate *dPriv = mmesa->driDrawable; -   __DRIscreenPrivate *sPriv = mmesa->driScreen; +   __DRIdrawable *dPriv = mmesa->driDrawable; +   __DRIscreen *sPriv = mmesa->driScreen;     drm_mach64_sarea_t *sarea = mmesa->sarea;     int i; diff --git a/src/mesa/drivers/dri/mach64/mach64_screen.c b/src/mesa/drivers/dri/mach64/mach64_screen.c index 3b19cf5333..1ed3b0b70e 100644 --- a/src/mesa/drivers/dri/mach64/mach64_screen.c +++ b/src/mesa/drivers/dri/mach64/mach64_screen.c @@ -68,7 +68,7 @@ static const GLuint __driNConfigOptions = 2;  #endif  static const __DRIconfig ** -mach64FillInModes( __DRIscreenPrivate *psp, +mach64FillInModes( __DRIscreen *psp,  		   unsigned pixel_bits, unsigned depth_bits,  		   unsigned stencil_bits, GLboolean have_back_buffer )  { @@ -144,7 +144,7 @@ mach64FillInModes( __DRIscreenPrivate *psp,  /* Create the device specific screen private data struct.   */  static mach64ScreenRec * -mach64CreateScreen( __DRIscreenPrivate *sPriv ) +mach64CreateScreen( __DRIscreen *sPriv )  {     mach64ScreenPtr mach64Screen;     ATIDRIPtr serverInfo = (ATIDRIPtr)sPriv->pDevPriv; @@ -272,7 +272,7 @@ mach64CreateScreen( __DRIscreenPrivate *sPriv )  /* Destroy the device specific screen private data struct.   */  static void -mach64DestroyScreen( __DRIscreenPrivate *driScreen ) +mach64DestroyScreen( __DRIscreen *driScreen )  {     mach64ScreenRec *mach64Screen = (mach64ScreenRec *) driScreen->private; @@ -299,8 +299,8 @@ mach64DestroyScreen( __DRIscreenPrivate *driScreen )   * data.   */  static GLboolean -mach64CreateBuffer( __DRIscreenPrivate *driScrnPriv, -		    __DRIdrawablePrivate *driDrawPriv, +mach64CreateBuffer( __DRIscreen *driScrnPriv, +		    __DRIdrawable *driDrawPriv,  		    const __GLcontextModes *mesaVis,  		    GLboolean isPixmap )  { @@ -370,7 +370,7 @@ mach64CreateBuffer( __DRIscreenPrivate *driScrnPriv,  static void -mach64DestroyBuffer(__DRIdrawablePrivate *driDrawPriv) +mach64DestroyBuffer(__DRIdrawable *driDrawPriv)  {     _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL);  } @@ -378,7 +378,7 @@ mach64DestroyBuffer(__DRIdrawablePrivate *driDrawPriv)  /* Copy the back color buffer to the front color buffer */  static void -mach64SwapBuffers(__DRIdrawablePrivate *dPriv) +mach64SwapBuffers(__DRIdrawable *dPriv)  {     if (dPriv->driContextPriv && dPriv->driContextPriv->driverPrivate) {        mach64ContextPtr mmesa; @@ -400,7 +400,7 @@ mach64SwapBuffers(__DRIdrawablePrivate *dPriv)  /* Initialize the driver specific screen private data.   */  static GLboolean -mach64InitDriver( __DRIscreenPrivate *driScreen ) +mach64InitDriver( __DRIscreen *driScreen )  {     driScreen->private = (void *) mach64CreateScreen( driScreen ); @@ -420,7 +420,7 @@ mach64InitDriver( __DRIscreenPrivate *driScreen )   * \return the __GLcontextModes supported by this driver   */  static const __DRIconfig ** -mach64InitScreen(__DRIscreenPrivate *psp) +mach64InitScreen(__DRIscreen *psp)  {     static const __DRIversion ddx_expected = { 6, 4, 0 };     static const __DRIversion dri_expected = { 4, 0, 0 }; @@ -457,3 +457,9 @@ const struct __DriverAPIRec driDriverAPI = {     .SwapBuffersMSC  = NULL  }; +/* This is the table of extensions that the loader will dlsym() for. */ +PUBLIC const __DRIextension *__driDriverExtensions[] = { +    &driCoreExtension.base, +    &driLegacyExtension.base, +    NULL +}; diff --git a/src/mesa/drivers/dri/mach64/mach64_screen.h b/src/mesa/drivers/dri/mach64/mach64_screen.h index be5e29a3e5..1966809c03 100644 --- a/src/mesa/drivers/dri/mach64/mach64_screen.h +++ b/src/mesa/drivers/dri/mach64/mach64_screen.h @@ -70,7 +70,7 @@ typedef struct {     drmBufMapPtr buffers; -   __DRIscreenPrivate *driScreen; +   __DRIscreen *driScreen;     driOptionCache optionCache; diff --git a/src/mesa/drivers/dri/mach64/mach64_span.c b/src/mesa/drivers/dri/mach64/mach64_span.c index 500319e0e3..b4ba2a41c9 100644 --- a/src/mesa/drivers/dri/mach64/mach64_span.c +++ b/src/mesa/drivers/dri/mach64/mach64_span.c @@ -40,8 +40,8 @@  #define LOCAL_VARS							\     mach64ContextPtr mmesa = MACH64_CONTEXT(ctx);			\ -   __DRIscreenPrivate *sPriv = mmesa->driScreen;			\ -   __DRIdrawablePrivate *dPriv = mmesa->driDrawable;			\ +   __DRIscreen *sPriv = mmesa->driScreen;			\ +   __DRIdrawable *dPriv = mmesa->driDrawable;			\     driRenderbuffer *drb = (driRenderbuffer *) rb;			\     GLuint height = dPriv->h;						\     GLushort p;								\ @@ -49,8 +49,8 @@  #define LOCAL_DEPTH_VARS						\     mach64ContextPtr mmesa = MACH64_CONTEXT(ctx);			\ -   __DRIdrawablePrivate *dPriv = mmesa->driDrawable;			\ -   __DRIscreenPrivate *driScreen = mmesa->driScreen;			\ +   __DRIdrawable *dPriv = mmesa->driDrawable;			\ +   __DRIscreen *driScreen = mmesa->driScreen;			\     driRenderbuffer *drb = (driRenderbuffer *) rb;			\     GLuint height = dPriv->h;						\     char *buf = (char *)(driScreen->pFB + drb->offset +			\ diff --git a/src/mesa/drivers/dri/mach64/mach64_state.c b/src/mesa/drivers/dri/mach64/mach64_state.c index 902905de71..df7cbc8670 100644 --- a/src/mesa/drivers/dri/mach64/mach64_state.c +++ b/src/mesa/drivers/dri/mach64/mach64_state.c @@ -388,7 +388,7 @@ static void mach64UpdateClipping( GLcontext *ctx )     mach64ScreenPtr mach64Screen = mmesa->mach64Screen;     if ( mmesa->driDrawable ) { -      __DRIdrawablePrivate *drawable = mmesa->driDrawable; +      __DRIdrawable *drawable = mmesa->driDrawable;        int x1 = 0;        int y1 = 0;        int x2 = drawable->w - 1; @@ -689,7 +689,7 @@ static void mach64DDLogicOpCode( GLcontext *ctx, GLenum opcode )  void mach64SetCliprects( GLcontext *ctx, GLenum mode )  {     mach64ContextPtr mmesa = MACH64_CONTEXT(ctx); -   __DRIdrawablePrivate *dPriv = mmesa->driDrawable; +   __DRIdrawable *dPriv = mmesa->driDrawable;     switch ( mode ) {     case GL_FRONT_LEFT: diff --git a/src/mesa/drivers/dri/mga/mga_xmesa.c b/src/mesa/drivers/dri/mga/mga_xmesa.c index 2c7f50c498..f835cb8bd6 100644 --- a/src/mesa/drivers/dri/mga/mga_xmesa.c +++ b/src/mesa/drivers/dri/mga/mga_xmesa.c @@ -108,7 +108,7 @@ int MGA_DEBUG = 0;  #endif  static const __DRIconfig ** -mgaFillInModes( __DRIscreenPrivate *psp, +mgaFillInModes( __DRIscreen *psp,  		unsigned pixel_bits, unsigned depth_bits,  		unsigned stencil_bits, GLboolean have_back_buffer )  { @@ -190,7 +190,7 @@ const __DRIextension *mgaScreenExtensions[] = {  };  static GLboolean -mgaInitDriver(__DRIscreenPrivate *sPriv) +mgaInitDriver(__DRIscreen *sPriv)  {     mgaScreenPrivate *mgaScreen;     MGADRIPtr         serverInfo = (MGADRIPtr)sPriv->pDevPriv; @@ -332,7 +332,7 @@ mgaInitDriver(__DRIscreenPrivate *sPriv)  static void -mgaDestroyScreen(__DRIscreenPrivate *sPriv) +mgaDestroyScreen(__DRIscreen *sPriv)  {     mgaScreenPrivate *mgaScreen = (mgaScreenPrivate *) sPriv->private; @@ -426,14 +426,14 @@ static const struct dri_debug_control debug_control[] =  static GLboolean  mgaCreateContext( const __GLcontextModes *mesaVis, -                  __DRIcontextPrivate *driContextPriv, +                  __DRIcontext *driContextPriv,                    void *sharedContextPrivate )  {     int i;     unsigned   maxlevels;     GLcontext *ctx, *shareCtx;     mgaContextPtr mmesa; -   __DRIscreenPrivate *sPriv = driContextPriv->driScreenPriv; +   __DRIscreen *sPriv = driContextPriv->driScreenPriv;     mgaScreenPrivate *mgaScreen = (mgaScreenPrivate *)sPriv->private;     drm_mga_sarea_t *saPriv = (drm_mga_sarea_t *)(((char*)sPriv->pSAREA)+  					      mgaScreen->sarea_priv_offset); @@ -645,7 +645,7 @@ mgaCreateContext( const __GLcontextModes *mesaVis,  }  static void -mgaDestroyContext(__DRIcontextPrivate *driContextPriv) +mgaDestroyContext(__DRIcontext *driContextPriv)  {     mgaContextPtr mmesa = (mgaContextPtr) driContextPriv->driverPrivate; @@ -697,8 +697,8 @@ mgaDestroyContext(__DRIcontextPrivate *driContextPriv)  static GLboolean -mgaCreateBuffer( __DRIscreenPrivate *driScrnPriv, -                 __DRIdrawablePrivate *driDrawPriv, +mgaCreateBuffer( __DRIscreen *driScrnPriv, +                 __DRIdrawable *driDrawPriv,                   const __GLcontextModes *mesaVis,                   GLboolean isPixmap )  { @@ -814,13 +814,13 @@ mgaCreateBuffer( __DRIscreenPrivate *driScrnPriv,  static void -mgaDestroyBuffer(__DRIdrawablePrivate *driDrawPriv) +mgaDestroyBuffer(__DRIdrawable *driDrawPriv)  {     _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL);  }  static void -mgaSwapBuffers(__DRIdrawablePrivate *dPriv) +mgaSwapBuffers(__DRIdrawable *dPriv)  {     if (dPriv->driContextPriv && dPriv->driContextPriv->driverPrivate) {        mgaContextPtr mmesa; @@ -839,7 +839,7 @@ mgaSwapBuffers(__DRIdrawablePrivate *dPriv)  }  static GLboolean -mgaUnbindContext(__DRIcontextPrivate *driContextPriv) +mgaUnbindContext(__DRIcontext *driContextPriv)  {     mgaContextPtr mmesa = (mgaContextPtr) driContextPriv->driverPrivate;     if (mmesa) @@ -855,9 +855,9 @@ mgaUnbindContext(__DRIcontextPrivate *driContextPriv)   * But why are we doing context initialization here???   */  static GLboolean -mgaMakeCurrent(__DRIcontextPrivate *driContextPriv, -               __DRIdrawablePrivate *driDrawPriv, -               __DRIdrawablePrivate *driReadPriv) +mgaMakeCurrent(__DRIcontext *driContextPriv, +               __DRIdrawable *driDrawPriv, +               __DRIdrawable *driReadPriv)  {     if (driContextPriv) {        mgaContextPtr mmesa = (mgaContextPtr) driContextPriv->driverPrivate; @@ -892,7 +892,7 @@ mgaMakeCurrent(__DRIcontextPrivate *driContextPriv,  void mgaGetLock( mgaContextPtr mmesa, GLuint flags )  { -   __DRIdrawablePrivate *dPriv = mmesa->driDrawable; +   __DRIdrawable *dPriv = mmesa->driDrawable;     drm_mga_sarea_t *sarea = mmesa->sarea;     int me = mmesa->hHWContext;     int i; @@ -960,7 +960,7 @@ static const __DRIconfig **mgaInitScreen(__DRIscreen *psp)   * Get information about previous buffer swaps.   */  static int -getSwapInfo( __DRIdrawablePrivate *dPriv, __DRIswapInfo * sInfo ) +getSwapInfo( __DRIdrawable *dPriv, __DRIswapInfo * sInfo )  {     mgaContextPtr  mmesa; @@ -998,3 +998,10 @@ const struct __DriverAPIRec driDriverAPI = {     .WaitForSBC      = NULL,     .SwapBuffersMSC  = NULL  }; + +/* This is the table of extensions that the loader will dlsym() for. */ +PUBLIC const __DRIextension *__driDriverExtensions[] = { +    &driCoreExtension.base, +    &driLegacyExtension.base, +    NULL +}; diff --git a/src/mesa/drivers/dri/mga/mga_xmesa.h b/src/mesa/drivers/dri/mga/mga_xmesa.h index 07c22bd596..aee146090c 100644 --- a/src/mesa/drivers/dri/mga/mga_xmesa.h +++ b/src/mesa/drivers/dri/mga/mga_xmesa.h @@ -67,7 +67,7 @@ typedef struct mga_screen_private_s {     char *texVirtual[MGA_NR_TEX_HEAPS]; -   __DRIscreenPrivate *sPriv; +   __DRIscreen *sPriv;     drmBufMapPtr  bufs;     drmRegion mmio; diff --git a/src/mesa/drivers/dri/mga/mgacontext.h b/src/mesa/drivers/dri/mga/mgacontext.h index 30640a29b3..4141565931 100644 --- a/src/mesa/drivers/dri/mga/mgacontext.h +++ b/src/mesa/drivers/dri/mga/mgacontext.h @@ -294,10 +294,10 @@ struct mga_context_t {     drm_context_t hHWContext;     drm_hw_lock_t *driHwLock;     int driFd; -   __DRIdrawablePrivate *driDrawable; -   __DRIdrawablePrivate *driReadable; +   __DRIdrawable *driDrawable; +   __DRIdrawable *driReadable; -   __DRIscreenPrivate *driScreen; +   __DRIscreen *driScreen;     struct mga_screen_private_s *mgaScreen;     drm_mga_sarea_t *sarea; diff --git a/src/mesa/drivers/dri/mga/mgaioctl.c b/src/mesa/drivers/dri/mga/mgaioctl.c index 4438bad920..8ce5d802ab 100644 --- a/src/mesa/drivers/dri/mga/mgaioctl.c +++ b/src/mesa/drivers/dri/mga/mgaioctl.c @@ -207,7 +207,7 @@ static void  mgaClear( GLcontext *ctx, GLbitfield mask )  {     mgaContextPtr mmesa = MGA_CONTEXT(ctx); -   __DRIdrawablePrivate *dPriv = mmesa->driDrawable; +   __DRIdrawable *dPriv = mmesa->driDrawable;     GLuint flags = 0;     GLuint clear_color = mmesa->ClearColor;     GLuint clear_depth = 0; @@ -409,7 +409,7 @@ static void mgaWaitForFrameCompletion( mgaContextPtr mmesa )  /*   * Copy the back buffer to the front buffer.   */ -void mgaCopyBuffer( __DRIdrawablePrivate *dPriv ) +void mgaCopyBuffer( __DRIdrawable *dPriv )  {     mgaContextPtr mmesa;     drm_clip_rect_t *pbox; @@ -417,7 +417,7 @@ void mgaCopyBuffer( __DRIdrawablePrivate *dPriv )     GLint ret;     GLint i;     GLboolean   missed_target; -   __DRIscreenPrivate *psp = dPriv->driScreenPriv; +   __DRIscreen *psp = dPriv->driScreenPriv;     assert(dPriv);     assert(dPriv->driContextPriv); diff --git a/src/mesa/drivers/dri/mga/mgaioctl.h b/src/mesa/drivers/dri/mga/mgaioctl.h index dbc823de80..7a8660d203 100644 --- a/src/mesa/drivers/dri/mga/mgaioctl.h +++ b/src/mesa/drivers/dri/mga/mgaioctl.h @@ -32,7 +32,7 @@  #include "mgacontext.h"  #include "mga_xmesa.h" -void mgaCopyBuffer( __DRIdrawablePrivate *dPriv ); +void mgaCopyBuffer( __DRIdrawable *dPriv );  void mgaWaitForVBlank( mgaContextPtr mmesa );  void mgaGetILoadBufferLocked( mgaContextPtr mmesa ); diff --git a/src/mesa/drivers/dri/mga/mgapixel.c b/src/mesa/drivers/dri/mga/mgapixel.c index 05b30ba61e..69415f8a83 100644 --- a/src/mesa/drivers/dri/mga/mgapixel.c +++ b/src/mesa/drivers/dri/mga/mgapixel.c @@ -299,7 +299,7 @@ mgaTryReadPixels( GLcontext *ctx,  #if 0     { -      __DRIdrawablePrivate *dPriv = mmesa->driDrawable; +      __DRIdrawable *dPriv = mmesa->driDrawable;        int nbox, retcode, i;        UPDATE_LOCK( mmesa, DRM_LOCK_FLUSH | DRM_LOCK_QUIESCENT ); @@ -399,7 +399,7 @@ static void do_draw_pix( GLcontext *ctx,  #if 0     mgaContextPtr mmesa = MGA_CONTEXT(ctx);     drmMGABlit blit; -   __DRIdrawablePrivate *dPriv = mmesa->driDrawable; +   __DRIdrawable *dPriv = mmesa->driDrawable;     drm_clip_rect_t pbox = dPriv->pClipRects;     int nbox = dPriv->numClipRects;     int retcode, i; diff --git a/src/mesa/drivers/dri/mga/mgaspan.c b/src/mesa/drivers/dri/mga/mgaspan.c index 2ff1cac8e2..10606c152c 100644 --- a/src/mesa/drivers/dri/mga/mgaspan.c +++ b/src/mesa/drivers/dri/mga/mgaspan.c @@ -36,9 +36,9 @@  #define LOCAL_VARS					\     mgaContextPtr mmesa = MGA_CONTEXT(ctx);		\ -   __DRIscreenPrivate *sPriv = mmesa->driScreen;	\ +   __DRIscreen *sPriv = mmesa->driScreen;	\     driRenderbuffer *drb = (driRenderbuffer *) rb;	\ -   const __DRIdrawablePrivate *dPriv = drb->dPriv;	\ +   const __DRIdrawable *dPriv = drb->dPriv;	\     GLuint pitch = drb->pitch;				\     GLuint height = dPriv->h;				\     char *buf = (char *)(sPriv->pFB +			\ @@ -52,9 +52,9 @@  #define LOCAL_DEPTH_VARS						\     mgaContextPtr mmesa = MGA_CONTEXT(ctx);				\ -   __DRIscreenPrivate *sPriv = mmesa->driScreen;			\ +   __DRIscreen *sPriv = mmesa->driScreen;			\     driRenderbuffer *drb = (driRenderbuffer *) rb;			\ -   const __DRIdrawablePrivate *dPriv = drb->dPriv;			\ +   const __DRIdrawable *dPriv = drb->dPriv;			\     GLuint pitch = drb->pitch;						\     GLuint height = dPriv->h;						\     char *buf = (char *)(sPriv->pFB +					\ diff --git a/src/mesa/drivers/dri/mga/mgastate.c b/src/mesa/drivers/dri/mga/mgastate.c index 1e51057534..0253044761 100644 --- a/src/mesa/drivers/dri/mga/mgastate.c +++ b/src/mesa/drivers/dri/mga/mgastate.c @@ -746,7 +746,7 @@ static void mgaDDLogicOp( GLcontext *ctx, GLenum opcode )  static void mga_set_cliprects(mgaContextPtr mmesa)  { -   __DRIdrawablePrivate *driDrawable = mmesa->driDrawable; +   __DRIdrawable *driDrawable = mmesa->driDrawable;     if ((mmesa->draw_buffer != MGA_FRONT)         || (driDrawable->numBackClipRects == 0)) { @@ -774,8 +774,8 @@ static void mga_set_cliprects(mgaContextPtr mmesa)  void mgaUpdateRects( mgaContextPtr mmesa, GLuint buffers )  { -   __DRIdrawablePrivate *const driDrawable = mmesa->driDrawable; -   __DRIdrawablePrivate *const driReadable = mmesa->driReadable; +   __DRIdrawable *const driDrawable = mmesa->driDrawable; +   __DRIdrawable *const driReadable = mmesa->driReadable;     mmesa->dirty_cliprects = 0;	 diff --git a/src/mesa/drivers/dri/r128/r128_context.c b/src/mesa/drivers/dri/r128/r128_context.c index 0b250876c5..e389e1c87b 100644 --- a/src/mesa/drivers/dri/r128/r128_context.c +++ b/src/mesa/drivers/dri/r128/r128_context.c @@ -101,11 +101,11 @@ static const struct dri_debug_control debug_control[] =  /* Create the device specific context.   */  GLboolean r128CreateContext( const __GLcontextModes *glVisual, -			     __DRIcontextPrivate *driContextPriv, +			     __DRIcontext *driContextPriv,                               void *sharedContextPrivate )  {     GLcontext *ctx, *shareCtx; -   __DRIscreenPrivate *sPriv = driContextPriv->driScreenPriv; +   __DRIscreen *sPriv = driContextPriv->driScreenPriv;     struct dd_function_table functions;     r128ContextPtr rmesa;     r128ScreenPtr r128scrn; @@ -274,7 +274,7 @@ GLboolean r128CreateContext( const __GLcontextModes *glVisual,  /* Destroy the device specific context.   */ -void r128DestroyContext( __DRIcontextPrivate *driContextPriv  ) +void r128DestroyContext( __DRIcontext *driContextPriv  )  {     r128ContextPtr rmesa = (r128ContextPtr) driContextPriv->driverPrivate; @@ -325,9 +325,9 @@ void r128DestroyContext( __DRIcontextPrivate *driContextPriv  )   * buffer `b'.   */  GLboolean -r128MakeCurrent( __DRIcontextPrivate *driContextPriv, -                 __DRIdrawablePrivate *driDrawPriv, -                 __DRIdrawablePrivate *driReadPriv ) +r128MakeCurrent( __DRIcontext *driContextPriv, +                 __DRIdrawable *driDrawPriv, +                 __DRIdrawable *driReadPriv )  {     if ( driContextPriv ) {        GET_CURRENT_CONTEXT(ctx); @@ -364,7 +364,7 @@ r128MakeCurrent( __DRIcontextPrivate *driContextPriv,  /* Force the context `c' to be unbound from its buffer.   */  GLboolean -r128UnbindContext( __DRIcontextPrivate *driContextPriv ) +r128UnbindContext( __DRIcontext *driContextPriv )  {     return GL_TRUE;  } diff --git a/src/mesa/drivers/dri/r128/r128_context.h b/src/mesa/drivers/dri/r128/r128_context.h index 0e10209a6a..65f845c115 100644 --- a/src/mesa/drivers/dri/r128/r128_context.h +++ b/src/mesa/drivers/dri/r128/r128_context.h @@ -186,9 +186,9 @@ struct r128_context {     /* Mirrors of some DRI state      */ -   __DRIcontextPrivate	*driContext;	/* DRI context */ -   __DRIscreenPrivate	*driScreen;	/* DRI screen */ -   __DRIdrawablePrivate	*driDrawable;	/* DRI drawable bound to this ctx */ +   __DRIcontext	*driContext;	/* DRI context */ +   __DRIscreen	*driScreen;	/* DRI screen */ +   __DRIdrawable	*driDrawable;	/* DRI drawable bound to this ctx */     unsigned int lastStamp;	        /* mirror driDrawable->lastStamp */ @@ -225,16 +225,16 @@ struct r128_context {  extern GLboolean r128CreateContext( const __GLcontextModes *glVisual, -				    __DRIcontextPrivate *driContextPriv, +				    __DRIcontext *driContextPriv,                                      void *sharedContextPrivate ); -extern void r128DestroyContext( __DRIcontextPrivate * ); +extern void r128DestroyContext( __DRIcontext * ); -extern GLboolean r128MakeCurrent( __DRIcontextPrivate *driContextPriv, -                                  __DRIdrawablePrivate *driDrawPriv, -                                  __DRIdrawablePrivate *driReadPriv ); +extern GLboolean r128MakeCurrent( __DRIcontext *driContextPriv, +                                  __DRIdrawable *driDrawPriv, +                                  __DRIdrawable *driReadPriv ); -extern GLboolean r128UnbindContext( __DRIcontextPrivate *driContextPriv ); +extern GLboolean r128UnbindContext( __DRIcontext *driContextPriv );  /* ================================================================   * Debugging: diff --git a/src/mesa/drivers/dri/r128/r128_ioctl.c b/src/mesa/drivers/dri/r128/r128_ioctl.c index 84ac3d9f79..56758d971c 100644 --- a/src/mesa/drivers/dri/r128/r128_ioctl.c +++ b/src/mesa/drivers/dri/r128/r128_ioctl.c @@ -248,7 +248,7 @@ static int r128WaitForFrameCompletion( r128ContextPtr rmesa )  /* Copy the back color buffer to the front color buffer.   */ -void r128CopyBuffer( __DRIdrawablePrivate *dPriv ) +void r128CopyBuffer( __DRIdrawable *dPriv )  {     r128ContextPtr rmesa;     GLint nbox, i, ret; @@ -327,7 +327,7 @@ void r128CopyBuffer( __DRIdrawablePrivate *dPriv )  #endif  } -void r128PageFlip( __DRIdrawablePrivate *dPriv ) +void r128PageFlip( __DRIdrawable *dPriv )  {     r128ContextPtr rmesa;     GLint ret; @@ -401,7 +401,7 @@ void r128PageFlip( __DRIdrawablePrivate *dPriv )  static void r128Clear( GLcontext *ctx, GLbitfield mask )  {     r128ContextPtr rmesa = R128_CONTEXT(ctx); -   __DRIdrawablePrivate *dPriv = rmesa->driDrawable; +   __DRIdrawable *dPriv = rmesa->driDrawable;     drm_r128_clear_t clear;     GLuint flags = 0;     GLint i; diff --git a/src/mesa/drivers/dri/r128/r128_ioctl.h b/src/mesa/drivers/dri/r128/r128_ioctl.h index 4b0c9cdc7f..84ace900ee 100644 --- a/src/mesa/drivers/dri/r128/r128_ioctl.h +++ b/src/mesa/drivers/dri/r128/r128_ioctl.h @@ -85,8 +85,8 @@ extern void r128ReadDepthSpanLocked( r128ContextPtr rmesa,  extern void r128ReadDepthPixelsLocked( r128ContextPtr rmesa, GLuint n,  				       const GLint x[], const GLint y[] ); -extern void r128CopyBuffer( __DRIdrawablePrivate *dPriv ); -extern void r128PageFlip( __DRIdrawablePrivate *dPriv ); +extern void r128CopyBuffer( __DRIdrawable *dPriv ); +extern void r128PageFlip( __DRIdrawable *dPriv );  void r128WaitForVBlank( r128ContextPtr rmesa );  extern void r128WaitForIdleLocked( r128ContextPtr rmesa ); diff --git a/src/mesa/drivers/dri/r128/r128_lock.c b/src/mesa/drivers/dri/r128/r128_lock.c index 81488a2742..9bc3515b5a 100644 --- a/src/mesa/drivers/dri/r128/r128_lock.c +++ b/src/mesa/drivers/dri/r128/r128_lock.c @@ -68,8 +68,8 @@ r128UpdatePageFlipping( r128ContextPtr rmesa )   */  void r128GetLock( r128ContextPtr rmesa, GLuint flags )  { -   __DRIdrawablePrivate *dPriv = rmesa->driDrawable; -   __DRIscreenPrivate *sPriv = rmesa->driScreen; +   __DRIdrawable *dPriv = rmesa->driDrawable; +   __DRIscreen *sPriv = rmesa->driScreen;     drm_r128_sarea_t *sarea = rmesa->sarea;     int i; diff --git a/src/mesa/drivers/dri/r128/r128_screen.c b/src/mesa/drivers/dri/r128/r128_screen.c index 9da3b5fb73..80b265811e 100644 --- a/src/mesa/drivers/dri/r128/r128_screen.c +++ b/src/mesa/drivers/dri/r128/r128_screen.c @@ -91,7 +91,7 @@ static const GLuint __driNConfigOptions = 3;  /* Create the device specific screen private data struct.   */  static r128ScreenPtr -r128CreateScreen( __DRIscreenPrivate *sPriv ) +r128CreateScreen( __DRIscreen *sPriv )  {     r128ScreenPtr r128Screen;     R128DRIPtr r128DRIPriv = (R128DRIPtr)sPriv->pDevPriv; @@ -236,7 +236,7 @@ r128CreateScreen( __DRIscreenPrivate *sPriv )  /* Destroy the device specific screen private data struct.   */  static void -r128DestroyScreen( __DRIscreenPrivate *sPriv ) +r128DestroyScreen( __DRIscreen *sPriv )  {     r128ScreenPtr r128Screen = (r128ScreenPtr)sPriv->private; @@ -262,8 +262,8 @@ r128DestroyScreen( __DRIscreenPrivate *sPriv )   * data.   */  static GLboolean -r128CreateBuffer( __DRIscreenPrivate *driScrnPriv, -                  __DRIdrawablePrivate *driDrawPriv, +r128CreateBuffer( __DRIscreen *driScrnPriv, +                  __DRIdrawable *driDrawPriv,                    const __GLcontextModes *mesaVis,                    GLboolean isPixmap )  { @@ -349,7 +349,7 @@ r128CreateBuffer( __DRIscreenPrivate *driScrnPriv,  static void -r128DestroyBuffer(__DRIdrawablePrivate *driDrawPriv) +r128DestroyBuffer(__DRIdrawable *driDrawPriv)  {     _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL);  } @@ -357,7 +357,7 @@ r128DestroyBuffer(__DRIdrawablePrivate *driDrawPriv)  /* Copy the back color buffer to the front color buffer */  static void -r128SwapBuffers(__DRIdrawablePrivate *dPriv) +r128SwapBuffers(__DRIdrawable *dPriv)  {     if (dPriv->driContextPriv && dPriv->driContextPriv->driverPrivate) {        r128ContextPtr rmesa; @@ -384,7 +384,7 @@ r128SwapBuffers(__DRIdrawablePrivate *dPriv)  /* Initialize the driver specific screen private data.   */  static GLboolean -r128InitDriver( __DRIscreenPrivate *sPriv ) +r128InitDriver( __DRIscreen *sPriv )  {     sPriv->private = (void *) r128CreateScreen( sPriv ); @@ -397,7 +397,7 @@ r128InitDriver( __DRIscreenPrivate *sPriv )  }  static const __DRIconfig ** -r128FillInModes( __DRIscreenPrivate *psp, +r128FillInModes( __DRIscreen *psp,  		 unsigned pixel_bits, unsigned depth_bits,  		 unsigned stencil_bits, GLboolean have_back_buffer )  { @@ -478,7 +478,7 @@ r128FillInModes( __DRIscreenPrivate *psp,   * \return the __GLcontextModes supported by this driver   */  static const __DRIconfig ** -r128InitScreen(__DRIscreenPrivate *psp) +r128InitScreen(__DRIscreen *psp)  {     static const __DRIversion ddx_expected = { 4, 0, 0 };     static const __DRIversion dri_expected = { 4, 0, 0 }; @@ -517,3 +517,10 @@ const struct __DriverAPIRec driDriverAPI = {     .WaitForSBC      = NULL,     .SwapBuffersMSC  = NULL  }; + +/* This is the table of extensions that the loader will dlsym() for. */ +PUBLIC const __DRIextension *__driDriverExtensions[] = { +    &driCoreExtension.base, +    &driLegacyExtension.base, +    NULL +}; diff --git a/src/mesa/drivers/dri/r128/r128_screen.h b/src/mesa/drivers/dri/r128/r128_screen.h index e2fa1677c9..8d450adff3 100644 --- a/src/mesa/drivers/dri/r128/r128_screen.h +++ b/src/mesa/drivers/dri/r128/r128_screen.h @@ -71,7 +71,7 @@ typedef struct {     drmBufMapPtr buffers; -   __DRIscreenPrivate *driScreen; +   __DRIscreen *driScreen;     unsigned int sarea_priv_offset;     /* Configuration cache with default values for all contexts */ diff --git a/src/mesa/drivers/dri/r128/r128_span.c b/src/mesa/drivers/dri/r128/r128_span.c index d238cc3c94..0413e5b4f1 100644 --- a/src/mesa/drivers/dri/r128/r128_span.c +++ b/src/mesa/drivers/dri/r128/r128_span.c @@ -50,8 +50,8 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.  #define LOCAL_VARS							\     r128ContextPtr rmesa = R128_CONTEXT(ctx);				\ -   __DRIscreenPrivate *sPriv = rmesa->driScreen;			\ -   __DRIdrawablePrivate *dPriv = rmesa->driDrawable;			\ +   __DRIscreen *sPriv = rmesa->driScreen;			\ +   __DRIdrawable *dPriv = rmesa->driDrawable;			\     driRenderbuffer *drb = (driRenderbuffer *) rb;			\     GLuint height = dPriv->h;						\     GLuint p;								\ @@ -60,8 +60,8 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.  #define LOCAL_DEPTH_VARS						\     r128ContextPtr rmesa = R128_CONTEXT(ctx);				\     r128ScreenPtr r128scrn = rmesa->r128Screen;				\ -   __DRIscreenPrivate *sPriv = rmesa->driScreen;			\ -   __DRIdrawablePrivate *dPriv = rmesa->driDrawable;			\ +   __DRIscreen *sPriv = rmesa->driScreen;			\ +   __DRIdrawable *dPriv = rmesa->driDrawable;			\     GLuint height = dPriv->h;						\     (void) r128scrn; (void) sPriv; (void) height diff --git a/src/mesa/drivers/dri/r128/r128_state.c b/src/mesa/drivers/dri/r128/r128_state.c index ac175d59ec..2254a7a4ff 100644 --- a/src/mesa/drivers/dri/r128/r128_state.c +++ b/src/mesa/drivers/dri/r128/r128_state.c @@ -572,7 +572,7 @@ static void r128UpdateClipping( GLcontext *ctx )     r128ContextPtr rmesa = R128_CONTEXT(ctx);     if ( rmesa->driDrawable ) { -      __DRIdrawablePrivate *drawable = rmesa->driDrawable; +      __DRIdrawable *drawable = rmesa->driDrawable;        int x1 = 0;        int y1 = 0;        int x2 = drawable->w - 1; diff --git a/src/mesa/drivers/dri/r200/r200_context.c b/src/mesa/drivers/dri/r200/r200_context.c index 5f985d624d..f34e319222 100644 --- a/src/mesa/drivers/dri/r200/r200_context.c +++ b/src/mesa/drivers/dri/r200/r200_context.c @@ -274,10 +274,10 @@ static void r200_init_vtbl(radeonContextPtr radeon)  /* Create the device specific rendering context.   */  GLboolean r200CreateContext( const __GLcontextModes *glVisual, -			     __DRIcontextPrivate *driContextPriv, +			     __DRIcontext *driContextPriv,  			     void *sharedContextPrivate)  { -   __DRIscreenPrivate *sPriv = driContextPriv->driScreenPriv; +   __DRIscreen *sPriv = driContextPriv->driScreenPriv;     radeonScreenPtr screen = (radeonScreenPtr)(sPriv->private);     struct dd_function_table functions;     r200ContextPtr rmesa; @@ -496,7 +496,7 @@ GLboolean r200CreateContext( const __GLcontextModes *glVisual,  } -void r200DestroyContext( __DRIcontextPrivate *driContextPriv ) +void r200DestroyContext( __DRIcontext *driContextPriv )  {  	int i;  	r200ContextPtr rmesa = (r200ContextPtr)driContextPriv->driverPrivate; diff --git a/src/mesa/drivers/dri/r200/r200_context.h b/src/mesa/drivers/dri/r200/r200_context.h index 246f98c6dc..17e4d8962e 100644 --- a/src/mesa/drivers/dri/r200/r200_context.h +++ b/src/mesa/drivers/dri/r200/r200_context.h @@ -636,14 +636,14 @@ struct r200_context {  #define R200_CONTEXT(ctx)		((r200ContextPtr)(ctx->DriverCtx)) -extern void r200DestroyContext( __DRIcontextPrivate *driContextPriv ); +extern void r200DestroyContext( __DRIcontext *driContextPriv );  extern GLboolean r200CreateContext( const __GLcontextModes *glVisual, -				    __DRIcontextPrivate *driContextPriv, +				    __DRIcontext *driContextPriv,  				    void *sharedContextPrivate); -extern GLboolean r200MakeCurrent( __DRIcontextPrivate *driContextPriv, -				  __DRIdrawablePrivate *driDrawPriv, -				  __DRIdrawablePrivate *driReadPriv ); -extern GLboolean r200UnbindContext( __DRIcontextPrivate *driContextPriv ); +extern GLboolean r200MakeCurrent( __DRIcontext *driContextPriv, +				  __DRIdrawable *driDrawPriv, +				  __DRIdrawable *driReadPriv ); +extern GLboolean r200UnbindContext( __DRIcontext *driContextPriv );  /* ================================================================   * Debugging: diff --git a/src/mesa/drivers/dri/r200/r200_ioctl.c b/src/mesa/drivers/dri/r200/r200_ioctl.c index b238adb972..66c5d3655a 100644 --- a/src/mesa/drivers/dri/r200/r200_ioctl.c +++ b/src/mesa/drivers/dri/r200/r200_ioctl.c @@ -61,7 +61,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  static void r200KernelClear(GLcontext *ctx, GLuint flags)  {     r200ContextPtr rmesa = R200_CONTEXT(ctx); -   __DRIdrawablePrivate *dPriv = radeon_get_drawable(&rmesa->radeon); +   __DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon);     GLint cx, cy, cw, ch, ret;     GLuint i; @@ -185,7 +185,7 @@ static void r200KernelClear(GLcontext *ctx, GLuint flags)  static void r200Clear( GLcontext *ctx, GLbitfield mask )  {     r200ContextPtr rmesa = R200_CONTEXT(ctx); -   __DRIdrawablePrivate *dPriv = radeon_get_drawable(&rmesa->radeon); +   __DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon);     GLuint flags = 0;     GLuint color_mask = 0;     GLuint orig_mask = mask; diff --git a/src/mesa/drivers/dri/r200/r200_pixel.c b/src/mesa/drivers/dri/r200/r200_pixel.c index 94e43c7d66..bfb7e2a2ed 100644 --- a/src/mesa/drivers/dri/r200/r200_pixel.c +++ b/src/mesa/drivers/dri/r200/r200_pixel.c @@ -214,7 +214,7 @@ r200TryReadPixels( GLcontext *ctx,     }     { -      __DRIdrawablePrivate *dPriv = rmesa->radeon.dri.drawable; +      __DRIdrawable *dPriv = rmesa->radeon.dri.drawable;        driRenderbuffer *drb = (driRenderbuffer *) ctx->ReadBuffer->_ColorReadBuffer;        int nbox = dPriv->numClipRects;        int src_offset = drb->offset @@ -298,7 +298,7 @@ static void do_draw_pix( GLcontext *ctx,  #if 0     r200ContextPtr rmesa = R200_CONTEXT(ctx); -   __DRIdrawablePrivate *dPriv = radeon_get_drawable(&rmesa->radeon); +   __DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon);     drm_clip_rect_t *box = dPriv->pClipRects;     struct gl_renderbuffer *rb = ctx->ReadBuffer->_ColorDrawBuffers[0];     driRenderbuffer *drb = (driRenderbuffer *) rb; diff --git a/src/mesa/drivers/dri/r200/r200_state.c b/src/mesa/drivers/dri/r200/r200_state.c index 529cb62264..7fe482fe15 100644 --- a/src/mesa/drivers/dri/r200/r200_state.c +++ b/src/mesa/drivers/dri/r200/r200_state.c @@ -1585,7 +1585,7 @@ static void r200ClearStencil( GLcontext *ctx, GLint s )  void r200UpdateWindow( GLcontext *ctx )  {     r200ContextPtr rmesa = R200_CONTEXT(ctx); -   __DRIdrawablePrivate *dPriv = radeon_get_drawable(&rmesa->radeon); +   __DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon);     GLfloat xoffset = dPriv ? (GLfloat) dPriv->x : 0;     GLfloat yoffset = dPriv ? (GLfloat) dPriv->y + dPriv->h : 0;     const GLfloat *v = ctx->Viewport._WindowMap.m; @@ -1665,7 +1665,7 @@ static void r200DepthRange( GLcontext *ctx, GLclampd nearval,  void r200UpdateViewportOffset( GLcontext *ctx )  {     r200ContextPtr rmesa = R200_CONTEXT(ctx); -   __DRIdrawablePrivate *dPriv = radeon_get_drawable(&rmesa->radeon); +   __DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon);     GLfloat xoffset = (GLfloat)dPriv->x;     GLfloat yoffset = (GLfloat)dPriv->y + dPriv->h;     const GLfloat *v = ctx->Viewport._WindowMap.m; diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index 3c6ec2a34a..1f6ccf6ddc 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -463,10 +463,10 @@ static void r300InitIoctlFuncs(struct dd_function_table *functions)  /* Create the device specific rendering context.   */  GLboolean r300CreateContext(const __GLcontextModes * glVisual, -			    __DRIcontextPrivate * driContextPriv, +			    __DRIcontext * driContextPriv,  			    void *sharedContextPrivate)  { -	__DRIscreenPrivate *sPriv = driContextPriv->driScreenPriv; +	__DRIscreen *sPriv = driContextPriv->driScreenPriv;  	radeonScreenPtr screen = (radeonScreenPtr) (sPriv->private);  	struct dd_function_table functions;  	r300ContextPtr r300; diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index 54a92a2e44..546cd8ddde 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -543,9 +543,9 @@ struct r300_context {  #define R300_CONTEXT(ctx)		((r300ContextPtr)(ctx->DriverCtx)) -extern void r300DestroyContext(__DRIcontextPrivate * driContextPriv); +extern void r300DestroyContext(__DRIcontext * driContextPriv);  extern GLboolean r300CreateContext(const __GLcontextModes * glVisual, -				   __DRIcontextPrivate * driContextPriv, +				   __DRIcontext * driContextPriv,  				   void *sharedContextPrivate);  extern void r300InitShaderFuncs(struct dd_function_table *functions); diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index f90bfd4f4f..c51285aad9 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -997,7 +997,7 @@ static void r300StencilOpSeparate(GLcontext * ctx, GLenum face,  static void r300UpdateWindow(GLcontext * ctx)  {  	r300ContextPtr rmesa = R300_CONTEXT(ctx); -	__DRIdrawablePrivate *dPriv = radeon_get_drawable(&rmesa->radeon); +	__DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon);  	GLfloat xoffset = dPriv ? (GLfloat) dPriv->x : 0;  	GLfloat yoffset = dPriv ? (GLfloat) dPriv->y + dPriv->h : 0;  	const GLfloat *v = ctx->Viewport._WindowMap.m; @@ -1050,7 +1050,7 @@ static void r300DepthRange(GLcontext * ctx, GLclampd nearval, GLclampd farval)  void r300UpdateViewportOffset(GLcontext * ctx)  {  	r300ContextPtr rmesa = R300_CONTEXT(ctx); -	__DRIdrawablePrivate *dPriv = radeon_get_drawable(&rmesa->radeon); +	__DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon);  	GLfloat xoffset = (GLfloat) dPriv->x;  	GLfloat yoffset = (GLfloat) dPriv->y + dPriv->h;  	const GLfloat *v = ctx->Viewport._WindowMap.m; @@ -2040,7 +2040,7 @@ static const GLfloat *get_fragmentprogram_constant(GLcontext *ctx, GLuint index,  		}  		case RC_STATE_R300_WINDOW_DIMENSION: { -			__DRIdrawablePrivate * drawable = radeon_get_drawable(&rmesa->radeon); +			__DRIdrawable * drawable = radeon_get_drawable(&rmesa->radeon);  			buffer[0] = drawable->w * 0.5f;	/* width*0.5 */  			buffer[1] = drawable->h * 0.5f;	/* height*0.5 */  			buffer[2] = 0.5F;	/* for moving range [-1 1] -> [0 1] */ diff --git a/src/mesa/drivers/dri/r600/r600_context.c b/src/mesa/drivers/dri/r600/r600_context.c index 8f6264aaa2..cb549497f5 100644 --- a/src/mesa/drivers/dri/r600/r600_context.c +++ b/src/mesa/drivers/dri/r600/r600_context.c @@ -347,10 +347,10 @@ static void r600InitGLExtensions(GLcontext *ctx)  /* Create the device specific rendering context.   */  GLboolean r600CreateContext(const __GLcontextModes * glVisual, -			    __DRIcontextPrivate * driContextPriv, +			    __DRIcontext * driContextPriv,  			    void *sharedContextPrivate)  { -	__DRIscreenPrivate *sPriv = driContextPriv->driScreenPriv; +	__DRIscreen *sPriv = driContextPriv->driScreenPriv;  	radeonScreenPtr screen = (radeonScreenPtr) (sPriv->private);  	struct dd_function_table functions;  	context_t *r600; diff --git a/src/mesa/drivers/dri/r600/r600_context.h b/src/mesa/drivers/dri/r600/r600_context.h index 94662ab547..a1b4af715e 100644 --- a/src/mesa/drivers/dri/r600/r600_context.h +++ b/src/mesa/drivers/dri/r600/r600_context.h @@ -154,7 +154,7 @@ struct r600_context {  #define GL_CONTEXT(context)     ((GLcontext *)(context->radeon.glCtx))  extern GLboolean r600CreateContext(const __GLcontextModes * glVisual, -				   __DRIcontextPrivate * driContextPriv, +				   __DRIcontext * driContextPriv,  				   void *sharedContextPrivate);  #define R700_CONTEXT_STATES(context) ((R700_CHIP_CONTEXT *)(&context->hw)) diff --git a/src/mesa/drivers/dri/r600/r700_clear.c b/src/mesa/drivers/dri/r600/r700_clear.c index c0ac54a844..98bfdd0937 100644 --- a/src/mesa/drivers/dri/r600/r700_clear.c +++ b/src/mesa/drivers/dri/r600/r700_clear.c @@ -49,7 +49,7 @@ static GLboolean r700ClearFast(context_t *context, GLbitfield mask)  void r700Clear(GLcontext * ctx, GLbitfield mask)  {      context_t *context = R700_CONTEXT(ctx); -    __DRIdrawablePrivate *dPriv = radeon_get_drawable(&context->radeon); +    __DRIdrawable *dPriv = radeon_get_drawable(&context->radeon);      const GLuint colorMask = *((GLuint *) & ctx->Color.ColorMask[0]);      GLbitfield swrast_mask = 0, tri_mask = 0;      int i; diff --git a/src/mesa/drivers/dri/r600/r700_state.c b/src/mesa/drivers/dri/r600/r700_state.c index fc6fb29fd6..3c8cb579f9 100644 --- a/src/mesa/drivers/dri/r600/r700_state.c +++ b/src/mesa/drivers/dri/r600/r700_state.c @@ -85,7 +85,7 @@ void r700UpdateViewportOffset(GLcontext * ctx) //------------------  {  	context_t *context = R700_CONTEXT(ctx);  	R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); -	__DRIdrawablePrivate *dPriv = radeon_get_drawable(&context->radeon); +	__DRIdrawable *dPriv = radeon_get_drawable(&context->radeon);  	GLfloat xoffset = (GLfloat) dPriv->x;  	GLfloat yoffset = (GLfloat) dPriv->y + dPriv->h;  	const GLfloat *v = ctx->Viewport._WindowMap.m; @@ -1071,7 +1071,7 @@ static void r700UpdateWindow(GLcontext * ctx, int id) //--------------------  {  	context_t *context = R700_CONTEXT(ctx);  	R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); -	__DRIdrawablePrivate *dPriv = radeon_get_drawable(&context->radeon); +	__DRIdrawable *dPriv = radeon_get_drawable(&context->radeon);  	GLfloat xoffset = dPriv ? (GLfloat) dPriv->x : 0;  	GLfloat yoffset = dPriv ? (GLfloat) dPriv->y + dPriv->h : 0;  	const GLfloat *v = ctx->Viewport._WindowMap.m; diff --git a/src/mesa/drivers/dri/radeon/radeon_common.c b/src/mesa/drivers/dri/radeon/radeon_common.c index c0b3165dda..e0b853bc97 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common.c +++ b/src/mesa/drivers/dri/radeon/radeon_common.c @@ -137,7 +137,7 @@ void radeon_get_cliprects(radeonContextPtr radeon,  			  unsigned int *num_cliprects,  			  int *x_off, int *y_off)  { -	__DRIdrawablePrivate *dPriv = radeon_get_drawable(radeon); +	__DRIdrawable *dPriv = radeon_get_drawable(radeon);  	struct radeon_framebuffer *rfb = dPriv->driverPrivate;  	if (radeon->constant_cliprect) { @@ -169,8 +169,8 @@ void radeon_get_cliprects(radeonContextPtr radeon,   */  void radeonSetCliprects(radeonContextPtr radeon)  { -	__DRIdrawablePrivate *const drawable = radeon_get_drawable(radeon); -	__DRIdrawablePrivate *const readable = radeon_get_readable(radeon); +	__DRIdrawable *const drawable = radeon_get_drawable(radeon); +	__DRIdrawable *const readable = radeon_get_readable(radeon);  	struct radeon_framebuffer *const draw_rfb = drawable->driverPrivate;  	struct radeon_framebuffer *const read_rfb = readable->driverPrivate;  	int x_off, y_off; @@ -229,7 +229,7 @@ void radeonUpdateScissor( GLcontext *ctx )  	}  	if (!rmesa->radeonScreen->kernel_mm) {  	   /* Fix scissors for dri 1 */ -	   __DRIdrawablePrivate *dPriv = radeon_get_drawable(rmesa); +	   __DRIdrawable *dPriv = radeon_get_drawable(rmesa);  	   x1 += dPriv->x;  	   x2 += dPriv->x + 1;  	   min_x += dPriv->x; @@ -428,7 +428,7 @@ static void radeon_flip_renderbuffers(struct radeon_framebuffer *rfb)  /* Copy the back color buffer to the front color buffer.   */ -void radeonCopyBuffer( __DRIdrawablePrivate *dPriv, +void radeonCopyBuffer( __DRIdrawable *dPriv,  		       const drm_clip_rect_t	  *rect)  {  	radeonContextPtr rmesa; @@ -496,7 +496,7 @@ void radeonCopyBuffer( __DRIdrawablePrivate *dPriv,  	UNLOCK_HARDWARE( rmesa );  } -static int radeonScheduleSwap(__DRIdrawablePrivate *dPriv, GLboolean *missed_target) +static int radeonScheduleSwap(__DRIdrawable *dPriv, GLboolean *missed_target)  {  	radeonContextPtr rmesa; @@ -519,11 +519,11 @@ static int radeonScheduleSwap(__DRIdrawablePrivate *dPriv, GLboolean *missed_tar  	return 0;  } -static GLboolean radeonPageFlip( __DRIdrawablePrivate *dPriv ) +static GLboolean radeonPageFlip( __DRIdrawable *dPriv )  {  	radeonContextPtr radeon;  	GLint ret; -	__DRIscreenPrivate *psp; +	__DRIscreen *psp;  	struct radeon_renderbuffer *rrb;  	struct radeon_framebuffer *rfb; @@ -571,10 +571,10 @@ static GLboolean radeonPageFlip( __DRIdrawablePrivate *dPriv )  /**   * Swap front and back buffer.   */ -void radeonSwapBuffers(__DRIdrawablePrivate * dPriv) +void radeonSwapBuffers(__DRIdrawable * dPriv)  {  	int64_t ust; -	__DRIscreenPrivate *psp; +	__DRIscreen *psp;  	if (dPriv->driContextPriv && dPriv->driContextPriv->driverPrivate) {  		radeonContextPtr radeon; @@ -615,7 +615,7 @@ void radeonSwapBuffers(__DRIdrawablePrivate * dPriv)  	}  } -void radeonCopySubBuffer(__DRIdrawablePrivate * dPriv, +void radeonCopySubBuffer(__DRIdrawable * dPriv,  			 int x, int y, int w, int h )  {  	if (dPriv->driContextPriv && dPriv->driContextPriv->driverPrivate) { @@ -1130,7 +1130,7 @@ flush_front:  		if (screen->dri2.loader && (screen->dri2.loader->base.version >= 2)  			&& (screen->dri2.loader->flushFrontBuffer != NULL)) { -			__DRIdrawablePrivate * drawable = radeon_get_drawable(radeon); +			__DRIdrawable * drawable = radeon_get_drawable(radeon);  			(*screen->dri2.loader->flushFrontBuffer)(drawable, drawable->loaderPrivate);  			/* Only clear the dirty bit if front-buffer rendering is no longer diff --git a/src/mesa/drivers/dri/radeon/radeon_common.h b/src/mesa/drivers/dri/radeon/radeon_common.h index faad145cc4..f31f08edf3 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common.h +++ b/src/mesa/drivers/dri/radeon/radeon_common.h @@ -13,10 +13,10 @@ void radeonScissor(GLcontext* ctx, GLint x, GLint y, GLsizei w, GLsizei h);  void radeonWaitForIdleLocked(radeonContextPtr radeon);  extern uint32_t radeonGetAge(radeonContextPtr radeon); -void radeonCopyBuffer( __DRIdrawablePrivate *dPriv, +void radeonCopyBuffer( __DRIdrawable *dPriv,  		       const drm_clip_rect_t	  *rect); -void radeonSwapBuffers(__DRIdrawablePrivate * dPriv); -void radeonCopySubBuffer(__DRIdrawablePrivate * dPriv, +void radeonSwapBuffers(__DRIdrawable * dPriv); +void radeonCopySubBuffer(__DRIdrawable * dPriv,  			 int x, int y, int w, int h );  void radeonUpdatePageFlipping(radeonContextPtr rmesa); @@ -42,7 +42,7 @@ void  radeon_renderbuffer_set_bo(struct radeon_renderbuffer *rb,  			   struct radeon_bo *bo);  struct radeon_renderbuffer * -radeon_create_renderbuffer(gl_format format, __DRIdrawablePrivate *driDrawPriv); +radeon_create_renderbuffer(gl_format format, __DRIdrawable *driDrawPriv);  void radeon_check_front_buffer_rendering(GLcontext *ctx);  static inline struct radeon_renderbuffer *radeon_renderbuffer(struct gl_renderbuffer *rb) diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.c b/src/mesa/drivers/dri/radeon/radeon_common_context.c index 5c68bf5df6..b9c29b937e 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common_context.c +++ b/src/mesa/drivers/dri/radeon/radeon_common_context.c @@ -181,10 +181,10 @@ static void radeonInitDriverFuncs(struct dd_function_table *functions)  GLboolean radeonInitContext(radeonContextPtr radeon,  			    struct dd_function_table* functions,  			    const __GLcontextModes * glVisual, -			    __DRIcontextPrivate * driContextPriv, +			    __DRIcontext * driContextPriv,  			    void *sharedContextPrivate)  { -	__DRIscreenPrivate *sPriv = driContextPriv->driScreenPriv; +	__DRIscreen *sPriv = driContextPriv->driScreenPriv;  	radeonScreenPtr screen = (radeonScreenPtr) (sPriv->private);  	GLcontext* ctx;  	GLcontext* shareCtx; @@ -291,7 +291,7 @@ static void radeon_destroy_atom_list(radeonContextPtr radeon)   * Cleanup common context fields.   * Called by r200DestroyContext/r300DestroyContext   */ -void radeonDestroyContext(__DRIcontextPrivate *driContextPriv ) +void radeonDestroyContext(__DRIcontext *driContextPriv )  {  #ifdef RADEON_BO_TRACK  	FILE *track; @@ -355,7 +355,7 @@ void radeonDestroyContext(__DRIcontextPrivate *driContextPriv )  /* Force the context `c' to be unbound from its buffer.   */ -GLboolean radeonUnbindContext(__DRIcontextPrivate * driContextPriv) +GLboolean radeonUnbindContext(__DRIcontext * driContextPriv)  {  	radeonContextPtr radeon = (radeonContextPtr) driContextPriv->driverPrivate; @@ -720,9 +720,9 @@ radeon_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable,  /* Force the context `c' to be the current context and associate with it   * buffer `b'.   */ -GLboolean radeonMakeCurrent(__DRIcontextPrivate * driContextPriv, -			    __DRIdrawablePrivate * driDrawPriv, -			    __DRIdrawablePrivate * driReadPriv) +GLboolean radeonMakeCurrent(__DRIcontext * driContextPriv, +			    __DRIdrawable * driDrawPriv, +			    __DRIdrawable * driReadPriv)  {  	radeonContextPtr radeon;  	struct radeon_framebuffer *drfb; diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.h b/src/mesa/drivers/dri/radeon/radeon_common_context.h index 0739496e03..ab79d2dc0f 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common_context.h +++ b/src/mesa/drivers/dri/radeon/radeon_common_context.h @@ -92,7 +92,7 @@ struct radeon_renderbuffer  	GLuint pf_pending;  /**< sequence number of pending flip */  	GLuint vbl_pending;   /**< vblank sequence number of pending flip */ -	__DRIdrawablePrivate *dPriv; +	__DRIdrawable *dPriv;  };  struct radeon_framebuffer @@ -381,8 +381,8 @@ struct radeon_store {  };  struct radeon_dri_mirror { -	__DRIcontextPrivate *context;	/* DRI context */ -	__DRIscreenPrivate *screen;	/* DRI screen */ +	__DRIcontext *context;	/* DRI context */ +	__DRIscreen *screen;	/* DRI screen */  	drm_context_t hwContext;  	drm_hw_lock_t *hwLock; @@ -523,12 +523,12 @@ struct radeon_context {  #define RADEON_CONTEXT(glctx) ((radeonContextPtr)(ctx->DriverCtx)) -static inline __DRIdrawablePrivate* radeon_get_drawable(radeonContextPtr radeon) +static inline __DRIdrawable* radeon_get_drawable(radeonContextPtr radeon)  {  	return radeon->dri.context->driDrawablePriv;  } -static inline __DRIdrawablePrivate* radeon_get_readable(radeonContextPtr radeon) +static inline __DRIdrawable* radeon_get_readable(radeonContextPtr radeon)  {  	return radeon->dri.context->driReadablePriv;  } @@ -581,16 +581,16 @@ static INLINE uint32_t radeonPackFloat24(float f)  GLboolean radeonInitContext(radeonContextPtr radeon,  			    struct dd_function_table* functions,  			    const __GLcontextModes * glVisual, -			    __DRIcontextPrivate * driContextPriv, +			    __DRIcontext * driContextPriv,  			    void *sharedContextPrivate);  void radeonCleanupContext(radeonContextPtr radeon); -GLboolean radeonUnbindContext(__DRIcontextPrivate * driContextPriv); +GLboolean radeonUnbindContext(__DRIcontext * driContextPriv);  void radeon_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable,  				 GLboolean front_only); -GLboolean radeonMakeCurrent(__DRIcontextPrivate * driContextPriv, -			    __DRIdrawablePrivate * driDrawPriv, -			    __DRIdrawablePrivate * driReadPriv); -extern void radeonDestroyContext(__DRIcontextPrivate * driContextPriv); +GLboolean radeonMakeCurrent(__DRIcontext * driContextPriv, +			    __DRIdrawable * driDrawPriv, +			    __DRIdrawable * driReadPriv); +extern void radeonDestroyContext(__DRIcontext * driContextPriv);  #endif diff --git a/src/mesa/drivers/dri/radeon/radeon_context.c b/src/mesa/drivers/dri/radeon/radeon_context.c index 5e700be4a5..3cd305b0a2 100644 --- a/src/mesa/drivers/dri/radeon/radeon_context.c +++ b/src/mesa/drivers/dri/radeon/radeon_context.c @@ -208,10 +208,10 @@ static void r100_init_vtbl(radeonContextPtr radeon)   */  GLboolean  r100CreateContext( const __GLcontextModes *glVisual, -                     __DRIcontextPrivate *driContextPriv, +                     __DRIcontext *driContextPriv,                       void *sharedContextPrivate)  { -   __DRIscreenPrivate *sPriv = driContextPriv->driScreenPriv; +   __DRIscreen *sPriv = driContextPriv->driScreenPriv;     radeonScreenPtr screen = (radeonScreenPtr)(sPriv->private);     struct dd_function_table functions;     r100ContextPtr rmesa; diff --git a/src/mesa/drivers/dri/radeon/radeon_context.h b/src/mesa/drivers/dri/radeon/radeon_context.h index 12ab33a009..dfedc38bfd 100644 --- a/src/mesa/drivers/dri/radeon/radeon_context.h +++ b/src/mesa/drivers/dri/radeon/radeon_context.h @@ -451,7 +451,7 @@ struct r100_context {  #define RADEON_OLD_PACKETS 1  extern GLboolean r100CreateContext( const __GLcontextModes *glVisual, -				    __DRIcontextPrivate *driContextPriv, +				    __DRIcontext *driContextPriv,  				    void *sharedContextPrivate); diff --git a/src/mesa/drivers/dri/radeon/radeon_fbo.c b/src/mesa/drivers/dri/radeon/radeon_fbo.c index a536436d55..7b1f84a715 100644 --- a/src/mesa/drivers/dri/radeon/radeon_fbo.c +++ b/src/mesa/drivers/dri/radeon/radeon_fbo.c @@ -247,7 +247,7 @@ radeon_nop_alloc_storage(GLcontext * ctx, struct gl_renderbuffer *rb,   * Not used for user-created renderbuffers.   */  struct radeon_renderbuffer * -radeon_create_renderbuffer(gl_format format, __DRIdrawablePrivate *driDrawPriv) +radeon_create_renderbuffer(gl_format format, __DRIdrawable *driDrawPriv)  {      struct radeon_renderbuffer *rrb; diff --git a/src/mesa/drivers/dri/radeon/radeon_ioctl.c b/src/mesa/drivers/dri/radeon/radeon_ioctl.c index 13fd6f9971..a9d50c5d07 100644 --- a/src/mesa/drivers/dri/radeon/radeon_ioctl.c +++ b/src/mesa/drivers/dri/radeon/radeon_ioctl.c @@ -449,7 +449,7 @@ void radeonEmitAOS( r100ContextPtr rmesa,  static void radeonKernelClear(GLcontext *ctx, GLuint flags)  {       r100ContextPtr rmesa = R100_CONTEXT(ctx); -   __DRIdrawablePrivate *dPriv = radeon_get_drawable(&rmesa->radeon); +   __DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon);     drm_radeon_sarea_t *sarea = rmesa->radeon.sarea;     uint32_t clear;     GLint ret, i; @@ -570,7 +570,7 @@ static void radeonKernelClear(GLcontext *ctx, GLuint flags)  static void radeonClear( GLcontext *ctx, GLbitfield mask )  {     r100ContextPtr rmesa = R100_CONTEXT(ctx); -   __DRIdrawablePrivate *dPriv = radeon_get_drawable(&rmesa->radeon); +   __DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon);     GLuint flags = 0;     GLuint color_mask = 0;     GLuint orig_mask = mask; diff --git a/src/mesa/drivers/dri/radeon/radeon_lock.c b/src/mesa/drivers/dri/radeon/radeon_lock.c index 7ad781ba61..9dee691938 100644 --- a/src/mesa/drivers/dri/radeon/radeon_lock.c +++ b/src/mesa/drivers/dri/radeon/radeon_lock.c @@ -58,9 +58,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.   */  void radeonGetLock(radeonContextPtr rmesa, GLuint flags)  { -	__DRIdrawablePrivate *const drawable = radeon_get_drawable(rmesa); -	__DRIdrawablePrivate *const readable = radeon_get_readable(rmesa); -	__DRIscreenPrivate *sPriv = rmesa->dri.screen; +	__DRIdrawable *const drawable = radeon_get_drawable(rmesa); +	__DRIdrawable *const readable = radeon_get_readable(rmesa); +	__DRIscreen *sPriv = rmesa->dri.screen;  	drmGetLock(rmesa->dri.fd, rmesa->dri.hwContext, flags); diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c index be2d8365ef..3080a0fcd0 100644 --- a/src/mesa/drivers/dri/radeon/radeon_screen.c +++ b/src/mesa/drivers/dri/radeon/radeon_screen.c @@ -214,10 +214,10 @@ static const GLuint __driNConfigOptions = 17;  #endif -static int getSwapInfo( __DRIdrawablePrivate *dPriv, __DRIswapInfo * sInfo ); +static int getSwapInfo( __DRIdrawable *dPriv, __DRIswapInfo * sInfo );  static int -radeonGetParam(__DRIscreenPrivate *sPriv, int param, void *value) +radeonGetParam(__DRIscreen *sPriv, int param, void *value)  {    int ret;    drm_radeon_getparam_t gp = { 0 }; @@ -249,7 +249,7 @@ radeonGetParam(__DRIscreenPrivate *sPriv, int param, void *value)  }  static const __DRIconfig ** -radeonFillInModes( __DRIscreenPrivate *psp, +radeonFillInModes( __DRIscreen *psp,  		   unsigned pixel_bits, unsigned depth_bits,  		   unsigned stencil_bits, GLboolean have_back_buffer )  { @@ -911,7 +911,7 @@ static int radeon_set_screen_flags(radeonScreenPtr screen, int device_id)  /* Create the device specific screen private data struct.   */  static radeonScreenPtr -radeonCreateScreen( __DRIscreenPrivate *sPriv ) +radeonCreateScreen( __DRIscreen *sPriv )  {     radeonScreenPtr screen;     RADEONDRIPtr dri_priv = (RADEONDRIPtr)sPriv->pDevPriv; @@ -1250,7 +1250,7 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )  }  static radeonScreenPtr -radeonCreateScreen2(__DRIscreenPrivate *sPriv) +radeonCreateScreen2(__DRIscreen *sPriv)  {     radeonScreenPtr screen;     int i; @@ -1401,7 +1401,7 @@ radeonCreateScreen2(__DRIscreenPrivate *sPriv)  /* Destroy the device specific screen private data struct.   */  static void -radeonDestroyScreen( __DRIscreenPrivate *sPriv ) +radeonDestroyScreen( __DRIscreen *sPriv )  {      radeonScreenPtr screen = (radeonScreenPtr)sPriv->private; @@ -1435,7 +1435,7 @@ radeonDestroyScreen( __DRIscreenPrivate *sPriv )  /* Initialize the driver specific screen private data.   */  static GLboolean -radeonInitDriver( __DRIscreenPrivate *sPriv ) +radeonInitDriver( __DRIscreen *sPriv )  {      if (sPriv->dri2.enabled) {          sPriv->private = (void *) radeonCreateScreen2( sPriv ); @@ -1459,8 +1459,8 @@ radeonInitDriver( __DRIscreenPrivate *sPriv )   * pbuffers.   */  static GLboolean -radeonCreateBuffer( __DRIscreenPrivate *driScrnPriv, -                    __DRIdrawablePrivate *driDrawPriv, +radeonCreateBuffer( __DRIscreen *driScrnPriv, +                    __DRIdrawable *driDrawPriv,                      const __GLcontextModes *mesaVis,                      GLboolean isPixmap )  { @@ -1559,7 +1559,7 @@ static void radeon_cleanup_renderbuffers(struct radeon_framebuffer *rfb)  }  void -radeonDestroyBuffer(__DRIdrawablePrivate *driDrawPriv) +radeonDestroyBuffer(__DRIdrawable *driDrawPriv)  {      struct radeon_framebuffer *rfb;      if (!driDrawPriv) @@ -1581,7 +1581,7 @@ radeonDestroyBuffer(__DRIdrawablePrivate *driDrawPriv)   * \return the __GLcontextModes supported by this driver   */  static const __DRIconfig ** -radeonInitScreen(__DRIscreenPrivate *psp) +radeonInitScreen(__DRIscreen *psp)  {  #if defined(RADEON_R100)     static const char *driver_name = "Radeon"; @@ -1631,7 +1631,7 @@ radeonInitScreen(__DRIscreenPrivate *psp)   * \return the __GLcontextModes supported by this driver   */  static const -__DRIconfig **radeonInitScreen2(__DRIscreenPrivate *psp) +__DRIconfig **radeonInitScreen2(__DRIscreen *psp)  {     GLenum fb_format[3];     GLenum fb_type[3]; @@ -1698,7 +1698,7 @@ __DRIconfig **radeonInitScreen2(__DRIscreenPrivate *psp)   * Get information about previous buffer swaps.   */  static int -getSwapInfo( __DRIdrawablePrivate *dPriv, __DRIswapInfo * sInfo ) +getSwapInfo( __DRIdrawable *dPriv, __DRIswapInfo * sInfo )  {      struct radeon_framebuffer *rfb; @@ -1751,3 +1751,10 @@ const struct __DriverAPIRec driDriverAPI = {     .InitScreen2     = radeonInitScreen2,  }; +/* This is the table of extensions that the loader will dlsym() for. */ +PUBLIC const __DRIextension *__driDriverExtensions[] = { +    &driCoreExtension.base, +    &driLegacyExtension.base, +    &driDRI2Extension.base, +    NULL +}; diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.h b/src/mesa/drivers/dri/radeon/radeon_screen.h index 15744e8828..5e6d432e11 100644 --- a/src/mesa/drivers/dri/radeon/radeon_screen.h +++ b/src/mesa/drivers/dri/radeon/radeon_screen.h @@ -86,7 +86,7 @@ typedef struct radeon_screen {     __volatile__ uint32_t *scratch; -   __DRIscreenPrivate *driScreen; +   __DRIscreen *driScreen;     unsigned int sarea_priv_offset;     unsigned int gart_buffer_offset;	/* offset in card memory space */     unsigned int gart_texture_offset;	/* offset in card memory space */ @@ -123,5 +123,5 @@ typedef struct radeon_screen {  #define IS_R600_CLASS(screen) \  	((screen->chip_flags & RADEON_CLASS_MASK) == RADEON_CLASS_R600) -extern void radeonDestroyBuffer(__DRIdrawablePrivate *driDrawPriv); +extern void radeonDestroyBuffer(__DRIdrawable *driDrawPriv);  #endif /* __RADEON_SCREEN_H__ */ diff --git a/src/mesa/drivers/dri/radeon/radeon_state.c b/src/mesa/drivers/dri/radeon/radeon_state.c index 1fcb545204..1c9ec36dae 100644 --- a/src/mesa/drivers/dri/radeon/radeon_state.c +++ b/src/mesa/drivers/dri/radeon/radeon_state.c @@ -1400,7 +1400,7 @@ static void radeonClearStencil( GLcontext *ctx, GLint s )  void radeonUpdateWindow( GLcontext *ctx )  {     r100ContextPtr rmesa = R100_CONTEXT(ctx); -   __DRIdrawablePrivate *dPriv = radeon_get_drawable(&rmesa->radeon); +   __DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon);     GLfloat xoffset = dPriv ? (GLfloat) dPriv->x : 0;     GLfloat yoffset = dPriv ? (GLfloat) dPriv->y + dPriv->h : 0;     const GLfloat *v = ctx->Viewport._WindowMap.m; @@ -1455,7 +1455,7 @@ static void radeonDepthRange( GLcontext *ctx, GLclampd nearval,  void radeonUpdateViewportOffset( GLcontext *ctx )  {     r100ContextPtr rmesa = R100_CONTEXT(ctx); -   __DRIdrawablePrivate *dPriv = radeon_get_drawable(&rmesa->radeon); +   __DRIdrawable *dPriv = radeon_get_drawable(&rmesa->radeon);     GLfloat xoffset = (GLfloat)dPriv->x;     GLfloat yoffset = (GLfloat)dPriv->y + dPriv->h;     const GLfloat *v = ctx->Viewport._WindowMap.m; diff --git a/src/mesa/drivers/dri/savage/savage_init.h b/src/mesa/drivers/dri/savage/savage_init.h index abb8440fc4..bfd3077d70 100644 --- a/src/mesa/drivers/dri/savage/savage_init.h +++ b/src/mesa/drivers/dri/savage/savage_init.h @@ -66,7 +66,7 @@ typedef struct {     unsigned int logTextureGranularity[SAVAGE_NR_TEX_HEAPS];     drmAddress texVirtual[SAVAGE_NR_TEX_HEAPS]; -   __DRIscreenPrivate *driScrnPriv; +   __DRIscreen *driScrnPriv;     savageRegion aperture;     savageRegion agpTextures; diff --git a/src/mesa/drivers/dri/savage/savage_xmesa.c b/src/mesa/drivers/dri/savage/savage_xmesa.c index d307b81e8e..8e879ca41c 100644 --- a/src/mesa/drivers/dri/savage/savage_xmesa.c +++ b/src/mesa/drivers/dri/savage/savage_xmesa.c @@ -168,7 +168,7 @@ PUBLIC const __DRIextension *savageScreenExtensions[] = {  };  static GLboolean -savageInitDriver(__DRIscreenPrivate *sPriv) +savageInitDriver(__DRIscreen *sPriv)  {    savageScreenPrivate *savageScreen;    SAVAGEDRIPtr         gDRIPriv = (SAVAGEDRIPtr)sPriv->pDevPriv; @@ -272,7 +272,7 @@ savageInitDriver(__DRIscreenPrivate *sPriv)  /* Accessed by dlsym from dri_mesa_init.c   */  static void -savageDestroyScreen(__DRIscreenPrivate *sPriv) +savageDestroyScreen(__DRIscreen *sPriv)  {     savageScreenPrivate *savageScreen = (savageScreenPrivate *)sPriv->private; @@ -288,12 +288,12 @@ savageDestroyScreen(__DRIscreenPrivate *sPriv)  static GLboolean  savageCreateContext( const __GLcontextModes *mesaVis, -		     __DRIcontextPrivate *driContextPriv, +		     __DRIcontext *driContextPriv,  		     void *sharedContextPrivate )  {     GLcontext *ctx, *shareCtx;     savageContextPtr imesa; -   __DRIscreenPrivate *sPriv = driContextPriv->driScreenPriv; +   __DRIscreen *sPriv = driContextPriv->driScreenPriv;     struct dd_function_table functions;     savageScreenPrivate *savageScreen = (savageScreenPrivate *)sPriv->private;     drm_savage_sarea_t *saPriv=(drm_savage_sarea_t *)(((char*)sPriv->pSAREA)+ @@ -546,7 +546,7 @@ savageCreateContext( const __GLcontextModes *mesaVis,  }  static void -savageDestroyContext(__DRIcontextPrivate *driContextPriv) +savageDestroyContext(__DRIcontext *driContextPriv)  {     savageContextPtr imesa = (savageContextPtr) driContextPriv->driverPrivate;     GLuint i; @@ -580,8 +580,8 @@ savageDestroyContext(__DRIcontextPrivate *driContextPriv)  static GLboolean -savageCreateBuffer( __DRIscreenPrivate *driScrnPriv, -		    __DRIdrawablePrivate *driDrawPriv, +savageCreateBuffer( __DRIscreen *driScrnPriv, +		    __DRIdrawable *driDrawPriv,  		    const __GLcontextModes *mesaVis,  		    GLboolean isPixmap)  { @@ -675,13 +675,13 @@ savageCreateBuffer( __DRIscreenPrivate *driScrnPriv,  }  static void -savageDestroyBuffer(__DRIdrawablePrivate *driDrawPriv) +savageDestroyBuffer(__DRIdrawable *driDrawPriv)  {     _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL);  }  #if 0 -void XMesaSwapBuffers(__DRIdrawablePrivate *driDrawPriv) +void XMesaSwapBuffers(__DRIdrawable *driDrawPriv)  {     /* XXX should do swap according to the buffer, not the context! */     savageContextPtr imesa = savageCtx;  @@ -694,7 +694,7 @@ void XMesaSwapBuffers(__DRIdrawablePrivate *driDrawPriv)  void savageXMesaSetClipRects(savageContextPtr imesa)  { -   __DRIdrawablePrivate *dPriv = imesa->driDrawable; +   __DRIdrawable *dPriv = imesa->driDrawable;     if ((dPriv->numBackClipRects == 0)         || (imesa->glCtx->DrawBuffer->_ColorDrawBufferIndexes[0] == BUFFER_FRONT_LEFT)) { @@ -715,8 +715,8 @@ void savageXMesaSetClipRects(savageContextPtr imesa)  static void savageXMesaWindowMoved( savageContextPtr imesa )   { -   __DRIdrawablePrivate *const drawable = imesa->driDrawable; -   __DRIdrawablePrivate *const readable = imesa->driReadable; +   __DRIdrawable *const drawable = imesa->driDrawable; +   __DRIdrawable *const readable = imesa->driReadable;     if (0)        fprintf(stderr, "savageXMesaWindowMoved\n\n"); @@ -731,7 +731,7 @@ static void savageXMesaWindowMoved( savageContextPtr imesa )  static GLboolean -savageUnbindContext(__DRIcontextPrivate *driContextPriv) +savageUnbindContext(__DRIcontext *driContextPriv)  {     savageContextPtr savage = (savageContextPtr) driContextPriv->driverPrivate;     if (savage) @@ -742,7 +742,7 @@ savageUnbindContext(__DRIcontextPrivate *driContextPriv)  #if 0  static GLboolean -savageOpenFullScreen(__DRIcontextPrivate *driContextPriv) +savageOpenFullScreen(__DRIcontext *driContextPriv)  { @@ -761,7 +761,7 @@ savageOpenFullScreen(__DRIcontextPrivate *driContextPriv)  }  static GLboolean -savageCloseFullScreen(__DRIcontextPrivate *driContextPriv) +savageCloseFullScreen(__DRIcontext *driContextPriv)  {      if (driContextPriv) { @@ -777,9 +777,9 @@ savageCloseFullScreen(__DRIcontextPrivate *driContextPriv)  #endif  static GLboolean -savageMakeCurrent(__DRIcontextPrivate *driContextPriv, -		  __DRIdrawablePrivate *driDrawPriv, -		  __DRIdrawablePrivate *driReadPriv) +savageMakeCurrent(__DRIcontext *driContextPriv, +		  __DRIdrawable *driDrawPriv, +		  __DRIdrawable *driReadPriv)  {     if (driContextPriv) {        savageContextPtr imesa @@ -816,9 +816,9 @@ savageMakeCurrent(__DRIcontextPrivate *driContextPriv,  void savageGetLock( savageContextPtr imesa, GLuint flags )   { -   __DRIdrawablePrivate *const drawable = imesa->driDrawable; -   __DRIdrawablePrivate *const readable = imesa->driReadable; -   __DRIscreenPrivate *sPriv = imesa->driScreen; +   __DRIdrawable *const drawable = imesa->driDrawable; +   __DRIdrawable *const readable = imesa->driReadable; +   __DRIscreen *sPriv = imesa->driScreen;     drm_savage_sarea_t *sarea = imesa->sarea;     int me = imesa->hHWContext;     int stamp = drawable->lastStamp;  @@ -883,7 +883,7 @@ void savageGetLock( savageContextPtr imesa, GLuint flags )  }  static const  __DRIconfig ** -savageFillInModes( __DRIscreenPrivate *psp, +savageFillInModes( __DRIscreen *psp,  		   unsigned pixel_bits, unsigned depth_bits,  		   unsigned stencil_bits, GLboolean have_back_buffer )  { @@ -967,7 +967,7 @@ savageFillInModes( __DRIscreenPrivate *psp,   * \return the __GLcontextModes supported by this driver   */  static const __DRIconfig ** -savageInitScreen(__DRIscreenPrivate *psp) +savageInitScreen(__DRIscreen *psp)  {     static const __DRIversion ddx_expected = { 2, 0, 0 };     static const __DRIversion dri_expected = { 4, 0, 0 }; @@ -1001,3 +1001,10 @@ const struct __DriverAPIRec driDriverAPI = {     savageMakeCurrent,     savageUnbindContext  }; + +/* This is the table of extensions that the loader will dlsym() for. */ +PUBLIC const __DRIextension *__driDriverExtensions[] = { +    &driCoreExtension.base, +    &driLegacyExtension.base, +    NULL +}; diff --git a/src/mesa/drivers/dri/savage/savagecontext.h b/src/mesa/drivers/dri/savage/savagecontext.h index 53a37db1cb..ba1e6e1e1a 100644 --- a/src/mesa/drivers/dri/savage/savagecontext.h +++ b/src/mesa/drivers/dri/savage/savagecontext.h @@ -271,10 +271,10 @@ struct savage_context_t {      drm_hw_lock_t *driHwLock;      GLuint driFd; -    __DRIdrawablePrivate *driDrawable; -    __DRIdrawablePrivate *driReadable; +    __DRIdrawable *driDrawable; +    __DRIdrawable *driReadable; -    __DRIscreenPrivate *driScreen; +    __DRIscreen *driScreen;      savageScreenPrivate *savageScreen;       drm_savage_sarea_t *sarea; diff --git a/src/mesa/drivers/dri/savage/savageioctl.c b/src/mesa/drivers/dri/savage/savageioctl.c index 706fc97935..d0b64e801a 100644 --- a/src/mesa/drivers/dri/savage/savageioctl.c +++ b/src/mesa/drivers/dri/savage/savageioctl.c @@ -433,7 +433,7 @@ static void savageDDClear( GLcontext *ctx, GLbitfield mask )  /*   * Copy the back buffer to the front buffer.    */ -void savageSwapBuffers( __DRIdrawablePrivate *dPriv ) +void savageSwapBuffers( __DRIdrawable *dPriv )  {     savageContextPtr imesa; @@ -537,7 +537,7 @@ void savageFlushVertices( savageContextPtr imesa )  void savageFlushCmdBufLocked( savageContextPtr imesa, GLboolean discard )  { -    __DRIdrawablePrivate *dPriv = imesa->driDrawable; +    __DRIdrawable *dPriv = imesa->driDrawable;      if (!imesa->dmaVtxBuf.total)  	discard = GL_FALSE; diff --git a/src/mesa/drivers/dri/savage/savageioctl.h b/src/mesa/drivers/dri/savage/savageioctl.h index 639605cc51..e7e80816c1 100644 --- a/src/mesa/drivers/dri/savage/savageioctl.h +++ b/src/mesa/drivers/dri/savage/savageioctl.h @@ -39,7 +39,7 @@ void savageFlushCmdBuf( savageContextPtr imesa, GLboolean discard );  void savageDDInitIoctlFuncs( GLcontext *ctx ); -void savageSwapBuffers( __DRIdrawablePrivate *dPriv ); +void savageSwapBuffers( __DRIdrawable *dPriv );  #define WAIT_IDLE_EMPTY(imesa) do { \      if (SAVAGE_DEBUG & DEBUG_VERBOSE_MSG) \ diff --git a/src/mesa/drivers/dri/savage/savagespan.c b/src/mesa/drivers/dri/savage/savagespan.c index 3bb6fbcc63..792e166d9c 100644 --- a/src/mesa/drivers/dri/savage/savagespan.c +++ b/src/mesa/drivers/dri/savage/savagespan.c @@ -34,7 +34,7 @@  #define LOCAL_VARS						\     driRenderbuffer *drb = (driRenderbuffer *) rb;		\ -   __DRIdrawablePrivate *const dPriv = drb->dPriv;		\ +   __DRIdrawable *const dPriv = drb->dPriv;		\     GLuint cpp   = drb->cpp;					\     GLuint pitch = drb->pitch;					\     GLuint height = dPriv->h;					\ @@ -44,7 +44,7 @@  #define LOCAL_DEPTH_VARS					\     driRenderbuffer *drb = (driRenderbuffer *) rb;		\ -   __DRIdrawablePrivate *const dPriv = drb->dPriv;		\ +   __DRIdrawable *const dPriv = drb->dPriv;		\     GLuint zpp   = drb->cpp;					\     GLuint pitch = drb->pitch;					\     GLuint height = dPriv->h;					\ diff --git a/src/mesa/drivers/dri/sis/sis_context.c b/src/mesa/drivers/dri/sis/sis_context.c index 346e8c5568..0944f4d8b4 100644 --- a/src/mesa/drivers/dri/sis/sis_context.c +++ b/src/mesa/drivers/dri/sis/sis_context.c @@ -162,11 +162,11 @@ void sisReAllocateBuffers(GLcontext *ctx, GLframebuffer *drawbuffer,  GLboolean  sisCreateContext( const __GLcontextModes *glVisual, -		  __DRIcontextPrivate *driContextPriv, +		  __DRIcontext *driContextPriv,                    void *sharedContextPrivate )  {     GLcontext *ctx, *shareCtx; -   __DRIscreenPrivate *sPriv = driContextPriv->driScreenPriv; +   __DRIscreen *sPriv = driContextPriv->driScreenPriv;     sisContextPtr smesa;     sisScreenPtr sisScreen;     int i; @@ -339,7 +339,7 @@ sisCreateContext( const __GLcontextModes *glVisual,  }  void -sisDestroyContext ( __DRIcontextPrivate *driContextPriv ) +sisDestroyContext ( __DRIcontext *driContextPriv )  {     sisContextPtr smesa = (sisContextPtr)driContextPriv->driverPrivate; @@ -367,9 +367,9 @@ sisDestroyContext ( __DRIcontextPrivate *driContextPriv )  }  GLboolean -sisMakeCurrent( __DRIcontextPrivate *driContextPriv, -                __DRIdrawablePrivate *driDrawPriv, -                __DRIdrawablePrivate *driReadPriv ) +sisMakeCurrent( __DRIcontext *driContextPriv, +                __DRIdrawable *driDrawPriv, +                __DRIdrawable *driReadPriv )  {     if ( driContextPriv ) {        GET_CURRENT_CONTEXT(ctx); @@ -398,7 +398,7 @@ sisMakeCurrent( __DRIcontextPrivate *driContextPriv,  }  GLboolean -sisUnbindContext( __DRIcontextPrivate *driContextPriv ) +sisUnbindContext( __DRIcontext *driContextPriv )  {     return GL_TRUE;  } diff --git a/src/mesa/drivers/dri/sis/sis_context.h b/src/mesa/drivers/dri/sis/sis_context.h index bc53cb5efa..4179ee081a 100644 --- a/src/mesa/drivers/dri/sis/sis_context.h +++ b/src/mesa/drivers/dri/sis/sis_context.h @@ -359,9 +359,9 @@ struct sis_context    /* Mirrors of some DRI state     */ -  __DRIcontextPrivate	*driContext;	/* DRI context */ -  __DRIscreenPrivate	*driScreen;	/* DRI screen */ -  __DRIdrawablePrivate	*driDrawable;	/* DRI drawable bound to this ctx */ +  __DRIcontext	*driContext;	/* DRI context */ +  __DRIscreen	*driScreen;	/* DRI screen */ +  __DRIdrawable	*driDrawable;	/* DRI drawable bound to this ctx */    unsigned int lastStamp;	        /* mirror driDrawable->lastStamp */ @@ -439,18 +439,18 @@ enum _sis_verbose {  };  extern GLboolean sisCreateContext( const __GLcontextModes *glVisual, -				   __DRIcontextPrivate *driContextPriv, +				   __DRIcontext *driContextPriv,                                     void *sharedContextPrivate ); -extern void sisDestroyContext( __DRIcontextPrivate * ); +extern void sisDestroyContext( __DRIcontext * );  void sisReAllocateBuffers(GLcontext *ctx, GLframebuffer *drawbuffer,                            GLuint width, GLuint height); -extern GLboolean sisMakeCurrent( __DRIcontextPrivate *driContextPriv, -                                  __DRIdrawablePrivate *driDrawPriv, -                                  __DRIdrawablePrivate *driReadPriv ); +extern GLboolean sisMakeCurrent( __DRIcontext *driContextPriv, +                                  __DRIdrawable *driDrawPriv, +                                  __DRIdrawable *driReadPriv ); -extern GLboolean sisUnbindContext( __DRIcontextPrivate *driContextPriv ); +extern GLboolean sisUnbindContext( __DRIcontext *driContextPriv );  void WaitEngIdle (sisContextPtr smesa);  void Wait2DEngIdle (sisContextPtr smesa); diff --git a/src/mesa/drivers/dri/sis/sis_lock.c b/src/mesa/drivers/dri/sis/sis_lock.c index 806110cad4..b8ff4e31e2 100644 --- a/src/mesa/drivers/dri/sis/sis_lock.c +++ b/src/mesa/drivers/dri/sis/sis_lock.c @@ -46,8 +46,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  void  sisGetLock( sisContextPtr smesa, GLuint flags )  { -   __DRIdrawablePrivate *dPriv = smesa->driDrawable; -   __DRIscreenPrivate *sPriv = smesa->driScreen; +   __DRIdrawable *dPriv = smesa->driDrawable; +   __DRIscreen *sPriv = smesa->driScreen;     SISSAREAPrivPtr sarea = smesa->sarea;     drmGetLock( smesa->driFd, smesa->hHWContext, flags ); diff --git a/src/mesa/drivers/dri/sis/sis_screen.c b/src/mesa/drivers/dri/sis/sis_screen.c index fec9158236..d38b93ec9b 100644 --- a/src/mesa/drivers/dri/sis/sis_screen.c +++ b/src/mesa/drivers/dri/sis/sis_screen.c @@ -65,7 +65,7 @@ static const GLuint __driNConfigOptions = 3;  extern const struct dri_extension card_extensions[];  static const __DRIconfig ** -sisFillInModes(__DRIscreenPrivate *psp, int bpp) +sisFillInModes(__DRIscreen *psp, int bpp)  {     __DRIconfig **configs;     unsigned depth_buffer_factor; @@ -117,7 +117,7 @@ sisFillInModes(__DRIscreenPrivate *psp, int bpp)  /* Create the device specific screen private data struct.   */  static sisScreenPtr -sisCreateScreen( __DRIscreenPrivate *sPriv ) +sisCreateScreen( __DRIscreen *sPriv )  {     sisScreenPtr sisScreen;     SISDRIPtr sisDRIPriv = (SISDRIPtr)sPriv->pDevPriv; @@ -172,7 +172,7 @@ sisCreateScreen( __DRIscreenPrivate *sPriv )  /* Destroy the device specific screen private data struct.   */  static void -sisDestroyScreen( __DRIscreenPrivate *sPriv ) +sisDestroyScreen( __DRIscreen *sPriv )  {     sisScreenPtr sisScreen = (sisScreenPtr)sPriv->private; @@ -192,8 +192,8 @@ sisDestroyScreen( __DRIscreenPrivate *sPriv )   * data.   */  static GLboolean -sisCreateBuffer( __DRIscreenPrivate *driScrnPriv, -                 __DRIdrawablePrivate *driDrawPriv, +sisCreateBuffer( __DRIscreen *driScrnPriv, +                 __DRIdrawable *driDrawPriv,                   const __GLcontextModes *mesaVis,                   GLboolean isPixmap )  { @@ -219,12 +219,12 @@ sisCreateBuffer( __DRIscreenPrivate *driScrnPriv,  static void -sisDestroyBuffer(__DRIdrawablePrivate *driDrawPriv) +sisDestroyBuffer(__DRIdrawable *driDrawPriv)  {     _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL);  } -static void sisCopyBuffer( __DRIdrawablePrivate *dPriv ) +static void sisCopyBuffer( __DRIdrawable *dPriv )  {     sisContextPtr smesa = (sisContextPtr)dPriv->driContextPriv->driverPrivate;     int i; @@ -259,7 +259,7 @@ static void sisCopyBuffer( __DRIdrawablePrivate *dPriv )  /* Copy the back color buffer to the front color buffer */  static void -sisSwapBuffers(__DRIdrawablePrivate *dPriv) +sisSwapBuffers(__DRIdrawable *dPriv)  {     if (dPriv->driContextPriv && dPriv->driContextPriv->driverPrivate) {           sisContextPtr smesa = (sisContextPtr) dPriv->driContextPriv->driverPrivate; @@ -284,7 +284,7 @@ sisSwapBuffers(__DRIdrawablePrivate *dPriv)   * \return the __GLcontextModes supported by this driver   */  static const __DRIconfig ** -sisInitScreen(__DRIscreenPrivate *psp) +sisInitScreen(__DRIscreen *psp)  {     static const __DRIversion ddx_expected = {0, 8, 0};     static const __DRIversion dri_expected = {4, 0, 0}; @@ -325,3 +325,10 @@ const struct __DriverAPIRec driDriverAPI = {     .SwapBuffersMSC  = NULL  }; + +/* This is the table of extensions that the loader will dlsym() for. */ +PUBLIC const __DRIextension *__driDriverExtensions[] = { +    &driCoreExtension.base, +    &driLegacyExtension.base, +    NULL +}; diff --git a/src/mesa/drivers/dri/sis/sis_screen.h b/src/mesa/drivers/dri/sis/sis_screen.h index 07c29cfa09..8009fecc31 100644 --- a/src/mesa/drivers/dri/sis/sis_screen.h +++ b/src/mesa/drivers/dri/sis/sis_screen.h @@ -50,7 +50,7 @@ typedef struct {     int cpp;     unsigned int screenX, screenY; -   __DRIscreenPrivate *driScreen; +   __DRIscreen *driScreen;     unsigned int sarea_priv_offset;     /* Configuration cache with default values for all contexts */ diff --git a/src/mesa/drivers/dri/sis/sis_span.c b/src/mesa/drivers/dri/sis/sis_span.c index cfbb51007d..008b00160e 100644 --- a/src/mesa/drivers/dri/sis/sis_span.c +++ b/src/mesa/drivers/dri/sis/sis_span.c @@ -42,7 +42,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.  #define LOCAL_VARS							\     sisContextPtr smesa = SIS_CONTEXT(ctx);				\ -   __DRIdrawablePrivate *dPriv = smesa->driDrawable;			\ +   __DRIdrawable *dPriv = smesa->driDrawable;			\     struct sis_renderbuffer *srb = (struct sis_renderbuffer *) rb;	\     GLuint pitch = srb->pitch;						\     char *buf = srb->map;						\ @@ -52,7 +52,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.  #define LOCAL_DEPTH_VARS						\     sisContextPtr smesa = SIS_CONTEXT(ctx);				\ -   __DRIdrawablePrivate *dPriv = smesa->driDrawable;			\ +   __DRIdrawable *dPriv = smesa->driDrawable;			\     struct sis_renderbuffer *srb = (struct sis_renderbuffer *) rb;	\     char *buf = srb->map; diff --git a/src/mesa/drivers/dri/tdfx/tdfx_context.c b/src/mesa/drivers/dri/tdfx/tdfx_context.c index e742d414a5..edb1875f76 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_context.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_context.c @@ -165,12 +165,12 @@ static const struct dri_debug_control debug_control[] =  };  GLboolean tdfxCreateContext( const __GLcontextModes *mesaVis, -			     __DRIcontextPrivate *driContextPriv, +			     __DRIcontext *driContextPriv,                               void *sharedContextPrivate )  {     tdfxContextPtr fxMesa;     GLcontext *ctx, *shareCtx; -   __DRIscreenPrivate *sPriv = driContextPriv->driScreenPriv; +   __DRIscreen *sPriv = driContextPriv->driScreenPriv;     tdfxScreenPrivate *fxScreen = (tdfxScreenPrivate *) sPriv->private;     TDFXSAREAPriv *saPriv = (TDFXSAREAPriv *) ((char *) sPriv->pSAREA +  					      sizeof(drm_sarea_t)); @@ -441,7 +441,7 @@ static GLboolean tdfxInitVertexFormats( tdfxContextPtr fxMesa )   * Initialize the state in an tdfxContextPtr struct.   */  static GLboolean -tdfxInitContext( __DRIdrawablePrivate *driDrawPriv, tdfxContextPtr fxMesa ) +tdfxInitContext( __DRIdrawable *driDrawPriv, tdfxContextPtr fxMesa )  {     /* KW: Would be nice to make one of these a member of the other.      */ @@ -563,7 +563,7 @@ tdfxInitContext( __DRIdrawablePrivate *driDrawPriv, tdfxContextPtr fxMesa )  void -tdfxDestroyContext( __DRIcontextPrivate *driContextPriv ) +tdfxDestroyContext( __DRIcontext *driContextPriv )  {     tdfxContextPtr fxMesa = (tdfxContextPtr) driContextPriv->driverPrivate; @@ -607,7 +607,7 @@ tdfxDestroyContext( __DRIcontextPrivate *driContextPriv )  GLboolean -tdfxUnbindContext( __DRIcontextPrivate *driContextPriv ) +tdfxUnbindContext( __DRIcontext *driContextPriv )  {     GET_CURRENT_CONTEXT(ctx);     tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); @@ -626,9 +626,9 @@ tdfxUnbindContext( __DRIcontextPrivate *driContextPriv )  GLboolean -tdfxMakeCurrent( __DRIcontextPrivate *driContextPriv, -                 __DRIdrawablePrivate *driDrawPriv, -                 __DRIdrawablePrivate *driReadPriv ) +tdfxMakeCurrent( __DRIcontext *driContextPriv, +                 __DRIdrawable *driDrawPriv, +                 __DRIdrawable *driReadPriv )  {     if ( TDFX_DEBUG & DEBUG_VERBOSE_DRI ) {        fprintf( stderr, "%s( %p )\n", __FUNCTION__, (void *)driContextPriv ); diff --git a/src/mesa/drivers/dri/tdfx/tdfx_context.h b/src/mesa/drivers/dri/tdfx/tdfx_context.h index 3bcb545119..6e25cac301 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_context.h +++ b/src/mesa/drivers/dri/tdfx/tdfx_context.h @@ -892,18 +892,18 @@ struct tdfx_context {     char rendererString[100];     /* stuff added for DRI */ -   __DRIscreenPrivate *driScreen; -   __DRIcontextPrivate *driContext; +   __DRIscreen *driScreen; +   __DRIcontext *driContext;     /**      * DRI drawable bound to this context for drawing.      */ -   __DRIdrawablePrivate	*driDrawable; +   __DRIdrawable	*driDrawable;     /**      * DRI drawable bound to this context for reading.      */ -   __DRIdrawablePrivate	*driReadable; +   __DRIdrawable	*driReadable;     drm_context_t hHWContext;     drm_hw_lock_t *driHwLock; @@ -938,19 +938,19 @@ struct tdfx_context {  extern GLboolean  tdfxCreateContext( const __GLcontextModes *mesaVis, -                   __DRIcontextPrivate *driContextPriv, +                   __DRIcontext *driContextPriv,                     void *sharedContextPrivate );  extern void -tdfxDestroyContext( __DRIcontextPrivate *driContextPriv ); +tdfxDestroyContext( __DRIcontext *driContextPriv );  extern GLboolean -tdfxUnbindContext( __DRIcontextPrivate *driContextPriv ); +tdfxUnbindContext( __DRIcontext *driContextPriv );  extern GLboolean -tdfxMakeCurrent( __DRIcontextPrivate *driContextPriv, -                 __DRIdrawablePrivate *driDrawPriv, -                 __DRIdrawablePrivate *driReadPriv ); +tdfxMakeCurrent( __DRIcontext *driContextPriv, +                 __DRIdrawable *driDrawPriv, +                 __DRIdrawable *driReadPriv );  extern GLboolean  tdfxInitGlide( tdfxContextPtr tmesa ); diff --git a/src/mesa/drivers/dri/tdfx/tdfx_lock.c b/src/mesa/drivers/dri/tdfx/tdfx_lock.c index 17cdc51ee1..4f84240104 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_lock.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_lock.c @@ -45,10 +45,10 @@  void tdfxGetLock( tdfxContextPtr fxMesa )  { -    __DRIcontextPrivate *cPriv = fxMesa->driContext; -    __DRIdrawablePrivate *const drawable = cPriv->driDrawablePriv; -    __DRIdrawablePrivate *const readable = cPriv->driReadablePriv; -    __DRIscreenPrivate *sPriv = drawable->driScreenPriv; +    __DRIcontext *cPriv = fxMesa->driContext; +    __DRIdrawable *const drawable = cPriv->driDrawablePriv; +    __DRIdrawable *const readable = cPriv->driReadablePriv; +    __DRIscreen *sPriv = drawable->driScreenPriv;      TDFXSAREAPriv *saPriv = (TDFXSAREAPriv *) (((char *) sPriv->pSAREA) +  					fxMesa->fxScreen->sarea_priv_offset);      unsigned int stamp = drawable->lastStamp; diff --git a/src/mesa/drivers/dri/tdfx/tdfx_pixels.c b/src/mesa/drivers/dri/tdfx/tdfx_pixels.c index a3b1775e90..65f0464f8a 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_pixels.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_pixels.c @@ -495,7 +495,7 @@ tdfx_readpixels_R5G6B5(GLcontext * ctx, GLint x, GLint y,     {        tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx);        GrLfbInfo_t info; -      __DRIdrawablePrivate *const readable = fxMesa->driReadable; +      __DRIdrawable *const readable = fxMesa->driReadable;        const GLint winX = readable->x;        const GLint winY = readable->y + readable->h - 1;        const GLint scrX = winX + x; @@ -553,7 +553,7 @@ tdfx_readpixels_R8G8B8A8(GLcontext * ctx, GLint x, GLint y,     {        tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx);        GrLfbInfo_t info; -      __DRIdrawablePrivate *const readable = fxMesa->driReadable; +      __DRIdrawable *const readable = fxMesa->driReadable;        const GLint winX = readable->x;        const GLint winY = readable->y + readable->h - 1;        const GLint scrX = winX + x; diff --git a/src/mesa/drivers/dri/tdfx/tdfx_render.c b/src/mesa/drivers/dri/tdfx/tdfx_render.c index 79d63f72ac..979bcd4514 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_render.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_render.c @@ -556,7 +556,7 @@ static void uploadTextureImages( tdfxContextPtr fxMesa )   */  void tdfxUploadClipping( tdfxContextPtr fxMesa )  { -   __DRIdrawablePrivate *dPriv = fxMesa->driDrawable; +   __DRIdrawable *dPriv = fxMesa->driDrawable;     assert(dPriv); diff --git a/src/mesa/drivers/dri/tdfx/tdfx_screen.c b/src/mesa/drivers/dri/tdfx/tdfx_screen.c index 2eb0024d40..4422b5dec4 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_screen.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_screen.c @@ -70,7 +70,7 @@ static const __DRIextension *tdfxExtensions[] = {  static const GLuint __driNConfigOptions = 1;  static GLboolean -tdfxCreateScreen( __DRIscreenPrivate *sPriv ) +tdfxCreateScreen( __DRIscreen *sPriv )  {     tdfxScreenPrivate *fxScreen;     TDFXDRIPtr fxDRIPriv = (TDFXDRIPtr) sPriv->pDevPriv; @@ -121,7 +121,7 @@ tdfxCreateScreen( __DRIscreenPrivate *sPriv )  static void -tdfxDestroyScreen( __DRIscreenPrivate *sPriv ) +tdfxDestroyScreen( __DRIscreen *sPriv )  {     tdfxScreenPrivate *fxScreen = (tdfxScreenPrivate *) sPriv->private; @@ -139,7 +139,7 @@ tdfxDestroyScreen( __DRIscreenPrivate *sPriv )  static GLboolean -tdfxInitDriver( __DRIscreenPrivate *sPriv ) +tdfxInitDriver( __DRIscreen *sPriv )  {     if ( TDFX_DEBUG & DEBUG_VERBOSE_DRI ) {        fprintf( stderr, "%s( %p )\n", __FUNCTION__, (void *)sPriv ); @@ -155,8 +155,8 @@ tdfxInitDriver( __DRIscreenPrivate *sPriv )  static GLboolean -tdfxCreateBuffer( __DRIscreenPrivate *driScrnPriv, -                  __DRIdrawablePrivate *driDrawPriv, +tdfxCreateBuffer( __DRIscreen *driScrnPriv, +                  __DRIdrawable *driDrawPriv,                    const __GLcontextModes *mesaVis,                    GLboolean isPixmap )  { @@ -227,14 +227,14 @@ tdfxCreateBuffer( __DRIscreenPrivate *driScrnPriv,  static void -tdfxDestroyBuffer(__DRIdrawablePrivate *driDrawPriv) +tdfxDestroyBuffer(__DRIdrawable *driDrawPriv)  {     _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL);  }  static void -tdfxSwapBuffers( __DRIdrawablePrivate *driDrawPriv ) +tdfxSwapBuffers( __DRIdrawable *driDrawPriv )  {     GET_CURRENT_CONTEXT(ctx); @@ -253,7 +253,7 @@ tdfxSwapBuffers( __DRIdrawablePrivate *driDrawPriv )      * we have to do a glFinish (per the GLX spec).      */     if ( ctx ) { -      __DRIdrawablePrivate *curDrawPriv; +      __DRIdrawable *curDrawPriv;        fxMesa = TDFX_CONTEXT(ctx);        curDrawPriv = fxMesa->driContext->driDrawablePriv; @@ -341,7 +341,7 @@ tdfxSwapBuffers( __DRIdrawablePrivate *driDrawPriv )  }  static const __DRIconfig ** -tdfxFillInModes(__DRIscreenPrivate *psp, +tdfxFillInModes(__DRIscreen *psp,  		unsigned pixel_bits,  		unsigned depth_bits,  		unsigned stencil_bits, @@ -440,3 +440,10 @@ const struct __DriverAPIRec driDriverAPI = {     .WaitForSBC      = NULL,     .SwapBuffersMSC  = NULL  }; + +/* This is the table of extensions that the loader will dlsym() for. */ +PUBLIC const __DRIextension *__driDriverExtensions[] = { +    &driCoreExtension.base, +    &driLegacyExtension.base, +    NULL +}; diff --git a/src/mesa/drivers/dri/tdfx/tdfx_screen.h b/src/mesa/drivers/dri/tdfx/tdfx_screen.h index 5a68898b36..6aa42e8667 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_screen.h +++ b/src/mesa/drivers/dri/tdfx/tdfx_screen.h @@ -61,7 +61,7 @@ typedef struct {     int textureOffset;     int textureSize; -   __DRIscreenPrivate *driScrnPriv; +   __DRIscreen *driScrnPriv;     unsigned int sarea_priv_offset;     /* Configuration cache with default values for all contexts */ diff --git a/src/mesa/drivers/dri/tdfx/tdfx_span.c b/src/mesa/drivers/dri/tdfx/tdfx_span.c index 6b38fa5a01..a17bcd952a 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_span.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_span.c @@ -47,7 +47,7 @@  #define LOCAL_VARS							\     driRenderbuffer *drb = (driRenderbuffer *) rb;			\ -   __DRIdrawablePrivate *const dPriv = drb->dPriv;			\ +   __DRIdrawable *const dPriv = drb->dPriv;			\     GLuint pitch = drb->backBuffer ? info.strideInBytes			\       : (drb->pitch * drb->cpp);						\     const GLuint bottom = dPriv->h - 1;					\ @@ -104,7 +104,7 @@  #define HW_READ_CLIPLOOP()						\        do {								\ -         const __DRIdrawablePrivate *dPriv = fxMesa->driDrawable;	\ +         const __DRIdrawable *dPriv = fxMesa->driDrawable;	\           drm_clip_rect_t *rect = dPriv->pClipRects;			\           int _nc = dPriv->numClipRects;					\           while (_nc--) {						\ diff --git a/src/mesa/drivers/dri/tdfx/tdfx_state.c b/src/mesa/drivers/dri/tdfx/tdfx_state.c index cf2712720f..cdb61a0ce0 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_state.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_state.c @@ -621,7 +621,7 @@ static int intersect_rect( drm_clip_rect_t *out,  void tdfxUpdateClipping( GLcontext *ctx )  {     tdfxContextPtr fxMesa = TDFX_CONTEXT(ctx); -   __DRIdrawablePrivate *dPriv = fxMesa->driDrawable; +   __DRIdrawable *dPriv = fxMesa->driDrawable;     if ( TDFX_DEBUG & DEBUG_VERBOSE_API ) {        fprintf( stderr, "%s()\n", __FUNCTION__ ); diff --git a/src/mesa/drivers/dri/unichrome/via_context.c b/src/mesa/drivers/dri/unichrome/via_context.c index 0524becf3e..d17a160271 100644 --- a/src/mesa/drivers/dri/unichrome/via_context.c +++ b/src/mesa/drivers/dri/unichrome/via_context.c @@ -148,7 +148,7 @@ viaRenderbufferStorage(GLcontext *ctx, struct gl_renderbuffer *rb,  static void  viaInitRenderbuffer(struct via_renderbuffer *vrb, GLenum format, -		    __DRIdrawablePrivate *dPriv) +		    __DRIdrawable *dPriv)  {     const GLuint name = 0;     struct gl_renderbuffer *rb = & vrb->Base; @@ -207,7 +207,7 @@ viaInitRenderbuffer(struct via_renderbuffer *vrb, GLenum format,  static GLboolean  calculate_buffer_parameters(struct via_context *vmesa,  			    struct gl_framebuffer *fb, -			    __DRIdrawablePrivate *dPriv) +			    __DRIdrawable *dPriv)  {     const unsigned shift = vmesa->viaScreen->bitsPerPixel / 16;     const unsigned extra = 32; @@ -460,12 +460,12 @@ FreeBuffer(struct via_context *vmesa)  GLboolean  viaCreateContext(const __GLcontextModes *visual, -                 __DRIcontextPrivate *driContextPriv, +                 __DRIcontext *driContextPriv,                   void *sharedContextPrivate)  {      GLcontext *ctx, *shareCtx;      struct via_context *vmesa; -    __DRIscreenPrivate *sPriv = driContextPriv->driScreenPriv; +    __DRIscreen *sPriv = driContextPriv->driScreenPriv;      viaScreenPrivate *viaScreen = (viaScreenPrivate *)sPriv->private;      drm_via_sarea_t *saPriv = (drm_via_sarea_t *)          (((GLubyte *)sPriv->pSAREA) + viaScreen->sareaPrivOffset); @@ -679,7 +679,7 @@ viaCreateContext(const __GLcontextModes *visual,  }  void -viaDestroyContext(__DRIcontextPrivate *driContextPriv) +viaDestroyContext(__DRIcontext *driContextPriv)  {      GET_CURRENT_CONTEXT(ctx);      struct via_context *vmesa = @@ -729,8 +729,8 @@ viaDestroyContext(__DRIcontextPrivate *driContextPriv)  void viaXMesaWindowMoved(struct via_context *vmesa)  { -   __DRIdrawablePrivate *const drawable = vmesa->driDrawable; -   __DRIdrawablePrivate *const readable = vmesa->driReadable; +   __DRIdrawable *const drawable = vmesa->driDrawable; +   __DRIdrawable *const readable = vmesa->driReadable;     struct via_renderbuffer * draw_buffer;     struct via_renderbuffer * read_buffer;     GLuint bytePerPixel = vmesa->viaScreen->bitsPerPixel >> 3; @@ -813,15 +813,15 @@ void viaXMesaWindowMoved(struct via_context *vmesa)  }  GLboolean -viaUnbindContext(__DRIcontextPrivate *driContextPriv) +viaUnbindContext(__DRIcontext *driContextPriv)  {      return GL_TRUE;  }  GLboolean -viaMakeCurrent(__DRIcontextPrivate *driContextPriv, -               __DRIdrawablePrivate *driDrawPriv, -               __DRIdrawablePrivate *driReadPriv) +viaMakeCurrent(__DRIcontext *driContextPriv, +               __DRIdrawable *driDrawPriv, +               __DRIdrawable *driReadPriv)  {      if (VIA_DEBUG & DEBUG_DRI) {  	fprintf(stderr, "driContextPriv = %016lx\n", (unsigned long)driContextPriv); @@ -897,8 +897,8 @@ viaMakeCurrent(__DRIcontextPrivate *driContextPriv,  void viaGetLock(struct via_context *vmesa, GLuint flags)  { -    __DRIdrawablePrivate *dPriv = vmesa->driDrawable; -    __DRIscreenPrivate *sPriv = vmesa->driScreen; +    __DRIdrawable *dPriv = vmesa->driDrawable; +    __DRIscreen *sPriv = vmesa->driScreen;      drmGetLock(vmesa->driFd, vmesa->hHWContext, flags); @@ -928,9 +928,9 @@ void viaGetLock(struct via_context *vmesa, GLuint flags)  void -viaSwapBuffers(__DRIdrawablePrivate *drawablePrivate) +viaSwapBuffers(__DRIdrawable *drawablePrivate)  { -    __DRIdrawablePrivate *dPriv = (__DRIdrawablePrivate *)drawablePrivate; +    __DRIdrawable *dPriv = (__DRIdrawable *)drawablePrivate;      if (dPriv &&   	dPriv->driContextPriv &&  diff --git a/src/mesa/drivers/dri/unichrome/via_context.h b/src/mesa/drivers/dri/unichrome/via_context.h index 4cc9e475c2..4e1ab3a6ca 100644 --- a/src/mesa/drivers/dri/unichrome/via_context.h +++ b/src/mesa/drivers/dri/unichrome/via_context.h @@ -105,7 +105,7 @@ struct via_renderbuffer {     int drawW;                       int drawH;     -   __DRIdrawablePrivate *dPriv; +   __DRIdrawable *dPriv;  }; @@ -294,14 +294,14 @@ struct via_context {     /**      * DRI drawable bound to this context for drawing.      */ -   __DRIdrawablePrivate	*driDrawable; +   __DRIdrawable	*driDrawable;     /**      * DRI drawable bound to this context for reading.      */ -   __DRIdrawablePrivate	*driReadable; +   __DRIdrawable	*driReadable; -   __DRIscreenPrivate *driScreen; +   __DRIscreen *driScreen;     viaScreenPrivate *viaScreen;     drm_via_sarea_t *sarea;     volatile GLuint* regMMIOBase; diff --git a/src/mesa/drivers/dri/unichrome/via_ioctl.c b/src/mesa/drivers/dri/unichrome/via_ioctl.c index 91c94fa377..8d4edfa305 100644 --- a/src/mesa/drivers/dri/unichrome/via_ioctl.c +++ b/src/mesa/drivers/dri/unichrome/via_ioctl.c @@ -205,7 +205,7 @@ static void viaFillBuffer(struct via_context *vmesa,  static void viaClear(GLcontext *ctx, GLbitfield mask)  {     struct via_context *vmesa = VIA_CONTEXT(ctx); -   __DRIdrawablePrivate *dPriv = vmesa->driDrawable; +   __DRIdrawable *dPriv = vmesa->driDrawable;     struct via_renderbuffer *const vrb =        (struct via_renderbuffer *) dPriv->driverPrivate;     int flag = 0; @@ -507,12 +507,12 @@ void viaWaitIdleLocked( struct via_context *vmesa, GLboolean light )   * except that WAIT_IDLE() will spin the CPU polling, while this is   * IRQ driven.   */ -static void viaWaitIdleVBlank(  __DRIdrawablePrivate *dPriv,  +static void viaWaitIdleVBlank(  __DRIdrawable *dPriv,   			       struct via_context *vmesa,  			       GLuint value )  {     GLboolean missed_target; -   __DRIscreenPrivate *psp = dPriv->driScreenPriv; +   __DRIscreen *psp = dPriv->driScreenPriv;     VIA_FLUSH_DMA(vmesa);  @@ -591,11 +591,11 @@ void viaResetPageFlippingLocked(struct via_context *vmesa)  /*   * Copy the back buffer to the front buffer.    */ -void viaCopyBuffer(__DRIdrawablePrivate *dPriv) +void viaCopyBuffer(__DRIdrawable *dPriv)  {     struct via_context *vmesa =         (struct via_context *)dPriv->driContextPriv->driverPrivate; -   __DRIscreenPrivate *psp = dPriv->driScreenPriv; +   __DRIscreen *psp = dPriv->driScreenPriv;     if (VIA_DEBUG & DEBUG_IOCTL)        fprintf(stderr,  @@ -635,12 +635,12 @@ void viaCopyBuffer(__DRIdrawablePrivate *dPriv)  } -void viaPageFlip(__DRIdrawablePrivate *dPriv) +void viaPageFlip(__DRIdrawable *dPriv)  {      struct via_context *vmesa =          (struct via_context *)dPriv->driContextPriv->driverPrivate;      struct via_renderbuffer buffer_tmp; -    __DRIscreenPrivate *psp = dPriv->driScreenPriv; +    __DRIscreen *psp = dPriv->driScreenPriv;      VIA_FLUSH_DMA(vmesa);     if (dPriv->vblFlags == VBLANK_FLAG_SYNC && diff --git a/src/mesa/drivers/dri/unichrome/via_ioctl.h b/src/mesa/drivers/dri/unichrome/via_ioctl.h index 14a833a97d..c6b32cf085 100644 --- a/src/mesa/drivers/dri/unichrome/via_ioctl.h +++ b/src/mesa/drivers/dri/unichrome/via_ioctl.h @@ -33,8 +33,8 @@ void viaFlushDma(struct via_context *vmesa);  void viaFlushDmaLocked(struct via_context *vmesa, GLuint flags);  void viaInitIoctlFuncs(GLcontext *ctx); -void viaCopyBuffer(__DRIdrawablePrivate *dpriv); -void viaPageFlip(__DRIdrawablePrivate *dpriv); +void viaCopyBuffer(__DRIdrawable *dpriv); +void viaPageFlip(__DRIdrawable *dpriv);  void viaCheckDma(struct via_context *vmesa, GLuint bytes);  void viaResetPageFlippingLocked(struct via_context *vmesa);  void viaWaitIdle(struct via_context *vmesa, GLboolean light); diff --git a/src/mesa/drivers/dri/unichrome/via_screen.c b/src/mesa/drivers/dri/unichrome/via_screen.c index e0bf58ca9a..2cfb98317d 100644 --- a/src/mesa/drivers/dri/unichrome/via_screen.c +++ b/src/mesa/drivers/dri/unichrome/via_screen.c @@ -90,7 +90,7 @@ static void via_free_empty_buffers( drmBufMapPtr bufs )  static GLboolean -viaInitDriver(__DRIscreenPrivate *sPriv) +viaInitDriver(__DRIscreen *sPriv)  {      viaScreenPrivate *viaScreen;      VIADRIPtr gDRIPriv = (VIADRIPtr)sPriv->pDevPriv; @@ -184,7 +184,7 @@ viaInitDriver(__DRIscreenPrivate *sPriv)  }  static void -viaDestroyScreen(__DRIscreenPrivate *sPriv) +viaDestroyScreen(__DRIscreen *sPriv)  {      viaScreenPrivate *viaScreen = (viaScreenPrivate *)sPriv->private;      VIADRIPtr gDRIPriv = (VIADRIPtr)sPriv->pDevPriv; @@ -203,8 +203,8 @@ viaDestroyScreen(__DRIscreenPrivate *sPriv)  static GLboolean -viaCreateBuffer(__DRIscreenPrivate *driScrnPriv, -                __DRIdrawablePrivate *driDrawPriv, +viaCreateBuffer(__DRIscreen *driScrnPriv, +                __DRIdrawable *driDrawPriv,                  const __GLcontextModes *mesaVis,                  GLboolean isPixmap)  { @@ -314,13 +314,13 @@ viaCreateBuffer(__DRIscreenPrivate *driScrnPriv,  static void -viaDestroyBuffer(__DRIdrawablePrivate *driDrawPriv) +viaDestroyBuffer(__DRIdrawable *driDrawPriv)  {     _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL);  }  static const __DRIconfig ** -viaFillInModes( __DRIscreenPrivate *psp, +viaFillInModes( __DRIscreen *psp,  		unsigned pixel_bits, GLboolean have_back_buffer )  {      __DRIconfig **configs; @@ -377,7 +377,7 @@ viaFillInModes( __DRIscreenPrivate *psp,   * \return the __GLcontextModes supported by this driver   */  static const __DRIconfig ** -viaInitScreen(__DRIscreenPrivate *psp) +viaInitScreen(__DRIscreen *psp)  {     static const __DRIversion ddx_expected = { VIA_DRIDDX_VERSION_MAJOR,                                                VIA_DRIDDX_VERSION_MINOR, @@ -405,7 +405,7 @@ viaInitScreen(__DRIscreenPrivate *psp)   * Get information about previous buffer swaps.   */  static int -getSwapInfo( __DRIdrawablePrivate *dPriv, __DRIswapInfo * sInfo ) +getSwapInfo( __DRIdrawable *dPriv, __DRIswapInfo * sInfo )  {     struct via_context *vmesa; @@ -443,3 +443,10 @@ const struct __DriverAPIRec driDriverAPI = {     .WaitForSBC      = NULL,     .SwapBuffersMSC  = NULL  }; + +/* This is the table of extensions that the loader will dlsym() for. */ +PUBLIC const __DRIextension *__driDriverExtensions[] = { +    &driCoreExtension.base, +    &driLegacyExtension.base, +    NULL +}; diff --git a/src/mesa/drivers/dri/unichrome/via_screen.h b/src/mesa/drivers/dri/unichrome/via_screen.h index c3ef722ff0..aa662e01c0 100644 --- a/src/mesa/drivers/dri/unichrome/via_screen.h +++ b/src/mesa/drivers/dri/unichrome/via_screen.h @@ -61,7 +61,7 @@ typedef struct {      drmAddress agpLinearStart;      GLuint agpBase; -    __DRIscreenPrivate *driScrnPriv; +    __DRIscreen *driScrnPriv;      drmBufMapPtr bufs;      unsigned int sareaPrivOffset;      /*=* John Sheng [2003.12.9] Tuxracer & VQ *=*/ @@ -77,21 +77,21 @@ typedef struct {  extern GLboolean  viaCreateContext(const __GLcontextModes *mesaVis, -                 __DRIcontextPrivate *driContextPriv, +                 __DRIcontext *driContextPriv,                   void *sharedContextPrivate);  extern void -viaDestroyContext(__DRIcontextPrivate *driContextPriv); +viaDestroyContext(__DRIcontext *driContextPriv);  extern GLboolean -viaUnbindContext(__DRIcontextPrivate *driContextPriv); +viaUnbindContext(__DRIcontext *driContextPriv);  extern GLboolean -viaMakeCurrent(__DRIcontextPrivate *driContextPriv, -               __DRIdrawablePrivate *driDrawPriv, -               __DRIdrawablePrivate *driReadPriv); +viaMakeCurrent(__DRIcontext *driContextPriv, +               __DRIdrawable *driDrawPriv, +               __DRIdrawable *driReadPriv);  extern void -viaSwapBuffers(__DRIdrawablePrivate *drawablePrivate); +viaSwapBuffers(__DRIdrawable *drawablePrivate);  #endif diff --git a/src/mesa/drivers/dri/unichrome/via_span.c b/src/mesa/drivers/dri/unichrome/via_span.c index e847164cd0..fa3cbf7a79 100644 --- a/src/mesa/drivers/dri/unichrome/via_span.c +++ b/src/mesa/drivers/dri/unichrome/via_span.c @@ -43,7 +43,7 @@  #undef LOCAL_VARS  #define LOCAL_VARS                                                   	\      struct via_renderbuffer *vrb = (struct via_renderbuffer *) rb;   	\ -    __DRIdrawablePrivate *dPriv = vrb->dPriv;                           \ +    __DRIdrawable *dPriv = vrb->dPriv;                           \      GLuint pitch = vrb->pitch;                                          \      GLuint height = dPriv->h;                                        	\      GLint p = 0;							\ @@ -80,7 +80,7 @@   */  #define LOCAL_DEPTH_VARS                                            \      struct via_renderbuffer *vrb = (struct via_renderbuffer *) rb;  \ -    __DRIdrawablePrivate *dPriv = vrb->dPriv;                       \ +    __DRIdrawable *dPriv = vrb->dPriv;                       \      GLuint depth_pitch = vrb->pitch;                                \      GLuint height = dPriv->h;                                       \      char *buf = (char *)(vrb->map) diff --git a/src/mesa/drivers/dri/unichrome/via_state.c b/src/mesa/drivers/dri/unichrome/via_state.c index 1698230952..e6e5526d34 100644 --- a/src/mesa/drivers/dri/unichrome/via_state.c +++ b/src/mesa/drivers/dri/unichrome/via_state.c @@ -476,7 +476,7 @@ void viaEmitState(struct via_context *vmesa)      */     if (ctx->Polygon.StippleFlag) {        GLuint *stipple = &ctx->PolygonStipple[0]; -      __DRIdrawablePrivate *dPriv = vmesa->driDrawable; +      __DRIdrawable *dPriv = vmesa->driDrawable;        struct via_renderbuffer *const vrb =   	(struct via_renderbuffer *) dPriv->driverPrivate;        GLint i; @@ -722,7 +722,7 @@ static void viaColorMask(GLcontext *ctx,  void viaCalcViewport(GLcontext *ctx)  {      struct via_context *vmesa = VIA_CONTEXT(ctx); -    __DRIdrawablePrivate *dPriv = vmesa->driDrawable; +    __DRIdrawable *dPriv = vmesa->driDrawable;      struct via_renderbuffer *const vrb =         (struct via_renderbuffer *) dPriv->driverPrivate;      const GLfloat *v = ctx->Viewport._WindowMap.m; | 
