]> git.cworth.org Git - apitrace/blob - specs/d3d11.py
Minimal D3D11 support.
[apitrace] / specs / d3d11.py
1 ##########################################################################
2 #
3 # Copyright 2012 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 from d3d11sdklayers import *
30
31
32 HRESULT = FakeEnum(HRESULT, [
33     "D3D11_ERROR_FILE_NOT_FOUND",
34     "D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS",
35     "D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS",
36     "D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD",
37     "D3DERR_INVALIDCALL",
38     "D3DERR_WASSTILLDRAWING",
39     "E_FAIL",
40     "E_INVALIDARG",
41     "E_OUTOFMEMORY",
42     "S_FALSE",
43     "S_OK",
44 ])
45
46
47 ID3D11DepthStencilState = Interface('ID3D11DepthStencilState', ID3D11DeviceChild)
48 ID3D11BlendState = Interface('ID3D11BlendState', ID3D11DeviceChild)
49 ID3D11RasterizerState = Interface('ID3D11RasterizerState', ID3D11DeviceChild)
50 ID3D11Resource = Interface('ID3D11Resource', ID3D11DeviceChild)
51 ID3D11Buffer = Interface('ID3D11Buffer', ID3D11Resource)
52 ID3D11Texture1D = Interface('ID3D11Texture1D', ID3D11Resource)
53 ID3D11Texture2D = Interface('ID3D11Texture2D', ID3D11Resource)
54 ID3D11Texture3D = Interface('ID3D11Texture3D', ID3D11Resource)
55 ID3D11View = Interface('ID3D11View', ID3D11DeviceChild)
56 ID3D11ShaderResourceView = Interface('ID3D11ShaderResourceView', ID3D11View)
57 ID3D11RenderTargetView = Interface('ID3D11RenderTargetView', ID3D11View)
58 ID3D11DepthStencilView = Interface('ID3D11DepthStencilView', ID3D11View)
59 ID3D11UnorderedAccessView = Interface('ID3D11UnorderedAccessView', ID3D11View)
60 ID3D11VertexShader = Interface('ID3D11VertexShader', ID3D11DeviceChild)
61 ID3D11HullShader = Interface('ID3D11HullShader', ID3D11DeviceChild)
62 ID3D11DomainShader = Interface('ID3D11DomainShader', ID3D11DeviceChild)
63 ID3D11GeometryShader = Interface('ID3D11GeometryShader', ID3D11DeviceChild)
64 ID3D11PixelShader = Interface('ID3D11PixelShader', ID3D11DeviceChild)
65 ID3D11ComputeShader = Interface('ID3D11ComputeShader', ID3D11DeviceChild)
66 ID3D11InputLayout = Interface('ID3D11InputLayout', ID3D11DeviceChild)
67 ID3D11SamplerState = Interface('ID3D11SamplerState', ID3D11DeviceChild)
68 ID3D11Asynchronous = Interface('ID3D11Asynchronous', ID3D11DeviceChild)
69 ID3D11Query = Interface('ID3D11Query', ID3D11Asynchronous)
70 ID3D11Predicate = Interface('ID3D11Predicate', ID3D11Query)
71 ID3D11Counter = Interface('ID3D11Counter', ID3D11Asynchronous)
72 ID3D11ClassInstance = Interface('ID3D11ClassInstance', ID3D11DeviceChild)
73 ID3D11ClassLinkage = Interface('ID3D11ClassLinkage', ID3D11DeviceChild)
74 ID3D11CommandList = Interface('ID3D11CommandList', ID3D11DeviceChild)
75 ID3D11Device = Interface('ID3D11Device', IUnknown)
76
77
78 D3D11_INPUT_CLASSIFICATION = Enum('D3D11_INPUT_CLASSIFICATION', [
79     'D3D11_INPUT_PER_VERTEX_DATA',
80     'D3D11_INPUT_PER_INSTANCE_DATA',
81 ])
82
83 D3D11_INPUT_ELEMENT_ALIGNED_BYTE_OFFSET = FakeEnum(UINT, [
84     'D3D11_APPEND_ALIGNED_ELEMENT',
85 ])
86
87 D3D11_INPUT_ELEMENT_DESC = Struct('D3D11_INPUT_ELEMENT_DESC', [
88     (LPCSTR, 'SemanticName'),
89     (UINT, 'SemanticIndex'),
90     (DXGI_FORMAT, 'Format'),
91     (UINT, 'InputSlot'),
92     (D3D11_INPUT_ELEMENT_ALIGNED_BYTE_OFFSET, 'AlignedByteOffset'),
93     (D3D11_INPUT_CLASSIFICATION, 'InputSlotClass'),
94     (UINT, 'InstanceDataStepRate'),
95 ])
96
97 D3D11_FILL_MODE = Enum('D3D11_FILL_MODE', [
98     'D3D11_FILL_WIREFRAME',
99     'D3D11_FILL_SOLID',
100 ])
101
102 D3D11_PRIMITIVE_TOPOLOGY = Enum('D3D11_PRIMITIVE_TOPOLOGY', [
103     'D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED',
104     'D3D11_PRIMITIVE_TOPOLOGY_POINTLIST',
105     'D3D11_PRIMITIVE_TOPOLOGY_LINELIST',
106     'D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP',
107     'D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST',
108     'D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP',
109     'D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ',
110     'D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ',
111     'D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ',
112     'D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ',
113     'D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST',
114     'D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST',
115     'D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST',
116     'D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST',
117     'D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST',
118     'D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST',
119     'D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST',
120     'D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST',
121     'D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST',
122     'D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST',
123     'D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST',
124     'D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST',
125     'D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST',
126     'D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST',
127     'D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST',
128     'D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST',
129     'D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST',
130     'D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST',
131     'D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST',
132     'D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST',
133     'D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST',
134     'D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST',
135     'D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST',
136     'D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST',
137     'D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST',
138     'D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST',
139     'D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST',
140     'D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST',
141     'D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST',
142     'D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST',
143     'D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST',
144     'D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST',
145 ])
146
147 D3D11_PRIMITIVE = Enum('D3D11_PRIMITIVE', [
148     'D3D11_PRIMITIVE_UNDEFINED',
149     'D3D11_PRIMITIVE_POINT',
150     'D3D11_PRIMITIVE_LINE',
151     'D3D11_PRIMITIVE_TRIANGLE',
152     'D3D11_PRIMITIVE_LINE_ADJ',
153     'D3D11_PRIMITIVE_TRIANGLE_ADJ',
154     'D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH',
155     'D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH',
156     'D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH',
157     'D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH',
158     'D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH',
159     'D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH',
160     'D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH',
161     'D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH',
162     'D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH',
163     'D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH',
164     'D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH',
165     'D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH',
166     'D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH',
167     'D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH',
168     'D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH',
169     'D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH',
170     'D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH',
171     'D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH',
172     'D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH',
173     'D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH',
174     'D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH',
175     'D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH',
176     'D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH',
177     'D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH',
178     'D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH',
179     'D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH',
180     'D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH',
181     'D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH',
182     'D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH',
183     'D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH',
184     'D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH',
185     'D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH',
186 ])
187
188 D3D11_CULL_MODE = Enum('D3D11_CULL_MODE', [
189     'D3D11_CULL_NONE',
190     'D3D11_CULL_FRONT',
191     'D3D11_CULL_BACK',
192 ])
193
194 D3D11_SO_DECLARATION_ENTRY = Struct('D3D11_SO_DECLARATION_ENTRY', [
195     (UINT, 'Stream'),
196     (LPCSTR, 'SemanticName'),
197     (UINT, 'SemanticIndex'),
198     (BYTE, 'StartComponent'),
199     (BYTE, 'ComponentCount'),
200     (BYTE, 'OutputSlot'),
201 ])
202
203 D3D11_VIEWPORT = Struct('D3D11_VIEWPORT', [
204     (FLOAT, 'TopLeftX'),
205     (FLOAT, 'TopLeftY'),
206     (FLOAT, 'Width'),
207     (FLOAT, 'Height'),
208     (FLOAT, 'MinDepth'),
209     (FLOAT, 'MaxDepth'),
210 ])
211
212 D3D11_RESOURCE_DIMENSION = Enum('D3D11_RESOURCE_DIMENSION', [
213     'D3D11_RESOURCE_DIMENSION_UNKNOWN',
214     'D3D11_RESOURCE_DIMENSION_BUFFER',
215     'D3D11_RESOURCE_DIMENSION_TEXTURE1D',
216     'D3D11_RESOURCE_DIMENSION_TEXTURE2D',
217     'D3D11_RESOURCE_DIMENSION_TEXTURE3D',
218 ])
219
220 D3D11_SRV_DIMENSION = Enum('D3D11_SRV_DIMENSION', [
221     'D3D11_SRV_DIMENSION_UNKNOWN',
222     'D3D11_SRV_DIMENSION_BUFFER',
223     'D3D11_SRV_DIMENSION_TEXTURE1D',
224     'D3D11_SRV_DIMENSION_TEXTURE1DARRAY',
225     'D3D11_SRV_DIMENSION_TEXTURE2D',
226     'D3D11_SRV_DIMENSION_TEXTURE2DARRAY',
227     'D3D11_SRV_DIMENSION_TEXTURE2DMS',
228     'D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY',
229     'D3D11_SRV_DIMENSION_TEXTURE3D',
230     'D3D11_SRV_DIMENSION_TEXTURECUBE',
231     'D3D11_SRV_DIMENSION_TEXTURECUBEARRAY',
232     'D3D11_SRV_DIMENSION_BUFFEREX',
233 ])
234
235 D3D11_DSV_DIMENSION = Enum('D3D11_DSV_DIMENSION', [
236     'D3D11_DSV_DIMENSION_UNKNOWN',
237     'D3D11_DSV_DIMENSION_TEXTURE1D',
238     'D3D11_DSV_DIMENSION_TEXTURE1DARRAY',
239     'D3D11_DSV_DIMENSION_TEXTURE2D',
240     'D3D11_DSV_DIMENSION_TEXTURE2DARRAY',
241     'D3D11_DSV_DIMENSION_TEXTURE2DMS',
242     'D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY',
243 ])
244
245 D3D11_RTV_DIMENSION = Enum('D3D11_RTV_DIMENSION', [
246     'D3D11_RTV_DIMENSION_UNKNOWN',
247     'D3D11_RTV_DIMENSION_BUFFER',
248     'D3D11_RTV_DIMENSION_TEXTURE1D',
249     'D3D11_RTV_DIMENSION_TEXTURE1DARRAY',
250     'D3D11_RTV_DIMENSION_TEXTURE2D',
251     'D3D11_RTV_DIMENSION_TEXTURE2DARRAY',
252     'D3D11_RTV_DIMENSION_TEXTURE2DMS',
253     'D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY',
254     'D3D11_RTV_DIMENSION_TEXTURE3D',
255 ])
256
257 D3D11_UAV_DIMENSION = Enum('D3D11_UAV_DIMENSION', [
258     'D3D11_UAV_DIMENSION_UNKNOWN',
259     'D3D11_UAV_DIMENSION_BUFFER',
260     'D3D11_UAV_DIMENSION_TEXTURE1D',
261     'D3D11_UAV_DIMENSION_TEXTURE1DARRAY',
262     'D3D11_UAV_DIMENSION_TEXTURE2D',
263     'D3D11_UAV_DIMENSION_TEXTURE2DARRAY',
264     'D3D11_UAV_DIMENSION_TEXTURE3D',
265 ])
266
267 D3D11_USAGE = Enum('D3D11_USAGE', [
268     'D3D11_USAGE_DEFAULT',
269     'D3D11_USAGE_IMMUTABLE',
270     'D3D11_USAGE_DYNAMIC',
271     'D3D11_USAGE_STAGING',
272 ])
273
274 D3D11_BIND_FLAG = Flags(UINT, [
275     'D3D11_BIND_VERTEX_BUFFER',
276     'D3D11_BIND_INDEX_BUFFER',
277     'D3D11_BIND_CONSTANT_BUFFER',
278     'D3D11_BIND_SHADER_RESOURCE',
279     'D3D11_BIND_STREAM_OUTPUT',
280     'D3D11_BIND_RENDER_TARGET',
281     'D3D11_BIND_DEPTH_STENCIL',
282     'D3D11_BIND_UNORDERED_ACCESS',
283 ])
284
285 D3D11_CPU_ACCESS_FLAG = Flags(UINT, [
286     'D3D11_CPU_ACCESS_WRITE',
287     'D3D11_CPU_ACCESS_READ',
288 ])
289
290 D3D11_RESOURCE_MISC_FLAG = Flags(UINT, [
291     'D3D11_RESOURCE_MISC_GENERATE_MIPS',
292     'D3D11_RESOURCE_MISC_SHARED',
293     'D3D11_RESOURCE_MISC_TEXTURECUBE',
294     'D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS',
295     'D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS',
296     'D3D11_RESOURCE_MISC_BUFFER_STRUCTURED',
297     'D3D11_RESOURCE_MISC_RESOURCE_CLAMP',
298     'D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX',
299     'D3D11_RESOURCE_MISC_GDI_COMPATIBLE',
300 ])
301
302 D3D11_MAP = Enum('D3D11_MAP', [
303     'D3D11_MAP_READ',
304     'D3D11_MAP_WRITE',
305     'D3D11_MAP_READ_WRITE',
306     'D3D11_MAP_WRITE_DISCARD',
307     'D3D11_MAP_WRITE_NO_OVERWRITE',
308 ])
309
310 D3D11_MAP_FLAG = Flags(UINT, [
311     'D3D11_MAP_FLAG_DO_NOT_WAIT',
312 ])
313
314 D3D11_RAISE_FLAG = Flags(UINT, [
315     'D3D11_RAISE_FLAG_DRIVER_INTERNAL_ERROR',
316 ])
317
318 D3D11_CLEAR_FLAG = Flags(UINT, [
319     'D3D11_CLEAR_DEPTH',
320     'D3D11_CLEAR_STENCIL',
321 ])
322
323 D3D11_RECT = Alias('D3D11_RECT', RECT)
324 D3D11_BOX = Struct('D3D11_BOX', [
325     (UINT, 'left'),
326     (UINT, 'top'),
327     (UINT, 'front'),
328     (UINT, 'right'),
329     (UINT, 'bottom'),
330     (UINT, 'back'),
331 ])
332
333 ID3D11DeviceChild.methods += [
334     StdMethod(Void, 'GetDevice', [Out(Pointer(Pointer(ID3D11Device)), 'ppDevice')]),
335     StdMethod(HRESULT, 'GetPrivateData', [(REFGUID, 'guid'), Out(Pointer(UINT), 'pDataSize'), Out(OpaquePointer(Void), 'pData')]),
336     StdMethod(HRESULT, 'SetPrivateData', [(REFGUID, 'guid'), (UINT, 'DataSize'), (OpaqueBlob(Const(Void), 'DataSize'), 'pData')]),
337     StdMethod(HRESULT, 'SetPrivateDataInterface', [(REFGUID, 'guid'), (Pointer(Const(IUnknown)), 'pData')]),
338 ]
339
340 D3D11_COMPARISON_FUNC = Enum('D3D11_COMPARISON_FUNC', [
341     'D3D11_COMPARISON_NEVER',
342     'D3D11_COMPARISON_LESS',
343     'D3D11_COMPARISON_EQUAL',
344     'D3D11_COMPARISON_LESS_EQUAL',
345     'D3D11_COMPARISON_GREATER',
346     'D3D11_COMPARISON_NOT_EQUAL',
347     'D3D11_COMPARISON_GREATER_EQUAL',
348     'D3D11_COMPARISON_ALWAYS',
349 ])
350
351 D3D11_DEPTH_WRITE_MASK = Enum('D3D11_DEPTH_WRITE_MASK', [
352     'D3D11_DEPTH_WRITE_MASK_ZERO',
353     'D3D11_DEPTH_WRITE_MASK_ALL',
354 ])
355
356 D3D11_STENCIL_OP = Enum('D3D11_STENCIL_OP', [
357     'D3D11_STENCIL_OP_KEEP',
358     'D3D11_STENCIL_OP_ZERO',
359     'D3D11_STENCIL_OP_REPLACE',
360     'D3D11_STENCIL_OP_INCR_SAT',
361     'D3D11_STENCIL_OP_DECR_SAT',
362     'D3D11_STENCIL_OP_INVERT',
363     'D3D11_STENCIL_OP_INCR',
364     'D3D11_STENCIL_OP_DECR',
365 ])
366
367 D3D11_DEPTH_STENCILOP_DESC = Struct('D3D11_DEPTH_STENCILOP_DESC', [
368     (D3D11_STENCIL_OP, 'StencilFailOp'),
369     (D3D11_STENCIL_OP, 'StencilDepthFailOp'),
370     (D3D11_STENCIL_OP, 'StencilPassOp'),
371     (D3D11_COMPARISON_FUNC, 'StencilFunc'),
372 ])
373
374 D3D11_DEPTH_STENCIL_DESC = Struct('D3D11_DEPTH_STENCIL_DESC', [
375     (BOOL, 'DepthEnable'),
376     (D3D11_DEPTH_WRITE_MASK, 'DepthWriteMask'),
377     (D3D11_COMPARISON_FUNC, 'DepthFunc'),
378     (BOOL, 'StencilEnable'),
379     (UINT8, 'StencilReadMask'),
380     (UINT8, 'StencilWriteMask'),
381     (D3D11_DEPTH_STENCILOP_DESC, 'FrontFace'),
382     (D3D11_DEPTH_STENCILOP_DESC, 'BackFace'),
383 ])
384
385 ID3D11DepthStencilState.methods += [
386     StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_DEPTH_STENCIL_DESC), 'pDesc')]),
387 ]
388
389 D3D11_BLEND = Enum('D3D11_BLEND', [
390     'D3D11_BLEND_ZERO',
391     'D3D11_BLEND_ONE',
392     'D3D11_BLEND_SRC_COLOR',
393     'D3D11_BLEND_INV_SRC_COLOR',
394     'D3D11_BLEND_SRC_ALPHA',
395     'D3D11_BLEND_INV_SRC_ALPHA',
396     'D3D11_BLEND_DEST_ALPHA',
397     'D3D11_BLEND_INV_DEST_ALPHA',
398     'D3D11_BLEND_DEST_COLOR',
399     'D3D11_BLEND_INV_DEST_COLOR',
400     'D3D11_BLEND_SRC_ALPHA_SAT',
401     'D3D11_BLEND_BLEND_FACTOR',
402     'D3D11_BLEND_INV_BLEND_FACTOR',
403     'D3D11_BLEND_SRC1_COLOR',
404     'D3D11_BLEND_INV_SRC1_COLOR',
405     'D3D11_BLEND_SRC1_ALPHA',
406     'D3D11_BLEND_INV_SRC1_ALPHA',
407 ])
408
409 D3D11_BLEND_OP = Enum('D3D11_BLEND_OP', [
410     'D3D11_BLEND_OP_ADD',
411     'D3D11_BLEND_OP_SUBTRACT',
412     'D3D11_BLEND_OP_REV_SUBTRACT',
413     'D3D11_BLEND_OP_MIN',
414     'D3D11_BLEND_OP_MAX',
415 ])
416
417 D3D11_COLOR_WRITE_ENABLE = Enum('D3D11_COLOR_WRITE_ENABLE', [
418     'D3D11_COLOR_WRITE_ENABLE_ALL',
419     'D3D11_COLOR_WRITE_ENABLE_RED',
420     'D3D11_COLOR_WRITE_ENABLE_GREEN',
421     'D3D11_COLOR_WRITE_ENABLE_BLUE',
422     'D3D11_COLOR_WRITE_ENABLE_ALPHA',
423 ])
424
425 D3D11_RENDER_TARGET_BLEND_DESC = Struct('D3D11_RENDER_TARGET_BLEND_DESC', [
426     (BOOL, 'BlendEnable'),
427     (D3D11_BLEND, 'SrcBlend'),
428     (D3D11_BLEND, 'DestBlend'),
429     (D3D11_BLEND_OP, 'BlendOp'),
430     (D3D11_BLEND, 'SrcBlendAlpha'),
431     (D3D11_BLEND, 'DestBlendAlpha'),
432     (D3D11_BLEND_OP, 'BlendOpAlpha'),
433     (UINT8, 'RenderTargetWriteMask'),
434 ])
435
436 D3D11_BLEND_DESC = Struct('D3D11_BLEND_DESC', [
437     (BOOL, 'AlphaToCoverageEnable'),
438     (BOOL, 'IndependentBlendEnable'),
439     (Array(D3D11_RENDER_TARGET_BLEND_DESC, 8), 'RenderTarget'),
440 ])
441
442 ID3D11BlendState.methods += [
443     StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_BLEND_DESC), 'pDesc')]),
444 ]
445
446 D3D11_RASTERIZER_DESC = Struct('D3D11_RASTERIZER_DESC', [
447     (D3D11_FILL_MODE, 'FillMode'),
448     (D3D11_CULL_MODE, 'CullMode'),
449     (BOOL, 'FrontCounterClockwise'),
450     (INT, 'DepthBias'),
451     (FLOAT, 'DepthBiasClamp'),
452     (FLOAT, 'SlopeScaledDepthBias'),
453     (BOOL, 'DepthClipEnable'),
454     (BOOL, 'ScissorEnable'),
455     (BOOL, 'MultisampleEnable'),
456     (BOOL, 'AntialiasedLineEnable'),
457 ])
458
459 ID3D11RasterizerState.methods += [
460     StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_RASTERIZER_DESC), 'pDesc')]),
461 ]
462
463 D3D11_SUBRESOURCE_DATA = Struct('D3D11_SUBRESOURCE_DATA', [
464     (OpaquePointer(Const(Void)), 'pSysMem'),
465     (UINT, 'SysMemPitch'),
466     (UINT, 'SysMemSlicePitch'),
467 ])
468
469 D3D11_MAPPED_SUBRESOURCE = Struct('D3D11_MAPPED_SUBRESOURCE', [
470     (OpaquePointer(Void), 'pData'),
471     (UINT, 'RowPitch'),
472     (UINT, 'DepthPitch'),
473 ])
474
475 ID3D11Resource.methods += [
476     StdMethod(Void, 'GetType', [Out(Pointer(D3D11_RESOURCE_DIMENSION), 'pResourceDimension')]),
477     StdMethod(Void, 'SetEvictionPriority', [(UINT, 'EvictionPriority')]),
478     StdMethod(UINT, 'GetEvictionPriority', []),
479 ]
480
481 D3D11_BUFFER_DESC = Struct('D3D11_BUFFER_DESC', [
482     (UINT, 'ByteWidth'),
483     (D3D11_USAGE, 'Usage'),
484     (D3D11_BIND_FLAG, 'BindFlags'),
485     (D3D11_CPU_ACCESS_FLAG, 'CPUAccessFlags'),
486     (D3D11_RESOURCE_MISC_FLAG, 'MiscFlags'),
487     (UINT, 'StructureByteStride'),
488 ])
489
490 ID3D11Buffer.methods += [
491     StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_BUFFER_DESC), 'pDesc')]),
492 ]
493
494 D3D11_TEXTURE1D_DESC = Struct('D3D11_TEXTURE1D_DESC', [
495     (UINT, 'Width'),
496     (UINT, 'MipLevels'),
497     (UINT, 'ArraySize'),
498     (DXGI_FORMAT, 'Format'),
499     (D3D11_USAGE, 'Usage'),
500     (D3D11_BIND_FLAG, 'BindFlags'),
501     (D3D11_CPU_ACCESS_FLAG, 'CPUAccessFlags'),
502     (D3D11_RESOURCE_MISC_FLAG, 'MiscFlags'),
503 ])
504
505 ID3D11Texture1D.methods += [
506     StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_TEXTURE1D_DESC), 'pDesc')]),
507 ]
508
509 D3D11_TEXTURE2D_DESC = Struct('D3D11_TEXTURE2D_DESC', [
510     (UINT, 'Width'),
511     (UINT, 'Height'),
512     (UINT, 'MipLevels'),
513     (UINT, 'ArraySize'),
514     (DXGI_FORMAT, 'Format'),
515     (DXGI_SAMPLE_DESC, 'SampleDesc'),
516     (D3D11_USAGE, 'Usage'),
517     (D3D11_BIND_FLAG, 'BindFlags'),
518     (D3D11_CPU_ACCESS_FLAG, 'CPUAccessFlags'),
519     (D3D11_RESOURCE_MISC_FLAG, 'MiscFlags'),
520 ])
521
522 ID3D11Texture2D.methods += [
523     StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_TEXTURE2D_DESC), 'pDesc')]),
524 ]
525
526 D3D11_TEXTURE3D_DESC = Struct('D3D11_TEXTURE3D_DESC', [
527     (UINT, 'Width'),
528     (UINT, 'Height'),
529     (UINT, 'Depth'),
530     (UINT, 'MipLevels'),
531     (DXGI_FORMAT, 'Format'),
532     (D3D11_USAGE, 'Usage'),
533     (D3D11_BIND_FLAG, 'BindFlags'),
534     (D3D11_CPU_ACCESS_FLAG, 'CPUAccessFlags'),
535     (D3D11_RESOURCE_MISC_FLAG, 'MiscFlags'),
536 ])
537
538 ID3D11Texture3D.methods += [
539     StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_TEXTURE3D_DESC), 'pDesc')]),
540 ]
541
542 D3D11_TEXTURECUBE_FACE = Enum('D3D11_TEXTURECUBE_FACE', [
543     'D3D11_TEXTURECUBE_FACE_POSITIVE_X',
544     'D3D11_TEXTURECUBE_FACE_NEGATIVE_X',
545     'D3D11_TEXTURECUBE_FACE_POSITIVE_Y',
546     'D3D11_TEXTURECUBE_FACE_NEGATIVE_Y',
547     'D3D11_TEXTURECUBE_FACE_POSITIVE_Z',
548     'D3D11_TEXTURECUBE_FACE_NEGATIVE_Z',
549 ])
550
551 ID3D11View.methods += [
552     StdMethod(Void, 'GetResource', [Out(Pointer(Pointer(ID3D11Resource)), 'ppResource')]),
553 ]
554
555 D3D11_BUFFER_SRV = Struct('D3D11_BUFFER_SRV', [
556     (Union(None, [(UINT, 'FirstElement'), (UINT, 'ElementOffset')]), None),
557     (Union(None, [(UINT, 'NumElements'), (UINT, 'ElementWidth')]), None),
558 ])
559
560 D3D11_BUFFEREX_SRV_FLAG = Flags(UINT, [
561     'D3D11_BUFFEREX_SRV_FLAG_RAW',
562 ])
563
564 D3D11_BUFFEREX_SRV = Struct('D3D11_BUFFEREX_SRV', [
565     (UINT, 'FirstElement'),
566     (UINT, 'NumElements'),
567     (D3D11_BUFFEREX_SRV_FLAG, 'Flags'),
568 ])
569
570 D3D11_TEX1D_SRV = Struct('D3D11_TEX1D_SRV', [
571     (UINT, 'MostDetailedMip'),
572     (UINT, 'MipLevels'),
573 ])
574
575 D3D11_TEX1D_ARRAY_SRV = Struct('D3D11_TEX1D_ARRAY_SRV', [
576     (UINT, 'MostDetailedMip'),
577     (UINT, 'MipLevels'),
578     (UINT, 'FirstArraySlice'),
579     (UINT, 'ArraySize'),
580 ])
581
582 D3D11_TEX2D_SRV = Struct('D3D11_TEX2D_SRV', [
583     (UINT, 'MostDetailedMip'),
584     (UINT, 'MipLevels'),
585 ])
586
587 D3D11_TEX2D_ARRAY_SRV = Struct('D3D11_TEX2D_ARRAY_SRV', [
588     (UINT, 'MostDetailedMip'),
589     (UINT, 'MipLevels'),
590     (UINT, 'FirstArraySlice'),
591     (UINT, 'ArraySize'),
592 ])
593
594 D3D11_TEX3D_SRV = Struct('D3D11_TEX3D_SRV', [
595     (UINT, 'MostDetailedMip'),
596     (UINT, 'MipLevels'),
597 ])
598
599 D3D11_TEXCUBE_SRV = Struct('D3D11_TEXCUBE_SRV', [
600     (UINT, 'MostDetailedMip'),
601     (UINT, 'MipLevels'),
602 ])
603
604 D3D11_TEXCUBE_ARRAY_SRV = Struct('D3D11_TEXCUBE_ARRAY_SRV', [
605     (UINT, 'MostDetailedMip'),
606     (UINT, 'MipLevels'),
607     (UINT, 'First2DArrayFace'),
608     (UINT, 'NumCubes'),
609 ])
610
611 D3D11_TEX2DMS_SRV = Struct('D3D11_TEX2DMS_SRV', [
612     (UINT, 'UnusedField_NothingToDefine'),
613 ])
614
615 D3D11_TEX2DMS_ARRAY_SRV = Struct('D3D11_TEX2DMS_ARRAY_SRV', [
616     (UINT, 'FirstArraySlice'),
617     (UINT, 'ArraySize'),
618 ])
619
620 D3D11_SHADER_RESOURCE_VIEW_DESC = Struct('D3D11_SHADER_RESOURCE_VIEW_DESC', [
621     (DXGI_FORMAT, 'Format'),
622     (D3D11_SRV_DIMENSION, 'ViewDimension'),
623     (Union(None, [
624         (D3D11_BUFFER_SRV, 'Buffer'),
625         (D3D11_TEX1D_SRV, 'Texture1D'),
626         (D3D11_TEX1D_ARRAY_SRV, 'Texture1DArray'),
627         (D3D11_TEX2D_SRV, 'Texture2D'), 
628         (D3D11_TEX2D_ARRAY_SRV, 'Texture2DArray'),
629         (D3D11_TEX2DMS_SRV, 'Texture2DMS'),
630         (D3D11_TEX2DMS_ARRAY_SRV, 'Texture2DMSArray'),
631         (D3D11_TEX3D_SRV, 'Texture3D'),
632         (D3D11_TEXCUBE_SRV, 'TextureCube'),
633         (D3D11_TEXCUBE_ARRAY_SRV, 'TextureCubeArray'),
634         (D3D11_BUFFEREX_SRV, 'BufferEx'),
635     ]), None),
636 ])
637
638 ID3D11ShaderResourceView.methods += [
639     StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_SHADER_RESOURCE_VIEW_DESC), 'pDesc')]),
640 ]
641
642 D3D11_BUFFER_RTV = Struct('D3D11_BUFFER_RTV', [
643     (Union(None, [(UINT, 'FirstElement'), (UINT, 'ElementOffset')]), None),
644     (Union(None, [(UINT, 'NumElements'), (UINT, 'ElementWidth')]), None),
645 ])
646
647 D3D11_TEX1D_RTV = Struct('D3D11_TEX1D_RTV', [
648     (UINT, 'MipSlice'),
649 ])
650
651 D3D11_TEX1D_ARRAY_RTV = Struct('D3D11_TEX1D_ARRAY_RTV', [
652     (UINT, 'MipSlice'),
653     (UINT, 'FirstArraySlice'),
654     (UINT, 'ArraySize'),
655 ])
656
657 D3D11_TEX2D_RTV = Struct('D3D11_TEX2D_RTV', [
658     (UINT, 'MipSlice'),
659 ])
660
661 D3D11_TEX2DMS_RTV = Struct('D3D11_TEX2DMS_RTV', [
662     (UINT, 'UnusedField_NothingToDefine'),
663 ])
664
665 D3D11_TEX2D_ARRAY_RTV = Struct('D3D11_TEX2D_ARRAY_RTV', [
666     (UINT, 'MipSlice'),
667     (UINT, 'FirstArraySlice'),
668     (UINT, 'ArraySize'),
669 ])
670
671 D3D11_TEX2DMS_ARRAY_RTV = Struct('D3D11_TEX2DMS_ARRAY_RTV', [
672     (UINT, 'FirstArraySlice'),
673     (UINT, 'ArraySize'),
674 ])
675
676 D3D11_TEX3D_RTV = Struct('D3D11_TEX3D_RTV', [
677     (UINT, 'MipSlice'),
678     (UINT, 'FirstWSlice'),
679     (UINT, 'WSize'),
680 ])
681
682 D3D11_RENDER_TARGET_VIEW_DESC = Struct('D3D11_RENDER_TARGET_VIEW_DESC', [
683     (DXGI_FORMAT, 'Format'),
684     (D3D11_RTV_DIMENSION, 'ViewDimension'),
685     (Union(None, [
686         (D3D11_BUFFER_RTV, 'Buffer'),
687         (D3D11_TEX1D_RTV, 'Texture1D'),
688         (D3D11_TEX1D_ARRAY_RTV, 'Texture1DArray'),
689         (D3D11_TEX2D_RTV, 'Texture2D'),
690         (D3D11_TEX2D_ARRAY_RTV, 'Texture2DArray'),
691         (D3D11_TEX2DMS_RTV, 'Texture2DMS'),
692         (D3D11_TEX2DMS_ARRAY_RTV, 'Texture2DMSArray'),
693         (D3D11_TEX3D_RTV, 'Texture3D'),
694     ]), None),
695 ])
696
697 ID3D11RenderTargetView.methods += [
698     StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_RENDER_TARGET_VIEW_DESC), 'pDesc')]),
699 ]
700
701 D3D11_TEX1D_DSV = Struct('D3D11_TEX1D_DSV', [
702     (UINT, 'MipSlice'),
703 ])
704
705 D3D11_TEX1D_ARRAY_DSV = Struct('D3D11_TEX1D_ARRAY_DSV', [
706     (UINT, 'MipSlice'),
707     (UINT, 'FirstArraySlice'),
708     (UINT, 'ArraySize'),
709 ])
710
711 D3D11_TEX2D_DSV = Struct('D3D11_TEX2D_DSV', [
712     (UINT, 'MipSlice'),
713 ])
714
715 D3D11_TEX2D_ARRAY_DSV = Struct('D3D11_TEX2D_ARRAY_DSV', [
716     (UINT, 'MipSlice'),
717     (UINT, 'FirstArraySlice'),
718     (UINT, 'ArraySize'),
719 ])
720
721 D3D11_TEX2DMS_DSV = Struct('D3D11_TEX2DMS_DSV', [
722     (UINT, 'UnusedField_NothingToDefine'),
723 ])
724
725 D3D11_TEX2DMS_ARRAY_DSV = Struct('D3D11_TEX2DMS_ARRAY_DSV', [
726     (UINT, 'FirstArraySlice'),
727     (UINT, 'ArraySize'),
728 ])
729
730 D3D11_DSV_FLAG = Flags(UINT, [
731     'D3D11_DSV_READ_ONLY_DEPTH',
732     'D3D11_DSV_READ_ONLY_STENCIL',
733 ])
734
735 D3D11_DEPTH_STENCIL_VIEW_DESC = Struct('D3D11_DEPTH_STENCIL_VIEW_DESC', [
736     (DXGI_FORMAT, 'Format'),
737     (D3D11_DSV_DIMENSION, 'ViewDimension'),
738     (D3D11_DSV_FLAG, 'Flags'),
739     (Union(None, [
740         (D3D11_TEX1D_DSV, 'Texture1D'),
741         (D3D11_TEX1D_ARRAY_DSV, 'Texture1DArray'),
742         (D3D11_TEX2D_DSV, 'Texture2D'),
743         (D3D11_TEX2D_ARRAY_DSV, 'Texture2DArray'),
744         (D3D11_TEX2DMS_DSV, 'Texture2DMS'),
745         (D3D11_TEX2DMS_ARRAY_DSV, 'Texture2DMSArray'),
746     ]), None),
747 ])
748
749 ID3D11DepthStencilView.methods += [
750     StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_DEPTH_STENCIL_VIEW_DESC), 'pDesc')]),
751 ]
752
753 D3D11_BUFFER_UAV_FLAG = Flags(UINT, [
754     'D3D11_BUFFER_UAV_FLAG_RAW',
755     'D3D11_BUFFER_UAV_FLAG_APPEND',
756     'D3D11_BUFFER_UAV_FLAG_COUNTER',
757 ])
758
759 D3D11_BUFFER_UAV = Struct('D3D11_BUFFER_UAV', [
760     (UINT, 'FirstElement'),
761     (UINT, 'NumElements'),
762     (D3D11_BUFFER_UAV_FLAG, 'Flags'),
763 ])
764
765 D3D11_TEX1D_UAV = Struct('D3D11_TEX1D_UAV', [
766     (UINT, 'MipSlice'),
767 ])
768
769 D3D11_TEX1D_ARRAY_UAV = Struct('D3D11_TEX1D_ARRAY_UAV', [
770     (UINT, 'MipSlice'),
771     (UINT, 'FirstArraySlice'),
772     (UINT, 'ArraySize'),
773 ])
774
775 D3D11_TEX2D_UAV = Struct('D3D11_TEX2D_UAV', [
776     (UINT, 'MipSlice'),
777 ])
778
779 D3D11_TEX2D_ARRAY_UAV = Struct('D3D11_TEX2D_ARRAY_UAV', [
780     (UINT, 'MipSlice'),
781     (UINT, 'FirstArraySlice'),
782     (UINT, 'ArraySize'),
783 ])
784
785 D3D11_TEX3D_UAV = Struct('D3D11_TEX3D_UAV', [
786     (UINT, 'MipSlice'),
787     (UINT, 'FirstWSlice'),
788     (UINT, 'WSize'),
789 ])
790
791 D3D11_UNORDERED_ACCESS_VIEW_DESC = Struct('D3D11_UNORDERED_ACCESS_VIEW_DESC', [
792     (DXGI_FORMAT, 'Format'),
793     (D3D11_UAV_DIMENSION, 'ViewDimension'),
794     (Union(None, [
795         (D3D11_BUFFER_UAV, 'Buffer'),
796         (D3D11_TEX1D_UAV, 'Texture1D'),
797         (D3D11_TEX1D_ARRAY_UAV, 'Texture1DArray'),
798         (D3D11_TEX2D_UAV, 'Texture2D'),
799         (D3D11_TEX2D_ARRAY_UAV, 'Texture2DArray'),
800         (D3D11_TEX3D_UAV, 'Texture3D'),
801     ]), None),
802 ])
803
804 ID3D11UnorderedAccessView.methods += [
805     StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_UNORDERED_ACCESS_VIEW_DESC), 'pDesc')]),
806 ]
807
808 D3D11_FILTER = Enum('D3D11_FILTER', [
809     'D3D11_FILTER_MIN_MAG_MIP_POINT',
810     'D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR',
811     'D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT',
812     'D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR',
813     'D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT',
814     'D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR',
815     'D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT',
816     'D3D11_FILTER_MIN_MAG_MIP_LINEAR',
817     'D3D11_FILTER_ANISOTROPIC',
818     'D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT',
819     'D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR',
820     'D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT',
821     'D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR',
822     'D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT',
823     'D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR',
824     'D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT',
825     'D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR',
826     'D3D11_FILTER_COMPARISON_ANISOTROPIC',
827 ])
828
829 D3D11_FILTER_TYPE = Enum('D3D11_FILTER_TYPE', [
830     'D3D11_FILTER_TYPE_POINT',
831     'D3D11_FILTER_TYPE_LINEAR',
832 ])
833
834 D3D11_TEXTURE_ADDRESS_MODE = Enum('D3D11_TEXTURE_ADDRESS_MODE', [
835     'D3D11_TEXTURE_ADDRESS_WRAP',
836     'D3D11_TEXTURE_ADDRESS_MIRROR',
837     'D3D11_TEXTURE_ADDRESS_CLAMP',
838     'D3D11_TEXTURE_ADDRESS_BORDER',
839     'D3D11_TEXTURE_ADDRESS_MIRROR_ONCE',
840 ])
841
842 D3D11_SAMPLER_DESC = Struct('D3D11_SAMPLER_DESC', [
843     (D3D11_FILTER, 'Filter'),
844     (D3D11_TEXTURE_ADDRESS_MODE, 'AddressU'),
845     (D3D11_TEXTURE_ADDRESS_MODE, 'AddressV'),
846     (D3D11_TEXTURE_ADDRESS_MODE, 'AddressW'),
847     (FLOAT, 'MipLODBias'),
848     (UINT, 'MaxAnisotropy'),
849     (D3D11_COMPARISON_FUNC, 'ComparisonFunc'),
850     (Array(FLOAT, 4), 'BorderColor'),
851     (FLOAT, 'MinLOD'),
852     (FLOAT, 'MaxLOD'),
853 ])
854
855 ID3D11SamplerState.methods += [
856     StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_SAMPLER_DESC), 'pDesc')]),
857 ]
858
859 D3D11_FORMAT_SUPPORT = Enum('D3D11_FORMAT_SUPPORT', [
860     'D3D11_FORMAT_SUPPORT_BUFFER',
861     'D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER',
862     'D3D11_FORMAT_SUPPORT_IA_INDEX_BUFFER',
863     'D3D11_FORMAT_SUPPORT_SO_BUFFER',
864     'D3D11_FORMAT_SUPPORT_TEXTURE1D',
865     'D3D11_FORMAT_SUPPORT_TEXTURE2D',
866     'D3D11_FORMAT_SUPPORT_TEXTURE3D',
867     'D3D11_FORMAT_SUPPORT_TEXTURECUBE',
868     'D3D11_FORMAT_SUPPORT_SHADER_LOAD',
869     'D3D11_FORMAT_SUPPORT_SHADER_SAMPLE',
870     'D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON',
871     'D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT',
872     'D3D11_FORMAT_SUPPORT_MIP',
873     'D3D11_FORMAT_SUPPORT_MIP_AUTOGEN',
874     'D3D11_FORMAT_SUPPORT_RENDER_TARGET',
875     'D3D11_FORMAT_SUPPORT_BLENDABLE',
876     'D3D11_FORMAT_SUPPORT_DEPTH_STENCIL',
877     'D3D11_FORMAT_SUPPORT_CPU_LOCKABLE',
878     'D3D11_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE',
879     'D3D11_FORMAT_SUPPORT_DISPLAY',
880     'D3D11_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT',
881     'D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET',
882     'D3D11_FORMAT_SUPPORT_MULTISAMPLE_LOAD',
883     'D3D11_FORMAT_SUPPORT_SHADER_GATHER',
884     'D3D11_FORMAT_SUPPORT_BACK_BUFFER_CAST',
885     'D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW',
886     'D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON',
887 ])
888
889 D3D11_FORMAT_SUPPORT2 = Enum('D3D11_FORMAT_SUPPORT2', [
890     'D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_ADD',
891     'D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS',
892     'D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE',
893     'D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE',
894     'D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX',
895     'D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX',
896     'D3D11_FORMAT_SUPPORT2_UAV_TYPED_LOAD',
897     'D3D11_FORMAT_SUPPORT2_UAV_TYPED_STORE',
898 ])
899
900 ID3D11Asynchronous.methods += [
901     StdMethod(UINT, 'GetDataSize', []),
902 ]
903
904 D3D11_ASYNC_GETDATA_FLAG = Flags(UINT, [
905     'D3D11_ASYNC_GETDATA_DONOTFLUSH',
906 ])
907
908 D3D11_QUERY = Enum('D3D11_QUERY', [
909     'D3D11_QUERY_EVENT',
910     'D3D11_QUERY_OCCLUSION',
911     'D3D11_QUERY_TIMESTAMP',
912     'D3D11_QUERY_TIMESTAMP_DISJOINT',
913     'D3D11_QUERY_PIPELINE_STATISTICS',
914     'D3D11_QUERY_OCCLUSION_PREDICATE',
915     'D3D11_QUERY_SO_STATISTICS',
916     'D3D11_QUERY_SO_OVERFLOW_PREDICATE',
917     'D3D11_QUERY_SO_STATISTICS_STREAM0',
918     'D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0',
919     'D3D11_QUERY_SO_STATISTICS_STREAM1',
920     'D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1',
921     'D3D11_QUERY_SO_STATISTICS_STREAM2',
922     'D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2',
923     'D3D11_QUERY_SO_STATISTICS_STREAM3',
924     'D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3',
925 ])
926
927 D3D11_QUERY_MISC_FLAG = Flags(UINT, [
928     'D3D11_QUERY_MISC_PREDICATEHINT',
929 ])
930
931 D3D11_QUERY_DESC = Struct('D3D11_QUERY_DESC', [
932     (D3D11_QUERY, 'Query'),
933     (D3D11_QUERY_MISC_FLAG, 'MiscFlags'),
934 ])
935
936 ID3D11Query.methods += [
937     StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_QUERY_DESC), 'pDesc')]),
938 ]
939
940 D3D11_QUERY_DATA_TIMESTAMP_DISJOINT = Struct('D3D11_QUERY_DATA_TIMESTAMP_DISJOINT', [
941     (UINT64, 'Frequency'),
942     (BOOL, 'Disjoint'),
943 ])
944
945 D3D11_QUERY_DATA_PIPELINE_STATISTICS = Struct('D3D11_QUERY_DATA_PIPELINE_STATISTICS', [
946     (UINT64, 'IAVertices'),
947     (UINT64, 'IAPrimitives'),
948     (UINT64, 'VSInvocations'),
949     (UINT64, 'GSInvocations'),
950     (UINT64, 'GSPrimitives'),
951     (UINT64, 'CInvocations'),
952     (UINT64, 'CPrimitives'),
953     (UINT64, 'PSInvocations'),
954     (UINT64, 'HSInvocations'),
955     (UINT64, 'DSInvocations'),
956     (UINT64, 'CSInvocations'),
957 ])
958
959 D3D11_QUERY_DATA_SO_STATISTICS = Struct('D3D11_QUERY_DATA_SO_STATISTICS', [
960     (UINT64, 'NumPrimitivesWritten'),
961     (UINT64, 'PrimitivesStorageNeeded'),
962 ])
963
964 D3D11_COUNTER = Enum('D3D11_COUNTER', [
965     'D3D11_COUNTER_DEVICE_DEPENDENT_0',
966 ])
967
968 D3D11_COUNTER_TYPE = Enum('D3D11_COUNTER_TYPE', [
969     'D3D11_COUNTER_TYPE_FLOAT32',
970     'D3D11_COUNTER_TYPE_UINT16',
971     'D3D11_COUNTER_TYPE_UINT32',
972     'D3D11_COUNTER_TYPE_UINT64',
973 ])
974
975 D3D11_COUNTER_DESC = Struct('D3D11_COUNTER_DESC', [
976     (D3D11_COUNTER, 'Counter'),
977     (UINT, 'MiscFlags'),
978 ])
979
980 D3D11_COUNTER_INFO = Struct('D3D11_COUNTER_INFO', [
981     (D3D11_COUNTER, 'LastDeviceDependentCounter'),
982     (UINT, 'NumSimultaneousCounters'),
983     (UINT8, 'NumDetectableParallelUnits'),
984 ])
985
986 ID3D11Counter.methods += [
987     StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_COUNTER_DESC), 'pDesc')]),
988 ]
989
990 D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS = Enum('D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS', [
991     'D3D11_STANDARD_MULTISAMPLE_PATTERN',
992     'D3D11_CENTER_MULTISAMPLE_PATTERN',
993 ])
994
995 D3D11_DEVICE_CONTEXT_TYPE = Enum('D3D11_DEVICE_CONTEXT_TYPE', [
996     'D3D11_DEVICE_CONTEXT_IMMEDIATE',
997     'D3D11_DEVICE_CONTEXT_DEFERRED',
998 ])
999
1000 D3D11_CLASS_INSTANCE_DESC = Struct('D3D11_CLASS_INSTANCE_DESC', [
1001     (UINT, 'InstanceId'),
1002     (UINT, 'InstanceIndex'),
1003     (UINT, 'TypeId'),
1004     (UINT, 'ConstantBuffer'),
1005     (UINT, 'BaseConstantBufferOffset'),
1006     (UINT, 'BaseTexture'),
1007     (UINT, 'BaseSampler'),
1008     (BOOL, 'Created'),
1009 ])
1010
1011
1012 ID3D11ClassInstance.methods += [
1013     StdMethod(Void, 'GetClassLinkage', [Out(Pointer(Pointer(ID3D11ClassLinkage)), 'ppLinkage')]),
1014     StdMethod(Void, 'GetDesc', [Out(Pointer(D3D11_CLASS_INSTANCE_DESC), 'pDesc')]),
1015     StdMethod(Void, 'GetInstanceName', [Out(LPSTR, 'pInstanceName'), Out(Pointer(SIZE_T), 'pBufferLength')]),
1016     StdMethod(Void, 'GetTypeName', [Out(LPSTR, 'pTypeName'), Out(Pointer(SIZE_T), 'pBufferLength')]),
1017 ]
1018
1019 ID3D11ClassLinkage.methods += [
1020     StdMethod(HRESULT, 'GetClassInstance', [(LPCSTR, 'pClassInstanceName'), (UINT, 'InstanceIndex'), Out(Pointer(Pointer(ID3D11ClassInstance)), 'ppInstance')]),
1021     StdMethod(HRESULT, 'CreateClassInstance', [(LPCSTR, 'pClassTypeName'), (UINT, 'ConstantBufferOffset'), (UINT, 'ConstantVectorOffset'), (UINT, 'TextureOffset'), (UINT, 'SamplerOffset'), Out(Pointer(Pointer(ID3D11ClassInstance)), 'ppInstance')]),
1022 ]
1023
1024 ID3D11CommandList.methods += [
1025     StdMethod(UINT, 'GetContextFlags', []),
1026 ]
1027
1028 D3D11_FEATURE = Enum('D3D11_FEATURE', [
1029     'D3D11_FEATURE_THREADING',
1030     'D3D11_FEATURE_DOUBLES',
1031     'D3D11_FEATURE_FORMAT_SUPPORT',
1032     'D3D11_FEATURE_FORMAT_SUPPORT2',
1033     'D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS',
1034 ])
1035
1036 D3D11_FEATURE_DATA_THREADING = Struct('D3D11_FEATURE_DATA_THREADING', [
1037     (BOOL, 'DriverConcurrentCreates'),
1038     (BOOL, 'DriverCommandLists'),
1039 ])
1040
1041 D3D11_FEATURE_DATA_DOUBLES = Struct('D3D11_FEATURE_DATA_DOUBLES', [
1042     (BOOL, 'DoublePrecisionFloatShaderOps'),
1043 ])
1044
1045 D3D11_FEATURE_DATA_FORMAT_SUPPORT = Struct('D3D11_FEATURE_DATA_FORMAT_SUPPORT', [
1046     (DXGI_FORMAT, 'InFormat'),
1047     (UINT, 'OutFormatSupport'),
1048 ])
1049
1050 D3D11_FEATURE_DATA_FORMAT_SUPPORT2 = Struct('D3D11_FEATURE_DATA_FORMAT_SUPPORT2', [
1051     (DXGI_FORMAT, 'InFormat'),
1052     (UINT, 'OutFormatSupport2'),
1053 ])
1054
1055 D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS = Struct('D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS', [
1056     (BOOL, 'ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x'),
1057 ])
1058
1059 ID3D11DeviceContext.methods += [
1060     StdMethod(Void, 'VSSetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), (Pointer(Const(Pointer(ID3D11Buffer))), 'ppConstantBuffers')]),
1061     StdMethod(Void, 'PSSetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), (Pointer(Const(Pointer(ID3D11ShaderResourceView))), 'ppShaderResourceViews')]),
1062     StdMethod(Void, 'PSSetShader', [(Pointer(ID3D11PixelShader), 'pPixelShader'), (Pointer(Const(Pointer(ID3D11ClassInstance))), 'ppClassInstances'), (UINT, 'NumClassInstances')]),
1063     StdMethod(Void, 'PSSetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), (Pointer(Const(Pointer(ID3D11SamplerState))), 'ppSamplers')]),
1064     StdMethod(Void, 'VSSetShader', [(Pointer(ID3D11VertexShader), 'pVertexShader'), (Pointer(Const(Pointer(ID3D11ClassInstance))), 'ppClassInstances'), (UINT, 'NumClassInstances')]),
1065     StdMethod(Void, 'DrawIndexed', [(UINT, 'IndexCount'), (UINT, 'StartIndexLocation'), (INT, 'BaseVertexLocation')]),
1066     StdMethod(Void, 'Draw', [(UINT, 'VertexCount'), (UINT, 'StartVertexLocation')]),
1067     StdMethod(HRESULT, 'Map', [(Pointer(ID3D11Resource), 'pResource'), (UINT, 'Subresource'), (D3D11_MAP, 'MapType'), (D3D11_MAP_FLAG, 'MapFlags'), Out(Pointer(D3D11_MAPPED_SUBRESOURCE), 'pMappedResource')]),
1068     StdMethod(Void, 'Unmap', [(Pointer(ID3D11Resource), 'pResource'), (UINT, 'Subresource')]),
1069     StdMethod(Void, 'PSSetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), (Pointer(Const(Pointer(ID3D11Buffer))), 'ppConstantBuffers')]),
1070     StdMethod(Void, 'IASetInputLayout', [(Pointer(ID3D11InputLayout), 'pInputLayout')]),
1071     StdMethod(Void, 'IASetVertexBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), (Pointer(Const(Pointer(ID3D11Buffer))), 'ppVertexBuffers'), (Pointer(Const(UINT)), 'pStrides'), (Pointer(Const(UINT)), 'pOffsets')]),
1072     StdMethod(Void, 'IASetIndexBuffer', [(Pointer(ID3D11Buffer), 'pIndexBuffer'), (DXGI_FORMAT, 'Format'), (UINT, 'Offset')]),
1073     StdMethod(Void, 'DrawIndexedInstanced', [(UINT, 'IndexCountPerInstance'), (UINT, 'InstanceCount'), (UINT, 'StartIndexLocation'), (INT, 'BaseVertexLocation'), (UINT, 'StartInstanceLocation')]),
1074     StdMethod(Void, 'DrawInstanced', [(UINT, 'VertexCountPerInstance'), (UINT, 'InstanceCount'), (UINT, 'StartVertexLocation'), (UINT, 'StartInstanceLocation')]),
1075     StdMethod(Void, 'GSSetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), (Pointer(Const(Pointer(ID3D11Buffer))), 'ppConstantBuffers')]),
1076     StdMethod(Void, 'GSSetShader', [(Pointer(ID3D11GeometryShader), 'pShader'), (Pointer(Const(Pointer(ID3D11ClassInstance))), 'ppClassInstances'), (UINT, 'NumClassInstances')]),
1077     StdMethod(Void, 'IASetPrimitiveTopology', [(D3D11_PRIMITIVE_TOPOLOGY, 'Topology')]),
1078     StdMethod(Void, 'VSSetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), (Pointer(Const(Pointer(ID3D11ShaderResourceView))), 'ppShaderResourceViews')]),
1079     StdMethod(Void, 'VSSetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), (Pointer(Const(Pointer(ID3D11SamplerState))), 'ppSamplers')]),
1080     StdMethod(Void, 'Begin', [(Pointer(ID3D11Asynchronous), 'pAsync')]),
1081     StdMethod(Void, 'End', [(Pointer(ID3D11Asynchronous), 'pAsync')]),
1082     StdMethod(HRESULT, 'GetData', [(Pointer(ID3D11Asynchronous), 'pAsync'), Out(OpaqueBlob(Void, 'DataSize'), 'pData'), (UINT, 'DataSize'), (D3D11_ASYNC_GETDATA_FLAG, 'GetDataFlags')]),
1083     StdMethod(Void, 'SetPredication', [(Pointer(ID3D11Predicate), 'pPredicate'), (BOOL, 'PredicateValue')]),
1084     StdMethod(Void, 'GSSetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), (Pointer(Const(Pointer(ID3D11ShaderResourceView))), 'ppShaderResourceViews')]),
1085     StdMethod(Void, 'GSSetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), (Pointer(Const(Pointer(ID3D11SamplerState))), 'ppSamplers')]),
1086     StdMethod(Void, 'OMSetRenderTargets', [(UINT, 'NumViews'), (Pointer(Const(Pointer(ID3D11RenderTargetView))), 'ppRenderTargetViews'), (Pointer(ID3D11DepthStencilView), 'pDepthStencilView')]),
1087     StdMethod(Void, 'OMSetRenderTargetsAndUnorderedAccessViews', [(UINT, 'NumRTVs'), (Pointer(Const(Pointer(ID3D11RenderTargetView))), 'ppRenderTargetViews'), (Pointer(ID3D11DepthStencilView), 'pDepthStencilView'), (UINT, 'UAVStartSlot'), (UINT, 'NumUAVs'), (Pointer(Const(Pointer(ID3D11UnorderedAccessView))), 'ppUnorderedAccessViews'), (Pointer(Const(UINT)), 'pUAVInitialCounts')]),
1088     StdMethod(Void, 'OMSetBlendState', [(Pointer(ID3D11BlendState), 'pBlendState'), (Array(Const(FLOAT), 4), 'BlendFactor'), (UINT, 'SampleMask')]),
1089     StdMethod(Void, 'OMSetDepthStencilState', [(Pointer(ID3D11DepthStencilState), 'pDepthStencilState'), (UINT, 'StencilRef')]),
1090     StdMethod(Void, 'SOSetTargets', [(UINT, 'NumBuffers'), (Pointer(Const(Pointer(ID3D11Buffer))), 'ppSOTargets'), (Pointer(Const(UINT)), 'pOffsets')]),
1091     StdMethod(Void, 'DrawAuto', []),
1092     StdMethod(Void, 'DrawIndexedInstancedIndirect', [(Pointer(ID3D11Buffer), 'pBufferForArgs'), (UINT, 'AlignedByteOffsetForArgs')]),
1093     StdMethod(Void, 'DrawInstancedIndirect', [(Pointer(ID3D11Buffer), 'pBufferForArgs'), (UINT, 'AlignedByteOffsetForArgs')]),
1094     StdMethod(Void, 'Dispatch', [(UINT, 'ThreadGroupCountX'), (UINT, 'ThreadGroupCountY'), (UINT, 'ThreadGroupCountZ')]),
1095     StdMethod(Void, 'DispatchIndirect', [(Pointer(ID3D11Buffer), 'pBufferForArgs'), (UINT, 'AlignedByteOffsetForArgs')]),
1096     StdMethod(Void, 'RSSetState', [(Pointer(ID3D11RasterizerState), 'pRasterizerState')]),
1097     StdMethod(Void, 'RSSetViewports', [(UINT, 'NumViewports'), (Pointer(Const(D3D11_VIEWPORT)), 'pViewports')]),
1098     StdMethod(Void, 'RSSetScissorRects', [(UINT, 'NumRects'), (Pointer(Const(D3D11_RECT)), 'pRects')]),
1099     StdMethod(Void, 'CopySubresourceRegion', [(Pointer(ID3D11Resource), 'pDstResource'), (UINT, 'DstSubresource'), (UINT, 'DstX'), (UINT, 'DstY'), (UINT, 'DstZ'), (Pointer(ID3D11Resource), 'pSrcResource'), (UINT, 'SrcSubresource'), (Pointer(Const(D3D11_BOX)), 'pSrcBox')]),
1100     StdMethod(Void, 'CopyResource', [(Pointer(ID3D11Resource), 'pDstResource'), (Pointer(ID3D11Resource), 'pSrcResource')]),
1101     StdMethod(Void, 'UpdateSubresource', [(Pointer(ID3D11Resource), 'pDstResource'), (UINT, 'DstSubresource'), (Pointer(Const(D3D11_BOX)), 'pDstBox'), (OpaquePointer(Const(Void)), 'pSrcData'), (UINT, 'SrcRowPitch'), (UINT, 'SrcDepthPitch')]),
1102     StdMethod(Void, 'CopyStructureCount', [(Pointer(ID3D11Buffer), 'pDstBuffer'), (UINT, 'DstAlignedByteOffset'), (Pointer(ID3D11UnorderedAccessView), 'pSrcView')]),
1103     StdMethod(Void, 'ClearRenderTargetView', [(Pointer(ID3D11RenderTargetView), 'pRenderTargetView'), (Array(Const(FLOAT), 4), 'ColorRGBA')]),
1104     StdMethod(Void, 'ClearUnorderedAccessViewUint', [(Pointer(ID3D11UnorderedAccessView), 'pUnorderedAccessView'), (Array(Const(UINT), 4), 'Values')]),
1105     StdMethod(Void, 'ClearUnorderedAccessViewFloat', [(Pointer(ID3D11UnorderedAccessView), 'pUnorderedAccessView'), (Array(Const(FLOAT), 4), 'Values')]),
1106     StdMethod(Void, 'ClearDepthStencilView', [(Pointer(ID3D11DepthStencilView), 'pDepthStencilView'), (D3D11_CLEAR_FLAG, 'ClearFlags'), (FLOAT, 'Depth'), (UINT8, 'Stencil')]),
1107     StdMethod(Void, 'GenerateMips', [(Pointer(ID3D11ShaderResourceView), 'pShaderResourceView')]),
1108     StdMethod(Void, 'SetResourceMinLOD', [(Pointer(ID3D11Resource), 'pResource'), (FLOAT, 'MinLOD')]),
1109     StdMethod(FLOAT, 'GetResourceMinLOD', [(Pointer(ID3D11Resource), 'pResource')]),
1110     StdMethod(Void, 'ResolveSubresource', [(Pointer(ID3D11Resource), 'pDstResource'), (UINT, 'DstSubresource'), (Pointer(ID3D11Resource), 'pSrcResource'), (UINT, 'SrcSubresource'), (DXGI_FORMAT, 'Format')]),
1111     StdMethod(Void, 'ExecuteCommandList', [(Pointer(ID3D11CommandList), 'pCommandList'), (BOOL, 'RestoreContextState')]),
1112     StdMethod(Void, 'HSSetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), (Pointer(Const(Pointer(ID3D11ShaderResourceView))), 'ppShaderResourceViews')]),
1113     StdMethod(Void, 'HSSetShader', [(Pointer(ID3D11HullShader), 'pHullShader'), (Pointer(Const(Pointer(ID3D11ClassInstance))), 'ppClassInstances'), (UINT, 'NumClassInstances')]),
1114     StdMethod(Void, 'HSSetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), (Pointer(Const(Pointer(ID3D11SamplerState))), 'ppSamplers')]),
1115     StdMethod(Void, 'HSSetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), (Pointer(Const(Pointer(ID3D11Buffer))), 'ppConstantBuffers')]),
1116     StdMethod(Void, 'DSSetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), (Pointer(Const(Pointer(ID3D11ShaderResourceView))), 'ppShaderResourceViews')]),
1117     StdMethod(Void, 'DSSetShader', [(Pointer(ID3D11DomainShader), 'pDomainShader'), (Pointer(Const(Pointer(ID3D11ClassInstance))), 'ppClassInstances'), (UINT, 'NumClassInstances')]),
1118     StdMethod(Void, 'DSSetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), (Pointer(Const(Pointer(ID3D11SamplerState))), 'ppSamplers')]),
1119     StdMethod(Void, 'DSSetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), (Pointer(Const(Pointer(ID3D11Buffer))), 'ppConstantBuffers')]),
1120     StdMethod(Void, 'CSSetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), (Pointer(Const(Pointer(ID3D11ShaderResourceView))), 'ppShaderResourceViews')]),
1121     StdMethod(Void, 'CSSetUnorderedAccessViews', [(UINT, 'StartSlot'), (UINT, 'NumUAVs'), (Pointer(Const(Pointer(ID3D11UnorderedAccessView))), 'ppUnorderedAccessViews'), (Pointer(Const(UINT)), 'pUAVInitialCounts')]),
1122     StdMethod(Void, 'CSSetShader', [(Pointer(ID3D11ComputeShader), 'pComputeShader'), (Pointer(Const(Pointer(ID3D11ClassInstance))), 'ppClassInstances'), (UINT, 'NumClassInstances')]),
1123     StdMethod(Void, 'CSSetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), (Pointer(Const(Pointer(ID3D11SamplerState))), 'ppSamplers')]),
1124     StdMethod(Void, 'CSSetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), (Pointer(Const(Pointer(ID3D11Buffer))), 'ppConstantBuffers')]),
1125     StdMethod(Void, 'VSGetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), Out(Pointer(Pointer(ID3D11Buffer)), 'ppConstantBuffers')]),
1126     StdMethod(Void, 'PSGetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), Out(Pointer(Pointer(ID3D11ShaderResourceView)), 'ppShaderResourceViews')]),
1127     StdMethod(Void, 'PSGetShader', [Out(Pointer(Pointer(ID3D11PixelShader)), 'ppPixelShader'), Out(Pointer(Pointer(ID3D11ClassInstance)), 'ppClassInstances'), Out(Pointer(UINT), 'pNumClassInstances')]),
1128     StdMethod(Void, 'PSGetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), Out(Pointer(Pointer(ID3D11SamplerState)), 'ppSamplers')]),
1129     StdMethod(Void, 'VSGetShader', [Out(Pointer(Pointer(ID3D11VertexShader)), 'ppVertexShader'), Out(Pointer(Pointer(ID3D11ClassInstance)), 'ppClassInstances'), Out(Pointer(UINT), 'pNumClassInstances')]),
1130     StdMethod(Void, 'PSGetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), Out(Pointer(Pointer(ID3D11Buffer)), 'ppConstantBuffers')]),
1131     StdMethod(Void, 'IAGetInputLayout', [Out(Pointer(Pointer(ID3D11InputLayout)), 'ppInputLayout')]),
1132     StdMethod(Void, 'IAGetVertexBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), Out(Pointer(Pointer(ID3D11Buffer)), 'ppVertexBuffers'), Out(Pointer(UINT), 'pStrides'), Out(Pointer(UINT), 'pOffsets')]),
1133     StdMethod(Void, 'IAGetIndexBuffer', [Out(Pointer(Pointer(ID3D11Buffer)), 'pIndexBuffer'), Out(Pointer(DXGI_FORMAT), 'Format'), Out(Pointer(UINT), 'Offset')]),
1134     StdMethod(Void, 'GSGetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), Out(Pointer(Pointer(ID3D11Buffer)), 'ppConstantBuffers')]),
1135     StdMethod(Void, 'GSGetShader', [Out(Pointer(Pointer(ID3D11GeometryShader)), 'ppGeometryShader'), Out(Pointer(Pointer(ID3D11ClassInstance)), 'ppClassInstances'), Out(Pointer(UINT), 'pNumClassInstances')]),
1136     StdMethod(Void, 'IAGetPrimitiveTopology', [Out(Pointer(D3D11_PRIMITIVE_TOPOLOGY), 'pTopology')]),
1137     StdMethod(Void, 'VSGetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), Out(Pointer(Pointer(ID3D11ShaderResourceView)), 'ppShaderResourceViews')]),
1138     StdMethod(Void, 'VSGetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), Out(Pointer(Pointer(ID3D11SamplerState)), 'ppSamplers')]),
1139     StdMethod(Void, 'GetPredication', [Out(Pointer(Pointer(ID3D11Predicate)), 'ppPredicate'), Out(Pointer(BOOL), 'pPredicateValue')]),
1140     StdMethod(Void, 'GSGetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), Out(Pointer(Pointer(ID3D11ShaderResourceView)), 'ppShaderResourceViews')]),
1141     StdMethod(Void, 'GSGetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), Out(Pointer(Pointer(ID3D11SamplerState)), 'ppSamplers')]),
1142     StdMethod(Void, 'OMGetRenderTargets', [(UINT, 'NumViews'), Out(Pointer(Pointer(ID3D11RenderTargetView)), 'ppRenderTargetViews'), Out(Pointer(Pointer(ID3D11DepthStencilView)), 'ppDepthStencilView')]),
1143     StdMethod(Void, 'OMGetRenderTargetsAndUnorderedAccessViews', [(UINT, 'NumRTVs'), Out(Pointer(Pointer(ID3D11RenderTargetView)), 'ppRenderTargetViews'), Out(Pointer(Pointer(ID3D11DepthStencilView)), 'ppDepthStencilView'), (UINT, 'UAVStartSlot'), (UINT, 'NumUAVs'), Out(Pointer(Pointer(ID3D11UnorderedAccessView)), 'ppUnorderedAccessViews')]),
1144     StdMethod(Void, 'OMGetBlendState', [Out(Pointer(Pointer(ID3D11BlendState)), 'ppBlendState'), Out(Array(FLOAT, 4), 'BlendFactor'), Out(Pointer(UINT), 'pSampleMask')]),
1145     StdMethod(Void, 'OMGetDepthStencilState', [Out(Pointer(Pointer(ID3D11DepthStencilState)), 'ppDepthStencilState'), Out(Pointer(UINT), 'pStencilRef')]),
1146     StdMethod(Void, 'SOGetTargets', [(UINT, 'NumBuffers'), Out(Pointer(Pointer(ID3D11Buffer)), 'ppSOTargets')]),
1147     StdMethod(Void, 'RSGetState', [Out(Pointer(Pointer(ID3D11RasterizerState)), 'ppRasterizerState')]),
1148     StdMethod(Void, 'RSGetViewports', [Out(Pointer(UINT), 'pNumViewports'), Out(Pointer(D3D11_VIEWPORT), 'pViewports')]),
1149     StdMethod(Void, 'RSGetScissorRects', [Out(Pointer(UINT), 'pNumRects'), Out(Pointer(D3D11_RECT), 'pRects')]),
1150     StdMethod(Void, 'HSGetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), Out(Pointer(Pointer(ID3D11ShaderResourceView)), 'ppShaderResourceViews')]),
1151     StdMethod(Void, 'HSGetShader', [Out(Pointer(Pointer(ID3D11HullShader)), 'ppHullShader'), Out(Pointer(Pointer(ID3D11ClassInstance)), 'ppClassInstances'), Out(Pointer(UINT), 'pNumClassInstances')]),
1152     StdMethod(Void, 'HSGetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), Out(Pointer(Pointer(ID3D11SamplerState)), 'ppSamplers')]),
1153     StdMethod(Void, 'HSGetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), Out(Pointer(Pointer(ID3D11Buffer)), 'ppConstantBuffers')]),
1154     StdMethod(Void, 'DSGetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), Out(Pointer(Pointer(ID3D11ShaderResourceView)), 'ppShaderResourceViews')]),
1155     StdMethod(Void, 'DSGetShader', [Out(Pointer(Pointer(ID3D11DomainShader)), 'ppDomainShader'), Out(Pointer(Pointer(ID3D11ClassInstance)), 'ppClassInstances'), Out(Pointer(UINT), 'pNumClassInstances')]),
1156     StdMethod(Void, 'DSGetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), Out(Pointer(Pointer(ID3D11SamplerState)), 'ppSamplers')]),
1157     StdMethod(Void, 'DSGetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), Out(Pointer(Pointer(ID3D11Buffer)), 'ppConstantBuffers')]),
1158     StdMethod(Void, 'CSGetShaderResources', [(UINT, 'StartSlot'), (UINT, 'NumViews'), Out(Pointer(Pointer(ID3D11ShaderResourceView)), 'ppShaderResourceViews')]),
1159     StdMethod(Void, 'CSGetUnorderedAccessViews', [(UINT, 'StartSlot'), (UINT, 'NumUAVs'), Out(Pointer(Pointer(ID3D11UnorderedAccessView)), 'ppUnorderedAccessViews')]),
1160     StdMethod(Void, 'CSGetShader', [Out(Pointer(Pointer(ID3D11ComputeShader)), 'ppComputeShader'), Out(Pointer(Pointer(ID3D11ClassInstance)), 'ppClassInstances'), Out(Pointer(UINT), 'pNumClassInstances')]),
1161     StdMethod(Void, 'CSGetSamplers', [(UINT, 'StartSlot'), (UINT, 'NumSamplers'), Out(Pointer(Pointer(ID3D11SamplerState)), 'ppSamplers')]),
1162     StdMethod(Void, 'CSGetConstantBuffers', [(UINT, 'StartSlot'), (UINT, 'NumBuffers'), Out(Pointer(Pointer(ID3D11Buffer)), 'ppConstantBuffers')]),
1163     StdMethod(Void, 'ClearState', []),
1164     StdMethod(Void, 'Flush', []),
1165     StdMethod(D3D11_DEVICE_CONTEXT_TYPE, 'GetType', []),
1166     StdMethod(UINT, 'GetContextFlags', []),
1167     StdMethod(HRESULT, 'FinishCommandList', [(BOOL, 'RestoreDeferredContextState'), Out(Pointer(Pointer(ID3D11CommandList)), 'ppCommandList')]),
1168 ]
1169
1170 D3D11_CREATE_DEVICE_FLAG = Flags(UINT, [
1171     'D3D11_CREATE_DEVICE_SINGLETHREADED',
1172     'D3D11_CREATE_DEVICE_DEBUG',
1173     'D3D11_CREATE_DEVICE_SWITCH_TO_REF',
1174     'D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS',
1175     'D3D11_CREATE_DEVICE_BGRA_SUPPORT',
1176 ])
1177
1178 ID3D11Device.methods += [
1179     StdMethod(HRESULT, 'CreateBuffer', [(Pointer(Const(D3D11_BUFFER_DESC)), 'pDesc'), (Pointer(Const(D3D11_SUBRESOURCE_DATA)), 'pInitialData'), Out(Pointer(Pointer(ID3D11Buffer)), 'ppBuffer')]),
1180     StdMethod(HRESULT, 'CreateTexture1D', [(Pointer(Const(D3D11_TEXTURE1D_DESC)), 'pDesc'), (Pointer(Const(D3D11_SUBRESOURCE_DATA)), 'pInitialData'), Out(Pointer(Pointer(ID3D11Texture1D)), 'ppTexture1D')]),
1181     StdMethod(HRESULT, 'CreateTexture2D', [(Pointer(Const(D3D11_TEXTURE2D_DESC)), 'pDesc'), (Pointer(Const(D3D11_SUBRESOURCE_DATA)), 'pInitialData'), Out(Pointer(Pointer(ID3D11Texture2D)), 'ppTexture2D')]),
1182     StdMethod(HRESULT, 'CreateTexture3D', [(Pointer(Const(D3D11_TEXTURE3D_DESC)), 'pDesc'), (Pointer(Const(D3D11_SUBRESOURCE_DATA)), 'pInitialData'), Out(Pointer(Pointer(ID3D11Texture3D)), 'ppTexture3D')]),
1183     StdMethod(HRESULT, 'CreateShaderResourceView', [(Pointer(ID3D11Resource), 'pResource'), (Pointer(Const(D3D11_SHADER_RESOURCE_VIEW_DESC)), 'pDesc'), Out(Pointer(Pointer(ID3D11ShaderResourceView)), 'ppSRView')]),
1184     StdMethod(HRESULT, 'CreateUnorderedAccessView', [(Pointer(ID3D11Resource), 'pResource'), (Pointer(Const(D3D11_UNORDERED_ACCESS_VIEW_DESC)), 'pDesc'), Out(Pointer(Pointer(ID3D11UnorderedAccessView)), 'ppUAView')]),
1185     StdMethod(HRESULT, 'CreateRenderTargetView', [(Pointer(ID3D11Resource), 'pResource'), (Pointer(Const(D3D11_RENDER_TARGET_VIEW_DESC)), 'pDesc'), Out(Pointer(Pointer(ID3D11RenderTargetView)), 'ppRTView')]),
1186     StdMethod(HRESULT, 'CreateDepthStencilView', [(Pointer(ID3D11Resource), 'pResource'), (Pointer(Const(D3D11_DEPTH_STENCIL_VIEW_DESC)), 'pDesc'), Out(Pointer(Pointer(ID3D11DepthStencilView)), 'ppDepthStencilView')]),
1187     StdMethod(HRESULT, 'CreateInputLayout', [(Pointer(Const(D3D11_INPUT_ELEMENT_DESC)), 'pInputElementDescs'), (UINT, 'NumElements'), (Blob(Const(Void), 'BytecodeLength'), 'pShaderBytecodeWithInputSignature'), (SIZE_T, 'BytecodeLength'), Out(Pointer(Pointer(ID3D11InputLayout)), 'ppInputLayout')]),
1188     StdMethod(HRESULT, 'CreateVertexShader', [(Blob(Const(Void), 'BytecodeLength'), 'pShaderBytecode'), (SIZE_T, 'BytecodeLength'), (Pointer(ID3D11ClassLinkage), 'pClassLinkage'), Out(Pointer(Pointer(ID3D11VertexShader)), 'ppVertexShader')]),
1189     StdMethod(HRESULT, 'CreateGeometryShader', [(Blob(Const(Void), 'BytecodeLength'), 'pShaderBytecode'), (SIZE_T, 'BytecodeLength'), (Pointer(ID3D11ClassLinkage), 'pClassLinkage'), Out(Pointer(Pointer(ID3D11GeometryShader)), 'ppGeometryShader')]),
1190     StdMethod(HRESULT, 'CreateGeometryShaderWithStreamOutput', [(Blob(Const(Void), 'BytecodeLength'), 'pShaderBytecode'), (SIZE_T, 'BytecodeLength'), (Pointer(Const(D3D11_SO_DECLARATION_ENTRY)), 'pSODeclaration'), (UINT, 'NumEntries'), (Pointer(Const(UINT)), 'pBufferStrides'), (UINT, 'NumStrides'), (UINT, 'RasterizedStream'), (Pointer(ID3D11ClassLinkage), 'pClassLinkage'), Out(Pointer(Pointer(ID3D11GeometryShader)), 'ppGeometryShader')]),
1191     StdMethod(HRESULT, 'CreatePixelShader', [(Blob(Const(Void), 'BytecodeLength'), 'pShaderBytecode'), (SIZE_T, 'BytecodeLength'), (Pointer(ID3D11ClassLinkage), 'pClassLinkage'), Out(Pointer(Pointer(ID3D11PixelShader)), 'ppPixelShader')]),
1192     StdMethod(HRESULT, 'CreateHullShader', [(Blob(Const(Void), 'BytecodeLength'), 'pShaderBytecode'), (SIZE_T, 'BytecodeLength'), (Pointer(ID3D11ClassLinkage), 'pClassLinkage'), Out(Pointer(Pointer(ID3D11HullShader)), 'ppHullShader')]),
1193     StdMethod(HRESULT, 'CreateDomainShader', [(Blob(Const(Void), 'BytecodeLength'), 'pShaderBytecode'), (SIZE_T, 'BytecodeLength'), (Pointer(ID3D11ClassLinkage), 'pClassLinkage'), Out(Pointer(Pointer(ID3D11DomainShader)), 'ppDomainShader')]),
1194     StdMethod(HRESULT, 'CreateComputeShader', [(Blob(Const(Void), 'BytecodeLength'), 'pShaderBytecode'), (SIZE_T, 'BytecodeLength'), (Pointer(ID3D11ClassLinkage), 'pClassLinkage'), Out(Pointer(Pointer(ID3D11ComputeShader)), 'ppComputeShader')]),
1195     StdMethod(HRESULT, 'CreateClassLinkage', [Out(Pointer(Pointer(ID3D11ClassLinkage)), 'ppLinkage')]),
1196     StdMethod(HRESULT, 'CreateBlendState', [(Pointer(Const(D3D11_BLEND_DESC)), 'pBlendStateDesc'), Out(Pointer(Pointer(ID3D11BlendState)), 'ppBlendState')]),
1197     StdMethod(HRESULT, 'CreateDepthStencilState', [(Pointer(Const(D3D11_DEPTH_STENCIL_DESC)), 'pDepthStencilDesc'), Out(Pointer(Pointer(ID3D11DepthStencilState)), 'ppDepthStencilState')]),
1198     StdMethod(HRESULT, 'CreateRasterizerState', [(Pointer(Const(D3D11_RASTERIZER_DESC)), 'pRasterizerDesc'), Out(Pointer(Pointer(ID3D11RasterizerState)), 'ppRasterizerState')]),
1199     StdMethod(HRESULT, 'CreateSamplerState', [(Pointer(Const(D3D11_SAMPLER_DESC)), 'pSamplerDesc'), Out(Pointer(Pointer(ID3D11SamplerState)), 'ppSamplerState')]),
1200     StdMethod(HRESULT, 'CreateQuery', [(Pointer(Const(D3D11_QUERY_DESC)), 'pQueryDesc'), Out(Pointer(Pointer(ID3D11Query)), 'ppQuery')]),
1201     StdMethod(HRESULT, 'CreatePredicate', [(Pointer(Const(D3D11_QUERY_DESC)), 'pPredicateDesc'), Out(Pointer(Pointer(ID3D11Predicate)), 'ppPredicate')]),
1202     StdMethod(HRESULT, 'CreateCounter', [(Pointer(Const(D3D11_COUNTER_DESC)), 'pCounterDesc'), Out(Pointer(Pointer(ID3D11Counter)), 'ppCounter')]),
1203     StdMethod(HRESULT, 'CreateDeferredContext', [(UINT, 'ContextFlags'), Out(Pointer(Pointer(ID3D11DeviceContext)), 'ppDeferredContext')]),
1204     StdMethod(HRESULT, 'OpenSharedResource', [(HANDLE, 'hResource'), (REFIID, 'ReturnedInterface'), Out(Pointer(OpaquePointer(Void)), 'ppResource')]),
1205     StdMethod(HRESULT, 'CheckFormatSupport', [(DXGI_FORMAT, 'Format'), Out(Pointer(UINT), 'pFormatSupport')]),
1206     StdMethod(HRESULT, 'CheckMultisampleQualityLevels', [(DXGI_FORMAT, 'Format'), (UINT, 'SampleCount'), Out(Pointer(UINT), 'pNumQualityLevels')]),
1207     StdMethod(Void, 'CheckCounterInfo', [Out(Pointer(D3D11_COUNTER_INFO), 'pCounterInfo')]),
1208     StdMethod(HRESULT, 'CheckCounter', [(Pointer(Const(D3D11_COUNTER_DESC)), 'pDesc'), Out(Pointer(D3D11_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')]),
1209     StdMethod(HRESULT, 'CheckFeatureSupport', [(D3D11_FEATURE, 'Feature'), Out(OpaqueBlob(Void, 'FeatureSupportDataSize'), 'pFeatureSupportData'), (UINT, 'FeatureSupportDataSize')]),
1210     StdMethod(HRESULT, 'GetPrivateData', [(REFGUID, 'guid'), Out(Pointer(UINT), 'pDataSize'), Out(OpaquePointer(Void), 'pData')]),
1211     StdMethod(HRESULT, 'SetPrivateData', [(REFGUID, 'guid'), (UINT, 'DataSize'), (OpaqueBlob(Const(Void), 'DataSize'), 'pData')]),
1212     StdMethod(HRESULT, 'SetPrivateDataInterface', [(REFGUID, 'guid'), (Pointer(Const(IUnknown)), 'pData')]),
1213     StdMethod(D3D_FEATURE_LEVEL, 'GetFeatureLevel', []),
1214     StdMethod(D3D11_CREATE_DEVICE_FLAG, 'GetCreationFlags', []),
1215     StdMethod(HRESULT, 'GetDeviceRemovedReason', []),
1216     StdMethod(Void, 'GetImmediateContext', [Out(Pointer(Pointer(ID3D11DeviceContext)), 'ppImmediateContext')]),
1217     StdMethod(HRESULT, 'SetExceptionMode', [(D3D11_RAISE_FLAG, 'RaiseFlags')]),
1218     StdMethod(UINT, 'GetExceptionMode', []),
1219 ]
1220
1221 d3d11 = API("d3d11")
1222
1223 d3d11.addFunctions([
1224     StdFunction(HRESULT, 'D3D11CreateDevice', [(Pointer(IDXGIAdapter), 'pAdapter'), (D3D_DRIVER_TYPE, 'DriverType'), (HMODULE, 'Software'), (D3D11_CREATE_DEVICE_FLAG, 'Flags'), (Pointer(Const(D3D_FEATURE_LEVEL)), 'pFeatureLevels'), (UINT, 'FeatureLevels'), (UINT, 'SDKVersion'), Out(Pointer(Pointer(ID3D11Device)), 'ppDevice'), Out(Pointer(D3D_FEATURE_LEVEL), 'pFeatureLevel'), Out(Pointer(Pointer(ID3D11DeviceContext)), 'ppImmediateContext')]),
1225     StdFunction(HRESULT, 'D3D11CreateDeviceAndSwapChain', [(Pointer(IDXGIAdapter), 'pAdapter'), (D3D_DRIVER_TYPE, 'DriverType'), (HMODULE, 'Software'), (D3D11_CREATE_DEVICE_FLAG, 'Flags'), (Pointer(Const(D3D_FEATURE_LEVEL)), 'pFeatureLevels'), (UINT, 'FeatureLevels'), (UINT, 'SDKVersion'), (Pointer(Const(DXGI_SWAP_CHAIN_DESC)), 'pSwapChainDesc'), Out(Pointer(Pointer(IDXGISwapChain)), 'ppSwapChain'), Out(Pointer(Pointer(ID3D11Device)), 'ppDevice'), Out(Pointer(D3D_FEATURE_LEVEL), 'pFeatureLevel'), Out(Pointer(Pointer(ID3D11DeviceContext)), 'ppImmediateContext')]),
1226 ])
1227
1228 d3d11.addInterfaces([
1229     IDXGIDevice,
1230     ID3D11Debug,
1231 ])