From f4092abdf94af6a99aff944d6264bc1284e8bdd4 Mon Sep 17 00:00:00 2001 From: Reinhard Tartler Date: Mon, 10 Oct 2011 17:43:39 +0200 Subject: Imported nx-X11-3.1.0-1.tar.gz Summary: Imported nx-X11-3.1.0-1.tar.gz Keywords: Imported nx-X11-3.1.0-1.tar.gz into Git repository --- .../Mesa/src/mesa/drivers/dri/ffb/ffb_tritmp.h | 239 +++++++++++++++++++++ 1 file changed, 239 insertions(+) create mode 100644 nx-X11/extras/Mesa/src/mesa/drivers/dri/ffb/ffb_tritmp.h (limited to 'nx-X11/extras/Mesa/src/mesa/drivers/dri/ffb/ffb_tritmp.h') diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/ffb/ffb_tritmp.h b/nx-X11/extras/Mesa/src/mesa/drivers/dri/ffb/ffb_tritmp.h new file mode 100644 index 000000000..612ef2433 --- /dev/null +++ b/nx-X11/extras/Mesa/src/mesa/drivers/dri/ffb/ffb_tritmp.h @@ -0,0 +1,239 @@ +/* $XFree86: xc/lib/GL/mesa/src/drv/ffb/ffb_tritmp.h,v 1.2 2002/02/22 21:32:59 dawes Exp $ */ + +static void TAG(ffb_triangle)( GLcontext *ctx, + ffb_vertex *v0, + ffb_vertex *v1, + ffb_vertex *v2 ) +{ + ffbContextPtr fmesa = FFB_CONTEXT(ctx); + ffb_fbcPtr ffb = fmesa->regs; +#if (IND & FFB_TRI_FLAT_BIT) + GLuint const_fg; +#endif + FFB_DELAYED_VIEWPORT_VARS; + +#ifdef TRI_DEBUG + fprintf(stderr, "FFB: ffb_triangle [" +#if (IND & FFB_TRI_CULL_BIT) + " CULL" +#endif +#if (IND & FFB_TRI_FLAT_BIT) + " FLAT" +#endif +#if (IND & FFB_TRI_ALPHA_BIT) + " ALPHA" +#endif + " ]\n"); +#endif + +#if (IND & FFB_TRI_CULL_BIT) + { /* NOTE: These are not viewport transformed yet. */ + GLfloat ex = v1->x - v0->x; + GLfloat ey = v1->y - v0->y; + GLfloat fx = v2->x - v0->x; + GLfloat fy = v2->y - v0->y; + GLfloat c = ex*fy-ey*fx; + + /* Culled... */ + if (c * fmesa->backface_sign > fmesa->ffb_zero) + return; + } +#endif + +#if (IND & FFB_TRI_FLAT_BIT) + const_fg = FFB_PACK_CONST_UBYTE_ARGB_COLOR( v2->color[0] ); +#ifdef TRI_DEBUG + fprintf(stderr, "FFB_tri: const_fg %08x (B[%f] G[%f] R[%f])\n", + const_fg, + FFB_2_30_FIXED_TO_FLOAT(v2->color[0].blue), + FFB_2_30_FIXED_TO_FLOAT(v2->color[0].green), + FFB_2_30_FIXED_TO_FLOAT(v2->color[0].red)); +#endif +#endif + + +#if (IND & FFB_TRI_FLAT_BIT) + FFBFifo(fmesa, 1); + ffb->fg = const_fg; +#endif + +#if (IND & FFB_TRI_FLAT_BIT) + FFBFifo(fmesa, 9); +#else +#if (IND & FFB_TRI_ALPHA_BIT) + FFBFifo(fmesa, 21); +#else + FFBFifo(fmesa, 18); +#endif +#endif + + FFB_DUMP_VERTEX(v0); +#if !(IND & FFB_TRI_FLAT_BIT) +#if (IND & FFB_TRI_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); + + FFB_DUMP_VERTEX(v1); +#if !(IND & FFB_TRI_FLAT_BIT) +#if (IND & FFB_TRI_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); + + FFB_DUMP_VERTEX(v2); +#if !(IND & FFB_TRI_FLAT_BIT) +#if (IND & FFB_TRI_ALPHA_BIT) + ffb->alpha = FFB_GET_ALPHA(v2); +#endif + ffb->red = FFB_GET_RED(v2); + ffb->green = FFB_GET_GREEN(v2); + ffb->blue = FFB_GET_BLUE(v2); +#endif + ffb->z = FFB_GET_Z(v2); + ffb->y = FFB_GET_Y(v2); + ffb->x = FFB_GET_X(v2); + + fmesa->ffbScreen->rp_active = 1; +} + + +static void TAG(ffb_quad)(GLcontext *ctx, + ffb_vertex *v0, + ffb_vertex *v1, + ffb_vertex *v2, + ffb_vertex *v3 ) +{ + ffbContextPtr fmesa = FFB_CONTEXT(ctx); + ffb_fbcPtr ffb = fmesa->regs; +#if (IND & FFB_TRI_FLAT_BIT) + GLuint const_fg; +#endif + FFB_DELAYED_VIEWPORT_VARS; + +#ifdef TRI_DEBUG + fprintf(stderr, "FFB: ffb_quad [" +#if (IND & FFB_TRI_CULL_BIT) + " CULL" +#endif +#if (IND & FFB_TRI_FLAT_BIT) + " FLAT" +#endif +#if (IND & FFB_TRI_ALPHA_BIT) + " ALPHA" +#endif + " ]\n"); +#endif /* TRI_DEBUG */ + +#if (IND & FFB_TRI_CULL_BIT) + { /* NOTE: These are not viewport transformed yet. */ + GLfloat ex = v2->x - v0->x; + GLfloat ey = v2->y - v0->y; + GLfloat fx = v3->x - v1->x; + GLfloat fy = v3->y - v1->y; + GLfloat c = ex*fy-ey*fx; + + /* Culled... */ + if (c * fmesa->backface_sign > fmesa->ffb_zero) + return; + } +#endif + +#if (IND & FFB_TRI_FLAT_BIT) + const_fg = FFB_PACK_CONST_UBYTE_ARGB_COLOR( v3->color[0] ); +#ifdef TRI_DEBUG + fprintf(stderr, "FFB_quad: const_fg %08x (B[%f] G[%f] R[%f])\n", + const_fg, + FFB_2_30_FIXED_TO_FLOAT(v3->color[0].blue), + FFB_2_30_FIXED_TO_FLOAT(v3->color[0].green), + FFB_2_30_FIXED_TO_FLOAT(v3->color[0].red)); +#endif +#endif + + +#if (IND & FFB_TRI_FLAT_BIT) + FFBFifo(fmesa, 13); + ffb->fg = const_fg; +#else +#if (IND & FFB_TRI_ALPHA_BIT) + FFBFifo(fmesa, 28); +#else + FFBFifo(fmesa, 24); +#endif +#endif + + FFB_DUMP_VERTEX(v0); +#if !(IND & FFB_TRI_FLAT_BIT) +#if (IND & FFB_TRI_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); + + FFB_DUMP_VERTEX(v1); +#if !(IND & FFB_TRI_FLAT_BIT) +#if (IND & FFB_TRI_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); + + FFB_DUMP_VERTEX(v2); +#if !(IND & FFB_TRI_FLAT_BIT) +#if (IND & FFB_TRI_ALPHA_BIT) + ffb->alpha = FFB_GET_ALPHA(v2); +#endif + ffb->red = FFB_GET_RED(v2); + ffb->green = FFB_GET_GREEN(v2); + ffb->blue = FFB_GET_BLUE(v2); +#endif + ffb->z = FFB_GET_Z(v2); + ffb->y = FFB_GET_Y(v2); + ffb->x = FFB_GET_X(v2); + + FFB_DUMP_VERTEX(v3); +#if !(IND & FFB_TRI_FLAT_BIT) +#if (IND & FFB_TRI_ALPHA_BIT) + ffb->alpha = FFB_GET_ALPHA(v3); +#endif + ffb->red = FFB_GET_RED(v3); + ffb->green = FFB_GET_GREEN(v3); + ffb->blue = FFB_GET_BLUE(v3); +#endif + ffb->z = FFB_GET_Z(v3); + ffb->dmyf = FFB_GET_Y(v3); + ffb->dmxf = FFB_GET_X(v3); + + fmesa->ffbScreen->rp_active = 1; +} + +static void TAG(ffb_init)(void) +{ + ffb_tri_tab[IND] = TAG(ffb_triangle); + ffb_quad_tab[IND] = TAG(ffb_quad); +} + +#undef IND +#undef TAG -- cgit v1.2.3