summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/x11
diff options
context:
space:
mode:
authorKeith Whitwell <[email protected]>2001-01-29 20:47:39 +0000
committerKeith Whitwell <[email protected]>2001-01-29 20:47:39 +0000
commit5c1e7fa6ee72f4403d9ec9d12830dd689b966e71 (patch)
tree8cb11c26af178632b05de9c5b2f53c32331475c5 /src/mesa/drivers/x11
parent4b90e68ac6d0fe4ffca5e2cd51794bb4350cac28 (diff)
Removed knowledge of swrast Clear/Bitmap/Accum/Draw/Read/CopyPixels
functions from core mesa -- if drivers need these fallbacks they must now call them themselves. Introduced hooks for clip-vertex-interpolation and the rendering of clipped lines and polygons. Allows drivers to interpolate their hardware-format vertices directly. Used in dri drivers to replace fastpath code. Slight optimizations to pipeline build/run routines.
Diffstat (limited to 'src/mesa/drivers/x11')
-rw-r--r--src/mesa/drivers/x11/xm_dd.c38
1 files changed, 31 insertions, 7 deletions
diff --git a/src/mesa/drivers/x11/xm_dd.c b/src/mesa/drivers/x11/xm_dd.c
index d6444a51461..7b1fecdd133 100644
--- a/src/mesa/drivers/x11/xm_dd.c
+++ b/src/mesa/drivers/x11/xm_dd.c
@@ -1,4 +1,4 @@
-/* $Id: xm_dd.c,v 1.11 2001/01/24 00:04:59 brianp Exp $ */
+/* $Id: xm_dd.c,v 1.12 2001/01/29 20:47:39 keithw Exp $ */
/*
* Mesa 3-D graphics library
@@ -755,15 +755,23 @@ clear_buffers( GLcontext *ctx, GLbitfield mask,
if (mask & DD_FRONT_LEFT_BIT) {
ASSERT(xmesa->xm_buffer->front_clear_func);
(*xmesa->xm_buffer->front_clear_func)( ctx, all, x, y, width, height );
+ mask &= ~DD_FRONT_LEFT_BIT;
}
if (mask & DD_BACK_LEFT_BIT) {
ASSERT(xmesa->xm_buffer->back_clear_func);
(*xmesa->xm_buffer->back_clear_func)( ctx, all, x, y, width, height );
+ mask &= ~DD_BACK_LEFT_BIT;
}
- return mask & (~(DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT));
+ if (mask)
+ _swrast_Clear( ctx, mask, all, x, y, width, height );
}
+static void
+resize_buffers( GLcontext *ctx )
+{
+ _swrast_alloc_buffers( ctx );
+}
#if 0
/*
@@ -922,8 +930,11 @@ void xmesa_init_pointers( GLcontext *ctx )
ctx->Driver.GetBufferSize = get_buffer_size;
ctx->Driver.Flush = flush;
ctx->Driver.Finish = finish;
-
+
+ /* Hooks for t_vb_render.c:
+ */
ctx->Driver.RenderStart = _swsetup_RenderStart;
+ ctx->Driver.RenderFinish = _swsetup_RenderFinish;
ctx->Driver.BuildProjectedVertices = _swsetup_BuildProjectedVertices;
ctx->Driver.RenderPrimitive = _swsetup_RenderPrimitive;
ctx->Driver.PointsFunc = _swsetup_Points;
@@ -931,15 +942,28 @@ void xmesa_init_pointers( GLcontext *ctx )
ctx->Driver.TriangleFunc = _swsetup_Triangle;
ctx->Driver.QuadFunc = _swsetup_Quad;
ctx->Driver.ResetLineStipple = _swrast_ResetLineStipple;
- ctx->Driver.RenderFinish = _swsetup_RenderFinish;
-
+ ctx->Driver.RenderInterp = _swsetup_RenderInterp;
+ ctx->Driver.RenderCopyPV = _swsetup_RenderCopyPV;
+ ctx->Driver.RenderClippedLine = _swsetup_RenderClippedLine;
+ ctx->Driver.RenderClippedPolygon = _swsetup_RenderClippedPolygon;
+
+ /* Software rasterizer pixel paths:
+ */
+ ctx->Driver.Accum = _swrast_Accum;
+ ctx->Driver.Bitmap = _swrast_Bitmap;
+ ctx->Driver.Clear = clear_buffers;
+ ctx->Driver.ResizeBuffersMESA = resize_buffers;
+ ctx->Driver.CopyPixels = _swrast_CopyPixels;
+ ctx->Driver.DrawPixels = _swrast_DrawPixels;
+ ctx->Driver.ReadPixels = _swrast_ReadPixels;
+
+ /*
+ */
ctx->Driver.SetDrawBuffer = set_draw_buffer;
ctx->Driver.SetReadBuffer = set_read_buffer;
-
ctx->Driver.ClearIndex = clear_index;
ctx->Driver.ClearColor = clear_color;
- ctx->Driver.Clear = clear_buffers;
ctx->Driver.IndexMask = index_mask;
ctx->Driver.ColorMask = color_mask;
ctx->Driver.Enable = enable;