Merge branch 'mesa_7_6_branch' into mesa_7_7_branch
[mesa.git] / src / gallium / auxiliary / tgsi / tgsi_build.h
1 /**************************************************************************
2 *
3 * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
4 * All Rights Reserved.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the
8 * "Software"), to deal in the Software without restriction, including
9 * without limitation the rights to use, copy, modify, merge, publish,
10 * distribute, sub license, and/or sell copies of the Software, and to
11 * permit persons to whom the Software is furnished to do so, subject to
12 * the following conditions:
13 *
14 * The above copyright notice and this permission notice (including the
15 * next paragraph) shall be included in all copies or substantial portions
16 * of the Software.
17 *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21 * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
22 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 *
26 **************************************************************************/
27
28 #ifndef TGSI_BUILD_H
29 #define TGSI_BUILD_H
30
31
32 struct tgsi_token;
33
34
35 #if defined __cplusplus
36 extern "C" {
37 #endif
38
39 /*
40 * version
41 */
42
43 struct tgsi_version
44 tgsi_build_version( void );
45
46 /*
47 * header
48 */
49
50 struct tgsi_header
51 tgsi_build_header( void );
52
53 struct tgsi_processor
54 tgsi_default_processor( void );
55
56 struct tgsi_processor
57 tgsi_build_processor(
58 unsigned processor,
59 struct tgsi_header *header );
60
61 /*
62 * declaration
63 */
64
65 struct tgsi_declaration
66 tgsi_default_declaration( void );
67
68 struct tgsi_declaration
69 tgsi_build_declaration(
70 unsigned file,
71 unsigned usage_mask,
72 unsigned interpolate,
73 unsigned semantic,
74 unsigned centroid,
75 unsigned invariant,
76 struct tgsi_header *header );
77
78 struct tgsi_full_declaration
79 tgsi_default_full_declaration( void );
80
81 unsigned
82 tgsi_build_full_declaration(
83 const struct tgsi_full_declaration *full_decl,
84 struct tgsi_token *tokens,
85 struct tgsi_header *header,
86 unsigned maxsize );
87
88 struct tgsi_declaration_range
89 tgsi_default_declaration_range( void );
90
91 struct tgsi_declaration_range
92 tgsi_build_declaration_range(
93 unsigned first,
94 unsigned last,
95 struct tgsi_declaration *declaration,
96 struct tgsi_header *header );
97
98 struct tgsi_declaration_semantic
99 tgsi_default_declaration_semantic( void );
100
101 struct tgsi_declaration_semantic
102 tgsi_build_declaration_semantic(
103 unsigned semantic_name,
104 unsigned semantic_index,
105 struct tgsi_declaration *declaration,
106 struct tgsi_header *header );
107
108 /*
109 * immediate
110 */
111
112 struct tgsi_immediate
113 tgsi_default_immediate( void );
114
115 struct tgsi_immediate
116 tgsi_build_immediate(
117 struct tgsi_header *header );
118
119 struct tgsi_full_immediate
120 tgsi_default_full_immediate( void );
121
122 union tgsi_immediate_data
123 tgsi_build_immediate_float32(
124 float value,
125 struct tgsi_immediate *immediate,
126 struct tgsi_header *header );
127
128 unsigned
129 tgsi_build_full_immediate(
130 const struct tgsi_full_immediate *full_imm,
131 struct tgsi_token *tokens,
132 struct tgsi_header *header,
133 unsigned maxsize );
134
135 /*
136 * instruction
137 */
138
139 struct tgsi_instruction
140 tgsi_default_instruction( void );
141
142 struct tgsi_instruction
143 tgsi_build_instruction(
144 unsigned opcode,
145 unsigned saturate,
146 unsigned num_dst_regs,
147 unsigned num_src_regs,
148 struct tgsi_header *header );
149
150 struct tgsi_full_instruction
151 tgsi_default_full_instruction( void );
152
153 unsigned
154 tgsi_build_full_instruction(
155 const struct tgsi_full_instruction *full_inst,
156 struct tgsi_token *tokens,
157 struct tgsi_header *header,
158 unsigned maxsize );
159
160 struct tgsi_instruction_ext_label
161 tgsi_default_instruction_ext_label( void );
162
163 unsigned
164 tgsi_compare_instruction_ext_label(
165 struct tgsi_instruction_ext_label a,
166 struct tgsi_instruction_ext_label b );
167
168 struct tgsi_instruction_ext_label
169 tgsi_build_instruction_ext_label(
170 unsigned label,
171 struct tgsi_token *prev_token,
172 struct tgsi_instruction *instruction,
173 struct tgsi_header *header );
174
175 struct tgsi_instruction_ext_texture
176 tgsi_default_instruction_ext_texture( void );
177
178 unsigned
179 tgsi_compare_instruction_ext_texture(
180 struct tgsi_instruction_ext_texture a,
181 struct tgsi_instruction_ext_texture b );
182
183 struct tgsi_instruction_ext_texture
184 tgsi_build_instruction_ext_texture(
185 unsigned texture,
186 struct tgsi_token *prev_token,
187 struct tgsi_instruction *instruction,
188 struct tgsi_header *header );
189
190 struct tgsi_instruction_ext_predicate
191 tgsi_default_instruction_ext_predicate(void);
192
193 unsigned
194 tgsi_compare_instruction_ext_predicate(struct tgsi_instruction_ext_predicate a,
195 struct tgsi_instruction_ext_predicate b);
196
197 struct tgsi_instruction_ext_predicate
198 tgsi_build_instruction_ext_predicate(unsigned index,
199 unsigned negate,
200 unsigned swizzleX,
201 unsigned swizzleY,
202 unsigned swizzleZ,
203 unsigned swizzleW,
204 struct tgsi_token *prev_token,
205 struct tgsi_instruction *instruction,
206 struct tgsi_header *header);
207
208 struct tgsi_src_register
209 tgsi_default_src_register( void );
210
211 struct tgsi_src_register
212 tgsi_build_src_register(
213 unsigned file,
214 unsigned swizzle_x,
215 unsigned swizzle_y,
216 unsigned swizzle_z,
217 unsigned swizzle_w,
218 unsigned negate,
219 unsigned indirect,
220 unsigned dimension,
221 int index,
222 struct tgsi_instruction *instruction,
223 struct tgsi_header *header );
224
225 struct tgsi_full_src_register
226 tgsi_default_full_src_register( void );
227
228 struct tgsi_src_register_ext_mod
229 tgsi_default_src_register_ext_mod( void );
230
231 unsigned
232 tgsi_compare_src_register_ext_mod(
233 struct tgsi_src_register_ext_mod a,
234 struct tgsi_src_register_ext_mod b );
235
236 struct tgsi_src_register_ext_mod
237 tgsi_build_src_register_ext_mod(
238 unsigned complement,
239 unsigned bias,
240 unsigned scale_2x,
241 unsigned absolute,
242 unsigned negate,
243 struct tgsi_token *prev_token,
244 struct tgsi_instruction *instruction,
245 struct tgsi_header *header );
246
247 struct tgsi_dimension
248 tgsi_default_dimension( void );
249
250 struct tgsi_dimension
251 tgsi_build_dimension(
252 unsigned indirect,
253 unsigned index,
254 struct tgsi_instruction *instruction,
255 struct tgsi_header *header );
256
257 struct tgsi_dst_register
258 tgsi_default_dst_register( void );
259
260 struct tgsi_dst_register
261 tgsi_build_dst_register(
262 unsigned file,
263 unsigned mask,
264 unsigned indirect,
265 int index,
266 struct tgsi_instruction *instruction,
267 struct tgsi_header *header );
268
269 struct tgsi_full_dst_register
270 tgsi_default_full_dst_register( void );
271
272 struct tgsi_dst_register_ext_modulate
273 tgsi_default_dst_register_ext_modulate( void );
274
275 unsigned
276 tgsi_compare_dst_register_ext_modulate(
277 struct tgsi_dst_register_ext_modulate a,
278 struct tgsi_dst_register_ext_modulate b );
279
280 struct tgsi_dst_register_ext_modulate
281 tgsi_build_dst_register_ext_modulate(
282 unsigned modulate,
283 struct tgsi_token *prev_token,
284 struct tgsi_instruction *instruction,
285 struct tgsi_header *header );
286
287 #if defined __cplusplus
288 }
289 #endif
290
291 #endif /* TGSI_BUILD_H */