6 # Bitfield constants for the 'variant' argument to generate_sigs
11 def vec_type(g
, size
):
18 return g
+ "vec" + str(size
)
20 # Get the sampler dimension - i.e. sampler3D gives 3
21 def get_sampler_dim(sampler_type
):
22 if sampler_type
[0].isdigit():
23 sampler_dim
= int(sampler_type
[0])
24 elif sampler_type
.startswith("Cube"):
26 elif sampler_type
== "ExternalOES":
28 elif sampler_type
== "Buffer":
31 assert False ("coord_dim: invalid sampler_type: " + sampler_type
)
34 # Get the coordinate dimension for a given sampler type.
35 # Array samplers also get +1 here since the layer is really an extra coordinate
36 def get_coord_dim(sampler_type
, tex_inst
):
37 coord_dim
= get_sampler_dim(sampler_type
)
38 if sampler_type
.find("Array") != -1 and tex_inst
!= "lod":
42 # Get the number of extra vector components (i.e. shadow comparitor)
43 def get_extra_dim(sampler_type
, use_proj
, unused_fields
, tex_inst
):
44 extra_dim
= unused_fields
45 if sampler_type
== "CubeArrayShadow":
47 if sampler_type
.find("Shadow") != -1 and tex_inst
!= "lod":
53 def get_txs_dim(sampler_type
, tex_inst
):
54 if sampler_type
.startswith("CubeArray"):
56 if sampler_type
.startswith("Cube"):
58 return get_coord_dim(sampler_type
, tex_inst
)
60 def has_lod(sampler_type
):
61 if 'Buffer' in sampler_type
: return False
62 if 'Rect' in sampler_type
: return False
63 if 'MS' in sampler_type
: return False
66 def generate_sigs(g
, tex_inst
, sampler_type
, variant
= 0, unused_fields
= 0):
67 coord_dim
= get_coord_dim(sampler_type
, tex_inst
)
68 extra_dim
= get_extra_dim(sampler_type
, variant
& Proj
, unused_fields
, tex_inst
)
69 sampler_dim
= get_sampler_dim(sampler_type
)
73 elif tex_inst
== "txs":
74 return_type
= vec_type("i", get_txs_dim(sampler_type
, tex_inst
))
75 elif tex_inst
== "lod":
78 return_type
= g
+ "vec4"
81 print " (signature", return_type
83 print " (declare (in) " + g
+ "sampler" + sampler_type
+ " sampler)",
85 print "\n (declare (in) " + vec_type("i" if tex_inst
in ['txf','txf_ms'] else "", coord_dim
+ extra_dim
) + " P)",
87 print "\n (declare (in) float lod)",
88 elif tex_inst
in ['txf', 'txs'] and has_lod(sampler_type
):
89 print "\n (declare (in) int lod)",
90 elif tex_inst
== "txf_ms":
91 print "\n (declare (in) int sample)",
92 elif tex_inst
== "txd":
93 grad_type
= vec_type("", sampler_dim
)
94 print "\n (declare (in) " + grad_type
+ " dPdx)",
95 print "\n (declare (in) " + grad_type
+ " dPdy)",
96 if sampler_type
== "CubeArrayShadow" and tex_inst
== "tex":
97 print "\n (declare (in) float compare)",
100 print "\n (declare (const_in) " + vec_type("i", sampler_dim
) + " offset)",
101 if tex_inst
== "txb":
102 print "\n (declare (in) float bias)",
104 print ")\n ((return (" + tex_inst
, return_type
, "(var_ref sampler)",
106 if tex_inst
!= "txs":
109 print "(swiz " + "xyzw"[:coord_dim
] + " (var_ref P))",
113 if tex_inst
not in ['txf_ms', 'txs', 'lod']:
116 print "(var_ref offset)",
120 if tex_inst
not in ['txf', 'txf_ms', 'txs', 'lod']:
123 print "(swiz " + "xyzw"[coord_dim
+ extra_dim
-1] + " (var_ref P))",
128 if sampler_type
== "CubeArrayShadow": # a special case
129 print "(var_ref compare)",
130 elif sampler_type
== "2DArrayShadow" or sampler_type
== "CubeShadow": # a special case:
131 print "(swiz w (var_ref P))", # ...array layer is z; shadow is w
132 elif sampler_type
.endswith("Shadow"):
133 print "(swiz z (var_ref P))",
137 # Bias/explicit LOD/gradient:
138 if tex_inst
== "txb":
139 print "(var_ref bias)",
140 elif tex_inst
in ['txs', 'txf', 'txf_ms']:
141 if has_lod(sampler_type
):
142 print "(var_ref lod)",
143 elif tex_inst
== 'txf_ms':
144 print "(var_ref sample)",
146 print "(constant int (0))",
147 elif tex_inst
== "txl":
148 print "(var_ref lod)",
149 elif tex_inst
== "txd":
150 print "((var_ref dPdx) (var_ref dPdy))",
153 def generate_fiu_sigs(tex_inst
, sampler_type
, variant
= 0, unused_fields
= 0):
154 generate_sigs("", tex_inst
, sampler_type
, variant
, unused_fields
)
155 generate_sigs("i", tex_inst
, sampler_type
, variant
, unused_fields
)
156 generate_sigs("u", tex_inst
, sampler_type
, variant
, unused_fields
)
158 def start_function(name
):
159 sys
.stdout
= StringIO
.StringIO()
160 print "((function " + name
162 def end_function(fs
, name
):
164 fs
[name
] = sys
.stdout
.getvalue();
167 # Generate all the functions and store them in the supplied dictionary.
168 # This is better than writing them to actual files since they should never be
169 # edited; it'd also be easy to confuse them with the many hand-generated files.
171 # Takes a dictionary as an argument.
172 def generate_texture_functions(fs
):
173 start_function("textureSize")
174 generate_fiu_sigs("txs", "1D")
175 generate_fiu_sigs("txs", "2D")
176 generate_fiu_sigs("txs", "3D")
177 generate_fiu_sigs("txs", "Cube")
178 generate_fiu_sigs("txs", "1DArray")
179 generate_fiu_sigs("txs", "2DArray")
180 generate_sigs("", "txs", "1DShadow")
181 generate_sigs("", "txs", "2DShadow")
182 generate_sigs("", "txs", "CubeShadow")
183 generate_sigs("", "txs", "1DArrayShadow")
184 generate_sigs("", "txs", "2DArrayShadow")
185 generate_fiu_sigs("txs", "2DRect")
186 generate_sigs("", "txs", "2DRectShadow")
187 generate_fiu_sigs("txs", "Buffer")
188 generate_fiu_sigs("txs", "CubeArray")
189 generate_sigs("", "txs", "CubeArrayShadow")
190 generate_fiu_sigs("txs", "2DMS")
191 generate_fiu_sigs("txs", "2DMSArray")
192 end_function(fs
, "textureSize")
194 start_function("texture")
195 generate_fiu_sigs("tex", "1D")
196 generate_fiu_sigs("tex", "2D")
197 generate_fiu_sigs("tex", "3D")
198 generate_fiu_sigs("tex", "Cube")
199 generate_fiu_sigs("tex", "1DArray")
200 generate_fiu_sigs("tex", "2DArray")
201 generate_sigs("", "tex", "1DShadow", Single
, 1);
202 generate_sigs("", "tex", "2DShadow", Single
);
203 generate_sigs("", "tex", "CubeShadow", Single
);
204 generate_sigs("", "tex", "1DArrayShadow", Single
);
205 generate_sigs("", "tex", "2DArrayShadow", Single
);
206 generate_fiu_sigs("tex", "2DRect")
207 generate_sigs("", "tex", "2DRectShadow", Single
);
208 # ARB_texture_cube_map_array extension
209 generate_fiu_sigs("tex", "CubeArray")
210 generate_sigs("", "tex", "CubeArrayShadow", Single
);
212 generate_fiu_sigs("txb", "1D")
213 generate_fiu_sigs("txb", "2D")
214 generate_fiu_sigs("txb", "3D")
215 generate_fiu_sigs("txb", "Cube")
216 generate_fiu_sigs("txb", "1DArray")
217 generate_fiu_sigs("txb", "2DArray")
218 generate_fiu_sigs("txb", "CubeArray")
219 generate_sigs("", "txb", "1DShadow", Single
, 1);
220 generate_sigs("", "txb", "2DShadow", Single
);
221 generate_sigs("", "txb", "CubeShadow", Single
);
222 generate_sigs("", "txb", "1DArrayShadow", Single
);
223 generate_sigs("", "txb", "2DArrayShadow", Single
);
224 end_function(fs
, "texture")
226 start_function("textureProj")
227 generate_fiu_sigs("tex", "1D", Proj
)
228 generate_fiu_sigs("tex", "1D", Proj
, 2)
229 generate_fiu_sigs("tex", "2D", Proj
)
230 generate_fiu_sigs("tex", "2D", Proj
, 1)
231 generate_fiu_sigs("tex", "3D", Proj
)
232 generate_sigs("", "tex", "1DShadow", Proj | Single
, 1);
233 generate_sigs("", "tex", "2DShadow", Proj | Single
);
234 generate_fiu_sigs("tex", "2DRect", Proj
)
235 generate_fiu_sigs("tex", "2DRect", Proj
, 1)
236 generate_sigs("", "tex", "2DRectShadow", Proj | Single
);
238 generate_fiu_sigs("txb", "1D", Proj
)
239 generate_fiu_sigs("txb", "1D", Proj
, 2)
240 generate_fiu_sigs("txb", "2D", Proj
)
241 generate_fiu_sigs("txb", "2D", Proj
, 1)
242 generate_fiu_sigs("txb", "3D", Proj
)
243 generate_sigs("", "txb", "1DShadow", Proj | Single
, 1);
244 generate_sigs("", "txb", "2DShadow", Proj | Single
);
245 end_function(fs
, "textureProj")
247 start_function("textureLod")
248 generate_fiu_sigs("txl", "1D")
249 generate_fiu_sigs("txl", "2D")
250 generate_fiu_sigs("txl", "3D")
251 generate_fiu_sigs("txl", "Cube")
252 generate_fiu_sigs("txl", "1DArray")
253 generate_fiu_sigs("txl", "2DArray")
254 generate_sigs("", "txl", "1DShadow", Single
, 1);
255 generate_sigs("", "txl", "2DShadow", Single
);
256 generate_sigs("", "txl", "1DArrayShadow", Single
);
257 # ARB_texture_cube_map_array extension
258 generate_fiu_sigs("txl", "CubeArray")
259 end_function(fs
, "textureLod")
261 start_function("textureLodOffset")
262 generate_fiu_sigs("txl", "1D", Offset
)
263 generate_fiu_sigs("txl", "2D", Offset
)
264 generate_fiu_sigs("txl", "3D", Offset
)
265 generate_fiu_sigs("txl", "1DArray", Offset
)
266 generate_fiu_sigs("txl", "2DArray", Offset
)
267 generate_sigs("", "txl", "1DShadow", Offset | Single
, 1);
268 generate_sigs("", "txl", "2DShadow", Offset | Single
);
269 generate_sigs("", "txl", "1DArrayShadow", Offset | Single
);
270 end_function(fs
, "textureLodOffset")
272 start_function("textureOffset")
273 generate_fiu_sigs("tex", "1D", Offset
)
274 generate_fiu_sigs("tex", "2D", Offset
)
275 generate_fiu_sigs("tex", "3D", Offset
)
276 generate_fiu_sigs("tex", "2DRect", Offset
)
277 generate_sigs("", "tex", "2DRectShadow", Offset | Single
);
278 generate_fiu_sigs("tex", "1DArray", Offset
)
279 generate_fiu_sigs("tex", "2DArray", Offset
)
280 generate_sigs("", "tex", "1DShadow", Offset | Single
, 1);
281 generate_sigs("", "tex", "2DShadow", Offset | Single
);
282 generate_sigs("", "tex", "1DArrayShadow", Offset | Single
);
284 generate_fiu_sigs("txb", "1D", Offset
)
285 generate_fiu_sigs("txb", "2D", Offset
)
286 generate_fiu_sigs("txb", "3D", Offset
)
287 generate_fiu_sigs("txb", "1DArray", Offset
)
288 generate_fiu_sigs("txb", "2DArray", Offset
)
289 generate_sigs("", "txb", "1DShadow", Offset | Single
, 1);
290 generate_sigs("", "txb", "2DShadow", Offset | Single
);
291 generate_sigs("", "txb", "1DArrayShadow", Offset | Single
);
292 end_function(fs
, "textureOffset")
294 start_function("texelFetch")
295 generate_fiu_sigs("txf", "1D")
296 generate_fiu_sigs("txf", "2D")
297 generate_fiu_sigs("txf", "3D")
298 generate_fiu_sigs("txf", "2DRect")
299 generate_fiu_sigs("txf", "1DArray")
300 generate_fiu_sigs("txf", "2DArray")
301 generate_fiu_sigs("txf", "Buffer")
302 generate_fiu_sigs("txf_ms", "2DMS")
303 generate_fiu_sigs("txf_ms", "2DMSArray")
304 end_function(fs
, "texelFetch")
306 start_function("texelFetchOffset")
307 generate_fiu_sigs("txf", "1D", Offset
)
308 generate_fiu_sigs("txf", "2D", Offset
)
309 generate_fiu_sigs("txf", "3D", Offset
)
310 generate_fiu_sigs("txf", "2DRect", Offset
)
311 generate_fiu_sigs("txf", "1DArray", Offset
)
312 generate_fiu_sigs("txf", "2DArray", Offset
)
313 end_function(fs
, "texelFetchOffset")
315 start_function("textureProjOffset")
316 generate_fiu_sigs("tex", "1D", Proj | Offset
)
317 generate_fiu_sigs("tex", "1D", Proj | Offset
, 2)
318 generate_fiu_sigs("tex", "2D", Proj | Offset
)
319 generate_fiu_sigs("tex", "2D", Proj | Offset
, 1)
320 generate_fiu_sigs("tex", "3D", Proj | Offset
)
321 generate_fiu_sigs("tex", "2DRect", Proj | Offset
)
322 generate_fiu_sigs("tex", "2DRect", Proj | Offset
, 1)
323 generate_sigs("", "tex", "2DRectShadow", Proj | Offset | Single
);
324 generate_sigs("", "tex", "1DShadow", Proj | Offset | Single
, 1);
325 generate_sigs("", "tex", "2DShadow", Proj | Offset | Single
);
327 generate_fiu_sigs("txb", "1D", Proj | Offset
)
328 generate_fiu_sigs("txb", "1D", Proj | Offset
, 2)
329 generate_fiu_sigs("txb", "2D", Proj | Offset
)
330 generate_fiu_sigs("txb", "2D", Proj | Offset
, 1)
331 generate_fiu_sigs("txb", "3D", Proj | Offset
)
332 generate_sigs("", "txb", "1DShadow", Proj | Offset | Single
, 1);
333 generate_sigs("", "txb", "2DShadow", Proj | Offset | Single
);
334 end_function(fs
, "textureProjOffset")
336 start_function("textureProjLod")
337 generate_fiu_sigs("txl", "1D", Proj
)
338 generate_fiu_sigs("txl", "1D", Proj
, 2)
339 generate_fiu_sigs("txl", "2D", Proj
)
340 generate_fiu_sigs("txl", "2D", Proj
, 1)
341 generate_fiu_sigs("txl", "3D", Proj
)
342 generate_sigs("", "txl", "1DShadow", Proj | Single
, 1);
343 generate_sigs("", "txl", "2DShadow", Proj | Single
);
344 end_function(fs
, "textureProjLod")
346 start_function("textureProjLodOffset")
347 generate_fiu_sigs("txl", "1D", Proj | Offset
)
348 generate_fiu_sigs("txl", "1D", Proj | Offset
, 2)
349 generate_fiu_sigs("txl", "2D", Proj | Offset
)
350 generate_fiu_sigs("txl", "2D", Proj | Offset
, 1)
351 generate_fiu_sigs("txl", "3D", Proj | Offset
)
352 generate_sigs("", "txl", "1DShadow", Proj | Offset | Single
, 1);
353 generate_sigs("", "txl", "2DShadow", Proj | Offset | Single
);
354 end_function(fs
, "textureProjLodOffset")
356 start_function("textureGrad")
357 generate_fiu_sigs("txd", "1D")
358 generate_fiu_sigs("txd", "2D")
359 generate_fiu_sigs("txd", "3D")
360 generate_fiu_sigs("txd", "Cube")
361 generate_fiu_sigs("txd", "1DArray")
362 generate_fiu_sigs("txd", "2DArray")
363 generate_fiu_sigs("txd", "2DRect")
364 generate_sigs("", "txd", "2DRectShadow", Single
);
365 generate_sigs("", "txd", "1DShadow", Single
, 1);
366 generate_sigs("", "txd", "2DShadow", Single
);
367 generate_sigs("", "txd", "CubeShadow", Single
);
368 generate_sigs("", "txd", "1DArrayShadow", Single
);
369 generate_sigs("", "txd", "2DArrayShadow", Single
);
370 # ARB_texture_cube_map_array extension
371 generate_fiu_sigs("txd", "CubeArray")
372 end_function(fs
, "textureGrad")
374 start_function("textureGradOffset")
375 generate_fiu_sigs("txd", "1D", Offset
)
376 generate_fiu_sigs("txd", "2D", Offset
)
377 generate_fiu_sigs("txd", "3D", Offset
)
378 generate_fiu_sigs("txd", "2DRect", Offset
)
379 generate_sigs("", "txd", "2DRectShadow", Offset | Single
);
380 generate_fiu_sigs("txd", "1DArray", Offset
)
381 generate_fiu_sigs("txd", "2DArray", Offset
)
382 generate_sigs("", "txd", "1DShadow", Offset | Single
, 1);
383 generate_sigs("", "txd", "2DShadow", Offset | Single
);
384 generate_sigs("", "txd", "1DArrayShadow", Offset | Single
);
385 generate_sigs("", "txd", "2DArrayShadow", Offset | Single
);
386 end_function(fs
, "textureGradOffset")
388 start_function("textureProjGrad")
389 generate_fiu_sigs("txd", "1D", Proj
)
390 generate_fiu_sigs("txd", "1D", Proj
, 2)
391 generate_fiu_sigs("txd", "2D", Proj
)
392 generate_fiu_sigs("txd", "2D", Proj
, 1)
393 generate_fiu_sigs("txd", "3D", Proj
)
394 generate_fiu_sigs("txd", "2DRect", Proj
)
395 generate_fiu_sigs("txd", "2DRect", Proj
, 1)
396 generate_sigs("", "txd", "2DRectShadow", Proj | Single
);
397 generate_sigs("", "txd", "1DShadow", Proj | Single
, 1);
398 generate_sigs("", "txd", "2DShadow", Proj | Single
);
399 end_function(fs
, "textureProjGrad")
401 start_function("textureProjGradOffset")
402 generate_fiu_sigs("txd", "1D", Proj | Offset
)
403 generate_fiu_sigs("txd", "1D", Proj | Offset
, 2)
404 generate_fiu_sigs("txd", "2D", Proj | Offset
)
405 generate_fiu_sigs("txd", "2D", Proj | Offset
, 1)
406 generate_fiu_sigs("txd", "3D", Proj | Offset
)
407 generate_fiu_sigs("txd", "2DRect", Proj | Offset
)
408 generate_fiu_sigs("txd", "2DRect", Proj | Offset
, 1)
409 generate_sigs("", "txd", "2DRectShadow", Proj | Offset | Single
);
410 generate_sigs("", "txd", "1DShadow", Proj | Offset | Single
, 1);
411 generate_sigs("", "txd", "2DShadow", Proj | Offset | Single
);
412 end_function(fs
, "textureProjGradOffset")
415 # ARB_texture_rectangle extension
416 start_function("texture2DRect")
417 generate_sigs("", "tex", "2DRect")
418 end_function(fs
, "texture2DRect")
420 start_function("texture2DRectProj")
421 generate_sigs("", "tex", "2DRect", Proj
)
422 generate_sigs("", "tex", "2DRect", Proj
, 1)
423 end_function(fs
, "texture2DRectProj")
425 start_function("shadow2DRect")
426 generate_sigs("", "tex", "2DRectShadow")
427 end_function(fs
, "shadow2DRect")
429 start_function("shadow2DRectProj")
430 generate_sigs("", "tex", "2DRectShadow", Proj
)
431 end_function(fs
, "shadow2DRectProj")
433 # EXT_texture_array extension
434 start_function("texture1DArray")
435 generate_sigs("", "tex", "1DArray")
436 generate_sigs("", "txb", "1DArray")
437 end_function(fs
, "texture1DArray")
439 start_function("texture1DArrayLod")
440 generate_sigs("", "txl", "1DArray")
441 end_function(fs
, "texture1DArrayLod")
443 start_function("texture2DArray")
444 generate_sigs("", "tex", "2DArray")
445 generate_sigs("", "txb", "2DArray")
446 end_function(fs
, "texture2DArray")
448 start_function("texture2DArrayLod")
449 generate_sigs("", "txl", "2DArray")
450 end_function(fs
, "texture2DArrayLod")
452 start_function("shadow1DArray")
453 generate_sigs("", "tex", "1DArrayShadow")
454 generate_sigs("", "txb", "1DArrayShadow")
455 end_function(fs
, "shadow1DArray")
457 start_function("shadow1DArrayLod")
458 generate_sigs("", "txl", "1DArrayShadow")
459 end_function(fs
, "shadow1DArrayLod")
461 start_function("shadow2DArray")
462 generate_sigs("", "tex", "2DArrayShadow")
463 end_function(fs
, "shadow2DArray")
465 # ARB_shader_texture_lod extension
466 start_function("texture1DGradARB")
467 generate_fiu_sigs("txd", "1D")
468 end_function(fs
, "texture1DGradARB")
470 start_function("texture2DGradARB")
471 generate_fiu_sigs("txd", "2D")
472 end_function(fs
, "texture2DGradARB")
474 start_function("texture3DGradARB")
475 generate_fiu_sigs("txd", "3D")
476 end_function(fs
, "texture3DGradARB")
478 start_function("textureCubeGradARB")
479 generate_fiu_sigs("txd", "Cube")
480 end_function(fs
, "textureCubeGradARB")
482 start_function("texture1DProjGradARB")
483 generate_fiu_sigs("txd", "1D", True)
484 generate_fiu_sigs("txd", "1D", True, 2)
485 end_function(fs
, "texture1DProjGradARB")
487 start_function("texture2DProjGradARB")
488 generate_fiu_sigs("txd", "2D", True)
489 generate_fiu_sigs("txd", "2D", True, 1)
490 end_function(fs
, "texture2DProjGradARB")
492 start_function("texture3DProjGradARB")
493 generate_fiu_sigs("txd", "3D", True)
494 end_function(fs
, "texture3DProjGradARB")
496 start_function("shadow1DGradARB")
497 generate_sigs("", "txd", "1DShadow", False, 1)
498 end_function(fs
, "shadow1DGradARB")
500 start_function("shadow1DProjGradARB")
501 generate_sigs("", "txd", "1DShadow", True, 1)
502 end_function(fs
, "shadow1DProjGradARB")
504 start_function("shadow2DGradARB")
505 generate_sigs("", "txd", "2DShadow", False)
506 end_function(fs
, "shadow2DGradARB")
508 start_function("shadow2DProjGradARB")
509 generate_sigs("", "txd", "2DShadow", True)
510 end_function(fs
, "shadow2DProjGradARB")
512 start_function("texture2DRectGradARB")
513 generate_sigs("", "txd", "2DRect")
514 end_function(fs
, "texture2DRectGradARB")
516 start_function("texture2DRectProjGradARB")
517 generate_sigs("", "txd", "2DRect", True)
518 generate_sigs("", "txd", "2DRect", True, 1)
519 end_function(fs
, "texture2DRectProjGradARB")
521 start_function("shadow2DRectGradARB")
522 generate_sigs("", "txd", "2DRectShadow", False)
523 end_function(fs
, "shadow2DRectGradARB")
525 start_function("shadow2DRectProjGradARB")
526 generate_sigs("", "txd", "2DRectShadow", True)
527 end_function(fs
, "shadow2DRectProjGradARB")
529 # Deprecated (110/120 style) functions with silly names:
530 start_function("texture1D")
531 generate_sigs("", "tex", "1D")
532 generate_sigs("", "txb", "1D")
533 end_function(fs
, "texture1D")
535 start_function("texture1DLod")
536 generate_sigs("", "txl", "1D")
537 end_function(fs
, "texture1DLod")
539 start_function("texture1DProj")
540 generate_sigs("", "tex", "1D", Proj
)
541 generate_sigs("", "tex", "1D", Proj
, 2)
542 generate_sigs("", "txb", "1D", Proj
)
543 generate_sigs("", "txb", "1D", Proj
, 2)
544 end_function(fs
, "texture1DProj")
546 start_function("texture1DProjLod")
547 generate_sigs("", "txl", "1D", Proj
)
548 generate_sigs("", "txl", "1D", Proj
, 2)
549 end_function(fs
, "texture1DProjLod")
551 start_function("texture2D")
552 generate_sigs("", "tex", "2D")
553 generate_sigs("", "txb", "2D")
554 # OES_EGL_image_external
555 generate_sigs("", "tex", "ExternalOES")
556 end_function(fs
, "texture2D")
558 start_function("texture2DLod")
559 generate_sigs("", "txl", "2D")
560 end_function(fs
, "texture2DLod")
562 start_function("texture2DProj")
563 generate_sigs("", "tex", "2D", Proj
)
564 generate_sigs("", "tex", "2D", Proj
, 1)
565 generate_sigs("", "txb", "2D", Proj
)
566 generate_sigs("", "txb", "2D", Proj
, 1)
567 # OES_EGL_image_external
568 generate_sigs("", "tex", "ExternalOES", Proj
)
569 generate_sigs("", "tex", "ExternalOES", Proj
, 1)
570 end_function(fs
, "texture2DProj")
572 start_function("texture2DProjLod")
573 generate_sigs("", "txl", "2D", Proj
)
574 generate_sigs("", "txl", "2D", Proj
, 1)
575 end_function(fs
, "texture2DProjLod")
577 start_function("texture3D")
578 generate_sigs("", "tex", "3D")
579 generate_sigs("", "txb", "3D")
580 end_function(fs
, "texture3D")
582 start_function("texture3DLod")
583 generate_sigs("", "txl", "3D")
584 end_function(fs
, "texture3DLod")
586 start_function("texture3DProj")
587 generate_sigs("", "tex", "3D", Proj
)
588 generate_sigs("", "txb", "3D", Proj
)
589 end_function(fs
, "texture3DProj")
591 start_function("texture3DProjLod")
592 generate_sigs("", "txl", "3D", Proj
)
593 end_function(fs
, "texture3DProjLod")
595 start_function("textureCube")
596 generate_sigs("", "tex", "Cube")
597 generate_sigs("", "txb", "Cube")
598 end_function(fs
, "textureCube")
600 start_function("textureCubeLod")
601 generate_sigs("", "txl", "Cube")
602 end_function(fs
, "textureCubeLod")
604 start_function("shadow1D")
605 generate_sigs("", "tex", "1DShadow", False, 1)
606 generate_sigs("", "txb", "1DShadow", False, 1)
607 end_function(fs
, "shadow1D")
609 start_function("shadow1DLod")
610 generate_sigs("", "txl", "1DShadow", False, 1)
611 end_function(fs
, "shadow1DLod")
613 start_function("shadow1DProj")
614 generate_sigs("", "tex", "1DShadow", Proj
, 1)
615 generate_sigs("", "txb", "1DShadow", Proj
, 1)
616 end_function(fs
, "shadow1DProj")
618 start_function("shadow1DProjLod")
619 generate_sigs("", "txl", "1DShadow", Proj
, 1)
620 end_function(fs
, "shadow1DProjLod")
622 start_function("shadow2D")
623 generate_sigs("", "tex", "2DShadow")
624 generate_sigs("", "txb", "2DShadow")
625 end_function(fs
, "shadow2D")
627 start_function("shadow2DLod")
628 generate_sigs("", "txl", "2DShadow")
629 end_function(fs
, "shadow2DLod")
631 start_function("shadow2DProj")
632 generate_sigs("", "tex", "2DShadow", Proj
)
633 generate_sigs("", "txb", "2DShadow", Proj
)
634 end_function(fs
, "shadow2DProj")
636 start_function("shadow2DProjLod")
637 generate_sigs("", "txl", "2DShadow", Proj
)
638 end_function(fs
, "shadow2DProjLod")
640 start_function("textureQueryLOD")
641 generate_fiu_sigs("lod", "1D")
642 generate_fiu_sigs("lod", "2D")
643 generate_fiu_sigs("lod", "3D")
644 generate_fiu_sigs("lod", "Cube")
645 generate_fiu_sigs("lod", "1DArray")
646 generate_fiu_sigs("lod", "2DArray")
647 generate_fiu_sigs("lod", "CubeArray")
648 generate_sigs("", "lod", "1DShadow")
649 generate_sigs("", "lod", "2DShadow")
650 generate_sigs("", "lod", "CubeShadow")
651 generate_sigs("", "lod", "1DArrayShadow")
652 generate_sigs("", "lod", "2DArrayShadow")
653 generate_sigs("", "lod", "CubeArrayShadow")
654 end_function(fs
, "textureQueryLOD")
656 sys
.stdout
= sys
.__stdout
__
659 # If you actually run this script, it'll print out all the functions.
660 if __name__
== "__main__":
662 generate_texture_functions(fs
);
663 for k
, v
in fs
.iteritems():