diff options
author | Alan Hourihane <alanh@tungstengraphics.com> | 2003-12-04 13:38:06 +0000 |
---|---|---|
committer | Alan Hourihane <alanh@tungstengraphics.com> | 2003-12-04 13:38:06 +0000 |
commit | 13e6a4849c6800eac454fd1010cb2320874f2ed6 (patch) | |
tree | c311173244771131a63ba18318be645b4534521c /src/mesa/drivers/dri/ffb/ffb_linetmp.h | |
parent | 15af25aca0ed6a2390fe9e0d91055cfc01134ce2 (diff) |
add SPARC ffb DRI driver
Diffstat (limited to 'src/mesa/drivers/dri/ffb/ffb_linetmp.h')
-rw-r--r-- | src/mesa/drivers/dri/ffb/ffb_linetmp.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/ffb/ffb_linetmp.h b/src/mesa/drivers/dri/ffb/ffb_linetmp.h new file mode 100644 index 0000000000..0951513ca1 --- /dev/null +++ b/src/mesa/drivers/dri/ffb/ffb_linetmp.h @@ -0,0 +1,81 @@ +/* $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 |