blob: 23459ff156e7ab46107c727bbeef5ac37602b902 [file] [log] [blame]
/* $XFree86: xc/extras/Mesa/src/mesa/drivers/dri/gamma/gamma_tritmp.h,v 1.2 2004/12/13 22:40:49 tsi Exp $ */
static void TAG(gamma_point)( gammaContextPtr gmesa,
const gammaVertex *v0 )
{
u_int32_t vColor;
u_int32_t vBegin;
vBegin = gmesa->Begin | B_PrimType_Points;
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, Begin, vBegin);
#if (IND & GAMMA_RAST_ALPHA_BIT)
vColor = (v0->v.color.alpha << 24) |
(v0->v.color.blue << 16) |
(v0->v.color.green << 8) |
(v0->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor4, vColor);
#else
vColor = (v0->v.color.blue << 16) |
(v0->v.color.green << 8) |
(v0->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor3, vColor);
#endif
#if (IND & GAMMA_RAST_TEX_BIT)
CHECK_DMA_BUFFER(gmesa, 6);
WRITEF(gmesa->buf, Tt2, v0->v.u0);
WRITEF(gmesa->buf, Ts2, v0->v.v0);
WRITEF(gmesa->buf, Vw, v0->v.w);
WRITEF(gmesa->buf, Vz, v0->v.z);
WRITEF(gmesa->buf, Vy, v0->v.y);
WRITEF(gmesa->buf, Vx4, v0->v.x);
#else
CHECK_DMA_BUFFER(gmesa, 4);
WRITEF(gmesa->buf, Vw, v0->v.w);
WRITEF(gmesa->buf, Vz, v0->v.z);
WRITEF(gmesa->buf, Vy, v0->v.y);
WRITEF(gmesa->buf, Vx4, v0->v.x);
#endif
#if !(IND & GAMMA_RAST_FLAT_BIT)
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, FlushSpan, 0);
#endif
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, End, 0);
}
static void TAG(gamma_line)( gammaContextPtr gmesa,
const gammaVertex *v0,
const gammaVertex *v1 )
{
u_int32_t vColor;
u_int32_t vBegin;
vBegin = gmesa->Begin | B_PrimType_Lines;
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, Begin, vBegin);
#if !(IND & GAMMA_RAST_FLAT_BIT)
#if (IND & GAMMA_RAST_ALPHA_BIT)
vColor = (v0->v.color.alpha << 24) |
(v0->v.color.blue << 16) |
(v0->v.color.green << 8) |
(v0->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor4, vColor);
#else
vColor = (v0->v.color.blue << 16) |
(v0->v.color.green << 8) |
(v0->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor3, vColor);
#endif
#else
#if (IND & GAMMA_RAST_ALPHA_BIT)
vColor = (v1->v.color.alpha << 24) |
(v1->v.color.blue << 16) |
(v1->v.color.green << 8) |
(v1->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor4, vColor);
#else
vColor = (v1->v.color.blue << 16) |
(v1->v.color.green << 8) |
(v1->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor3, vColor);
#endif
#endif
#if (IND & GAMMA_RAST_TEX_BIT)
CHECK_DMA_BUFFER(gmesa, 6);
WRITEF(gmesa->buf, Tt2, v0->v.u0);
WRITEF(gmesa->buf, Ts2, v0->v.v0);
WRITEF(gmesa->buf, Vw, v0->v.w);
WRITEF(gmesa->buf, Vz, v0->v.z);
WRITEF(gmesa->buf, Vy, v0->v.y);
WRITEF(gmesa->buf, Vx4, v0->v.x);
#else
CHECK_DMA_BUFFER(gmesa, 4);
WRITEF(gmesa->buf, Vw, v0->v.w);
WRITEF(gmesa->buf, Vz, v0->v.z);
WRITEF(gmesa->buf, Vy, v0->v.y);
WRITEF(gmesa->buf, Vx4, v0->v.x);
#endif
#if !(IND & GAMMA_RAST_FLAT_BIT)
#if (IND & GAMMA_RAST_ALPHA_BIT)
vColor = (v1->v.color.alpha << 24) |
(v1->v.color.blue << 16) |
(v1->v.color.green << 8) |
(v1->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor4, vColor);
#else
vColor = (v1->v.color.blue << 16) |
(v1->v.color.green << 8) |
(v1->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor3, vColor);
#endif
#endif
#if (IND & GAMMA_RAST_TEX_BIT)
CHECK_DMA_BUFFER(gmesa, 6);
WRITEF(gmesa->buf, Tt2, v1->v.u0);
WRITEF(gmesa->buf, Ts2, v1->v.v0);
WRITEF(gmesa->buf, Vw, v1->v.w);
WRITEF(gmesa->buf, Vz, v1->v.z);
WRITEF(gmesa->buf, Vy, v1->v.y);
WRITEF(gmesa->buf, Vx4, v1->v.x);
#else
CHECK_DMA_BUFFER(gmesa, 4);
WRITEF(gmesa->buf, Vw, v1->v.w);
WRITEF(gmesa->buf, Vz, v1->v.z);
WRITEF(gmesa->buf, Vy, v1->v.y);
WRITEF(gmesa->buf, Vx4, v1->v.x);
#endif
#if !(IND & GAMMA_RAST_FLAT_BIT)
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, FlushSpan, 0);
#endif
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, End, 0);
}
static void TAG(gamma_triangle)( gammaContextPtr gmesa,
const gammaVertex *v0,
const gammaVertex *v1,
const gammaVertex *v2 )
{
u_int32_t vColor;
u_int32_t vBegin;
vBegin = gmesa->Begin | B_PrimType_Triangles;
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, Begin, vBegin);
#if !(IND & GAMMA_RAST_FLAT_BIT)
#if (IND & GAMMA_RAST_ALPHA_BIT)
vColor = (v0->v.color.alpha << 24) |
(v0->v.color.blue << 16) |
(v0->v.color.green << 8) |
(v0->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor4, vColor);
#else
vColor = (v0->v.color.blue << 16) |
(v0->v.color.green << 8) |
(v0->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor3, vColor);
#endif
#else
#if (IND & GAMMA_RAST_ALPHA_BIT)
vColor = (v2->v.color.alpha << 24) |
(v2->v.color.blue << 16) |
(v2->v.color.green << 8) |
(v2->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor4, vColor);
#else
vColor = (v2->v.color.blue << 16) |
(v2->v.color.green << 8) |
(v2->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor3, vColor);
#endif
#endif
#if (IND & GAMMA_RAST_TEX_BIT)
CHECK_DMA_BUFFER(gmesa, 6);
WRITEF(gmesa->buf, Tt2, v0->v.u0);
WRITEF(gmesa->buf, Ts2, v0->v.v0);
WRITEF(gmesa->buf, Vw, v0->v.w);
WRITEF(gmesa->buf, Vz, v0->v.z);
WRITEF(gmesa->buf, Vy, v0->v.y);
WRITEF(gmesa->buf, Vx4, v0->v.x);
#else
CHECK_DMA_BUFFER(gmesa, 4);
WRITEF(gmesa->buf, Vw, v0->v.w);
WRITEF(gmesa->buf, Vz, v0->v.z);
WRITEF(gmesa->buf, Vy, v0->v.y);
WRITEF(gmesa->buf, Vx4, v0->v.x);
#endif
#if !(IND & GAMMA_RAST_FLAT_BIT)
#if (IND & GAMMA_RAST_ALPHA_BIT)
vColor = (v1->v.color.alpha << 24) |
(v1->v.color.blue << 16) |
(v1->v.color.green << 8) |
(v1->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor4, vColor);
#else
vColor = (v1->v.color.blue << 16) |
(v1->v.color.green << 8) |
(v1->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor3, vColor);
#endif
#endif
#if (IND & GAMMA_RAST_TEX_BIT)
CHECK_DMA_BUFFER(gmesa, 6);
WRITEF(gmesa->buf, Tt2, v1->v.u0);
WRITEF(gmesa->buf, Ts2, v1->v.v0);
WRITEF(gmesa->buf, Vw, v1->v.w);
WRITEF(gmesa->buf, Vz, v1->v.z);
WRITEF(gmesa->buf, Vy, v1->v.y);
WRITEF(gmesa->buf, Vx4, v1->v.x);
#else
CHECK_DMA_BUFFER(gmesa, 4);
WRITEF(gmesa->buf, Vw, v1->v.w);
WRITEF(gmesa->buf, Vz, v1->v.z);
WRITEF(gmesa->buf, Vy, v1->v.y);
WRITEF(gmesa->buf, Vx4, v1->v.x);
#endif
#if !(IND & GAMMA_RAST_FLAT_BIT)
#if (IND & GAMMA_RAST_ALPHA_BIT)
vColor = (v2->v.color.alpha << 24) |
(v2->v.color.blue << 16) |
(v2->v.color.green << 8) |
(v2->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor4, vColor);
#else
vColor = (v2->v.color.blue << 16) |
(v2->v.color.green << 8) |
(v2->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor3, vColor);
#endif
#endif
#if (IND & GAMMA_RAST_TEX_BIT)
CHECK_DMA_BUFFER(gmesa, 6);
WRITEF(gmesa->buf, Tt2, v2->v.u0);
WRITEF(gmesa->buf, Ts2, v2->v.v0);
WRITEF(gmesa->buf, Vw, v2->v.w);
WRITEF(gmesa->buf, Vz, v2->v.z);
WRITEF(gmesa->buf, Vy, v2->v.y);
WRITEF(gmesa->buf, Vx4, v2->v.x);
#else
CHECK_DMA_BUFFER(gmesa, 4);
WRITEF(gmesa->buf, Vw, v2->v.w);
WRITEF(gmesa->buf, Vz, v2->v.z);
WRITEF(gmesa->buf, Vy, v2->v.y);
WRITEF(gmesa->buf, Vx4, v2->v.x);
#endif
#if !(IND & GAMMA_RAST_FLAT_BIT)
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, FlushSpan, 0);
#endif
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, End, 0);
}
static void TAG(gamma_quad)( gammaContextPtr gmesa,
const gammaVertex *v0,
const gammaVertex *v1,
const gammaVertex *v2,
const gammaVertex *v3 )
{
u_int32_t vColor;
u_int32_t vBegin;
vBegin = gmesa->Begin | B_PrimType_Quads;
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, Begin, vBegin);
#if !(IND & GAMMA_RAST_FLAT_BIT)
#if (IND & GAMMA_RAST_ALPHA_BIT)
vColor = (v0->v.color.alpha << 24) |
(v0->v.color.blue << 16) |
(v0->v.color.green << 8) |
(v0->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor4, vColor);
#else
vColor = (v0->v.color.blue << 16) |
(v0->v.color.green << 8) |
(v0->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor3, vColor);
#endif
#else
#if (IND & GAMMA_RAST_ALPHA_BIT)
vColor = (v3->v.color.alpha << 24) |
(v3->v.color.blue << 16) |
(v3->v.color.green << 8) |
(v3->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor4, vColor);
#else
vColor = (v3->v.color.blue << 16) |
(v3->v.color.green << 8) |
(v3->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor3, vColor);
#endif
#endif
#if (IND & GAMMA_RAST_TEX_BIT)
CHECK_DMA_BUFFER(gmesa, 6);
WRITEF(gmesa->buf, Tt2, v0->v.u0);
WRITEF(gmesa->buf, Ts2, v0->v.v0);
WRITEF(gmesa->buf, Vw, v0->v.w);
WRITEF(gmesa->buf, Vz, v0->v.z);
WRITEF(gmesa->buf, Vy, v0->v.y);
WRITEF(gmesa->buf, Vx4, v0->v.x);
#else
CHECK_DMA_BUFFER(gmesa, 4);
WRITEF(gmesa->buf, Vw, v0->v.w);
WRITEF(gmesa->buf, Vz, v0->v.z);
WRITEF(gmesa->buf, Vy, v0->v.y);
WRITEF(gmesa->buf, Vx4, v0->v.x);
#endif
#if !(IND & GAMMA_RAST_FLAT_BIT)
#if (IND & GAMMA_RAST_ALPHA_BIT)
vColor = (v1->v.color.alpha << 24) |
(v1->v.color.blue << 16) |
(v1->v.color.green << 8) |
(v1->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor4, vColor);
#else
vColor = (v1->v.color.blue << 16) |
(v1->v.color.green << 8) |
(v1->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor3, vColor);
#endif
#endif
#if (IND & GAMMA_RAST_TEX_BIT)
CHECK_DMA_BUFFER(gmesa, 6);
WRITEF(gmesa->buf, Tt2, v1->v.u0);
WRITEF(gmesa->buf, Ts2, v1->v.v0);
WRITEF(gmesa->buf, Vw, v1->v.w);
WRITEF(gmesa->buf, Vz, v1->v.z);
WRITEF(gmesa->buf, Vy, v1->v.y);
WRITEF(gmesa->buf, Vx4, v1->v.x);
#else
CHECK_DMA_BUFFER(gmesa, 4);
WRITEF(gmesa->buf, Vw, v1->v.w);
WRITEF(gmesa->buf, Vz, v1->v.z);
WRITEF(gmesa->buf, Vy, v1->v.y);
WRITEF(gmesa->buf, Vx4, v1->v.x);
#endif
#if !(IND & GAMMA_RAST_FLAT_BIT)
#if (IND & GAMMA_RAST_ALPHA_BIT)
vColor = (v2->v.color.alpha << 24) |
(v2->v.color.blue << 16) |
(v2->v.color.green << 8) |
(v2->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor4, vColor);
#else
vColor = (v2->v.color.blue << 16) |
(v2->v.color.green << 8) |
(v2->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor3, vColor);
#endif
#endif
#if (IND & GAMMA_RAST_TEX_BIT)
CHECK_DMA_BUFFER(gmesa, 6);
WRITEF(gmesa->buf, Tt2, v2->v.u0);
WRITEF(gmesa->buf, Ts2, v2->v.v0);
WRITEF(gmesa->buf, Vw, v2->v.w);
WRITEF(gmesa->buf, Vz, v2->v.z);
WRITEF(gmesa->buf, Vy, v2->v.y);
WRITEF(gmesa->buf, Vx4, v2->v.x);
#else
CHECK_DMA_BUFFER(gmesa, 4);
WRITEF(gmesa->buf, Vw, v2->v.w);
WRITEF(gmesa->buf, Vz, v2->v.z);
WRITEF(gmesa->buf, Vy, v2->v.y);
WRITEF(gmesa->buf, Vx4, v2->v.x);
#endif
#if !(IND & GAMMA_RAST_FLAT_BIT)
#if (IND & GAMMA_RAST_ALPHA_BIT)
vColor = (v3->v.color.alpha << 24) |
(v3->v.color.blue << 16) |
(v3->v.color.green << 8) |
(v3->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor4, vColor);
#else
vColor = (v3->v.color.blue << 16) |
(v3->v.color.green << 8) |
(v3->v.color.red << 0);
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, PackedColor3, vColor);
#endif
#endif
#if (IND & GAMMA_RAST_TEX_BIT)
CHECK_DMA_BUFFER(gmesa, 6);
WRITEF(gmesa->buf, Tt2, v3->v.u0);
WRITEF(gmesa->buf, Ts2, v3->v.v0);
WRITEF(gmesa->buf, Vw, v3->v.w);
WRITEF(gmesa->buf, Vz, v3->v.z);
WRITEF(gmesa->buf, Vy, v3->v.y);
WRITEF(gmesa->buf, Vx4, v3->v.x);
#else
CHECK_DMA_BUFFER(gmesa, 4);
WRITEF(gmesa->buf, Vw, v3->v.w);
WRITEF(gmesa->buf, Vz, v3->v.z);
WRITEF(gmesa->buf, Vy, v3->v.y);
WRITEF(gmesa->buf, Vx4, v3->v.x);
#endif
#if !(IND & GAMMA_RAST_FLAT_BIT)
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, FlushSpan, 0);
#endif
CHECK_DMA_BUFFER(gmesa, 1);
WRITE(gmesa->buf, End, 0);
}
static void TAG(gamma_init)(void)
{
gamma_point_tab[IND] = TAG(gamma_point);
gamma_line_tab[IND] = TAG(gamma_line);
gamma_tri_tab[IND] = TAG(gamma_triangle);
gamma_quad_tab[IND] = TAG(gamma_quad);
}
#undef IND
#undef TAG