draw_vertex.h revision 690a9de40b20092ae9027dc52d7b26a48995bbff
1690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul/**************************************************************************
2690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul *
3690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
4690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * All Rights Reserved.
5690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul *
6690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * Permission is hereby granted, free of charge, to any person obtaining a
7690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * copy of this software and associated documentation files (the
8690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * "Software"), to deal in the Software without restriction, including
9690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * without limitation the rights to use, copy, modify, merge, publish,
10690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * distribute, sub license, and/or sell copies of the Software, and to
11690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * permit persons to whom the Software is furnished to do so, subject to
12690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * the following conditions:
13690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul *
14690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * The above copyright notice and this permission notice (including the
15690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * next paragraph) shall be included in all copies or substantial portions
16690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * of the Software.
17690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul *
18690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
22690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul *
26690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul **************************************************************************/
27690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
28690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul/* Author:
29690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul *    Brian Paul
30690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul */
31690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
32690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
33690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#ifndef DRAW_VERTEX_H
34690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define DRAW_VERTEX_H
35690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
36690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
37690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul/***
38690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul *** XXX There's a lot of legacy tokens here that'll eventually go away.
39690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul *** (at least we don't include vf/vf.h anymore)
40690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul ***/
41690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
42690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
43690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paulenum {
44690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_POS = 0,
45690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_WEIGHT = 1,
46690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_NORMAL = 2,
47690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_COLOR0 = 3,
48690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_COLOR1 = 4,
49690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_FOG = 5,
50690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_COLOR_INDEX = 6,
51690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_EDGEFLAG = 7,
52690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_TEX0 = 8,
53690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_TEX1 = 9,
54690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_TEX2 = 10,
55690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_TEX3 = 11,
56690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_TEX4 = 12,
57690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_TEX5 = 13,
58690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_TEX6 = 14,
59690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_TEX7 = 15,
60690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_VAR0 = 16,
61690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_VAR1 = 17,
62690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_VAR2 = 18,
63690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_VAR3 = 19,
64690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_VAR4 = 20,
65690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_VAR5 = 21,
66690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_VAR6 = 22,
67690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_VAR7 = 23,
68690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_POINTSIZE = 24,
69690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_BFC0 = 25,
70690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_BFC1 = 26,
71690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_CLIP_POS = 27,
72690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_VERTEX_HEADER = 28,
73690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   VF_ATTRIB_MAX = 29
74690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul};
75690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
76690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define MAX_VARYING 8
77690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paulenum
78690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul{
79690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   FRAG_ATTRIB_WPOS = 0,
80690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   FRAG_ATTRIB_COL0 = 1,
81690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   FRAG_ATTRIB_COL1 = 2,
82690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   FRAG_ATTRIB_FOGC = 3,
83690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   FRAG_ATTRIB_TEX0 = 4,
84690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   FRAG_ATTRIB_TEX1 = 5,
85690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   FRAG_ATTRIB_TEX2 = 6,
86690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   FRAG_ATTRIB_TEX3 = 7,
87690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   FRAG_ATTRIB_TEX4 = 8,
88690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   FRAG_ATTRIB_TEX5 = 9,
89690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   FRAG_ATTRIB_TEX6 = 10,
90690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   FRAG_ATTRIB_TEX7 = 11,
91690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   FRAG_ATTRIB_VAR0 = 12,  /**< shader varying */
92690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   FRAG_ATTRIB_MAX = (FRAG_ATTRIB_VAR0 + MAX_VARYING)
93690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul};
94690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
95690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FRAG_BIT_WPOS  (1 << FRAG_ATTRIB_WPOS)
96690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FRAG_BIT_COL0  (1 << FRAG_ATTRIB_COL0)
97690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FRAG_BIT_COL1  (1 << FRAG_ATTRIB_COL1)
98690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FRAG_BIT_FOGC  (1 << FRAG_ATTRIB_FOGC)
99690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FRAG_BIT_TEX0  (1 << FRAG_ATTRIB_TEX0)
100690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
101690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
102690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
103690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define MAX_DRAW_BUFFERS 4
104690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
105690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paulenum
106690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul{
107690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   FRAG_RESULT_COLR = 0,
108690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   FRAG_RESULT_COLH = 1,
109690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   FRAG_RESULT_DEPR = 2,
110690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   FRAG_RESULT_DATA0 = 3,
111690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   FRAG_RESULT_MAX = (FRAG_RESULT_DATA0 + MAX_DRAW_BUFFERS)
112690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul};
113690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
114690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
115690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
116690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define MAX_VERT_ATTRIBS 12  /* OK? */
117690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
118690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FORMAT_OMIT 0
119690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FORMAT_1F   1
120690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FORMAT_2F   2
121690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FORMAT_3F   3
122690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FORMAT_4F   4
123690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FORMAT_4F_VIEWPORT   4
124690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#define FORMAT_4UB  5
125690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
126690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
127690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paulstruct vertex_info
128690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul{
129690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   uint num_attribs;
130690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   uint hwfmt[2];      /**< hardware format info for this format */
131690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   uint attr_mask;     /**< mask of VF_ATTR_ bits */
132690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   uint slot_to_attrib[MAX_VERT_ATTRIBS];
133690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   uint attrib_to_slot[VF_ATTRIB_MAX];
134690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   uint interp_mode[MAX_VERT_ATTRIBS];
135690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   uint format[MAX_VERT_ATTRIBS];   /**< FORMAT_x */
136690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul   uint size;          /**< total vertex size in dwords */
137690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul};
138690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
139690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
140690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul
141690a9de40b20092ae9027dc52d7b26a48995bbffBrian Paul#endif /* DRAW_VERTEX_H */
142