7 #define POLYFILL_MODE_MASK 0x03
8 #define POLYFILL_TEX_BIT 0x04
9 #define POLYFILL_ALPHA_BIT 0x08
10 #define POLYFILL_ADD_BIT 0x10
11 #define POLYFILL_ZBUF_BIT 0x20
18 POLYFILL_TEX_WIRE = 4,
22 POLYFILL_ALPHA_WIRE = 8,
24 POLYFILL_ALPHA_GOURAUD,
26 POLYFILL_ALPHA_TEX_WIRE = 12,
27 POLYFILL_ALPHA_TEX_FLAT,
28 POLYFILL_ALPHA_TEX_GOURAUD,
30 POLYFILL_ADD_WIRE = 16,
34 POLYFILL_ADD_TEX_WIRE = 20,
35 POLYFILL_ADD_TEX_FLAT,
36 POLYFILL_ADD_TEX_GOURAUD,
39 POLYFILL_WIRE_ZBUF = 32,
41 POLYFILL_GOURAUD_ZBUF,
43 POLYFILL_TEX_WIRE_ZBUF = 36,
44 POLYFILL_TEX_FLAT_ZBUF,
45 POLYFILL_TEX_GOURAUD_ZBUF,
47 POLYFILL_ALPHA_WIRE_ZBUF = 40,
48 POLYFILL_ALPHA_FLAT_ZBUF,
49 POLYFILL_ALPHA_GOURAUD_ZBUF,
51 POLYFILL_ALPHA_TEX_WIRE_ZBUF = 44,
52 POLYFILL_ALPHA_TEX_FLAT_ZBUF,
53 POLYFILL_ALPHA_TEX_GOURAUD_ZBUF,
55 POLYFILL_ADD_WIRE_ZBUF = 48,
56 POLYFILL_ADD_FLAT_ZBUF,
57 POLYFILL_ADD_GOURAUD_ZBUF,
59 POLYFILL_ADD_TEX_WIRE_ZBUF = 52,
60 POLYFILL_ADD_TEX_FLAT_ZBUF,
61 POLYFILL_ADD_TEX_GOURAUD_ZBUF
64 typedef uint32_t gaw_pixel;
66 #define PACK_RGB(r, g, b) \
67 (((r) << 16) | ((g) << 8) | (b))
68 #define PACK_RGBA(r, g, b, a) \
69 (((a) << 24) | ((r) << 16) | ((g) << 8) | (b))
70 #define UNPACK_R(pix) ((pix) & 0xff)
71 #define UNPACK_G(pix) (((pix) >> 8) & 0xff)
72 #define UNPACK_B(pix) (((pix) >> 16) & 0xff)
73 #define UNPACK_A(pix) ((pix) >> 24)
82 /* projected vertices for the rasterizer */
84 int32_t x, y; /* 24.8 fixed point */
85 int32_t u, v; /* 16.16 fixed point */
86 int32_t r, g, b, a; /* int 0-255 */
87 int32_t z; /* 0-65535 */
95 unsigned int xmask, ymask;
98 extern struct pimage pfill_fb;
99 extern struct pimage pfill_tex;
100 extern uint32_t *pfill_zbuf;
102 void polyfill_fbheight(int height);
104 void polyfill(int mode, struct pvertex *verts, int nverts);
106 void polyfill_wire(struct pvertex *verts, int nverts);
107 void polyfill_flat(struct pvertex *verts, int nverts);
108 void polyfill_gouraud(struct pvertex *verts, int nverts);
109 void polyfill_tex_wire(struct pvertex *verts, int nverts);
110 void polyfill_tex_flat(struct pvertex *verts, int nverts);
111 void polyfill_tex_gouraud(struct pvertex *verts, int nverts);
112 void polyfill_alpha_wire(struct pvertex *verts, int nverts);
113 void polyfill_alpha_flat(struct pvertex *verts, int nverts);
114 void polyfill_alpha_gouraud(struct pvertex *verts, int nverts);
115 void polyfill_alpha_tex_wire(struct pvertex *verts, int nverts);
116 void polyfill_alpha_tex_flat(struct pvertex *verts, int nverts);
117 void polyfill_alpha_tex_gouraud(struct pvertex *verts, int nverts);
118 void polyfill_add_wire(struct pvertex *verts, int nverts);
119 void polyfill_add_flat(struct pvertex *verts, int nverts);
120 void polyfill_add_gouraud(struct pvertex *verts, int nverts);
121 void polyfill_add_tex_wire(struct pvertex *verts, int nverts);
122 void polyfill_add_tex_flat(struct pvertex *verts, int nverts);
123 void polyfill_add_tex_gouraud(struct pvertex *verts, int nverts);
124 void polyfill_flat_zbuf(struct pvertex *verts, int nverts);
125 void polyfill_gouraud_zbuf(struct pvertex *verts, int nverts);
126 void polyfill_tex_flat_zbuf(struct pvertex *verts, int nverts);
127 void polyfill_tex_gouraud_zbuf(struct pvertex *verts, int nverts);
128 void polyfill_alpha_flat_zbuf(struct pvertex *verts, int nverts);
129 void polyfill_alpha_gouraud_zbuf(struct pvertex *verts, int nverts);
130 void polyfill_alpha_tex_flat_zbuf(struct pvertex *verts, int nverts);
131 void polyfill_alpha_tex_gouraud_zbuf(struct pvertex *verts, int nverts);
132 void polyfill_add_flat_zbuf(struct pvertex *verts, int nverts);
133 void polyfill_add_gouraud_zbuf(struct pvertex *verts, int nverts);
134 void polyfill_add_tex_flat_zbuf(struct pvertex *verts, int nverts);
135 void polyfill_add_tex_gouraud_zbuf(struct pvertex *verts, int nverts);
137 #endif /* POLYFILL_H_ */