summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2000-12-13 16:24:39 +0000
committerBrian Paul <[email protected]>2000-12-13 16:24:39 +0000
commitac522d475638ec8bb53428353120f6a6a72d2ef5 (patch)
treeeefe2e2a04af02e26346c13053fa1c547849dbc7 /src/mesa
parent813882526d455fc3d31cfd4b6e84ba9ac5963b41 (diff)
use inverted Y coordinate for choosing dither value (conformance fixes)
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/drivers/x11/xm_line.c10
-rw-r--r--src/mesa/drivers/x11/xm_tri.c44
2 files changed, 31 insertions, 23 deletions
diff --git a/src/mesa/drivers/x11/xm_line.c b/src/mesa/drivers/x11/xm_line.c
index 881e219713f..a759d376bb4 100644
--- a/src/mesa/drivers/x11/xm_line.c
+++ b/src/mesa/drivers/x11/xm_line.c
@@ -1,4 +1,4 @@
-/* $Id: xm_line.c,v 1.12 2000/11/22 07:32:18 joukj Exp $ */
+/* $Id: xm_line.c,v 1.13 2000/12/13 16:24:40 brianp Exp $ */
/*
* Mesa 3-D graphics library
@@ -54,6 +54,8 @@
/*
* Render an array of points into a pixmap, any pixel format.
*/
+#if 000
+/* XXX don't use this, it doesn't dither correctly */
static void draw_points_ANY_pixmap( GLcontext *ctx, const SWvertex *vert )
{
XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
@@ -82,7 +84,7 @@ static void draw_points_ANY_pixmap( GLcontext *ctx, const SWvertex *vert )
XMesaDrawPoint( dpy, buffer, gc, x, y);
}
}
-
+#endif
/* Override the swrast point-selection function. Try to use one of
@@ -91,6 +93,7 @@ static void draw_points_ANY_pixmap( GLcontext *ctx, const SWvertex *vert )
*/
void xmesa_choose_point( GLcontext *ctx )
{
+#if 0
XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
SWcontext *swrast = SWRAST_CONTEXT(ctx);
@@ -104,6 +107,9 @@ void xmesa_choose_point( GLcontext *ctx )
else {
_swrast_choose_point( ctx );
}
+#else
+ _swrast_choose_point( ctx );
+#endif
}
diff --git a/src/mesa/drivers/x11/xm_tri.c b/src/mesa/drivers/x11/xm_tri.c
index 97235c0b27a..09f1f7ce1c1 100644
--- a/src/mesa/drivers/x11/xm_tri.c
+++ b/src/mesa/drivers/x11/xm_tri.c
@@ -1,4 +1,4 @@
-/* $Id: xm_tri.c,v 1.13 2000/11/24 10:25:09 keithw Exp $ */
+/* $Id: xm_tri.c,v 1.14 2000/12/13 16:24:39 brianp Exp $ */
/*
* Mesa 3-D graphics library
@@ -277,11 +277,12 @@ static void smooth_DITHER_5R6G5B_z_triangle( GLcontext *ctx,
#define INNER_LOOP( LEFT, RIGHT, Y ) \
{ \
GLint i, len = RIGHT-LEFT; \
+ GLint yy = FLIP(xmesa->xm_buffer, Y); \
(void) fffog; \
for (i=0;i<len;i++) { \
GLdepth z = FixedToDepth(ffz); \
if (z < zRow[i]) { \
- PACK_TRUEDITHER(pRow[i], LEFT+i, Y, FixedToInt(ffr), \
+ PACK_TRUEDITHER(pRow[i], LEFT+i, yy, FixedToInt(ffr), \
FixedToInt(ffg), FixedToInt(ffb) ); \
zRow[i] = z; \
} \
@@ -655,11 +656,12 @@ static void flat_DITHER_5R6G5B_z_triangle( GLcontext *ctx,
#define INNER_LOOP( LEFT, RIGHT, Y ) \
{ \
GLint i, len = RIGHT-LEFT; \
- (void) fffog; \
+ GLint yy = FLIP(xmesa->xm_buffer, Y); \
+ (void) fffog; \
for (i=0;i<len;i++) { \
DEPTH_TYPE z = FixedToDepth(ffz); \
if (z < zRow[i]) { \
- PACK_TRUEDITHER(pRow[i], LEFT+i, Y, color[RCOMP], \
+ PACK_TRUEDITHER(pRow[i], LEFT+i, yy, color[RCOMP], \
color[GCOMP], color[BCOMP]); \
zRow[i] = z; \
} \
@@ -687,19 +689,19 @@ static void flat_DITHER8_z_triangle( GLcontext *ctx,
#define SETUP_CODE \
FLAT_DITHER_SETUP( v0->color[0], v0->color[1], v0->color[2] );
-#define INNER_LOOP( LEFT, RIGHT, Y ) \
-{ \
- GLint i, xx = LEFT, len = RIGHT-LEFT; \
- FLAT_DITHER_ROW_SETUP(FLIP(xmesa->xm_buffer, Y)); \
- (void) fffog; \
- for (i=0;i<len;i++,xx++) { \
- GLdepth z = FixedToDepth(ffz); \
- if (z < zRow[i]) { \
- pRow[i] = (PIXEL_TYPE) FLAT_DITHER(xx); \
- zRow[i] = z; \
- } \
- ffz += fdzdx; \
- } \
+#define INNER_LOOP( LEFT, RIGHT, Y ) \
+{ \
+ GLint i, xx = LEFT, yy = FLIP(xmesa->xm_buffer,Y), len = RIGHT-LEFT; \
+ FLAT_DITHER_ROW_SETUP(FLIP(xmesa->xm_buffer, yy)); \
+ (void) fffog; \
+ for (i=0;i<len;i++,xx++) { \
+ GLdepth z = FixedToDepth(ffz); \
+ if (z < zRow[i]) { \
+ pRow[i] = (PIXEL_TYPE) FLAT_DITHER(xx); \
+ zRow[i] = z; \
+ } \
+ ffz += fdzdx; \
+ } \
}
#include "swrast/s_tritemp.h"
}
@@ -988,10 +990,10 @@ static void smooth_DITHER_5R6G5B_triangle( GLcontext *ctx,
#define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
#define INNER_LOOP( LEFT, RIGHT, Y ) \
{ \
- GLint xx; \
+ GLint xx, yy = FLIP(xmesa->xm_buffer, Y); \
PIXEL_TYPE *pixel = pRow; \
for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \
- PACK_TRUEDITHER(*pixel, xx, Y, FixedToInt(ffr), \
+ PACK_TRUEDITHER(*pixel, xx, yy, FixedToInt(ffr), \
FixedToInt(ffg), FixedToInt(ffb) ); \
ffr += fdrdx; ffg += fdgdx; ffb += fdbdx; \
} \
@@ -1286,10 +1288,10 @@ static void flat_DITHER_5R6G5B_triangle( GLcontext *ctx,
#define BYTES_PER_ROW (xmesa->xm_buffer->backimage->bytes_per_line)
#define INNER_LOOP( LEFT, RIGHT, Y ) \
{ \
- GLint xx; \
+ GLint xx, yy = FLIP(xmesa->xm_buffer, Y); \
PIXEL_TYPE *pixel = pRow; \
for (xx=LEFT;xx<RIGHT;xx++,pixel++) { \
- PACK_TRUEDITHER(*pixel, xx, Y, color[RCOMP], \
+ PACK_TRUEDITHER(*pixel, xx, yy, color[RCOMP], \
color[GCOMP], color[BCOMP]); \
} \
}