summaryrefslogtreecommitdiff
path: root/xc/lib/GL/mesa/src/drv/mga/mgabuffers.c
diff options
context:
space:
mode:
Diffstat (limited to 'xc/lib/GL/mesa/src/drv/mga/mgabuffers.c')
-rw-r--r--xc/lib/GL/mesa/src/drv/mga/mgabuffers.c44
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;
- }
}