]> git.cworth.org Git - apitrace/blob - specs/d3d10.py
Minimal D3D11 support.
[apitrace] / specs / d3d10.py
1 ##########################################################################
2 #
3 # Copyright 2011 Jose Fonseca
4 # All Rights Reserved.
5 #
6 # Permission is hereby granted, free of charge, to any person obtaining a copy
7 # of this software and associated documentation files (the "Software"), to deal
8 # in the Software without restriction, including without limitation the rights
9 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 # copies of the Software, and to permit persons to whom the Software is
11 # furnished to do so, subject to the following conditions:
12 #
13 # The above copyright notice and this permission notice shall be included in
14 # all copies or substantial portions of the Software.
15 #
16 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 # THE SOFTWARE.
23 #
24 ##########################################################################/
25
26
27 from dxgi import *
28 from d3dcommon import *
29
30
31 HRESULT = FakeEnum(HRESULT, [
32     "D3D10_ERROR_FILE_NOT_FOUND",
33     "D3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS",
34     "D3DERR_INVALIDCALL",
35     "D3DERR_WASSTILLDRAWING",
36     "E_FAIL",
37     "E_INVALIDARG",
38     "E_OUTOFMEMORY",
39     "S_FALSE",
40     "S_OK",
41 ])
42
43 D3D10_BLEND = Enum("D3D10_BLEND", [
44     "D3D10_BLEND_ZERO",
45     "D3D10_BLEND_ONE",
46     "D3D10_BLEND_SRC_COLOR",
47     "D3D10_BLEND_INV_SRC_COLOR",
48     "D3D10_BLEND_SRC_ALPHA",
49     "D3D10_BLEND_INV_SRC_ALPHA",
50     "D3D10_BLEND_DEST_ALPHA",
51     "D3D10_BLEND_INV_DEST_ALPHA",
52     "D3D10_BLEND_DEST_COLOR",
53     "D3D10_BLEND_INV_DEST_COLOR",
54     "D3D10_BLEND_SRC_ALPHA_SAT",
55     "D3D10_BLEND_BLEND_FACTOR",
56     "D3D10_BLEND_INV_BLEND_FACTOR",
57     "D3D10_BLEND_SRC1_COLOR",
58     "D3D10_BLEND_INV_SRC1_COLOR",
59     "D3D10_BLEND_SRC1_ALPHA",
60     "D3D10_BLEND_INV_SRC1_ALPHA",
61 ])
62
63 D3D10_BLEND_OP = Enum("D3D10_BLEND_OP", [
64     "D3D10_BLEND_OP_ADD",
65     "D3D10_BLEND_OP_SUBTRACT",
66     "D3D10_BLEND_OP_REV_SUBTRACT",
67     "D3D10_BLEND_OP_MIN",
68     "D3D10_BLEND_OP_MAX",
69 ])
70
71 D3D10_BLEND_DESC = Struct("D3D10_BLEND_DESC", [
72     (BOOL, "AlphaToCoverageEnable"),
73     (Array(BOOL, 8), "BlendEnable"),
74     (D3D10_BLEND, "SrcBlend"),
75     (D3D10_BLEND, "DestBlend"),
76     (D3D10_BLEND_OP, "BlendOp"),
77     (D3D10_BLEND, "SrcBlendAlpha"),
78     (D3D10_BLEND, "DestBlendAlpha"),
79     (D3D10_BLEND_OP, "BlendOpAlpha"),
80     (Array(UINT8, 8), "RenderTargetWriteMask"),
81 ])
82
83 D3D10_DEPTH_WRITE_MASK = Enum("D3D10_DEPTH_WRITE_MASK", [
84     "D3D10_DEPTH_WRITE_MASK_ZERO",
85     "D3D10_DEPTH_WRITE_MASK_ALL",
86 ])
87
88 D3D10_COMPARISON_FUNC = Enum("D3D10_COMPARISON_FUNC", [
89     "D3D10_COMPARISON_NEVER",
90     "D3D10_COMPARISON_LESS",
91     "D3D10_COMPARISON_EQUAL",
92     "D3D10_COMPARISON_LESS_EQUAL",
93     "D3D10_COMPARISON_GREATER",
94     "D3D10_COMPARISON_NOT_EQUAL",
95     "D3D10_COMPARISON_GREATER_EQUAL",
96     "D3D10_COMPARISON_ALWAYS",
97 ])
98
99 D3D10_STENCIL_OP = Enum("D3D10_STENCIL_OP", [
100     "D3D10_STENCIL_OP_KEEP",
101     "D3D10_STENCIL_OP_ZERO",
102     "D3D10_STENCIL_OP_REPLACE",
103     "D3D10_STENCIL_OP_INCR_SAT",
104     "D3D10_STENCIL_OP_DECR_SAT",
105     "D3D10_STENCIL_OP_INVERT",
106     "D3D10_STENCIL_OP_INCR",
107     "D3D10_STENCIL_OP_DECR",
108 ])
109
110 D3D10_DEPTH_STENCILOP_DESC = Struct("D3D10_DEPTH_STENCILOP_DESC", [
111     (D3D10_STENCIL_OP, "StencilFailOp"),
112     (D3D10_STENCIL_OP, "StencilDepthFailOp"),
113     (D3D10_STENCIL_OP, "StencilPassOp"),
114     (D3D10_COMPARISON_FUNC, "StencilFunc"),
115 ])
116
117 D3D10_DEPTH_STENCIL_DESC = Struct("D3D10_DEPTH_STENCIL_DESC", [
118     (BOOL, "DepthEnable"),
119     (D3D10_DEPTH_WRITE_MASK, "DepthWriteMask"),
120     (D3D10_COMPARISON_FUNC, "DepthFunc"),
121     (BOOL, "StencilEnable"),
122     (UINT8, "StencilReadMask"),
123     (UINT8, "StencilWriteMask"),
124     (D3D10_DEPTH_STENCILOP_DESC, "FrontFace"),
125     (D3D10_DEPTH_STENCILOP_DESC, "BackFace"),
126 ])
127
128 D3D10_FILL_MODE = Enum("D3D10_FILL_MODE", [
129     "D3D10_FILL_WIREFRAME",
130     "D3D10_FILL_SOLID",
131 ])
132
133 D3D10_CULL_MODE = Enum("D3D10_CULL_MODE", [
134     "D3D10_CULL_NONE",
135     "D3D10_CULL_FRONT",
136     "D3D10_CULL_BACK",
137 ])
138
139 D3D10_RASTERIZER_DESC = Struct("D3D10_RASTERIZER_DESC", [
140     (D3D10_FILL_MODE, "FillMode"),
141     (D3D10_CULL_MODE, "CullMode"),
142     (BOOL, "FrontCounterClockwise"),
143     (INT, "DepthBias"),
144     (FLOAT, "DepthBiasClamp"),
145     (FLOAT, "SlopeScaledDepthBias"),
146     (BOOL, "DepthClipEnable"),
147     (BOOL, "ScissorEnable"),
148     (BOOL, "MultisampleEnable"),
149     (BOOL, "AntialiasedLineEnable"),
150 ])
151
152 D3D10_FILTER = Enum("D3D10_FILTER", [
153     "D3D10_FILTER_MIN_MAG_MIP_POINT",
154     "D3D10_FILTER_MIN_MAG_POINT_MIP_LINEAR",
155     "D3D10_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT",
156     "D3D10_FILTER_MIN_POINT_MAG_MIP_LINEAR",
157     "D3D10_FILTER_MIN_LINEAR_MAG_MIP_POINT",
158     "D3D10_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR",
159     "D3D10_FILTER_MIN_MAG_LINEAR_MIP_POINT",
160     "D3D10_FILTER_MIN_MAG_MIP_LINEAR",
161     "D3D10_FILTER_ANISOTROPIC",
162     "D3D10_FILTER_COMPARISON_MIN_MAG_MIP_POINT",
163     "D3D10_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR",
164     "D3D10_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT",
165     "D3D10_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR",
166     "D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT",
167     "D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR",
168     "D3D10_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT",
169     "D3D10_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR",
170     "D3D10_FILTER_COMPARISON_ANISOTROPIC",
171     "D3D10_FILTER_TEXT_1BIT",
172 ])
173
174 D3D10_TEXTURE_ADDRESS_MODE = Enum("D3D10_TEXTURE_ADDRESS_MODE", [
175     "D3D10_TEXTURE_ADDRESS_WRAP",
176     "D3D10_TEXTURE_ADDRESS_MIRROR",
177     "D3D10_TEXTURE_ADDRESS_CLAMP",
178     "D3D10_TEXTURE_ADDRESS_BORDER",
179     "D3D10_TEXTURE_ADDRESS_MIRROR_ONCE",
180 ])
181
182 D3D10_SAMPLER_DESC = Struct("D3D10_SAMPLER_DESC", [
183     (D3D10_FILTER, "Filter"),
184     (D3D10_TEXTURE_ADDRESS_MODE, "AddressU"),
185     (D3D10_TEXTURE_ADDRESS_MODE, "AddressV"),
186     (D3D10_TEXTURE_ADDRESS_MODE, "AddressW"),
187     (FLOAT, "MipLODBias"),
188     (UINT, "MaxAnisotropy"),
189     (D3D10_COMPARISON_FUNC, "ComparisonFunc"),
190     (Array(FLOAT, 4), "BorderColor"),
191     (FLOAT, "MinLOD"),
192     (FLOAT, "MaxLOD"),
193 ])
194
195 D3D10_COUNTER = Enum("D3D10_COUNTER", [
196     "D3D10_COUNTER_GPU_IDLE",
197     "D3D10_COUNTER_VERTEX_PROCESSING",
198     "D3D10_COUNTER_GEOMETRY_PROCESSING",
199     "D3D10_COUNTER_PIXEL_PROCESSING",
200     "D3D10_COUNTER_OTHER_GPU_PROCESSING",
201     "D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION",
202     "D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION",
203     "D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION",
204     "D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION",
205     "D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION",
206     "D3D10_COUNTER_VS_MEMORY_LIMITED",
207     "D3D10_COUNTER_VS_COMPUTATION_LIMITED",
208     "D3D10_COUNTER_GS_MEMORY_LIMITED",
209     "D3D10_COUNTER_GS_COMPUTATION_LIMITED",
210     "D3D10_COUNTER_PS_MEMORY_LIMITED",
211     "D3D10_COUNTER_PS_COMPUTATION_LIMITED",
212     "D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE",
213     "D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE",
214     "D3D10_COUNTER_DEVICE_DEPENDENT_0",
215 ])
216
217 D3D10_COUNTER_DESC = Struct("D3D10_COUNTER_DESC", [
218     (D3D10_COUNTER, "Counter"),
219     (UINT, "MiscFlags"),
220 ])
221
222 D3D10_COUNTER_TYPE = Enum("D3D10_COUNTER_TYPE", [
223     "D3D10_COUNTER_TYPE_FLOAT32",
224     "D3D10_COUNTER_TYPE_UINT16",
225     "D3D10_COUNTER_TYPE_UINT32",
226     "D3D10_COUNTER_TYPE_UINT64",
227 ])
228
229 D3D10_COUNTER_INFO = Struct("D3D10_COUNTER_INFO", [
230     (D3D10_COUNTER, "LastDeviceDependentCounter"),
231     (UINT, "NumSimultaneousCounters"),
232     (UINT8, "NumDetectableParallelUnits"),
233 ])
234
235 D3D10_RESOURCE_DIMENSION = Enum("D3D10_RESOURCE_DIMENSION", [
236     "D3D10_RESOURCE_DIMENSION_UNKNOWN",
237     "D3D10_RESOURCE_DIMENSION_BUFFER",
238     "D3D10_RESOURCE_DIMENSION_TEXTURE1D",
239     "D3D10_RESOURCE_DIMENSION_TEXTURE2D",
240     "D3D10_RESOURCE_DIMENSION_TEXTURE3D",
241 ])
242
243 D3D10_USAGE = Enum("D3D10_USAGE", [
244     "D3D10_USAGE_DEFAULT",
245     "D3D10_USAGE_IMMUTABLE",
246     "D3D10_USAGE_DYNAMIC",
247     "D3D10_USAGE_STAGING",
248 ])
249
250 D3D10_BIND_FLAG = Flags(UINT, [
251     "D3D10_BIND_VERTEX_BUFFER",
252     "D3D10_BIND_INDEX_BUFFER",
253     "D3D10_BIND_CONSTANT_BUFFER",
254     "D3D10_BIND_SHADER_RESOURCE",
255     "D3D10_BIND_STREAM_OUTPUT",
256     "D3D10_BIND_RENDER_TARGET",
257     "D3D10_BIND_DEPTH_STENCIL",
258 ])
259
260 D3D10_CPU_ACCESS_FLAG = Flags(UINT, [
261     "D3D10_CPU_ACCESS_WRITE",
262     "D3D10_CPU_ACCESS_READ",
263 ])
264
265 D3D10_RESOURCE_MISC_FLAG = Flags(UINT, [
266     "D3D10_RESOURCE_MISC_GENERATE_MIPS",
267     "D3D10_RESOURCE_MISC_SHARED",
268     "D3D10_RESOURCE_MISC_TEXTURECUBE",
269     "D3D10_RESOURCE_MISC_SHARED_KEYEDMUTEX",
270     "D3D10_RESOURCE_MISC_GDI_COMPATIBLE",
271 ])
272
273 D3D10_BUFFER_DESC = Struct("D3D10_BUFFER_DESC", [
274     (UINT, "ByteWidth"),
275     (D3D10_USAGE, "Usage"),
276     (D3D10_BIND_FLAG, "BindFlags"),
277     (D3D10_CPU_ACCESS_FLAG, "CPUAccessFlags"),
278     (D3D10_RESOURCE_MISC_FLAG, "MiscFlags"),
279 ])
280
281 D3D10_MAP = Enum("D3D10_MAP", [
282     "D3D10_MAP_READ",
283     "D3D10_MAP_WRITE",
284     "D3D10_MAP_READ_WRITE",
285     "D3D10_MAP_WRITE_DISCARD",
286     "D3D10_MAP_WRITE_NO_OVERWRITE",
287 ])
288
289 D3D10_TEXTURE1D_DESC = Struct("D3D10_TEXTURE1D_DESC", [
290     (UINT, "Width"),
291     (UINT, "MipLevels"),
292     (UINT, "ArraySize"),
293     (DXGI_FORMAT, "Format"),
294     (D3D10_USAGE, "Usage"),
295     (D3D10_BIND_FLAG, "BindFlags"),
296     (D3D10_CPU_ACCESS_FLAG, "CPUAccessFlags"),
297     (D3D10_RESOURCE_MISC_FLAG, "MiscFlags"),
298 ])
299
300 D3D10_TEXTURE2D_DESC = Struct("D3D10_TEXTURE2D_DESC", [
301     (UINT, "Width"),
302     (UINT, "Height"),
303     (UINT, "MipLevels"),
304     (UINT, "ArraySize"),
305     (DXGI_FORMAT, "Format"),
306     (DXGI_SAMPLE_DESC, "SampleDesc"),
307     (D3D10_USAGE, "Usage"),
308     (D3D10_BIND_FLAG, "BindFlags"),
309     (D3D10_CPU_ACCESS_FLAG, "CPUAccessFlags"),
310     (D3D10_RESOURCE_MISC_FLAG, "MiscFlags"),
311 ])
312
313 D3D10_TEXTURE3D_DESC = Struct("D3D10_TEXTURE3D_DESC", [
314     (UINT, "Width"),
315     (UINT, "Height"),
316     (UINT, "Depth"),
317     (UINT, "MipLevels"),
318     (DXGI_FORMAT, "Format"),
319     (D3D10_USAGE, "Usage"),
320     (D3D10_BIND_FLAG, "BindFlags"),
321     (D3D10_CPU_ACCESS_FLAG, "CPUAccessFlags"),
322     (D3D10_RESOURCE_MISC_FLAG, "MiscFlags"),
323 ])
324
325 D3D10_DSV_DIMENSION = Enum("D3D10_DSV_DIMENSION", [
326     "D3D10_DSV_DIMENSION_UNKNOWN",
327     "D3D10_DSV_DIMENSION_TEXTURE1D",
328     "D3D10_DSV_DIMENSION_TEXTURE1DARRAY",
329     "D3D10_DSV_DIMENSION_TEXTURE2D",
330     "D3D10_DSV_DIMENSION_TEXTURE2DARRAY",
331     "D3D10_DSV_DIMENSION_TEXTURE2DMS",
332     "D3D10_DSV_DIMENSION_TEXTURE2DMSARRAY",
333 ])
334
335 D3D10_TEX1D_DSV = Struct("D3D10_TEX1D_DSV", [
336     (UINT, "MipSlice"),
337 ])
338
339 D3D10_TEX1D_ARRAY_DSV = Struct("D3D10_TEX1D_ARRAY_DSV", [
340     (UINT, "MipSlice"),
341     (UINT, "FirstArraySlice"),
342     (UINT, "ArraySize"),
343 ])
344
345 D3D10_TEX2D_DSV = Struct("D3D10_TEX2D_DSV", [
346     (UINT, "MipSlice"),
347 ])
348
349 D3D10_TEX2D_ARRAY_DSV = Struct("D3D10_TEX2D_ARRAY_DSV", [
350     (UINT, "MipSlice"),
351     (UINT, "FirstArraySlice"),
352     (UINT, "ArraySize"),
353 ])
354
355 D3D10_TEX2DMS_DSV = Struct("D3D10_TEX2DMS_DSV", [
356     (UINT, "UnusedField_NothingToDefine"),
357 ])
358
359 D3D10_TEX2DMS_ARRAY_DSV = Struct("D3D10_TEX2DMS_ARRAY_DSV", [
360     (UINT, "FirstArraySlice"),
361     (UINT, "ArraySize"),
362 ])
363
364 D3D10_DEPTH_STENCIL_VIEW_DESC = Struct("D3D10_DEPTH_STENCIL_VIEW_DESC", [
365     (DXGI_FORMAT, "Format"),
366     (D3D10_DSV_DIMENSION, "ViewDimension"),
367     (D3D10_TEX1D_DSV, "Texture1D"),
368     (D3D10_TEX1D_ARRAY_DSV, "Texture1DArray"),
369     (D3D10_TEX2D_DSV, "Texture2D"),
370     (D3D10_TEX2D_ARRAY_DSV, "Texture2DArray"),
371     (D3D10_TEX2DMS_DSV, "Texture2DMS"),
372     (D3D10_TEX2DMS_ARRAY_DSV, "Texture2DMSArray"),
373 ])
374
375 D3D10_RTV_DIMENSION = Enum("D3D10_RTV_DIMENSION", [
376     "D3D10_RTV_DIMENSION_UNKNOWN",
377     "D3D10_RTV_DIMENSION_BUFFER",
378     "D3D10_RTV_DIMENSION_TEXTURE1D",
379     "D3D10_RTV_DIMENSION_TEXTURE1DARRAY",
380     "D3D10_RTV_DIMENSION_TEXTURE2D",
381     "D3D10_RTV_DIMENSION_TEXTURE2DARRAY",
382     "D3D10_RTV_DIMENSION_TEXTURE2DMS",
383     "D3D10_RTV_DIMENSION_TEXTURE2DMSARRAY",
384     "D3D10_RTV_DIMENSION_TEXTURE3D",
385 ])
386
387 D3D10_BUFFER_RTV = Struct("D3D10_BUFFER_RTV", [
388     (UINT, "ElementOffset"),
389     (UINT, "ElementWidth"),
390 ])
391
392 D3D10_TEX1D_RTV = Struct("D3D10_TEX1D_RTV", [
393     (UINT, "MipSlice"),
394 ])
395
396 D3D10_TEX1D_ARRAY_RTV = Struct("D3D10_TEX1D_ARRAY_RTV", [
397     (UINT, "MipSlice"),
398     (UINT, "FirstArraySlice"),
399     (UINT, "ArraySize"),
400 ])
401
402 D3D10_TEX2D_RTV = Struct("D3D10_TEX2D_RTV", [
403     (UINT, "MipSlice"),
404 ])
405
406 D3D10_TEX2D_ARRAY_RTV = Struct("D3D10_TEX2D_ARRAY_RTV", [
407     (UINT, "MipSlice"),
408     (UINT, "FirstArraySlice"),
409     (UINT, "ArraySize"),
410 ])
411
412 D3D10_TEX2DMS_RTV = Struct("D3D10_TEX2DMS_RTV", [
413     (UINT, "UnusedField_NothingToDefine"),
414 ])
415
416 D3D10_TEX2DMS_ARRAY_RTV = Struct("D3D10_TEX2DMS_ARRAY_RTV", [
417     (UINT, "FirstArraySlice"),
418     (UINT, "ArraySize"),
419 ])
420
421 D3D10_TEX3D_RTV = Struct("D3D10_TEX3D_RTV", [
422     (UINT, "MipSlice"),
423     (UINT, "FirstWSlice"),
424     (UINT, "WSize"),
425 ])
426
427 D3D10_RENDER_TARGET_VIEW_DESC = Struct("D3D10_RENDER_TARGET_VIEW_DESC", [
428     (DXGI_FORMAT, "Format"),
429     (D3D10_RTV_DIMENSION, "ViewDimension"),
430     (D3D10_BUFFER_RTV, "Buffer"),
431     (D3D10_TEX1D_RTV, "Texture1D"),
432     (D3D10_TEX1D_ARRAY_RTV, "Texture1DArray"),
433     (D3D10_TEX2D_RTV, "Texture2D"),
434     (D3D10_TEX2D_ARRAY_RTV, "Texture2DArray"),
435     (D3D10_TEX2DMS_RTV, "Texture2DMS"),
436     (D3D10_TEX2DMS_ARRAY_RTV, "Texture2DMSArray"),
437     (D3D10_TEX3D_RTV, "Texture3D"),
438 ])
439
440 D3D10_SRV_DIMENSION = Enum("D3D10_SRV_DIMENSION", [
441     "D3D10_SRV_DIMENSION_UNKNOWN",
442         "D3D10_SRV_DIMENSION_BUFFER",
443         "D3D10_SRV_DIMENSION_TEXTURE1D",
444         "D3D10_SRV_DIMENSION_TEXTURE1DARRAY",
445         "D3D10_SRV_DIMENSION_TEXTURE2D",
446         "D3D10_SRV_DIMENSION_TEXTURE2DARRAY",
447         "D3D10_SRV_DIMENSION_TEXTURE2DMS",
448         "D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY",
449         "D3D10_SRV_DIMENSION_TEXTURE3D",
450         "D3D10_SRV_DIMENSION_TEXTURECUBE",
451 ])
452
453 D3D10_BUFFER_SRV = Struct("D3D10_BUFFER_SRV", [
454     (UINT, "ElementOffset"),
455     (UINT, "ElementWidth"),
456 ])
457
458 D3D10_TEX1D_SRV = Struct("D3D10_TEX1D_SRV", [
459     (UINT, "MostDetailedMip"),
460     (UINT, "MipLevels"),
461 ])
462
463 D3D10_TEX1D_ARRAY_SRV = Struct("D3D10_TEX1D_ARRAY_SRV", [
464     (UINT, "MostDetailedMip"),
465     (UINT, "MipLevels"),
466     (UINT, "FirstArraySlice"),
467     (UINT, "ArraySize"),
468 ])
469
470 D3D10_TEX2D_SRV = Struct("D3D10_TEX2D_SRV", [
471     (UINT, "MostDetailedMip"),
472     (UINT, "MipLevels"),
473 ])
474
475 D3D10_TEX2D_ARRAY_SRV = Struct("D3D10_TEX2D_ARRAY_SRV", [
476     (UINT, "MostDetailedMip"),
477     (UINT, "MipLevels"),
478     (UINT, "FirstArraySlice"),
479     (UINT, "ArraySize"),
480 ])
481
482 D3D10_TEX2DMS_SRV = Struct("D3D10_TEX2DMS_SRV", [
483     (UINT, "UnusedField_NothingToDefine"),
484 ])
485
486 D3D10_TEX2DMS_ARRAY_SRV = Struct("D3D10_TEX2DMS_ARRAY_SRV", [
487     (UINT, "FirstArraySlice"),
488     (UINT, "ArraySize"),
489 ])
490
491 D3D10_TEX3D_SRV = Struct("D3D10_TEX3D_SRV", [
492     (UINT, "MostDetailedMip"),
493     (UINT, "MipLevels"),
494 ])
495
496 D3D10_TEXCUBE_SRV = Struct("D3D10_TEXCUBE_SRV", [
497     (UINT, "MostDetailedMip"),
498     (UINT, "MipLevels"),
499 ])
500
501 D3D10_SHADER_RESOURCE_VIEW_DESC = Struct("D3D10_SHADER_RESOURCE_VIEW_DESC", [
502     (DXGI_FORMAT, "Format"),
503     (D3D10_SRV_DIMENSION, "ViewDimension"),
504     (D3D10_BUFFER_SRV, "Buffer"),
505     (D3D10_TEX1D_SRV, "Texture1D"),
506     (D3D10_TEX1D_ARRAY_SRV, "Texture1DArray"),
507     (D3D10_TEX2D_SRV, "Texture2D"),
508     (D3D10_TEX2D_ARRAY_SRV, "Texture2DArray"),
509     (D3D10_TEX2DMS_SRV, "Texture2DMS"),
510     (D3D10_TEX2DMS_ARRAY_SRV, "Texture2DMSArray"),
511     (D3D10_TEX3D_SRV, "Texture3D"),
512     (D3D10_TEXCUBE_SRV, "TextureCube"),
513 ])
514
515 D3D10_BOX = Struct("D3D10_BOX", [
516     (UINT, "left"),
517     (UINT, "top"),
518     (UINT, "front"),
519     (UINT, "right"),
520     (UINT, "bottom"),
521     (UINT, "back"),
522 ])
523
524 D3D10_SUBRESOURCE_DATA = Struct("D3D10_SUBRESOURCE_DATA", [
525     (OpaquePointer(Const(Void)), "pSysMem"),
526     (UINT, "SysMemPitch"),
527     (UINT, "SysMemSlicePitch"),
528 ])
529
530 D3D10_SO_DECLARATION_ENTRY = Struct("D3D10_SO_DECLARATION_ENTRY", [
531     (LPCSTR, "SemanticName"),
532     (UINT, "SemanticIndex"),
533     (BYTE, "StartComponent"),
534     (BYTE, "ComponentCount"),
535     (BYTE, "OutputSlot"),
536 ])
537
538 D3D10_INPUT_CLASSIFICATION = Enum("D3D10_INPUT_CLASSIFICATION", [
539     "D3D10_INPUT_PER_VERTEX_DATA",
540     "D3D10_INPUT_PER_INSTANCE_DATA",
541 ])
542
543 D3D10_INPUT_ELEMENT_DESC = Struct("D3D10_INPUT_ELEMENT_DESC", [
544     (LPCSTR, "SemanticName"),
545     (UINT, "SemanticIndex"),
546     (DXGI_FORMAT, "Format"),
547     (UINT, "InputSlot"),
548     (UINT, "AlignedByteOffset"),
549     (D3D10_INPUT_CLASSIFICATION, "InputSlotClass"),
550     (UINT, "InstanceDataStepRate"),
551 ])
552
553 D3D10_QUERY = Enum("D3D10_QUERY", [
554     "D3D10_QUERY_EVENT",
555     "D3D10_QUERY_OCCLUSION",
556     "D3D10_QUERY_TIMESTAMP",
557     "D3D10_QUERY_TIMESTAMP_DISJOINT",
558     "D3D10_QUERY_PIPELINE_STATISTICS",
559     "D3D10_QUERY_OCCLUSION_PREDICATE",
560     "D3D10_QUERY_SO_STATISTICS",
561     "D3D10_QUERY_SO_OVERFLOW_PREDICATE",
562 ])
563
564 D3D10_QUERY_MISC_FLAG = Flags(UINT, [
565     "D3D10_QUERY_MISC_PREDICATEHINT",
566 ])
567
568 D3D10_QUERY_DESC = Struct("D3D10_QUERY_DESC", [
569     (D3D10_QUERY, "Query"),
570     (D3D10_QUERY_MISC_FLAG, "MiscFlags"),
571 ])
572
573 D3D10_RECT = Alias("D3D10_RECT", RECT)
574 D3D10_VIEWPORT = Struct("D3D10_VIEWPORT", [
575     (INT, "TopLeftX"),
576     (INT, "TopLeftY"),
577     (UINT, "Width"),
578     (UINT, "Height"),
579     (FLOAT, "MinDepth"),
580     (FLOAT, "MaxDepth"),
581 ])
582
583 D3D10_MAPPED_TEXTURE2D = Struct("D3D10_MAPPED_TEXTURE2D", [
584     (OpaquePointer(Void), "pData"),
585     (UINT, "RowPitch"),
586 ])
587
588 D3D10_MAPPED_TEXTURE3D = Struct("D3D10_MAPPED_TEXTURE3D", [
589     (OpaquePointer(Void), "pData"),
590     (UINT, "RowPitch"),
591     (UINT, "DepthPitch"),
592 ])
593
594 D3D10_MAP_FLAG = Flags(UINT, [
595     "D3D10_MAP_FLAG_DO_NOT_WAIT",
596 ])
597
598 D3D10_CLEAR_FLAG = Flags(UINT, [
599     "D3D10_CLEAR_DEPTH",
600     "D3D10_CLEAR_STENCIL",
601 ])
602
603 D3D10_COLOR_WRITE_ENABLE = Flags(UINT, [
604     "D3D10_COLOR_WRITE_ENABLE_ALL",
605     "D3D10_COLOR_WRITE_ENABLE_RED",
606     "D3D10_COLOR_WRITE_ENABLE_GREEN",
607     "D3D10_COLOR_WRITE_ENABLE_BLUE",
608     "D3D10_COLOR_WRITE_ENABLE_ALPHA",
609 ])
610
611 D3D10_TEXTURECUBE_FACE = Enum("D3D10_TEXTURECUBE_FACE", [
612     "D3D10_TEXTURECUBE_FACE_POSITIVE_X",
613     "D3D10_TEXTURECUBE_FACE_NEGATIVE_X",
614     "D3D10_TEXTURECUBE_FACE_POSITIVE_Y",
615     "D3D10_TEXTURECUBE_FACE_NEGATIVE_Y",
616     "D3D10_TEXTURECUBE_FACE_POSITIVE_Z",
617     "D3D10_TEXTURECUBE_FACE_NEGATIVE_Z",
618 ])
619
620 D3D10_ASYNC_GETDATA_FLAG = Flags(UINT, [
621     "D3D10_ASYNC_GETDATA_DONOTFLUSH",
622 ])
623
624 D3D10_FILTER_TYPE = Enum("D3D10_FILTER_TYPE", [
625     "D3D10_FILTER_TYPE_POINT",
626     "D3D10_FILTER_TYPE_LINEAR",
627 ])
628
629 D3D10_QUERY_DATA_TIMESTAMP_DISJOINT = Struct("D3D10_QUERY_DATA_TIMESTAMP_DISJOINT", [
630     (UINT64, "Frequency"),
631     (BOOL, "Disjoint"),
632 ])
633
634 D3D10_QUERY_DATA_PIPELINE_STATISTICS = Struct("D3D10_QUERY_DATA_PIPELINE_STATISTICS", [
635     (UINT64, "IAVertices"),
636     (UINT64, "IAPrimitives"),
637     (UINT64, "VSInvocations"),
638     (UINT64, "GSInvocations"),
639     (UINT64, "GSPrimitives"),
640     (UINT64, "CInvocations"),
641     (UINT64, "CPrimitives"),
642     (UINT64, "PSInvocations"),
643 ])
644
645 D3D10_QUERY_DATA_SO_STATISTICS = Struct("D3D10_QUERY_DATA_SO_STATISTICS", [
646     (UINT64, "NumPrimitivesWritten"),
647     (UINT64, "PrimitivesStorageNeeded"),
648 ])
649
650 D3D10_CREATE_DEVICE_FLAG = Flags(UINT, [
651     "D3D10_CREATE_DEVICE_SINGLETHREADED",
652     "D3D10_CREATE_DEVICE_DEBUG",
653     "D3D10_CREATE_DEVICE_SWITCH_TO_REF",
654     "D3D10_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS",
655     "D3D10_CREATE_DEVICE_ALLOW_NULL_FROM_MAP",
656     "D3D10_CREATE_DEVICE_BGRA_SUPPORT",
657     "D3D10_CREATE_DEVICE_STRICT_VALIDATION",
658 ])
659
660 D3D10_RAISE_FLAG = Flags(UINT, [
661     "D3D10_RAISE_FLAG_DRIVER_INTERNAL_ERROR",
662 ])
663
664 ID3D10DeviceChild = Interface("ID3D10DeviceChild", IUnknown)
665 ID3D10Resource = Interface("ID3D10Resource", ID3D10DeviceChild)
666 ID3D10Buffer = Interface("ID3D10Buffer", ID3D10Resource)
667 ID3D10Texture1D = Interface("ID3D10Texture1D", ID3D10Resource)
668 ID3D10Texture2D = Interface("ID3D10Texture2D", ID3D10Resource)
669 ID3D10Texture3D = Interface("ID3D10Texture3D", ID3D10Resource)
670 ID3D10View = Interface("ID3D10View", ID3D10DeviceChild)
671 ID3D10DepthStencilView = Interface("ID3D10DepthStencilView", ID3D10View)
672 ID3D10RenderTargetView = Interface("ID3D10RenderTargetView", ID3D10View)
673 ID3D10ShaderResourceView = Interface("ID3D10ShaderResourceView", ID3D10View)
674 ID3D10BlendState = Interface("ID3D10BlendState", ID3D10DeviceChild)
675 ID3D10DepthStencilState = Interface("ID3D10DepthStencilState", ID3D10DeviceChild)
676 ID3D10GeometryShader = Interface("ID3D10GeometryShader", ID3D10DeviceChild)
677 ID3D10InputLayout = Interface("ID3D10InputLayout", ID3D10DeviceChild)
678 ID3D10PixelShader = Interface("ID3D10PixelShader", ID3D10DeviceChild)
679 ID3D10RasterizerState = Interface("ID3D10RasterizerState", ID3D10DeviceChild)
680 ID3D10SamplerState = Interface("ID3D10SamplerState", ID3D10DeviceChild)
681 ID3D10VertexShader = Interface("ID3D10VertexShader", ID3D10DeviceChild)
682 ID3D10Asynchronous = Interface("ID3D10Asynchronous", ID3D10DeviceChild)
683 ID3D10Counter = Interface("ID3D10Counter", ID3D10Asynchronous)
684 ID3D10Query = Interface("ID3D10Query", ID3D10Asynchronous)
685 ID3D10Predicate = Interface("ID3D10Predicate", ID3D10Query)
686 ID3D10Device = Interface("ID3D10Device", IUnknown)
687 ID3D10Multithread = Interface("ID3D10Multithread", IUnknown)
688
689 ID3D10DeviceChild.methods += [
690     Method(Void, "GetDevice", [Out(Pointer(Pointer(ID3D10Device)), "ppDevice")]),
691     Method(HRESULT, "GetPrivateData", [(REFGUID, "guid"), Out(Pointer(UINT), "pDataSize"), Out(OpaquePointer(Void), "pData")]),
692     Method(HRESULT, "SetPrivateData", [(REFGUID, "guid"), (UINT, "DataSize"), (OpaquePointer(Const(Void)), "pData")]),
693     Method(HRESULT, "SetPrivateDataInterface", [(REFGUID, "guid"), (OpaquePointer(Const(IUnknown)), "pData")]),
694 ]
695
696 ID3D10Resource.methods += [
697     Method(Void, "GetType", [Out(Pointer(D3D10_RESOURCE_DIMENSION), "rType")]),
698     Method(Void, "SetEvictionPriority", [(UINT, "EvictionPriority")]),
699     Method(UINT, "GetEvictionPriority", []),
700 ]
701
702 ID3D10Buffer.methods += [
703     Method(HRESULT, "Map", [(D3D10_MAP, "MapType"), (D3D10_MAP_FLAG, "MapFlags"), Out(Pointer(OpaquePointer(Void)), "ppData")]),
704     Method(Void, "Unmap", []),
705     Method(Void, "GetDesc", [Out(Pointer(D3D10_BUFFER_DESC), "pDesc")]),
706 ]
707
708 ID3D10Texture1D.methods += [
709     Method(HRESULT, "Map", [(UINT, "Subresource"), (D3D10_MAP, "MapType"), (D3D10_MAP_FLAG, "MapFlags"), Out(Pointer(OpaquePointer(Void)), "ppData")]),
710     Method(Void, "Unmap", [(UINT, "Subresource")]),
711     Method(Void, "GetDesc", [Out(Pointer(D3D10_TEXTURE1D_DESC), "pDesc")]),
712 ]
713
714 ID3D10Texture2D.methods += [
715     Method(HRESULT, "Map", [(UINT, "Subresource"), (D3D10_MAP, "MapType"), (D3D10_MAP_FLAG, "MapFlags"), Out(Pointer(D3D10_MAPPED_TEXTURE2D), "pMappedTex2D")]),
716     Method(Void, "Unmap", [(UINT, "Subresource")]),
717     Method(Void, "GetDesc", [Out(Pointer(D3D10_TEXTURE2D_DESC), "pDesc")]),
718 ]
719
720 ID3D10Texture3D.methods += [
721     Method(HRESULT, "Map", [(UINT, "Subresource"), (D3D10_MAP, "MapType"), (D3D10_MAP_FLAG, "MapFlags"), Out(Pointer(D3D10_MAPPED_TEXTURE3D), "pMappedTex3D")]),
722     Method(Void, "Unmap", [(UINT, "Subresource")]),
723     Method(Void, "GetDesc", [Out(Pointer(D3D10_TEXTURE3D_DESC), "pDesc")]),
724 ]
725
726 ID3D10View.methods += [
727     Method(Void, "GetResource", [Out(Pointer(Pointer(ID3D10Resource)), "ppResource")]),
728 ]
729
730 ID3D10DepthStencilView.methods += [
731     Method(Void, "GetDesc", [Out(Pointer(D3D10_DEPTH_STENCIL_VIEW_DESC), "pDesc")]),
732 ]
733
734 ID3D10RenderTargetView.methods += [
735     Method(Void, "GetDesc", [Out(Pointer(D3D10_RENDER_TARGET_VIEW_DESC), "pDesc")]),
736 ]
737
738 ID3D10ShaderResourceView.methods += [
739     Method(Void, "GetDesc", [Out(Pointer(D3D10_SHADER_RESOURCE_VIEW_DESC), "pDesc")]),
740 ]
741
742 ID3D10BlendState.methods += [
743     Method(Void, "GetDesc", [Out(Pointer(D3D10_BLEND_DESC), "pDesc")]),
744 ]
745
746 ID3D10DepthStencilState.methods += [
747     Method(Void, "GetDesc", [Out(Pointer(D3D10_DEPTH_STENCIL_DESC), "pDesc")]),
748 ]
749
750 ID3D10RasterizerState.methods += [
751     Method(Void, "GetDesc", [Out(Pointer(D3D10_RASTERIZER_DESC), "pDesc")]),
752 ]
753
754 ID3D10SamplerState.methods += [
755     Method(Void, "GetDesc", [Out(Pointer(D3D10_SAMPLER_DESC), "pDesc")]),
756 ]
757
758 ID3D10Asynchronous.methods += [
759     Method(Void, "Begin", []),
760     Method(Void, "End", []),
761     Method(HRESULT, "GetData", [Out(Blob(Void, "DataSize"), "pData"), (UINT, "DataSize"), (D3D10_ASYNC_GETDATA_FLAG, "GetDataFlags")]),
762     Method(UINT, "GetDataSize", []),
763 ]
764
765 ID3D10Counter.methods += [
766     Method(Void, "GetDesc", [Out(Pointer(D3D10_COUNTER_DESC), "pDesc")]),
767 ]
768
769 ID3D10Query.methods += [
770     Method(Void, "GetDesc", [Out(Pointer(D3D10_QUERY_DESC), "pDesc")]),
771 ]
772
773 ID3D10Device.methods += [
774     Method(Void, "VSSetConstantBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(OpaquePointer(ID3D10Buffer)), "NumBuffers"), "ppConstantBuffers")]),
775     Method(Void, "PSSetShaderResources", [(UINT, "StartSlot"), (UINT, "NumViews"), (Array(Const(OpaquePointer(ID3D10ShaderResourceView)), "NumViews"), "ppShaderResourceViews")]),
776     Method(Void, "PSSetShader", [(Pointer(ID3D10PixelShader), "pPixelShader")]),
777     Method(Void, "PSSetSamplers", [(UINT, "StartSlot"), (UINT, "NumSamplers"), (Array(Const(OpaquePointer(ID3D10SamplerState)), "NumSamplers"), "ppSamplers")]),
778     Method(Void, "VSSetShader", [(Pointer(ID3D10VertexShader), "pVertexShader")]),
779     Method(Void, "DrawIndexed", [(UINT, "IndexCount"), (UINT, "StartIndexLocation"), (INT, "BaseVertexLocation")]),
780     Method(Void, "Draw", [(UINT, "VertexCount"), (UINT, "StartVertexLocation")]),
781     Method(Void, "PSSetConstantBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(OpaquePointer(ID3D10Buffer)), "NumBuffers"), "ppConstantBuffers")]),
782     Method(Void, "IASetInputLayout", [(Pointer(ID3D10InputLayout), "pInputLayout")]),
783     Method(Void, "IASetVertexBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(OpaquePointer(ID3D10Buffer)), "NumBuffers"), "ppVertexBuffers"), (Array(Const(UINT), "NumBuffers"), "pStrides"), (Array(Const(UINT), "NumBuffers"), "pOffsets")]),
784     Method(Void, "IASetIndexBuffer", [(OpaquePointer(ID3D10Buffer), "pIndexBuffer"), (DXGI_FORMAT, "Format"), (UINT, "Offset")]),
785     Method(Void, "DrawIndexedInstanced", [(UINT, "IndexCountPerInstance"), (UINT, "InstanceCount"), (UINT, "StartIndexLocation"), (INT, "BaseVertexLocation"), (UINT, "StartInstanceLocation")]),
786     Method(Void, "DrawInstanced", [(UINT, "VertexCountPerInstance"), (UINT, "InstanceCount"), (UINT, "StartVertexLocation"), (UINT, "StartInstanceLocation")]),
787     Method(Void, "GSSetConstantBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(OpaquePointer(ID3D10Buffer)), "NumBuffers"), "ppConstantBuffers")]),
788     Method(Void, "GSSetShader", [(Pointer(ID3D10GeometryShader), "pShader")]),
789     Method(Void, "IASetPrimitiveTopology", [(D3D10_PRIMITIVE_TOPOLOGY, "Topology")]),
790     Method(Void, "VSSetShaderResources", [(UINT, "StartSlot"), (UINT, "NumViews"), (Array(Const(OpaquePointer(ID3D10ShaderResourceView)), "NumViews"), "ppShaderResourceViews")]),
791     Method(Void, "VSSetSamplers", [(UINT, "StartSlot"), (UINT, "NumSamplers"), (Array(Const(OpaquePointer(ID3D10SamplerState)), "NumSamplers"), "ppSamplers")]),
792     Method(Void, "SetPredication", [(Pointer(ID3D10Predicate), "pPredicate"), (BOOL, "PredicateValue")]),
793     Method(Void, "GSSetShaderResources", [(UINT, "StartSlot"), (UINT, "NumViews"), (Array(Const(OpaquePointer(ID3D10ShaderResourceView)), "NumViews"), "ppShaderResourceViews")]),
794     Method(Void, "GSSetSamplers", [(UINT, "StartSlot"), (UINT, "NumSamplers"), (Array(Const(OpaquePointer(ID3D10SamplerState)), "NumSamplers"), "ppSamplers")]),
795     Method(Void, "OMSetRenderTargets", [(UINT, "NumViews"), (Array(Const(OpaquePointer(ID3D10RenderTargetView)), "NumViews"), "ppRenderTargetViews"), (Pointer(ID3D10DepthStencilView), "pDepthStencilView")]),
796     Method(Void, "OMSetBlendState", [(Pointer(ID3D10BlendState), "pBlendState"), (Array(Const(FLOAT), 4), "BlendFactor"), (UINT, "SampleMask")]),
797     Method(Void, "OMSetDepthStencilState", [(Pointer(ID3D10DepthStencilState), "pDepthStencilState"), (UINT, "StencilRef")]),
798     Method(Void, "SOSetTargets", [(UINT, "NumBuffers"), (Array(Const(OpaquePointer(ID3D10Buffer)), "NumBuffers"), "ppSOTargets"), (Array(Const(UINT), "NumBuffers"), "pOffsets")]),
799     Method(Void, "DrawAuto", []),
800     Method(Void, "RSSetState", [(Pointer(ID3D10RasterizerState), "pRasterizerState")]),
801     Method(Void, "RSSetViewports", [(UINT, "NumViewports"), (Array(Const(D3D10_VIEWPORT), "NumViewports"), "pViewports")]),
802     Method(Void, "RSSetScissorRects", [(UINT, "NumRects"), (Array(Const(D3D10_RECT), "NumRects"), "pRects")]),
803     Method(Void, "CopySubresourceRegion", [(Pointer(ID3D10Resource), "pDstResource"), (UINT, "DstSubresource"), (UINT, "DstX"), (UINT, "DstY"), (UINT, "DstZ"), (Pointer(ID3D10Resource), "pSrcResource"), (UINT, "SrcSubresource"), (Pointer(Const(D3D10_BOX)), "pSrcBox")]),
804     Method(Void, "CopyResource", [(Pointer(ID3D10Resource), "pDstResource"), (Pointer(ID3D10Resource), "pSrcResource")]),
805     Method(Void, "UpdateSubresource", [(Pointer(ID3D10Resource), "pDstResource"), (UINT, "DstSubresource"), (Pointer(Const(D3D10_BOX)), "pDstBox"), (OpaquePointer(Const(Void)), "pSrcData"), (UINT, "SrcRowPitch"), (UINT, "SrcDepthPitch")]),
806     Method(Void, "ClearRenderTargetView", [(OpaquePointer(ID3D10RenderTargetView), "pRenderTargetView"), (Array(Const(FLOAT), 4), "ColorRGBA")]),
807     Method(Void, "ClearDepthStencilView", [(Pointer(ID3D10DepthStencilView), "pDepthStencilView"), (D3D10_CLEAR_FLAG, "ClearFlags"), (FLOAT, "Depth"), (UINT8, "Stencil")]),
808     Method(Void, "GenerateMips", [(OpaquePointer(ID3D10ShaderResourceView), "pShaderResourceView")]),
809     Method(Void, "ResolveSubresource", [(Pointer(ID3D10Resource), "pDstResource"), (UINT, "DstSubresource"), (Pointer(ID3D10Resource), "pSrcResource"), (UINT, "SrcSubresource"), (DXGI_FORMAT, "Format")]),
810     Method(Void, "VSGetConstantBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), Out(Array(OpaquePointer(ID3D10Buffer), "NumBuffers"), "ppConstantBuffers")]),
811     Method(Void, "PSGetShaderResources", [(UINT, "StartSlot"), (UINT, "NumViews"), Out(Array(OpaquePointer(ID3D10ShaderResourceView), "NumViews"), "ppShaderResourceViews")]),
812     Method(Void, "PSGetShader", [Out(Pointer(Pointer(ID3D10PixelShader)), "ppPixelShader")]),
813     Method(Void, "PSGetSamplers", [(UINT, "StartSlot"), (UINT, "NumSamplers"), Out(Array(OpaquePointer(ID3D10SamplerState), "NumSamplers"), "ppSamplers")]),
814     Method(Void, "VSGetShader", [Out(Pointer(Pointer(ID3D10VertexShader)), "ppVertexShader")]),
815     Method(Void, "PSGetConstantBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), Out(Array(OpaquePointer(ID3D10Buffer), "NumBuffers"), "ppConstantBuffers")]),
816     Method(Void, "IAGetInputLayout", [Out(Pointer(Pointer(ID3D10InputLayout)), "ppInputLayout")]),
817     Method(Void, "IAGetVertexBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), Out(Array(OpaquePointer(ID3D10Buffer), "NumBuffers"), "ppVertexBuffers"), Out(Array(UINT, "NumBuffers"), "pStrides"), Out(Array(UINT, "NumBuffers"), "pOffsets")]),
818     Method(Void, "IAGetIndexBuffer", [Out(Pointer(OpaquePointer(ID3D10Buffer)), "pIndexBuffer"), Out(Pointer(DXGI_FORMAT), "Format"), Out(Pointer(UINT), "Offset")]),
819     Method(Void, "GSGetConstantBuffers", [(UINT, "StartSlot"), (UINT, "NumBuffers"), Out(Array(OpaquePointer(ID3D10Buffer), "NumBuffers"), "ppConstantBuffers")]),
820     Method(Void, "GSGetShader", [Out(Pointer(Pointer(ID3D10GeometryShader)), "ppGeometryShader")]),
821     Method(Void, "IAGetPrimitiveTopology", [Out(Pointer(D3D10_PRIMITIVE_TOPOLOGY), "pTopology")]),
822     Method(Void, "VSGetShaderResources", [(UINT, "StartSlot"), (UINT, "NumViews"), Out(Array(OpaquePointer(ID3D10ShaderResourceView), "NumViews"), "ppShaderResourceViews")]),
823     Method(Void, "VSGetSamplers", [(UINT, "StartSlot"), (UINT, "NumSamplers"), Out(Array(OpaquePointer(ID3D10SamplerState), "NumSamplers"), "ppSamplers")]),
824     Method(Void, "GetPredication", [Out(Pointer(Pointer(ID3D10Predicate)), "ppPredicate"), Out(Pointer(BOOL), "pPredicateValue")]),
825     Method(Void, "GSGetShaderResources", [(UINT, "StartSlot"), (UINT, "NumViews"), Out(Array(OpaquePointer(ID3D10ShaderResourceView), "NumViews"), "ppShaderResourceViews")]),
826     Method(Void, "GSGetSamplers", [(UINT, "StartSlot"), (UINT, "NumSamplers"), Out(Array(OpaquePointer(ID3D10SamplerState), "NumSamplers"), "ppSamplers")]),
827     Method(Void, "OMGetRenderTargets", [(UINT, "NumViews"), Out(Array(OpaquePointer(ID3D10RenderTargetView), "NumViews"), "ppRenderTargetViews"), Out(Pointer(Pointer(ID3D10DepthStencilView)), "ppDepthStencilView")]),
828     Method(Void, "OMGetBlendState", [Out(Pointer(Pointer(ID3D10BlendState)), "ppBlendState"), Out(Array(FLOAT, 4), "BlendFactor"), Out(Pointer(UINT), "pSampleMask")]),
829     Method(Void, "OMGetDepthStencilState", [Out(Pointer(Pointer(ID3D10DepthStencilState)), "ppDepthStencilState"), Out(Pointer(UINT), "pStencilRef")]),
830     Method(Void, "SOGetTargets", [(UINT, "NumBuffers"), Out(Array(OpaquePointer(ID3D10Buffer), "NumBuffers"), "ppSOTargets"), Out(Array(UINT, "NumBuffers"), "pOffsets")]),
831     Method(Void, "RSGetState", [Out(Pointer(Pointer(ID3D10RasterizerState)), "ppRasterizerState")]),
832     Method(Void, "RSGetViewports", [Out(Pointer(UINT), "NumViewports"), Out(Array(D3D10_VIEWPORT, "*NumViewports"), "pViewports")]),
833     Method(Void, "RSGetScissorRects", [Out(Pointer(UINT), "NumRects"), Out(Array(D3D10_RECT, "*NumRects"), "pRects")]),
834     Method(HRESULT, "GetDeviceRemovedReason", []),
835     Method(HRESULT, "SetExceptionMode", [(D3D10_RAISE_FLAG, "RaiseFlags")]),
836     Method(D3D10_RAISE_FLAG, "GetExceptionMode", []),
837     Method(HRESULT, "GetPrivateData", [(REFGUID, "guid"), Out(Pointer(UINT), "pDataSize"), Out(OpaquePointer(Void), "pData")]),
838     Method(HRESULT, "SetPrivateData", [(REFGUID, "guid"), (UINT, "DataSize"), (OpaquePointer(Const(Void)), "pData")]),
839     Method(HRESULT, "SetPrivateDataInterface", [(REFGUID, "guid"), (OpaquePointer(Const(IUnknown)), "pData")]),
840     Method(Void, "ClearState", []),
841     Method(Void, "Flush", []),
842     Method(HRESULT, "CreateBuffer", [(Pointer(Const(D3D10_BUFFER_DESC)), "pDesc"), (Pointer(Const(D3D10_SUBRESOURCE_DATA)), "pInitialData"), Out(Pointer(OpaquePointer(ID3D10Buffer)), "ppBuffer")]),
843     Method(HRESULT, "CreateTexture1D", [(Pointer(Const(D3D10_TEXTURE1D_DESC)), "pDesc"), (Pointer(Const(D3D10_SUBRESOURCE_DATA)), "pInitialData"), Out(Pointer(Pointer(ID3D10Texture1D)), "ppTexture1D")]),
844     Method(HRESULT, "CreateTexture2D", [(Pointer(Const(D3D10_TEXTURE2D_DESC)), "pDesc"), (Pointer(Const(D3D10_SUBRESOURCE_DATA)), "pInitialData"), Out(Pointer(Pointer(ID3D10Texture2D)), "ppTexture2D")]),
845     Method(HRESULT, "CreateTexture3D", [(Pointer(Const(D3D10_TEXTURE3D_DESC)), "pDesc"), (Pointer(Const(D3D10_SUBRESOURCE_DATA)), "pInitialData"), Out(Pointer(Pointer(ID3D10Texture3D)), "ppTexture3D")]),
846     Method(HRESULT, "CreateShaderResourceView", [(Pointer(ID3D10Resource), "pResource"), (Pointer(Const(D3D10_SHADER_RESOURCE_VIEW_DESC)), "pDesc"), Out(Pointer(OpaquePointer(ID3D10ShaderResourceView)), "ppSRView")]),
847     Method(HRESULT, "CreateRenderTargetView", [(Pointer(ID3D10Resource), "pResource"), (Pointer(Const(D3D10_RENDER_TARGET_VIEW_DESC)), "pDesc"), Out(Pointer(OpaquePointer(ID3D10RenderTargetView)), "ppRTView")]),
848     Method(HRESULT, "CreateDepthStencilView", [(Pointer(ID3D10Resource), "pResource"), (Pointer(Const(D3D10_DEPTH_STENCIL_VIEW_DESC)), "pDesc"), Out(Pointer(Pointer(ID3D10DepthStencilView)), "ppDepthStencilView")]),
849     Method(HRESULT, "CreateInputLayout", [(Pointer(Const(D3D10_INPUT_ELEMENT_DESC)), "pInputElementDescs"), (UINT, "NumElements"), (Blob(Const(Void), "BytecodeLength"), "pShaderBytecodeWithInputSignature"), (SIZE_T, "BytecodeLength"), Out(Pointer(Pointer(ID3D10InputLayout)), "ppInputLayout")]),
850     Method(HRESULT, "CreateVertexShader", [(Blob(Const(Void), "BytecodeLength"), "pShaderBytecode"), (SIZE_T, "BytecodeLength"), Out(Pointer(Pointer(ID3D10VertexShader)), "ppVertexShader")]),
851     Method(HRESULT, "CreateGeometryShader", [(Blob(Const(Void), "BytecodeLength"), "pShaderBytecode"), (SIZE_T, "BytecodeLength"), Out(Pointer(Pointer(ID3D10GeometryShader)), "ppGeometryShader")]),
852     Method(HRESULT, "CreateGeometryShaderWithStreamOutput", [(Blob(Const(Void), "BytecodeLength"), "pShaderBytecode"), (SIZE_T, "BytecodeLength"), (Pointer(Const(D3D10_SO_DECLARATION_ENTRY)), "pSODeclaration"), (UINT, "NumEntries"), (UINT, "OutputStreamStride"), Out(Pointer(Pointer(ID3D10GeometryShader)), "ppGeometryShader")]),
853     Method(HRESULT, "CreatePixelShader", [(Blob(Const(Void), "BytecodeLength"), "pShaderBytecode"), (SIZE_T, "BytecodeLength"), Out(Pointer(Pointer(ID3D10PixelShader)), "ppPixelShader")]),
854     Method(HRESULT, "CreateBlendState", [(Pointer(Const(D3D10_BLEND_DESC)), "pBlendStateDesc"), Out(Pointer(Pointer(ID3D10BlendState)), "ppBlendState")]),
855     Method(HRESULT, "CreateDepthStencilState", [(Pointer(Const(D3D10_DEPTH_STENCIL_DESC)), "pDepthStencilDesc"), Out(Pointer(Pointer(ID3D10DepthStencilState)), "ppDepthStencilState")]),
856     Method(HRESULT, "CreateRasterizerState", [(Pointer(Const(D3D10_RASTERIZER_DESC)), "pRasterizerDesc"), Out(Pointer(Pointer(ID3D10RasterizerState)), "ppRasterizerState")]),
857     Method(HRESULT, "CreateSamplerState", [(Pointer(Const(D3D10_SAMPLER_DESC)), "pSamplerDesc"), Out(Pointer(OpaquePointer(ID3D10SamplerState)), "ppSamplerState")]),
858     Method(HRESULT, "CreateQuery", [(Pointer(Const(D3D10_QUERY_DESC)), "pQueryDesc"), Out(Pointer(Pointer(ID3D10Query)), "ppQuery")]),
859     Method(HRESULT, "CreatePredicate", [(Pointer(Const(D3D10_QUERY_DESC)), "pPredicateDesc"), Out(Pointer(Pointer(ID3D10Predicate)), "ppPredicate")]),
860     Method(HRESULT, "CreateCounter", [(Pointer(Const(D3D10_COUNTER_DESC)), "pCounterDesc"), Out(Pointer(Pointer(ID3D10Counter)), "ppCounter")]),
861     Method(HRESULT, "CheckFormatSupport", [(DXGI_FORMAT, "Format"), Out(Pointer(UINT), "pFormatSupport")]),
862     Method(HRESULT, "CheckMultisampleQualityLevels", [(DXGI_FORMAT, "Format"), (UINT, "SampleCount"), Out(Pointer(UINT), "pNumQualityLevels")]),
863     Method(Void, "CheckCounterInfo", [Out(Pointer(D3D10_COUNTER_INFO), "pCounterInfo")]),
864     Method(HRESULT, "CheckCounter", [(Pointer(Const(D3D10_COUNTER_DESC)), "pDesc"), Out(Pointer(D3D10_COUNTER_TYPE), "pType"), Out(Pointer(UINT), "pActiveCounters"), Out(LPSTR, "szName"), Out(Pointer(UINT), "pNameLength"), Out(LPSTR, "szUnits"), Out(Pointer(UINT), "pUnitsLength"), Out(LPSTR, "szDescription"), Out(Pointer(UINT), "pDescriptionLength")]),
865     Method(D3D10_CREATE_DEVICE_FLAG, "GetCreationFlags", []),
866     Method(HRESULT, "OpenSharedResource", [(HANDLE, "hResource"), (REFIID, "ReturnedInterface"), Out(Pointer(OpaquePointer(Void)), "ppResource")]),
867     Method(Void, "SetTextFilterSize", [(UINT, "Width"), (UINT, "Height")]),
868     Method(Void, "GetTextFilterSize", [Out(Pointer(UINT), "pWidth"), Out(Pointer(UINT), "pHeight")]),
869 ]
870
871 ID3D10Multithread.methods += [
872     Method(Void, "Enter", []),
873     Method(Void, "Leave", []),
874     Method(BOOL, "SetMultithreadProtected", [(BOOL, "bMTProtect")]),
875     Method(BOOL, "GetMultithreadProtected", []),
876 ]
877