| /* $XFree86: xc/lib/GL/mesa/src/drv/ffb/ffb_linetmp.h,v 1.2 2002/02/22 21:32:58 dawes Exp $ */ |
| |
| static INLINE void TAG(ffb_line)(GLcontext *ctx, ffb_vertex *v0, |
| ffb_vertex *v1 ) |
| { |
| ffbContextPtr fmesa = FFB_CONTEXT(ctx); |
| ffb_fbcPtr ffb = fmesa->regs; |
| #if (IND & FFB_LINE_FLAT_BIT) |
| const GLuint const_fg = FFB_PACK_CONST_UBYTE_ARGB_COLOR( v1->color[0] ); |
| #endif |
| FFB_DELAYED_VIEWPORT_VARS; |
| |
| #ifdef FFB_LINE_TRACE |
| fprintf(stderr, "FFB: ffb_line [" |
| #if (IND & FFB_LINE_FLAT_BIT) |
| " FLAT" |
| #endif |
| #if (IND & FFB_LINE_ALPHA_BIT) |
| " ALPHA" |
| #endif |
| " ]\n"); |
| #endif |
| |
| #if (IND & FFB_LINE_FLAT_BIT) |
| FFBFifo(fmesa, 1); |
| ffb->fg = const_fg; |
| #ifdef FFB_LINE_TRACE |
| fprintf(stderr, "FFB: ffb_line confg_fg[%08x]\n", const_fg); |
| #endif |
| #endif |
| |
| #if (IND & FFB_LINE_FLAT_BIT) |
| /* (2 * 3) + 1 */ |
| FFBFifo(fmesa, 7); |
| #else |
| #if (IND & FFB_LINE_ALPHA_BIT) |
| /* (2 * 7) + 1 */ |
| FFBFifo(fmesa, 15); |
| #else |
| /* (2 * 6) + 1 */ |
| FFBFifo(fmesa, 13); |
| #endif |
| #endif |
| |
| /* Using DDLINE or AALINE, init the line pattern state. */ |
| ffb->lpat = fmesa->lpat; |
| |
| #if !(IND & FFB_LINE_FLAT_BIT) |
| #if (IND & FFB_LINE_ALPHA_BIT) |
| ffb->alpha = FFB_GET_ALPHA(v0); |
| #endif |
| ffb->red = FFB_GET_RED(v0); |
| ffb->green = FFB_GET_GREEN(v0); |
| ffb->blue = FFB_GET_BLUE(v0); |
| #endif |
| ffb->z = FFB_GET_Z(v0); |
| ffb->ryf = FFB_GET_Y(v0); |
| ffb->rxf = FFB_GET_X(v0); |
| |
| #if !(IND & FFB_LINE_FLAT_BIT) |
| #if (IND & FFB_LINE_ALPHA_BIT) |
| ffb->alpha = FFB_GET_ALPHA(v1); |
| #endif |
| ffb->red = FFB_GET_RED(v1); |
| ffb->green = FFB_GET_GREEN(v1); |
| ffb->blue = FFB_GET_BLUE(v1); |
| #endif |
| ffb->z = FFB_GET_Z(v1); |
| ffb->y = FFB_GET_Y(v1); |
| ffb->x = FFB_GET_X(v1); |
| |
| fmesa->ffbScreen->rp_active = 1; |
| } |
| |
| static void TAG(init)(void) |
| { |
| ffb_line_tab[IND] = TAG(ffb_line); |
| } |
| |
| #undef IND |
| #undef TAG |