diff options
Diffstat (limited to 'xc/lib/GL/mesa/src/drv/mga/mgabuffers.c')
-rw-r--r-- | xc/lib/GL/mesa/src/drv/mga/mgabuffers.c | 44 |
1 files changed, 16 insertions, 28 deletions
diff --git a/xc/lib/GL/mesa/src/drv/mga/mgabuffers.c b/xc/lib/GL/mesa/src/drv/mga/mgabuffers.c index d70eef0eb..3111a9fbe 100644 --- a/xc/lib/GL/mesa/src/drv/mga/mgabuffers.c +++ b/xc/lib/GL/mesa/src/drv/mga/mgabuffers.c @@ -34,9 +34,10 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include <stdio.h> -#include "mgalib.h" +#include "mgacontext.h" #include "mgabuffers.h" #include "mgastate.h" +#include "mgaioctl.h" static void mgaXMesaSetFrontClipRects( mgaContextPtr mmesa ) { @@ -47,7 +48,6 @@ static void mgaXMesaSetFrontClipRects( mgaContextPtr mmesa ) mmesa->drawX = driDrawable->x; mmesa->drawY = driDrawable->y; - mmesa->drawOffset = mmesa->mgaScreen->frontOffset; mmesa->Setup[MGA_CTXREG_DSTORG] = mmesa->drawOffset; mmesa->dirty |= MGA_UPLOAD_CTX; mmesa->dirty |= MGA_UPLOAD_CLIPRECTS; @@ -71,7 +71,6 @@ static void mgaXMesaSetBackClipRects( mgaContextPtr mmesa ) mmesa->drawY = driDrawable->backY; } - mmesa->drawOffset = mmesa->mgaScreen->backOffset; mmesa->Setup[MGA_CTXREG_DSTORG] = mmesa->drawOffset; mmesa->dirty |= MGA_UPLOAD_CTX; @@ -89,37 +88,29 @@ static void mgaUpdateRectsFromSarea( mgaContextPtr mmesa ) if (sarea->exported_buffers & MGA_BACK) { - XF86DRIClipRectPtr boxes = - (XF86DRIClipRectPtr)malloc( sarea->exported_nback * sizeof(*boxes) ); - - if (driDrawable->pBackClipRects) - free(driDrawable->pBackClipRects); driDrawable->numBackClipRects = sarea->exported_nback; - driDrawable->pBackClipRects = boxes; + driDrawable->pBackClipRects = mmesa->tmp_boxes[0]; top = sarea->exported_nback; for (i = 0 ; i < top ; i++) - boxes[i] = *(XF86DRIClipRectPtr)&(sarea->exported_boxes[i]); + driDrawable->pBackClipRects[i] = + *(XF86DRIClipRectPtr)&(sarea->exported_boxes[i]); } if (sarea->exported_buffers & MGA_FRONT) { int start = top; - XF86DRIClipRectPtr boxes = - (XF86DRIClipRectPtr)malloc( sarea->exported_nfront * sizeof(*boxes) ); - - if (driDrawable->pClipRects) - free(driDrawable->pClipRects); driDrawable->numClipRects = sarea->exported_nfront; - driDrawable->pClipRects = boxes; + driDrawable->pClipRects = mmesa->tmp_boxes[1]; top += sarea->exported_nfront; for ( ; i < top ; i++) - boxes[i-start] = *(XF86DRIClipRectPtr)&(sarea->exported_boxes[i]); - + driDrawable->pClipRects[i-start] = + *(XF86DRIClipRectPtr)&(sarea->exported_boxes[i]); + } @@ -224,7 +215,8 @@ void mgaUpdateRects( mgaContextPtr mmesa, GLuint buffers ) */ if (0) printSareaRects(mmesa); - if (sarea->exported_drawable == driDrawable->draw && + if (0 && + sarea->exported_drawable == driDrawable->draw && (sarea->exported_buffers & buffers) == buffers) { mgaUpdateRectsFromSarea( mmesa ); @@ -271,6 +263,7 @@ GLboolean mgaDDSetDrawBuffer(GLcontext *ctx, GLenum mode ) if (mode == GL_FRONT_LEFT) { mmesa->drawOffset = mmesa->mgaScreen->frontOffset; + mmesa->readOffset = mmesa->mgaScreen->frontOffset; mmesa->Setup[MGA_CTXREG_DSTORG] = mmesa->mgaScreen->frontOffset; mmesa->dirty |= MGA_UPLOAD_CTX; mmesa->draw_buffer = MGA_FRONT; @@ -280,6 +273,7 @@ GLboolean mgaDDSetDrawBuffer(GLcontext *ctx, GLenum mode ) else if (mode == GL_BACK_LEFT) { mmesa->drawOffset = mmesa->mgaScreen->backOffset; + mmesa->readOffset = mmesa->mgaScreen->backOffset; mmesa->Setup[MGA_CTXREG_DSTORG] = mmesa->mgaScreen->backOffset; mmesa->draw_buffer = MGA_BACK; mmesa->dirty |= MGA_UPLOAD_CTX; @@ -293,25 +287,19 @@ GLboolean mgaDDSetDrawBuffer(GLcontext *ctx, GLenum mode ) } } -/* XXX I don't know whether this is correct, but it at least compiles properly now */ -void mgaDDSetReadBuffer(GLcontext *ctx, GLframebuffer *colorBuffer, GLenum mode) +void mgaDDSetReadBuffer(GLcontext *ctx, GLframebuffer *buffer, + GLenum mode ) { mgaContextPtr mmesa = MGA_CONTEXT(ctx); - mmesa->Fallback &= ~MGA_FALLBACK_BUFFER; - if (mode == GL_FRONT_LEFT) { mmesa->readOffset = mmesa->mgaScreen->frontOffset; mmesa->read_buffer = MGA_FRONT; } - else if (mode == GL_BACK_LEFT) + else { mmesa->readOffset = mmesa->mgaScreen->backOffset; mmesa->read_buffer = MGA_BACK; } - else - { - mmesa->Fallback |= MGA_FALLBACK_BUFFER; - } } |