From: Ian Romanick Date: Mon, 30 Oct 2006 22:07:00 +0000 (+0000) Subject: Get DRI drawable from framebuffer object. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5af5260f3cc6642c16d6b32b3f42693ffd50374b;p=mesa.git Get DRI drawable from framebuffer object. In the software rasterization fallbacks, get the __DRIdrawablePrivate pointer from the driRenderbuffer that is passed in. This eliminates the need for the mesa_drawable pointer in MGA context structure. This partially fixes bug #8799. wincopy no longer produces a black window for the destination window, but it does produce incorrect results if the destination window is resized. --- diff --git a/src/mesa/drivers/dri/mga/mga_xmesa.c b/src/mesa/drivers/dri/mga/mga_xmesa.c index 73bcfcce738..f02913c6af2 100644 --- a/src/mesa/drivers/dri/mga/mga_xmesa.c +++ b/src/mesa/drivers/dri/mga/mga_xmesa.c @@ -883,7 +883,6 @@ mgaMakeCurrent(__DRIcontextPrivate *driContextPriv, mmesa->driDrawable = driDrawPriv; mmesa->dirty = ~0; mmesa->dirty_cliprects = (MGA_FRONT|MGA_BACK); - mmesa->mesa_drawable = driDrawPriv; } mmesa->driReadable = driReadPriv; diff --git a/src/mesa/drivers/dri/mga/mgacontext.h b/src/mesa/drivers/dri/mga/mgacontext.h index 81348b6c7f9..2124006ade6 100644 --- a/src/mesa/drivers/dri/mga/mgacontext.h +++ b/src/mesa/drivers/dri/mga/mgacontext.h @@ -303,13 +303,6 @@ struct mga_context_t { __DRIdrawablePrivate *driDrawable; __DRIdrawablePrivate *driReadable; - /** - * Drawable used by Mesa for software fallbacks for reading and - * writing. It is set by Mesa's \c SetBuffer callback, and will always be - * either \c mga_context_t::driDrawable or \c mga_context_t::driReadable. - */ - __DRIdrawablePrivate *mesa_drawable; - __DRIscreenPrivate *driScreen; struct mga_screen_private_s *mgaScreen; drm_mga_sarea_t *sarea; diff --git a/src/mesa/drivers/dri/mga/mgaspan.c b/src/mesa/drivers/dri/mga/mgaspan.c index dbc7fc884ce..05dcbb85263 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); \ - __DRIdrawablePrivate *dPriv = mmesa->mesa_drawable; \ __DRIscreenPrivate *sPriv = mmesa->driScreen; \ driRenderbuffer *drb = (driRenderbuffer *) rb; \ + const __DRIdrawablePrivate *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); \ - __DRIdrawablePrivate *dPriv = mmesa->mesa_drawable; \ __DRIscreenPrivate *sPriv = mmesa->driScreen; \ driRenderbuffer *drb = (driRenderbuffer *) rb; \ + const __DRIdrawablePrivate *dPriv = drb->dPriv; \ GLuint pitch = drb->pitch; \ GLuint height = dPriv->h; \ char *buf = (char *)(sPriv->pFB + \