summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/ffb/ffb_pointtmp.h
blob: 3003de70c69a187a172bf611bed2cc1bc46a50b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

static INLINE void TAG(ffb_draw_point)(GLcontext *ctx, ffb_vertex *tmp )
{
	ffbContextPtr fmesa = FFB_CONTEXT(ctx);
	ffb_fbcPtr ffb = fmesa->regs;
	FFB_DELAYED_VIEWPORT_VARS;

#ifdef FFB_POINT_TRACE
	fprintf(stderr, "FFB: ffb_point ["
#if (IND & FFB_POINT_AA_BIT)
		"AA"
#endif
		"] X(%f) Y(%f) Z(%f)\n",
		tmp->x, tmp->y, tmp->z);
#endif

#if (IND & FFB_POINT_AA_BIT)
	FFBFifo(fmesa, 4);
			
	ffb->fg = FFB_PACK_CONST_UBYTE_ARGB_COLOR( tmp->color[0] );
	ffb->z = FFB_GET_Z(tmp);
	ffb->y = FFB_GET_Y(tmp) + 0x8000 /* FIX ME */;
	ffb->x = FFB_GET_X(tmp) + 0x8000 /* FIX ME */;
#else
	{
		unsigned int const_fg, const_z, h, w;

		const_fg = FFB_PACK_CONST_UBYTE_ARGB_COLOR( tmp->color[0] );
		const_z = Z_FROM_MESA(FFB_Z_TO_FLOAT(FFB_GET_Z(tmp)));
		h = FFB_GET_Y(tmp) >> 16;
		w = FFB_GET_X(tmp) >> 16;
#ifdef FFB_POINT_TRACE
		fprintf(stderr, "FFB: ffb_point fg(%08x) z(%08x) h(%08x) w(%08x)\n",
			const_fg, const_z, h, w);
#endif
		FFBFifo(fmesa, 4);
		ffb->fg = const_fg;
		ffb->constz = const_z;
		ffb->bh = h;
		ffb->bw = w;
	}
#endif

	fmesa->ffbScreen->rp_active = 1;
}


static void TAG(init)(void)
{
	ffb_point_tab[IND] = TAG(ffb_draw_point);
}

#undef IND
#undef TAG