diff options
author | Brian Paul <[email protected]> | 2000-12-13 16:24:39 +0000 |
---|---|---|
committer | Brian Paul <[email protected]> | 2000-12-13 16:24:39 +0000 |
commit | ac522d475638ec8bb53428353120f6a6a72d2ef5 (patch) | |
tree | eefe2e2a04af02e26346c13053fa1c547849dbc7 /src/mesa/drivers/x11 | |
parent | 813882526d455fc3d31cfd4b6e84ba9ac5963b41 (diff) |
use inverted Y coordinate for choosing dither value (conformance fixes)
Diffstat (limited to 'src/mesa/drivers/x11')
-rw-r--r-- | src/mesa/drivers/x11/xm_line.c | 10 | ||||
-rw-r--r-- | src/mesa/drivers/x11/xm_tri.c | 44 |
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]); \ } \ } |