1 module directx.d3d10;
2 /*-------------------------------------------------------------------------------------
3  *
4  * Copyright (c) Microsoft Corporation
5  *
6  *-------------------------------------------------------------------------------------*/
7 
8 version(Windows):
9 
10 public import directx.dxgi;
11 public import directx.d3dcommon;
12 public import directx.d3d10sdklayers;
13 public import directx.d3d10misc;
14 public import directx.d3d10shader;
15 public import directx.d3d10effect;
16 
17 enum D3D10_16BIT_INDEX_STRIP_CUT_VALUE      = ( 0xffff );
18 enum D3D10_32BIT_INDEX_STRIP_CUT_VALUE      = ( 0xffffffff );
19 enum D3D10_8BIT_INDEX_STRIP_CUT_VALUE       = ( 0xff );
20 enum D3D10_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT       = ( 9 );
21 enum D3D10_CLIP_OR_CULL_DISTANCE_COUNT      = ( 8 );
22 enum D3D10_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT      = ( 2 );
23 enum D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT      = ( 14 );
24 enum D3D10_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS  = ( 4 );
25 enum D3D10_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT = ( 32 );
26 enum D3D10_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT       = ( 15 );
27 enum D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS = ( 4 );
28 enum D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT      = ( 15 );
29 enum D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST     = ( 1 );
30 enum D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS = ( 1 );
31 enum D3D10_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT   = ( 64 );
32 enum D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS       = ( 4 );
33 enum D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT    = ( 1 );
34 enum D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST   = ( 1 );
35 enum D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS       = ( 1 );
36 enum D3D10_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT = ( 32 );
37 enum D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS  = ( 1 );
38 enum D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT       = ( 128 );
39 enum D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST      = ( 1 );
40 enum D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS  = ( 1 );
41 enum D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT   = ( 128 );
42 enum D3D10_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS = ( 1 );
43 enum D3D10_COMMONSHADER_SAMPLER_REGISTER_COUNT      = ( 16 );
44 enum D3D10_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST     = ( 1 );
45 enum D3D10_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS = ( 1 );
46 enum D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT  = ( 16 );
47 enum D3D10_COMMONSHADER_SUBROUTINE_NESTING_LIMIT    = ( 32 );
48 enum D3D10_COMMONSHADER_TEMP_REGISTER_COMPONENTS    = ( 4 );
49 enum D3D10_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT   = ( 32 );
50 enum D3D10_COMMONSHADER_TEMP_REGISTER_COUNT = ( 4096 );
51 enum D3D10_COMMONSHADER_TEMP_REGISTER_READS_PER_INST= ( 3 );
52 enum D3D10_COMMONSHADER_TEMP_REGISTER_READ_PORTS    = ( 3 );
53 enum D3D10_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX= ( 10 );
54 enum D3D10_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN= ( -10 );
55 enum D3D10_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE   = ( -8 );
56 enum D3D10_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE   = ( 7 );
57 enum D3D10_DEFAULT_BLEND_FACTOR_ALPHA       = ( 1.0f );
58 enum D3D10_DEFAULT_BLEND_FACTOR_BLUE= ( 1.0f );
59 enum D3D10_DEFAULT_BLEND_FACTOR_GREEN       = ( 1.0f );
60 enum D3D10_DEFAULT_BLEND_FACTOR_RED = ( 1.0f );
61 enum D3D10_DEFAULT_BORDER_COLOR_COMPONENT   = ( 0.0f );
62 enum D3D10_DEFAULT_DEPTH_BIAS       = ( 0 );
63 enum D3D10_DEFAULT_DEPTH_BIAS_CLAMP = ( 0.0f );
64 enum D3D10_DEFAULT_MAX_ANISOTROPY   = ( 16.0f );
65 enum D3D10_DEFAULT_MIP_LOD_BIAS     = ( 0.0f );
66 enum D3D10_DEFAULT_RENDER_TARGET_ARRAY_INDEX= ( 0 );
67 enum D3D10_DEFAULT_SAMPLE_MASK      = ( 0xffffffff );
68 enum D3D10_DEFAULT_SCISSOR_ENDX     = ( 0 );
69 enum D3D10_DEFAULT_SCISSOR_ENDY     = ( 0 );
70 enum D3D10_DEFAULT_SCISSOR_STARTX   = ( 0 );
71 enum D3D10_DEFAULT_SCISSOR_STARTY   = ( 0 );
72 enum D3D10_DEFAULT_SLOPE_SCALED_DEPTH_BIAS  = ( 0.0f );
73 enum D3D10_DEFAULT_STENCIL_READ_MASK= ( 0xff );
74 enum D3D10_DEFAULT_STENCIL_REFERENCE= ( 0 );
75 enum D3D10_DEFAULT_STENCIL_WRITE_MASK       = ( 0xff );
76 enum D3D10_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX   = ( 0 );
77 enum D3D10_DEFAULT_VIEWPORT_HEIGHT  = ( 0 );
78 enum D3D10_DEFAULT_VIEWPORT_MAX_DEPTH       = ( 0.0f );
79 enum D3D10_DEFAULT_VIEWPORT_MIN_DEPTH       = ( 0.0f );
80 enum D3D10_DEFAULT_VIEWPORT_TOPLEFTX= ( 0 );
81 enum D3D10_DEFAULT_VIEWPORT_TOPLEFTY= ( 0 );
82 enum D3D10_DEFAULT_VIEWPORT_WIDTH   = ( 0 );
83 enum D3D10_FLOAT16_FUSED_TOLERANCE_IN_ULP   = ( 0.6 );
84 enum D3D10_FLOAT32_MAX      = ( 3.402823466e+38f );
85 enum D3D10_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP      = ( 0.6f );
86 enum D3D10_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR       = ( 2.4f );
87 enum D3D10_FLOAT_TO_SRGB_EXPONENT_NUMERATOR = ( 1.0f );
88 enum D3D10_FLOAT_TO_SRGB_OFFSET     = ( 0.055f );
89 enum D3D10_FLOAT_TO_SRGB_SCALE_1    = ( 12.92f );
90 enum D3D10_FLOAT_TO_SRGB_SCALE_2    = ( 1.055f );
91 enum D3D10_FLOAT_TO_SRGB_THRESHOLD  = ( 0.0031308f );
92 enum D3D10_FTOI_INSTRUCTION_MAX_INPUT       = ( 2147483647.999f );
93 enum D3D10_FTOI_INSTRUCTION_MIN_INPUT       = ( -2147483648.999f );
94 enum D3D10_FTOU_INSTRUCTION_MAX_INPUT       = ( 4294967295.999f );
95 enum D3D10_FTOU_INSTRUCTION_MIN_INPUT       = ( 0.0f );
96 enum D3D10_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS  = ( 1 );
97 enum D3D10_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
98 enum D3D10_GS_INPUT_PRIM_CONST_REGISTER_COUNT       = ( 1 );
99 enum D3D10_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST      = ( 2 );
100 enum D3D10_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS  = ( 1 );
101 enum D3D10_GS_INPUT_REGISTER_COMPONENTS     = ( 4 );
102 enum D3D10_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT    = ( 32 );
103 enum D3D10_GS_INPUT_REGISTER_COUNT  = ( 16 );
104 enum D3D10_GS_INPUT_REGISTER_READS_PER_INST = ( 2 );
105 enum D3D10_GS_INPUT_REGISTER_READ_PORTS     = ( 1 );
106 enum D3D10_GS_INPUT_REGISTER_VERTICES       = ( 6 );
107 enum D3D10_GS_OUTPUT_ELEMENTS       = ( 32 );
108 enum D3D10_GS_OUTPUT_REGISTER_COMPONENTS    = ( 4 );
109 enum D3D10_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT   = ( 32 );
110 enum D3D10_GS_OUTPUT_REGISTER_COUNT = ( 32 );
111 enum D3D10_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES  = ( 0 );
112 enum D3D10_IA_DEFAULT_PRIMITIVE_TOPOLOGY    = ( 0 );
113 enum D3D10_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES = ( 0 );
114 enum D3D10_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT       = ( 1 );
115 enum D3D10_IA_INSTANCE_ID_BIT_COUNT = ( 32 );
116 enum D3D10_IA_INTEGER_ARITHMETIC_BIT_COUNT  = ( 32 );
117 enum D3D10_IA_PRIMITIVE_ID_BIT_COUNT= ( 32 );
118 enum D3D10_IA_VERTEX_ID_BIT_COUNT   = ( 32 );
119 enum D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT      = ( 16 );
120 enum D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS    = ( 64 );
121 enum D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT  = ( 16 );
122 enum D3D10_INTEGER_DIVIDE_BY_ZERO_QUOTIENT  = ( 0xffffffff );
123 enum D3D10_INTEGER_DIVIDE_BY_ZERO_REMAINDER = ( 0xffffffff );
124 enum D3D10_LINEAR_GAMMA     = ( 1.0f );
125 enum D3D10_MAX_BORDER_COLOR_COMPONENT       = ( 1.0f );
126 enum D3D10_MAX_DEPTH= ( 1.0f );
127 enum D3D10_MAX_MAXANISOTROPY= ( 16 );
128 enum D3D10_MAX_MULTISAMPLE_SAMPLE_COUNT     = ( 32 );
129 enum D3D10_MAX_POSITION_VALUE       = ( 3.402823466e+34f );
130 enum D3D10_MAX_TEXTURE_DIMENSION_2_TO_EXP   = ( 17 );
131 enum D3D10_MIN_BORDER_COLOR_COMPONENT       = ( 0.0f );
132 enum D3D10_MIN_DEPTH= ( 0.0f );
133 enum D3D10_MIN_MAXANISOTROPY= ( 0 );
134 enum D3D10_MIP_LOD_BIAS_MAX = ( 15.99f );
135 enum D3D10_MIP_LOD_BIAS_MIN = ( -16.0f );
136 enum D3D10_MIP_LOD_FRACTIONAL_BIT_COUNT     = ( 6 );
137 enum D3D10_MIP_LOD_RANGE_BIT_COUNT  = ( 8 );
138 enum D3D10_MULTISAMPLE_ANTIALIAS_LINE_WIDTH = ( 1.4f );
139 enum D3D10_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT       = ( 0 );
140 enum D3D10_PIXEL_ADDRESS_RANGE_BIT_COUNT    = ( 13 );
141 enum D3D10_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT= ( 15 );
142 enum D3D10_PS_FRONTFACING_DEFAULT_VALUE     = ( 0xffffffff );
143 enum D3D10_PS_FRONTFACING_FALSE_VALUE       = ( 0 );
144 enum D3D10_PS_FRONTFACING_TRUE_VALUE= ( 0xffffffff );
145 enum D3D10_PS_INPUT_REGISTER_COMPONENTS     = ( 4 );
146 enum D3D10_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT    = ( 32 );
147 enum D3D10_PS_INPUT_REGISTER_COUNT  = ( 32 );
148 enum D3D10_PS_INPUT_REGISTER_READS_PER_INST = ( 2 );
149 enum D3D10_PS_INPUT_REGISTER_READ_PORTS     = ( 1 );
150 enum D3D10_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT      = ( 0.0f );
151 enum D3D10_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS      = ( 1 );
152 enum D3D10_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT     = ( 32 );
153 enum D3D10_PS_OUTPUT_DEPTH_REGISTER_COUNT   = ( 1 );
154 enum D3D10_PS_OUTPUT_REGISTER_COMPONENTS    = ( 4 );
155 enum D3D10_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT   = ( 32 );
156 enum D3D10_PS_OUTPUT_REGISTER_COUNT = ( 8 );
157 enum D3D10_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT     = ( 0.5f );
158 enum D3D10_REQ_BLEND_OBJECT_COUNT_PER_CONTEXT       = ( 4096 );
159 enum D3D10_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = ( 27 );
160 enum D3D10_REQ_CONSTANT_BUFFER_ELEMENT_COUNT= ( 4096 );
161 enum D3D10_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_CONTEXT       = ( 4096 );
162 enum D3D10_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP     = ( 32 );
163 enum D3D10_REQ_DRAW_VERTEX_COUNT_2_TO_EXP   = ( 32 );
164 enum D3D10_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION  = ( 8192 );
165 enum D3D10_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT   = ( 1024 );
166 enum D3D10_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT      = ( 4096 );
167 enum D3D10_REQ_MAXANISOTROPY= ( 16 );
168 enum D3D10_REQ_MIP_LEVELS   = ( 14 );
169 enum D3D10_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES= ( 2048 );
170 enum D3D10_REQ_RASTERIZER_OBJECT_COUNT_PER_CONTEXT  = ( 4096 );
171 enum D3D10_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH= ( 8192 );
172 enum D3D10_REQ_RESOURCE_SIZE_IN_MEGABYTES   = ( 128 );
173 enum D3D10_REQ_RESOURCE_VIEW_COUNT_PER_CONTEXT_2_TO_EXP     = ( 20 );
174 enum D3D10_REQ_SAMPLER_OBJECT_COUNT_PER_CONTEXT     = ( 4096 );
175 enum D3D10_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION       = ( 512 );
176 enum D3D10_REQ_TEXTURE1D_U_DIMENSION= ( 8192 );
177 enum D3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION       = ( 512 );
178 enum D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION   = ( 8192 );
179 enum D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = ( 2048 );
180 enum D3D10_REQ_TEXTURECUBE_DIMENSION= ( 8192 );
181 enum D3D10_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL     = ( 0 );
182 enum D3D10_SHADER_MAJOR_VERSION     = ( 4 );
183 enum D3D10_SHADER_MINOR_VERSION     = ( 0 );
184 enum D3D10_SHIFT_INSTRUCTION_PAD_VALUE      = ( 0 );
185 enum D3D10_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT  = ( 5 );
186 enum D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT = ( 8 );
187 enum D3D10_SO_BUFFER_MAX_STRIDE_IN_BYTES    = ( 2048 );
188 enum D3D10_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES      = ( 256 );
189 enum D3D10_SO_BUFFER_SLOT_COUNT     = ( 4 );
190 enum D3D10_SO_DDI_REGISTER_INDEX_DENOTING_GAP       = ( 0xffffffff );
191 enum D3D10_SO_MULTIPLE_BUFFER_ELEMENTS_PER_BUFFER   = ( 1 );
192 enum D3D10_SO_SINGLE_BUFFER_COMPONENT_LIMIT = ( 64 );
193 enum D3D10_SRGB_GAMMA       = ( 2.2f );
194 enum D3D10_SRGB_TO_FLOAT_DENOMINATOR_1      = ( 12.92f );
195 enum D3D10_SRGB_TO_FLOAT_DENOMINATOR_2      = ( 1.055f );
196 enum D3D10_SRGB_TO_FLOAT_EXPONENT   = ( 2.4f );
197 enum D3D10_SRGB_TO_FLOAT_OFFSET     = ( 0.055f );
198 enum D3D10_SRGB_TO_FLOAT_THRESHOLD  = ( 0.04045f );
199 enum D3D10_SRGB_TO_FLOAT_TOLERANCE_IN_ULP   = ( 0.5f );
200 enum D3D10_STANDARD_COMPONENT_BIT_COUNT     = ( 32 );
201 enum D3D10_STANDARD_COMPONENT_BIT_COUNT_DOUBLED     = ( 64 );
202 enum D3D10_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = ( 4 );
203 enum D3D10_STANDARD_PIXEL_COMPONENT_COUNT   = ( 128 );
204 enum D3D10_STANDARD_PIXEL_ELEMENT_COUNT     = ( 32 );
205 enum D3D10_STANDARD_VECTOR_SIZE     = ( 4 );
206 enum D3D10_STANDARD_VERTEX_ELEMENT_COUNT    = ( 16 );
207 enum D3D10_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT    = ( 64 );
208 enum D3D10_SUBPIXEL_FRACTIONAL_BIT_COUNT    = ( 8 );
209 enum D3D10_SUBTEXEL_FRACTIONAL_BIT_COUNT    = ( 6 );
210 enum D3D10_TEXEL_ADDRESS_RANGE_BIT_COUNT    = ( 18 );
211 enum D3D10_UNBOUND_MEMORY_ACCESS_RESULT     = ( 0 );
212 enum D3D10_VIEWPORT_AND_SCISSORRECT_MAX_INDEX       = ( 15 );
213 enum D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE       = ( 16 );
214 enum D3D10_VIEWPORT_BOUNDS_MAX      = ( 16383 );
215 enum D3D10_VIEWPORT_BOUNDS_MIN      = ( -16384 );
216 enum D3D10_VS_INPUT_REGISTER_COMPONENTS     = ( 4 );
217 enum D3D10_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT    = ( 32 );
218 enum D3D10_VS_INPUT_REGISTER_COUNT  = ( 16 );
219 enum D3D10_VS_INPUT_REGISTER_READS_PER_INST = ( 2 );
220 enum D3D10_VS_INPUT_REGISTER_READ_PORTS     = ( 1 );
221 enum D3D10_VS_OUTPUT_REGISTER_COMPONENTS    = ( 4 );
222 enum D3D10_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT   = ( 32 );
223 enum D3D10_VS_OUTPUT_REGISTER_COUNT = ( 16 );
224 enum D3D10_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT    = ( 10 );
225 enum D3D10_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP    = ( 25 );
226 enum D3D10_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP  = ( 25 );
227 enum D3D_MAJOR_VERSION      = ( 10 );
228 enum D3D_MINOR_VERSION      = ( 0 );
229 enum D3D_SPEC_DATE_DAY      = ( 8 );
230 enum D3D_SPEC_DATE_MONTH    = ( 8 );
231 enum D3D_SPEC_DATE_YEAR     = ( 2006 );
232 enum D3D_SPEC_VERSION       = ( 1.050005 );
233 
234 alias D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT D3D10_1_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT;
235 alias D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT D3D10_1_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT;
236 
237 enum _FACD3D10      = 0x879;
238 enum _FACD3D10DEBUG = _FACD3D10 + 1;
239 
240 pure nothrow @safe @nogc {
241     HRESULT MAKE_D3D10_HRESULT(UINT code) {
242         return MAKE_HRESULT(1, _FACD3D10, code);
243     }
244 
245     HRESULT MAKE_D3D10_STATUS(UINT code) {
246         return MAKE_HRESULT(0, _FACD3D10, code);
247     }
248 }
249 
250 /* Direct3D errors are now found in winerror.h */
251 
252 alias DWORD D3D10_INPUT_CLASSIFICATION;
253 enum : D3D10_INPUT_CLASSIFICATION
254 {
255     D3D10_INPUT_PER_VERTEX_DATA = 0,
256     D3D10_INPUT_PER_INSTANCE_DATA       = 1
257 }
258 
259 enum D3D10_APPEND_ALIGNED_ELEMENT  = ( 0xffffffff );
260 
261 struct D3D10_INPUT_ELEMENT_DESC
262 {
263     LPCSTR SemanticName;
264     UINT SemanticIndex;
265     DXGI_FORMAT Format;
266     UINT InputSlot;
267     UINT AlignedByteOffset;
268     D3D10_INPUT_CLASSIFICATION InputSlotClass;
269     UINT InstanceDataStepRate;
270 }
271 
272 alias DWORD D3D10_FILL_MODE;
273 enum : D3D10_FILL_MODE
274 {
275     D3D10_FILL_WIREFRAME        = 2,
276     D3D10_FILL_SOLID        = 3
277 }
278 
279 alias D3D_PRIMITIVE_TOPOLOGY D3D10_PRIMITIVE_TOPOLOGY;
280 alias D3D_PRIMITIVE D3D10_PRIMITIVE;
281 
282 alias DWORD D3D10_CULL_MODE;
283 enum : D3D10_CULL_MODE
284 {
285     D3D10_CULL_NONE     = 1,
286     D3D10_CULL_FRONT        = 2,
287     D3D10_CULL_BACK = 3
288 }
289 
290 struct D3D10_SO_DECLARATION_ENTRY
291 {
292     LPCSTR SemanticName;
293     UINT SemanticIndex;
294     BYTE StartComponent;
295     BYTE ComponentCount;
296     BYTE OutputSlot;
297 }
298 
299 struct D3D10_VIEWPORT
300 {
301     INT TopLeftX;
302     INT TopLeftY;
303     UINT Width;
304     UINT Height;
305     FLOAT MinDepth;
306     FLOAT MaxDepth;
307 }
308 
309 alias DWORD D3D10_RESOURCE_DIMENSION;
310 enum : D3D10_RESOURCE_DIMENSION
311 {
312     D3D10_RESOURCE_DIMENSION_UNKNOWN    = 0,
313     D3D10_RESOURCE_DIMENSION_BUFFER = 1,
314     D3D10_RESOURCE_DIMENSION_TEXTURE1D      = 2,
315     D3D10_RESOURCE_DIMENSION_TEXTURE2D      = 3,
316     D3D10_RESOURCE_DIMENSION_TEXTURE3D      = 4
317 }
318 
319 alias D3D_SRV_DIMENSION D3D10_SRV_DIMENSION;
320 
321 alias DWORD D3D10_DSV_DIMENSION;
322 enum : D3D10_DSV_DIMENSION
323 {
324     D3D10_DSV_DIMENSION_UNKNOWN = 0,
325     D3D10_DSV_DIMENSION_TEXTURE1D   = 1,
326     D3D10_DSV_DIMENSION_TEXTURE1DARRAY      = 2,
327     D3D10_DSV_DIMENSION_TEXTURE2D   = 3,
328     D3D10_DSV_DIMENSION_TEXTURE2DARRAY      = 4,
329     D3D10_DSV_DIMENSION_TEXTURE2DMS = 5,
330     D3D10_DSV_DIMENSION_TEXTURE2DMSARRAY    = 6
331 }
332 
333 alias DWORD D3D10_RTV_DIMENSION;
334 enum : D3D10_RTV_DIMENSION
335 {
336     D3D10_RTV_DIMENSION_UNKNOWN = 0,
337     D3D10_RTV_DIMENSION_BUFFER      = 1,
338     D3D10_RTV_DIMENSION_TEXTURE1D   = 2,
339     D3D10_RTV_DIMENSION_TEXTURE1DARRAY      = 3,
340     D3D10_RTV_DIMENSION_TEXTURE2D   = 4,
341     D3D10_RTV_DIMENSION_TEXTURE2DARRAY      = 5,
342     D3D10_RTV_DIMENSION_TEXTURE2DMS = 6,
343     D3D10_RTV_DIMENSION_TEXTURE2DMSARRAY    = 7,
344     D3D10_RTV_DIMENSION_TEXTURE3D   = 8
345 }
346 
347 alias DWORD D3D10_USAGE;
348 enum : D3D10_USAGE
349 {
350     D3D10_USAGE_DEFAULT = 0,
351     D3D10_USAGE_IMMUTABLE   = 1,
352     D3D10_USAGE_DYNAMIC     = 2,
353     D3D10_USAGE_STAGING     = 3
354 }
355 
356 alias DWORD D3D10_BIND_FLAG;
357 enum : D3D10_BIND_FLAG
358 {
359     D3D10_BIND_VERTEX_BUFFER    = 0x1L,
360     D3D10_BIND_INDEX_BUFFER = 0x2L,
361     D3D10_BIND_CONSTANT_BUFFER      = 0x4L,
362     D3D10_BIND_SHADER_RESOURCE      = 0x8L,
363     D3D10_BIND_STREAM_OUTPUT        = 0x10L,
364     D3D10_BIND_RENDER_TARGET        = 0x20L,
365     D3D10_BIND_DEPTH_STENCIL        = 0x40L
366 }
367 
368 alias DWORD D3D10_CPU_ACCESS_FLAG;
369 enum : D3D10_CPU_ACCESS_FLAG
370 {
371     D3D10_CPU_ACCESS_WRITE      = 0x10000L,
372     D3D10_CPU_ACCESS_READ   = 0x20000L
373 }
374 
375 alias DWORD D3D10_RESOURCE_MISC_FLAG;
376 enum : D3D10_RESOURCE_MISC_FLAG
377 {
378     D3D10_RESOURCE_MISC_GENERATE_MIPS   = 0x1L,
379     D3D10_RESOURCE_MISC_SHARED      = 0x2L,
380     D3D10_RESOURCE_MISC_TEXTURECUBE = 0x4L,
381     D3D10_RESOURCE_MISC_SHARED_KEYEDMUTEX   = 0x10L,
382     D3D10_RESOURCE_MISC_GDI_COMPATIBLE      = 0x20L
383 }
384 
385 alias DWORD D3D10_MAP;
386 enum : D3D10_MAP
387 {
388     D3D10_MAP_READ      = 1,
389     D3D10_MAP_WRITE = 2,
390     D3D10_MAP_READ_WRITE    = 3,
391     D3D10_MAP_WRITE_DISCARD = 4,
392     D3D10_MAP_WRITE_NO_OVERWRITE    = 5
393 }
394 
395 alias DWORD D3D10_MAP_FLAG;
396 enum : D3D10_MAP_FLAG
397 {
398     D3D10_MAP_FLAG_DO_NOT_WAIT  = 0x100000L
399 }
400 
401 alias DWORD D3D10_RAISE_FLAG;
402 enum : D3D10_RAISE_FLAG
403 {
404     D3D10_RAISE_FLAG_DRIVER_INTERNAL_ERROR      = 0x1L
405 }
406 
407 alias DWORD D3D10_CLEAR_FLAG;
408 enum : D3D10_CLEAR_FLAG
409 {
410     D3D10_CLEAR_DEPTH   = 0x1L,
411     D3D10_CLEAR_STENCIL     = 0x2L
412 }
413 
414 alias RECT D3D10_RECT;
415 
416 struct D3D10_BOX
417 {
418     UINT left;
419     UINT top;
420     UINT front;
421     UINT right;
422     UINT bottom;
423     UINT back;
424 }
425 
426 mixin(uuid!(ID3D10DeviceChild, "9B7E4C00-342C-4106-A19F-4F2704F689F0"));
427 extern (C++) interface ID3D10DeviceChild : IUnknown {
428     void GetDevice(ID3D10Device* ppDevice);
429     HRESULT GetPrivateData(
430         REFGUID guid,
431         UINT* pDataSize,
432         void* pData);
433 
434     HRESULT SetPrivateData(
435         REFGUID guid,
436         UINT DataSize,
437         const(void)* pData);
438 
439     HRESULT SetPrivateDataInterface(
440         REFGUID guid,
441         const IUnknown pData);
442 }
443 
444 enum D3D10_COMPARISON_FUNC
445 {
446     D3D10_COMPARISON_NEVER      = 1,
447     D3D10_COMPARISON_LESS       = 2,
448     D3D10_COMPARISON_EQUAL      = 3,
449     D3D10_COMPARISON_LESS_EQUAL = 4,
450     D3D10_COMPARISON_GREATER    = 5,
451     D3D10_COMPARISON_NOT_EQUAL  = 6,
452     D3D10_COMPARISON_GREATER_EQUAL      = 7,
453     D3D10_COMPARISON_ALWAYS     = 8
454 }
455 
456 alias DWORD D3D10_DEPTH_WRITE_MASK;
457 enum : D3D10_DEPTH_WRITE_MASK
458 {
459     D3D10_DEPTH_WRITE_MASK_ZERO = 0,
460     D3D10_DEPTH_WRITE_MASK_ALL      = 1
461 }
462 
463 alias DWORD D3D10_STENCIL_OP;
464 enum : D3D10_STENCIL_OP
465 {
466     D3D10_STENCIL_OP_KEEP       = 1,
467     D3D10_STENCIL_OP_ZERO   = 2,
468     D3D10_STENCIL_OP_REPLACE        = 3,
469     D3D10_STENCIL_OP_INCR_SAT       = 4,
470     D3D10_STENCIL_OP_DECR_SAT       = 5,
471     D3D10_STENCIL_OP_INVERT = 6,
472     D3D10_STENCIL_OP_INCR   = 7,
473     D3D10_STENCIL_OP_DECR   = 8
474 }
475 
476 struct D3D10_DEPTH_STENCILOP_DESC
477 {
478     D3D10_STENCIL_OP StencilFailOp;
479     D3D10_STENCIL_OP StencilDepthFailOp;
480     D3D10_STENCIL_OP StencilPassOp;
481     D3D10_COMPARISON_FUNC StencilFunc;
482 }
483 
484 struct D3D10_DEPTH_STENCIL_DESC
485 {
486     BOOL DepthEnable;
487     D3D10_DEPTH_WRITE_MASK DepthWriteMask;
488     D3D10_COMPARISON_FUNC DepthFunc;
489     BOOL StencilEnable;
490     UINT8 StencilReadMask;
491     UINT8 StencilWriteMask;
492     D3D10_DEPTH_STENCILOP_DESC FrontFace;
493     D3D10_DEPTH_STENCILOP_DESC BackFace;
494 }
495 
496 mixin(uuid!(ID3D10DepthStencilState, "2B4B1CC8-A4AD-41f8-8322-CA86FC3EC675"));
497 extern (C++) interface ID3D10DepthStencilState : ID3D10DeviceChild {
498     void GetDesc(D3D10_DEPTH_STENCIL_DESC* pDesc);
499 
500 }
501 
502 alias DWORD D3D10_BLEND;
503 enum : D3D10_BLEND
504 {
505     D3D10_BLEND_ZERO    = 1,
506     D3D10_BLEND_ONE     = 2,
507     D3D10_BLEND_SRC_COLOR       = 3,
508     D3D10_BLEND_INV_SRC_COLOR   = 4,
509     D3D10_BLEND_SRC_ALPHA       = 5,
510     D3D10_BLEND_INV_SRC_ALPHA   = 6,
511     D3D10_BLEND_DEST_ALPHA      = 7,
512     D3D10_BLEND_INV_DEST_ALPHA  = 8,
513     D3D10_BLEND_DEST_COLOR      = 9,
514     D3D10_BLEND_INV_DEST_COLOR  = 10,
515     D3D10_BLEND_SRC_ALPHA_SAT   = 11,
516     D3D10_BLEND_BLEND_FACTOR    = 14,
517     D3D10_BLEND_INV_BLEND_FACTOR        = 15,
518     D3D10_BLEND_SRC1_COLOR      = 16,
519     D3D10_BLEND_INV_SRC1_COLOR  = 17,
520     D3D10_BLEND_SRC1_ALPHA      = 18,
521     D3D10_BLEND_INV_SRC1_ALPHA  = 19
522 }
523 
524 alias DWORD D3D10_BLEND_OP;
525 enum : D3D10_BLEND_OP
526 {
527     D3D10_BLEND_OP_ADD  = 1,
528     D3D10_BLEND_OP_SUBTRACT = 2,
529     D3D10_BLEND_OP_REV_SUBTRACT     = 3,
530     D3D10_BLEND_OP_MIN      = 4,
531     D3D10_BLEND_OP_MAX      = 5
532 }
533 
534 alias DWORD D3D10_COLOR_WRITE_ENABLE;
535 enum : D3D10_COLOR_WRITE_ENABLE
536 {
537     D3D10_COLOR_WRITE_ENABLE_RED        = 1,
538     D3D10_COLOR_WRITE_ENABLE_GREEN  = 2,
539     D3D10_COLOR_WRITE_ENABLE_BLUE   = 4,
540     D3D10_COLOR_WRITE_ENABLE_ALPHA  = 8,
541     D3D10_COLOR_WRITE_ENABLE_ALL    = ( ( ( D3D10_COLOR_WRITE_ENABLE_RED | D3D10_COLOR_WRITE_ENABLE_GREEN )  | D3D10_COLOR_WRITE_ENABLE_BLUE )  | D3D10_COLOR_WRITE_ENABLE_ALPHA )
542 }
543 
544 struct D3D10_BLEND_DESC
545 {
546     BOOL AlphaToCoverageEnable;
547     BOOL[8] BlendEnable;
548     D3D10_BLEND SrcBlend;
549     D3D10_BLEND DestBlend;
550     D3D10_BLEND_OP BlendOp;
551     D3D10_BLEND SrcBlendAlpha;
552     D3D10_BLEND DestBlendAlpha;
553     D3D10_BLEND_OP BlendOpAlpha;
554     UINT8[8] RenderTargetWriteMask;
555 }
556 
557 mixin(uuid!(ID3D10BlendState, "EDAD8D19-8A35-4d6d-8566-2EA276CDE161"));
558 extern (C++) interface ID3D10BlendState : ID3D10DeviceChild {
559     void GetDesc(D3D10_BLEND_DESC* pDesc);
560 
561 }
562 
563 struct D3D10_RASTERIZER_DESC
564 {
565     D3D10_FILL_MODE FillMode;
566     D3D10_CULL_MODE CullMode;
567     BOOL FrontCounterClockwise;
568     INT DepthBias;
569     FLOAT DepthBiasClamp;
570     FLOAT SlopeScaledDepthBias;
571     BOOL DepthClipEnable;
572     BOOL ScissorEnable;
573     BOOL MultisampleEnable;
574     BOOL AntialiasedLineEnable;
575 }
576 
577 mixin(uuid!(ID3D10RasterizerState, "A2A07292-89AF-4345-BE2E-C53D9FBB6E9F"));
578 extern (C++) interface ID3D10RasterizerState : ID3D10DeviceChild {
579     void GetDesc(D3D10_RASTERIZER_DESC *pDesc);
580 
581 }
582 
583 pure nothrow @safe @nogc
584 UINT D3D10CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT MipLevels) {
585     return MipSlice + ArraySlice * MipLevels;
586 }
587 
588 struct D3D10_SUBRESOURCE_DATA
589 {
590     const(void)* pSysMem;
591     UINT SysMemPitch;
592     UINT SysMemSlicePitch;
593 }
594 
595 mixin(uuid!(ID3D10Resource, "9B7E4C01-342C-4106-A19F-4F2704F689F0"));
596 extern (C++) interface ID3D10Resource : ID3D10DeviceChild {
597     void GetType(D3D10_RESOURCE_DIMENSION* rType);
598     void SetEvictionPriority(UINT EvictionPriority);
599     UINT GetEvictionPriority();
600 }
601 
602 struct D3D10_BUFFER_DESC
603 {
604     UINT ByteWidth;
605     D3D10_USAGE Usage;
606     UINT BindFlags;
607     UINT CPUAccessFlags;
608     UINT MiscFlags;
609 }
610 
611 mixin(uuid!(ID3D10Buffer, "9B7E4C02-342C-4106-A19F-4F2704F689F0"));
612 extern (C++) interface ID3D10Buffer : ID3D10Resource {
613     HRESULT Map(
614         D3D10_MAP MapType,
615         UINT MapFlags,
616         void** ppData);
617     void Unmap();
618     void GetDesc(D3D10_BUFFER_DESC* pDesc);
619 
620 }
621 
622 struct D3D10_TEXTURE1D_DESC
623 {
624     UINT Width;
625     UINT MipLevels;
626     UINT ArraySize;
627     DXGI_FORMAT Format;
628     D3D10_USAGE Usage;
629     UINT BindFlags;
630     UINT CPUAccessFlags;
631     UINT MiscFlags;
632 }
633 
634 mixin(uuid!(ID3D10Texture1D, "9B7E4C03-342C-4106-A19F-4F2704F689F0"));
635 extern (C++) interface ID3D10Texture1D : ID3D10Resource {
636     HRESULT Map(
637         UINT Subresource,
638         D3D10_MAP MapType,
639         UINT MapFlags,
640         void** ppData);
641 
642     void Unmap(UINT Subresource);
643 
644     void GetDesc(D3D10_TEXTURE1D_DESC* pDesc);
645 }
646 
647 struct D3D10_TEXTURE2D_DESC
648 {
649     UINT Width;
650     UINT Height;
651     UINT MipLevels;
652     UINT ArraySize;
653     DXGI_FORMAT Format;
654     DXGI_SAMPLE_DESC SampleDesc;
655     D3D10_USAGE Usage;
656     UINT BindFlags;
657     UINT CPUAccessFlags;
658     UINT MiscFlags;
659 }
660 
661 struct D3D10_MAPPED_TEXTURE2D
662 {
663     void* pData;
664     UINT RowPitch;
665 }
666 
667 mixin(uuid!(ID3D10Texture2D, "9B7E4C04-342C-4106-A19F-4F2704F689F0"));
668 extern (C++) interface ID3D10Texture2D : ID3D10Resource {
669     HRESULT Map(
670         UINT Subresource,
671         D3D10_MAP MapType,
672         UINT MapFlags,
673         D3D10_MAPPED_TEXTURE2D* pMappedTex2D);
674 
675     void Unmap(UINT Subresource);
676 
677     void GetDesc(D3D10_TEXTURE2D_DESC* pDesc);
678 }
679 
680 struct D3D10_TEXTURE3D_DESC
681 {
682     UINT Width;
683     UINT Height;
684     UINT Depth;
685     UINT MipLevels;
686     DXGI_FORMAT Format;
687     D3D10_USAGE Usage;
688     UINT BindFlags;
689     UINT CPUAccessFlags;
690     UINT MiscFlags;
691 }
692 
693 struct D3D10_MAPPED_TEXTURE3D
694 {
695     void* pData;
696     UINT RowPitch;
697     UINT DepthPitch;
698 }
699 
700 mixin(uuid!(ID3D10Texture3D, "9B7E4C05-342C-4106-A19F-4F2704F689F0"));
701 extern (C++) interface ID3D10Texture3D : ID3D10Resource {
702     HRESULT Map(
703         UINT Subresource,
704         D3D10_MAP MapType,
705         UINT MapFlags,
706         D3D10_MAPPED_TEXTURE3D* pMappedTex3D);
707 
708     void Unmap(UINT Subresource);
709 
710     void GetDesc(D3D10_TEXTURE3D_DESC* pDesc);
711 }
712 
713 enum D3D10_TEXTURECUBE_FACE
714 {
715     D3D10_TEXTURECUBE_FACE_POSITIVE_X   = 0,
716     D3D10_TEXTURECUBE_FACE_NEGATIVE_X   = 1,
717     D3D10_TEXTURECUBE_FACE_POSITIVE_Y   = 2,
718     D3D10_TEXTURECUBE_FACE_NEGATIVE_Y   = 3,
719     D3D10_TEXTURECUBE_FACE_POSITIVE_Z   = 4,
720     D3D10_TEXTURECUBE_FACE_NEGATIVE_Z   = 5
721 }
722 
723 mixin(uuid!(ID3D10View, "C902B03F-60A7-49BA-9936-2A3AB37A7E33"));
724 extern (C++) interface ID3D10View : ID3D10DeviceChild {
725     void GetResource(ID3D10Resource* ppResource);
726 }
727 
728 struct D3D10_BUFFER_SRV
729 {
730     union
731     {
732         UINT FirstElement;
733         UINT ElementOffset;
734     }
735     union
736     {
737         UINT NumElements;
738         UINT ElementWidth;
739     }
740 }
741 
742 struct D3D10_TEX1D_SRV
743 {
744     UINT MostDetailedMip;
745     UINT MipLevels;
746 }
747 
748 struct D3D10_TEX1D_ARRAY_SRV
749 {
750     UINT MostDetailedMip;
751     UINT MipLevels;
752     UINT FirstArraySlice;
753     UINT ArraySize;
754 }
755 
756 struct D3D10_TEX2D_SRV
757 {
758     UINT MostDetailedMip;
759     UINT MipLevels;
760 }
761 
762 struct D3D10_TEX2D_ARRAY_SRV
763 {
764     UINT MostDetailedMip;
765     UINT MipLevels;
766     UINT FirstArraySlice;
767     UINT ArraySize;
768 }
769 
770 struct D3D10_TEX3D_SRV
771 {
772     UINT MostDetailedMip;
773     UINT MipLevels;
774 }
775 
776 struct D3D10_TEXCUBE_SRV
777 {
778     UINT MostDetailedMip;
779     UINT MipLevels;
780 }
781 
782 struct D3D10_TEX2DMS_SRV
783 {
784     UINT UnusedField_NothingToDefine;
785 }
786 
787 struct D3D10_TEX2DMS_ARRAY_SRV
788 {
789     UINT FirstArraySlice;
790     UINT ArraySize;
791 }
792 
793 struct D3D10_SHADER_RESOURCE_VIEW_DESC
794 {
795     DXGI_FORMAT Format;
796     D3D10_SRV_DIMENSION ViewDimension;
797     union
798     {
799         D3D10_BUFFER_SRV Buffer;
800         D3D10_TEX1D_SRV Texture1D;
801         D3D10_TEX1D_ARRAY_SRV Texture1DArray;
802         D3D10_TEX2D_SRV Texture2D;
803         D3D10_TEX2D_ARRAY_SRV Texture2DArray;
804         D3D10_TEX2DMS_SRV Texture2DMS;
805         D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray;
806         D3D10_TEX3D_SRV Texture3D;
807         D3D10_TEXCUBE_SRV TextureCube;
808     }
809 }
810 
811 mixin(uuid!(ID3D10ShaderResourceView, "9B7E4C07-342C-4106-A19F-4F2704F689F0"));
812 extern (C++) interface ID3D10ShaderResourceView : ID3D10View {
813     void GetDesc(D3D10_SHADER_RESOURCE_VIEW_DESC* pDesc);
814 }
815 
816 struct D3D10_BUFFER_RTV
817 {
818     union
819     {
820         UINT FirstElement;
821         UINT ElementOffset;
822     }
823     union
824     {
825         UINT NumElements;
826         UINT ElementWidth;
827     }
828 }
829 
830 struct D3D10_TEX1D_RTV
831 {
832     UINT MipSlice;
833 }
834 
835 struct D3D10_TEX1D_ARRAY_RTV
836 {
837     UINT MipSlice;
838     UINT FirstArraySlice;
839     UINT ArraySize;
840 }
841 
842 struct D3D10_TEX2D_RTV
843 {
844     UINT MipSlice;
845 }
846 
847 struct D3D10_TEX2DMS_RTV
848 {
849     UINT UnusedField_NothingToDefine;
850 }
851 
852 struct D3D10_TEX2D_ARRAY_RTV
853 {
854     UINT MipSlice;
855     UINT FirstArraySlice;
856     UINT ArraySize;
857 }
858 
859 struct D3D10_TEX2DMS_ARRAY_RTV
860 {
861     UINT FirstArraySlice;
862     UINT ArraySize;
863 }
864 
865 struct D3D10_TEX3D_RTV
866 {
867     UINT MipSlice;
868     UINT FirstWSlice;
869     UINT WSize;
870 }
871 
872 struct D3D10_RENDER_TARGET_VIEW_DESC
873 {
874     DXGI_FORMAT Format;
875     D3D10_RTV_DIMENSION ViewDimension;
876     union
877     {
878         D3D10_BUFFER_RTV Buffer;
879         D3D10_TEX1D_RTV Texture1D;
880         D3D10_TEX1D_ARRAY_RTV Texture1DArray;
881         D3D10_TEX2D_RTV Texture2D;
882         D3D10_TEX2D_ARRAY_RTV Texture2DArray;
883         D3D10_TEX2DMS_RTV Texture2DMS;
884         D3D10_TEX2DMS_ARRAY_RTV Texture2DMSArray;
885         D3D10_TEX3D_RTV Texture3D;
886     }
887 }
888 
889 mixin(uuid!(ID3D10RenderTargetView, "9B7E4C08-342C-4106-A19F-4F2704F689F0"));
890 extern (C++) interface ID3D10RenderTargetView : ID3D10View {
891     void GetDesc(D3D10_RENDER_TARGET_VIEW_DESC* pDesc);
892 
893 }
894 
895 struct D3D10_TEX1D_DSV
896 {
897     UINT MipSlice;
898 }
899 
900 struct D3D10_TEX1D_ARRAY_DSV
901 {
902     UINT MipSlice;
903     UINT FirstArraySlice;
904     UINT ArraySize;
905 }
906 
907 struct D3D10_TEX2D_DSV
908 {
909     UINT MipSlice;
910 }
911 
912 struct D3D10_TEX2D_ARRAY_DSV
913 {
914     UINT MipSlice;
915     UINT FirstArraySlice;
916     UINT ArraySize;
917 }
918 
919 struct D3D10_TEX2DMS_DSV
920 {
921     UINT UnusedField_NothingToDefine;
922 }
923 
924 struct D3D10_TEX2DMS_ARRAY_DSV
925 {
926     UINT FirstArraySlice;
927     UINT ArraySize;
928 }
929 
930 struct D3D10_DEPTH_STENCIL_VIEW_DESC
931 {
932     DXGI_FORMAT Format;
933     D3D10_DSV_DIMENSION ViewDimension;
934     union
935     {
936         D3D10_TEX1D_DSV Texture1D;
937         D3D10_TEX1D_ARRAY_DSV Texture1DArray;
938         D3D10_TEX2D_DSV Texture2D;
939         D3D10_TEX2D_ARRAY_DSV Texture2DArray;
940         D3D10_TEX2DMS_DSV Texture2DMS;
941         D3D10_TEX2DMS_ARRAY_DSV Texture2DMSArray;
942     }
943 }
944 
945 mixin(uuid!(ID3D10DepthStencilView, "9B7E4C09-342C-4106-A19F-4F2704F689F0"));
946 extern (C++) interface ID3D10DepthStencilView : ID3D10View {
947     void GetDesc(D3D10_DEPTH_STENCIL_VIEW_DESC* pDesc);
948 
949 }
950 
951 mixin(uuid!(ID3D10VertexShader, "9B7E4C0A-342C-4106-A19F-4F2704F689F0"));
952 extern (C++) interface ID3D10VertexShader : ID3D10DeviceChild {}
953 
954 mixin(uuid!(ID3D10GeometryShader, "6316BE88-54CD-4040-AB44-20461BC81F68"));
955 extern (C++) interface ID3D10GeometryShader : ID3D10DeviceChild {}
956 
957 mixin(uuid!(ID3D10PixelShader, "4968B601-9D00-4cde-8346-8E7F675819B6"));
958 extern (C++) interface ID3D10PixelShader : ID3D10DeviceChild {}
959 
960 mixin(uuid!(ID3D10InputLayout, "9B7E4C0B-342C-4106-A19F-4F2704F689F0"));
961 extern (C++) interface ID3D10InputLayout : ID3D10DeviceChild {}
962 
963 alias DWORD D3D10_FILTER;
964 enum : D3D10_FILTER
965 {
966     D3D10_FILTER_MIN_MAG_MIP_POINT      = 0,
967     D3D10_FILTER_MIN_MAG_POINT_MIP_LINEAR       = 0x1,
968     D3D10_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4,
969     D3D10_FILTER_MIN_POINT_MAG_MIP_LINEAR       = 0x5,
970     D3D10_FILTER_MIN_LINEAR_MAG_MIP_POINT       = 0x10,
971     D3D10_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR        = 0x11,
972     D3D10_FILTER_MIN_MAG_LINEAR_MIP_POINT       = 0x14,
973     D3D10_FILTER_MIN_MAG_MIP_LINEAR     = 0x15,
974     D3D10_FILTER_ANISOTROPIC    = 0x55,
975     D3D10_FILTER_COMPARISON_MIN_MAG_MIP_POINT   = 0x80,
976     D3D10_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR    = 0x81,
977     D3D10_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT      = 0x84,
978     D3D10_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR    = 0x85,
979     D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT    = 0x90,
980     D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR     = 0x91,
981     D3D10_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT    = 0x94,
982     D3D10_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR  = 0x95,
983     D3D10_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
984     D3D10_FILTER_TEXT_1BIT      = 0x80000000
985 }
986 
987 alias DWORD D3D10_FILTER_TYPE;
988 enum : D3D10_FILTER_TYPE
989 {
990     D3D10_FILTER_TYPE_POINT     = 0,
991     D3D10_FILTER_TYPE_LINEAR        = 1
992 }
993 
994 enum D3D10_FILTER_TYPE_MASK = ( 0x3 );
995 enum D3D10_MIN_FILTER_SHIFT = ( 4 );
996 enum D3D10_MAG_FILTER_SHIFT = ( 2 );
997 enum D3D10_MIP_FILTER_SHIFT = ( 0 );
998 enum D3D10_COMPARISON_FILTERING_BIT = ( 0x80 );
999 enum D3D10_ANISOTROPIC_FILTERING_BIT= ( 0x40 );
1000 enum D3D10_TEXT_1BIT_BIT    = ( 0x80000000 );
1001 
1002 pure nothrow @safe @nogc {
1003     D3D10_FILTER D3D10_ENCODE_BASIC_FILTER(D3D10_FILTER_TYPE min, D3D10_FILTER_TYPE mag, D3D10_FILTER_TYPE mip, bool bComparison ) {
1004         return cast(D3D10_FILTER)
1005             ((bComparison ? D3D10_COMPARISON_FILTERING_BIT : 0 ) |
1006              ((min & D3D10_FILTER_TYPE_MASK) << D3D10_MIN_FILTER_SHIFT) |
1007              ((mag & D3D10_FILTER_TYPE_MASK) << D3D10_MAG_FILTER_SHIFT) |
1008              ((mip & D3D10_FILTER_TYPE_MASK) << D3D10_MIP_FILTER_SHIFT));
1009     }
1010 
1011     D3D10_FILTER D3D10_ENCODE_ANISOTROPIC_FILTER(bool bComparison) {
1012         return cast (D3D10_FILTER)
1013             (D3D10_ANISOTROPIC_FILTERING_BIT |
1014              D3D10_ENCODE_BASIC_FILTER(D3D10_FILTER_TYPE_LINEAR,
1015                                        D3D10_FILTER_TYPE_LINEAR,
1016                                        D3D10_FILTER_TYPE_LINEAR,
1017                                        bComparison));
1018     }
1019 
1020     D3D10_FILTER_TYPE D3D10_DECODE_MIN_FILTER(D3D10_FILTER d3d10Filter) {
1021         return cast(D3D10_FILTER_TYPE)
1022             ((d3d10Filter >> D3D10_MIN_FILTER_SHIFT) & D3D10_FILTER_TYPE_MASK);
1023     }
1024 
1025     D3D10_FILTER_TYPE D3D10_DECODE_MAG_FILTER(D3D10_FILTER d3d10Filter) {
1026         return cast(D3D10_FILTER_TYPE)
1027             ((d3d10Filter >> D3D10_MAG_FILTER_SHIFT) & D3D10_FILTER_TYPE_MASK);
1028     }
1029 
1030     D3D10_FILTER_TYPE D3D10_DECODE_MIP_FILTER(D3D10_FILTER d3d10Filter) {
1031         return cast(D3D10_FILTER_TYPE)
1032             ((d3d10Filter >> D3D10_MIP_FILTER_SHIFT) & D3D10_FILTER_TYPE_MASK);
1033     }
1034 
1035     bool D3D10_DECODE_IS_COMPARISON_FILTER(D3D10_FILTER d3d10Filter) {
1036         return (d3d10Filter & D3D10_COMPARISON_FILTERING_BIT) != 0;
1037     }
1038 
1039     bool D3D10_DECODE_IS_ANISOTROPIC_FILTER(D3D10_FILTER d3d10Filter) {
1040         return ((d3d10Filter & D3D10_ANISOTROPIC_FILTERING_BIT) &&
1041                 (D3D10_FILTER_TYPE_LINEAR == D3D10_DECODE_MIN_FILTER(d3d10Filter)) &&
1042                 (D3D10_FILTER_TYPE_LINEAR == D3D10_DECODE_MAG_FILTER(d3d10Filter)) &&
1043                 (D3D10_FILTER_TYPE_LINEAR == D3D10_DECODE_MIP_FILTER(d3d10Filter)));
1044     }
1045 
1046     bool D3D10_DECODE_IS_TEXT_1BIT_FILTER(D3D10_FILTER d3d10Filter) {
1047         return d3d10Filter == D3D10_TEXT_1BIT_BIT;
1048     }
1049 }
1050 
1051 alias DWORD D3D10_TEXTURE_ADDRESS_MODE;
1052 enum : D3D10_TEXTURE_ADDRESS_MODE
1053 {
1054     D3D10_TEXTURE_ADDRESS_WRAP  = 1,
1055     D3D10_TEXTURE_ADDRESS_MIRROR    = 2,
1056     D3D10_TEXTURE_ADDRESS_CLAMP     = 3,
1057     D3D10_TEXTURE_ADDRESS_BORDER    = 4,
1058     D3D10_TEXTURE_ADDRESS_MIRROR_ONCE       = 5
1059 }
1060 
1061 struct D3D10_SAMPLER_DESC
1062 {
1063     D3D10_FILTER Filter;
1064     D3D10_TEXTURE_ADDRESS_MODE AddressU;
1065     D3D10_TEXTURE_ADDRESS_MODE AddressV;
1066     D3D10_TEXTURE_ADDRESS_MODE AddressW;
1067     FLOAT MipLODBias;
1068     UINT MaxAnisotropy;
1069     D3D10_COMPARISON_FUNC ComparisonFunc;
1070     FLOAT[4] BorderColor;
1071     FLOAT MinLOD;
1072     FLOAT MaxLOD;
1073 }
1074 
1075 mixin(uuid!(ID3D10SamplerState, "9B7E4C0C-342C-4106-A19F-4F2704F689F0"));
1076 extern (C++) interface ID3D10SamplerState : ID3D10DeviceChild {
1077     void GetDesc(D3D10_SAMPLER_DESC* pDesc);
1078 }
1079 
1080 enum D3D10_FORMAT_SUPPORT
1081 {
1082     D3D10_FORMAT_SUPPORT_BUFFER = 0x1,
1083     D3D10_FORMAT_SUPPORT_IA_VERTEX_BUFFER       = 0x2,
1084     D3D10_FORMAT_SUPPORT_IA_INDEX_BUFFER        = 0x4,
1085     D3D10_FORMAT_SUPPORT_SO_BUFFER      = 0x8,
1086     D3D10_FORMAT_SUPPORT_TEXTURE1D      = 0x10,
1087     D3D10_FORMAT_SUPPORT_TEXTURE2D      = 0x20,
1088     D3D10_FORMAT_SUPPORT_TEXTURE3D      = 0x40,
1089     D3D10_FORMAT_SUPPORT_TEXTURECUBE    = 0x80,
1090     D3D10_FORMAT_SUPPORT_SHADER_LOAD    = 0x100,
1091     D3D10_FORMAT_SUPPORT_SHADER_SAMPLE  = 0x200,
1092     D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON       = 0x400,
1093     D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT        = 0x800,
1094     D3D10_FORMAT_SUPPORT_MIP    = 0x1000,
1095     D3D10_FORMAT_SUPPORT_MIP_AUTOGEN    = 0x2000,
1096     D3D10_FORMAT_SUPPORT_RENDER_TARGET  = 0x4000,
1097     D3D10_FORMAT_SUPPORT_BLENDABLE      = 0x8000,
1098     D3D10_FORMAT_SUPPORT_DEPTH_STENCIL  = 0x10000,
1099     D3D10_FORMAT_SUPPORT_CPU_LOCKABLE   = 0x20000,
1100     D3D10_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE    = 0x40000,
1101     D3D10_FORMAT_SUPPORT_DISPLAY        = 0x80000,
1102     D3D10_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT = 0x100000,
1103     D3D10_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET       = 0x200000,
1104     D3D10_FORMAT_SUPPORT_MULTISAMPLE_LOAD       = 0x400000,
1105     D3D10_FORMAT_SUPPORT_SHADER_GATHER  = 0x800000,
1106     D3D10_FORMAT_SUPPORT_BACK_BUFFER_CAST       = 0x1000000
1107 }
1108 
1109 mixin(uuid!(ID3D10Asynchronous, "9B7E4C0D-342C-4106-A19F-4F2704F689F0"));
1110 extern (C++) interface ID3D10Asynchronous : ID3D10DeviceChild {
1111     void Begin();
1112     void End();
1113     HRESULT GetData(
1114         void* pData,
1115         UINT DataSize,
1116         UINT GetDataFlags);
1117     UINT GetDataSize();
1118 }
1119 
1120 enum D3D10_ASYNC_GETDATA_FLAG
1121 {
1122     D3D10_ASYNC_GETDATA_DONOTFLUSH      = 0x1
1123 }
1124 
1125 enum D3D10_QUERY
1126 {
1127     D3D10_QUERY_EVENT   = 0,
1128     D3D10_QUERY_OCCLUSION       = ( D3D10_QUERY_EVENT + 1 ) ,
1129     D3D10_QUERY_TIMESTAMP       = ( D3D10_QUERY_OCCLUSION + 1 ) ,
1130     D3D10_QUERY_TIMESTAMP_DISJOINT      = ( D3D10_QUERY_TIMESTAMP + 1 ) ,
1131     D3D10_QUERY_PIPELINE_STATISTICS     = ( D3D10_QUERY_TIMESTAMP_DISJOINT + 1 ) ,
1132     D3D10_QUERY_OCCLUSION_PREDICATE     = ( D3D10_QUERY_PIPELINE_STATISTICS + 1 ) ,
1133     D3D10_QUERY_SO_STATISTICS   = ( D3D10_QUERY_OCCLUSION_PREDICATE + 1 ) ,
1134     D3D10_QUERY_SO_OVERFLOW_PREDICATE   = ( D3D10_QUERY_SO_STATISTICS + 1 )
1135 }
1136 
1137 alias DWORD D3D10_QUERY_MISC_FLAG;
1138 enum : D3D10_QUERY_MISC_FLAG
1139 {
1140     D3D10_QUERY_MISC_PREDICATEHINT      = 0x1
1141 }
1142 
1143 struct D3D10_QUERY_DESC
1144 {
1145     D3D10_QUERY Query;
1146     UINT MiscFlags;
1147 }
1148 
1149 mixin(uuid!(ID3D10Query, "9B7E4C0E-342C-4106-A19F-4F2704F689F0"));
1150 extern (C++) interface ID3D10Query : ID3D10Asynchronous {
1151     void GetDesc(D3D10_QUERY_DESC* pDesc);
1152 }
1153 
1154 mixin(uuid!(ID3D10Predicate, "9B7E4C10-342C-4106-A19F-4F2704F689F0"));
1155 extern (C++) interface ID3D10Predicate : ID3D10Query {}
1156 
1157 struct D3D10_QUERY_DATA_TIMESTAMP_DISJOINT
1158 {
1159     UINT64 Frequency;
1160     BOOL Disjoint;
1161 }
1162 
1163 struct D3D10_QUERY_DATA_PIPELINE_STATISTICS
1164 {
1165     UINT64 IAVertices;
1166     UINT64 IAPrimitives;
1167     UINT64 VSInvocations;
1168     UINT64 GSInvocations;
1169     UINT64 GSPrimitives;
1170     UINT64 CInvocations;
1171     UINT64 CPrimitives;
1172     UINT64 PSInvocations;
1173 }
1174 
1175 struct D3D10_QUERY_DATA_SO_STATISTICS
1176 {
1177     UINT64 NumPrimitivesWritten;
1178     UINT64 PrimitivesStorageNeeded;
1179 }
1180 
1181 alias DWORD D3D10_COUNTER;
1182 enum : D3D10_COUNTER
1183 {
1184     D3D10_COUNTER_GPU_IDLE      = 0,
1185     D3D10_COUNTER_VERTEX_PROCESSING = ( D3D10_COUNTER_GPU_IDLE + 1 ) ,
1186     D3D10_COUNTER_GEOMETRY_PROCESSING       = ( D3D10_COUNTER_VERTEX_PROCESSING + 1 ) ,
1187     D3D10_COUNTER_PIXEL_PROCESSING  = ( D3D10_COUNTER_GEOMETRY_PROCESSING + 1 ) ,
1188     D3D10_COUNTER_OTHER_GPU_PROCESSING      = ( D3D10_COUNTER_PIXEL_PROCESSING + 1 ) ,
1189     D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION        = ( D3D10_COUNTER_OTHER_GPU_PROCESSING + 1 ) ,
1190     D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION        = ( D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION + 1 ) ,
1191     D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION     = ( D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION + 1 ) ,
1192     D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION     = ( D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION + 1 ) ,
1193     D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION   = ( D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION + 1 ) ,
1194     D3D10_COUNTER_VS_MEMORY_LIMITED = ( D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION + 1 ) ,
1195     D3D10_COUNTER_VS_COMPUTATION_LIMITED    = ( D3D10_COUNTER_VS_MEMORY_LIMITED + 1 ) ,
1196     D3D10_COUNTER_GS_MEMORY_LIMITED = ( D3D10_COUNTER_VS_COMPUTATION_LIMITED + 1 ) ,
1197     D3D10_COUNTER_GS_COMPUTATION_LIMITED    = ( D3D10_COUNTER_GS_MEMORY_LIMITED + 1 ) ,
1198     D3D10_COUNTER_PS_MEMORY_LIMITED = ( D3D10_COUNTER_GS_COMPUTATION_LIMITED + 1 ) ,
1199     D3D10_COUNTER_PS_COMPUTATION_LIMITED    = ( D3D10_COUNTER_PS_MEMORY_LIMITED + 1 ) ,
1200     D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE     = ( D3D10_COUNTER_PS_COMPUTATION_LIMITED + 1 ) ,
1201     D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE    = ( D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE + 1 ) ,
1202     D3D10_COUNTER_DEVICE_DEPENDENT_0        = 0x40000000
1203 }
1204 
1205 alias DWORD D3D10_COUNTER_TYPE;
1206 enum : D3D10_COUNTER_TYPE
1207 {
1208     D3D10_COUNTER_TYPE_FLOAT32  = 0,
1209     D3D10_COUNTER_TYPE_UINT16       = ( D3D10_COUNTER_TYPE_FLOAT32 + 1 ) ,
1210     D3D10_COUNTER_TYPE_UINT32       = ( D3D10_COUNTER_TYPE_UINT16 + 1 ) ,
1211     D3D10_COUNTER_TYPE_UINT64       = ( D3D10_COUNTER_TYPE_UINT32 + 1 )
1212 }
1213 
1214 struct D3D10_COUNTER_DESC
1215 {
1216     D3D10_COUNTER Counter;
1217     UINT MiscFlags;
1218 }
1219 
1220 struct D3D10_COUNTER_INFO
1221 {
1222     D3D10_COUNTER LastDeviceDependentCounter;
1223     UINT NumSimultaneousCounters;
1224     UINT8 NumDetectableParallelUnits;
1225 }
1226 
1227 mixin(uuid!(ID3D10Counter, "9B7E4C11-342C-4106-A19F-4F2704F689F0"));
1228 extern (C++) interface ID3D10Counter : ID3D10Asynchronous {
1229     void GetDesc(D3D10_COUNTER_DESC* pDesc);
1230 }
1231 
1232 mixin(uuid!(ID3D10Device, "9B7E4C0F-342C-4106-A19F-4F2704F689F0"));
1233 extern (C++) interface ID3D10Device : IUnknown {
1234     void VSSetConstantBuffers(
1235         UINT StartSlot,
1236         UINT NumBuffers,
1237         const(ID3D10Buffer)* ppConstantBuffers);
1238 
1239     void PSSetShaderResources(
1240         UINT StartSlot,
1241         UINT NumViews,
1242         const(ID3D10ShaderResourceView)* ppShaderResourceViews);
1243 
1244     void PSSetShader(ID3D10PixelShader pPixelShader);
1245 
1246     void PSSetSamplers(
1247         UINT StartSlot,
1248         UINT NumSamplers,
1249         const(ID3D10SamplerState)* ppSamplers);
1250 
1251     void VSSetShader(ID3D10VertexShader* pVertexShader);
1252 
1253     void DrawIndexed(
1254         UINT IndexCount,
1255         UINT StartIndexLocation,
1256         INT BaseVertexLocation);
1257 
1258     void Draw(
1259         UINT VertexCount,
1260         UINT StartVertexLocation);
1261 
1262     void PSSetConstantBuffers(
1263         UINT StartSlot,
1264         UINT NumBuffers,
1265         const(ID3D10Buffer)* ppConstantBuffers);
1266 
1267     void IASetInputLayout(ID3D10InputLayout* pInputLayout);
1268 
1269     void IASetVertexBuffers(
1270         UINT StartSlot,
1271         UINT NumBuffers,
1272         const(ID3D10Buffer)* ppVertexBuffers,
1273         const(UINT)* pStrides,
1274         const(UINT)* pOffsets);
1275 
1276     void IASetIndexBuffer(
1277         ID3D10Buffer pIndexBuffer,
1278         DXGI_FORMAT Format,
1279         UINT Offset);
1280 
1281     void DrawIndexedInstanced(
1282         UINT IndexCountPerInstance,
1283         UINT InstanceCount,
1284         UINT StartIndexLocation,
1285         INT BaseVertexLocation,
1286         UINT StartInstanceLocation);
1287 
1288     void DrawInstanced(
1289         UINT VertexCountPerInstance,
1290         UINT InstanceCount,
1291         UINT StartVertexLocation,
1292         UINT StartInstanceLocation);
1293 
1294     void GSSetConstantBuffers(
1295         UINT StartSlot,
1296         UINT NumBuffers,
1297         const(ID3D10Buffer)* ppConstantBuffers);
1298 
1299     void GSSetShader(ID3D10GeometryShader pShader);
1300 
1301     void IASetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY Topology);
1302 
1303     void VSSetShaderResources(
1304         UINT StartSlot,
1305         UINT NumViews,
1306         const(ID3D10ShaderResourceView)* ppShaderResourceViews);
1307 
1308     void VSSetSamplers(
1309         UINT StartSlot,
1310         UINT NumSamplers,
1311         const(ID3D10SamplerState)* ppSamplers);
1312 
1313     void SetPredication(
1314         ID3D10Predicate pPredicate,
1315         BOOL PredicateValue);
1316 
1317     void GSSetShaderResources(
1318         UINT StartSlot,
1319         UINT NumViews,
1320         const(ID3D10ShaderResourceView)* ppShaderResourceViews);
1321 
1322     void GSSetSamplers(
1323         UINT StartSlot,
1324         UINT NumSamplers,
1325         const(ID3D10SamplerState)* ppSamplers);
1326 
1327     void OMSetRenderTargets(
1328         UINT NumViews,
1329         const(ID3D10RenderTargetView)* ppRenderTargetViews,
1330         ID3D10DepthStencilView* pDepthStencilView);
1331 
1332     void OMSetBlendState(
1333         ID3D10BlendState* pBlendState,
1334         const(FLOAT)[4] BlendFactor,
1335         UINT SampleMask);
1336 
1337     void OMSetDepthStencilState(
1338         ID3D10DepthStencilState *pDepthStencilState,
1339         UINT StencilRef);
1340 
1341     void SOSetTargets(
1342         UINT NumBuffers,
1343         const(ID3D10Buffer)* ppSOTargets,
1344         const(UINT)* pOffsets);
1345 
1346     void DrawAuto();
1347 
1348     void RSSetState(ID3D10RasterizerState pRasterizerState);
1349 
1350     void RSSetViewports(
1351         UINT NumViewports,
1352         const(D3D10_VIEWPORT)* pViewports);
1353 
1354     void RSSetScissorRects(
1355         UINT NumRects,
1356         const(D3D10_RECT)* pRects);
1357 
1358     void CopySubresourceRegion(
1359         ID3D10Resource pDstResource,
1360         UINT DstSubresource,
1361         UINT DstX,
1362         UINT DstY,
1363         UINT DstZ,
1364         ID3D10Resource pSrcResource,
1365         UINT SrcSubresource,
1366         const(D3D10_BOX)* pSrcBox);
1367 
1368     void CopyResource(
1369         ID3D10Resource pDstResource,
1370         ID3D10Resource pSrcResource);
1371 
1372     void UpdateSubresource(
1373         ID3D10Resource pDstResource,
1374         UINT DstSubresource,
1375         const(D3D10_BOX)* pDstBox,
1376         const(void)* pSrcData,
1377         UINT SrcRowPitch,
1378         UINT SrcDepthPitch);
1379 
1380     void ClearRenderTargetView(
1381         ID3D10RenderTargetView pRenderTargetView,
1382         const(FLOAT)[4] ColorRGBA);
1383 
1384     void ClearDepthStencilView(
1385         ID3D10DepthStencilView pDepthStencilView,
1386         UINT ClearFlags,
1387         FLOAT Depth,
1388         UINT8 Stencil);
1389 
1390     void GenerateMips(
1391         ID3D10ShaderResourceView pShaderResourceView);
1392 
1393     void ResolveSubresource(
1394         ID3D10Resource pDstResource,
1395         UINT DstSubresource,
1396         ID3D10Resource pSrcResource,
1397         UINT SrcSubresource,
1398         DXGI_FORMAT Format);
1399 
1400     void VSGetConstantBuffers(
1401         UINT StartSlot,
1402         UINT NumBuffers,
1403         ID3D10Buffer* ppConstantBuffers);
1404 
1405     void PSGetShaderResources(
1406         UINT StartSlot,
1407         UINT NumViews,
1408         ID3D10ShaderResourceView* ppShaderResourceViews);
1409 
1410     void PSGetShader(
1411         ID3D10PixelShader* ppPixelShader);
1412 
1413     void PSGetSamplers(
1414         UINT StartSlot,
1415         UINT NumSamplers,
1416         ID3D10SamplerState* ppSamplers);
1417 
1418     void VSGetShader(
1419         ID3D10VertexShader* ppVertexShader);
1420 
1421     void PSGetConstantBuffers(
1422         UINT StartSlot,
1423         UINT NumBuffers,
1424         ID3D10Buffer* ppConstantBuffers);
1425 
1426     void IAGetInputLayout(
1427         ID3D10InputLayout* ppInputLayout);
1428 
1429     void IAGetVertexBuffers(
1430         UINT StartSlot,
1431         UINT NumBuffers,
1432         ID3D10Buffer* ppVertexBuffers,
1433         UINT* pStrides,
1434         UINT* pOffsets);
1435 
1436     void IAGetIndexBuffer(
1437         ID3D10Buffer* pIndexBuffer,
1438         DXGI_FORMAT* Format,
1439         UINT* Offset);
1440 
1441     void GSGetConstantBuffers(
1442         UINT StartSlot,
1443         UINT NumBuffers,
1444         ID3D10Buffer* ppConstantBuffers);
1445 
1446     void GSGetShader(
1447         ID3D10GeometryShader* ppGeometryShader);
1448 
1449     void IAGetPrimitiveTopology(
1450         D3D10_PRIMITIVE_TOPOLOGY* pTopology);
1451 
1452     void VSGetShaderResources(
1453         UINT StartSlot,
1454         UINT NumViews,
1455         ID3D10ShaderResourceView* ppShaderResourceViews);
1456 
1457     void VSGetSamplers(
1458         UINT StartSlot,
1459         UINT NumSamplers,
1460         ID3D10SamplerState* ppSamplers);
1461 
1462     void GetPredication(
1463         ID3D10Predicate* ppPredicate,
1464         BOOL* pPredicateValue);
1465 
1466     void GSGetShaderResources(
1467         UINT StartSlot,
1468         UINT NumViews,
1469         ID3D10ShaderResourceView* ppShaderResourceViews);
1470 
1471     void GSGetSamplers(
1472         UINT StartSlot,
1473         UINT NumSamplers,
1474         ID3D10SamplerState* ppSamplers);
1475 
1476     void OMGetRenderTargets(
1477         UINT NumViews,
1478         ID3D10RenderTargetView* ppRenderTargetViews,
1479         ID3D10DepthStencilView* ppDepthStencilView);
1480 
1481     void OMGetBlendState(
1482         ID3D10BlendState* ppBlendState,
1483         FLOAT[4] BlendFactor,
1484         UINT* pSampleMask);
1485 
1486     void OMGetDepthStencilState(
1487           ID3D10DepthStencilState* ppDepthStencilState,
1488           UINT* pStencilRef);
1489 
1490     void SOGetTargets(
1491         UINT NumBuffers,
1492         ID3D10Buffer* ppSOTargets,
1493         UINT* pOffsets);
1494 
1495     void RSGetState(
1496         ID3D10RasterizerState* ppRasterizerState);
1497 
1498     void RSGetViewports(
1499         UINT* NumViewports,
1500         D3D10_VIEWPORT* pViewports);
1501 
1502     void RSGetScissorRects(
1503         UINT* NumRects,
1504         D3D10_RECT* pRects);
1505 
1506     HRESULT GetDeviceRemovedReason();
1507 
1508     HRESULT SetExceptionMode(
1509         UINT RaiseFlags);
1510 
1511     UINT GetExceptionMode();
1512 
1513     HRESULT GetPrivateData(
1514         REFGUID guid,
1515         UINT* pDataSize,
1516         void* pData);
1517 
1518     HRESULT SetPrivateData(
1519         REFGUID guid,
1520         UINT DataSize,
1521         const(void)* pData);
1522 
1523     HRESULT SetPrivateDataInterface(
1524         REFGUID guid,
1525         const IUnknown pData);
1526 
1527     void ClearState();
1528 
1529     void Flush();
1530 
1531     HRESULT CreateBuffer(
1532         const(D3D10_BUFFER_DESC)* pDesc,
1533         const(D3D10_SUBRESOURCE_DATA)* pInitialData,
1534         ID3D10Buffer* ppBuffer);
1535 
1536     HRESULT CreateTexture1D(
1537         const(D3D10_TEXTURE1D_DESC)* pDesc,
1538         const(D3D10_SUBRESOURCE_DATA)* pInitialData,
1539         ID3D10Texture1D* ppTexture1D);
1540 
1541     HRESULT CreateTexture2D(
1542         const(D3D10_TEXTURE2D_DESC)* pDesc,
1543         const(D3D10_SUBRESOURCE_DATA)* pInitialData,
1544         ID3D10Texture2D* ppTexture2D);
1545 
1546     HRESULT CreateTexture3D(
1547         const(D3D10_TEXTURE3D_DESC)* pDesc,
1548         const(D3D10_SUBRESOURCE_DATA)* pInitialData,
1549         ID3D10Texture3D* ppTexture3D);
1550 
1551     HRESULT CreateShaderResourceView(
1552         ID3D10Resource pResource,
1553         const(D3D10_SHADER_RESOURCE_VIEW_DESC)* pDesc,
1554         ID3D10ShaderResourceView* ppSRView);
1555 
1556     HRESULT CreateRenderTargetView(
1557         ID3D10Resource pResource,
1558         const(D3D10_RENDER_TARGET_VIEW_DESC)* pDesc,
1559         ID3D10RenderTargetView* ppRTView);
1560 
1561     HRESULT CreateDepthStencilView(
1562         ID3D10Resource pResource,
1563         const(D3D10_DEPTH_STENCIL_VIEW_DESC)* pDesc,
1564         ID3D10DepthStencilView* ppDepthStencilView);
1565 
1566     HRESULT CreateInputLayout(
1567         const(D3D10_INPUT_ELEMENT_DESC)* pInputElementDescs,
1568         UINT NumElements,
1569         const(void)* pShaderBytecodeWithInputSignature,
1570         SIZE_T BytecodeLength,
1571         ID3D10InputLayout* ppInputLayout);
1572 
1573     HRESULT CreateVertexShader(
1574         const(void)* pShaderBytecode,
1575         SIZE_T BytecodeLength,
1576         ID3D10VertexShader* ppVertexShader);
1577 
1578     HRESULT CreateGeometryShader(
1579         const(void)* pShaderBytecode,
1580         SIZE_T BytecodeLength,
1581         ID3D10GeometryShader* ppGeometryShader);
1582 
1583     HRESULT CreateGeometryShaderWithStreamOutput(
1584         const(void)* pShaderBytecode,
1585         SIZE_T BytecodeLength,
1586         const(D3D10_SO_DECLARATION_ENTRY)* pSODeclaration,
1587         UINT NumEntries,
1588         UINT OutputStreamStride,
1589         ID3D10GeometryShader* ppGeometryShader);
1590 
1591     HRESULT CreatePixelShader(
1592         const(void)* pShaderBytecode,
1593         SIZE_T BytecodeLength,
1594         ID3D10PixelShader* ppPixelShader);
1595 
1596     HRESULT CreateBlendState(
1597         const(D3D10_BLEND_DESC)* pBlendStateDesc,
1598         ID3D10BlendState* ppBlendState);
1599 
1600     HRESULT CreateDepthStencilState(
1601         const(D3D10_DEPTH_STENCIL_DESC)* pDepthStencilDesc,
1602         ID3D10DepthStencilState* ppDepthStencilState);
1603 
1604     HRESULT CreateRasterizerState(
1605         const(D3D10_RASTERIZER_DESC)* pRasterizerDesc,
1606         ID3D10RasterizerState* ppRasterizerState);
1607 
1608     HRESULT CreateSamplerState(
1609         const(D3D10_SAMPLER_DESC)* pSamplerDesc,
1610         ID3D10SamplerState* ppSamplerState);
1611 
1612     HRESULT CreateQuery(
1613         const(D3D10_QUERY_DESC)* pQueryDesc,
1614         ID3D10Query* ppQuery);
1615 
1616     HRESULT CreatePredicate(
1617         const(D3D10_QUERY_DESC)* pPredicateDesc,
1618         ID3D10Predicate* ppPredicate);
1619 
1620     HRESULT CreateCounter(
1621         const(D3D10_COUNTER_DESC)* pCounterDesc,
1622         ID3D10Counter* ppCounter);
1623 
1624     HRESULT CheckFormatSupport(
1625         DXGI_FORMAT Format,
1626         UINT* pFormatSupport);
1627 
1628     HRESULT CheckMultisampleQualityLevels(
1629         DXGI_FORMAT Format,
1630         UINT SampleCount,
1631         UINT* pNumQualityLevels);
1632 
1633     void CheckCounterInfo(
1634         D3D10_COUNTER_INFO* pCounterInfo);
1635 
1636     HRESULT CheckCounter(
1637         const(D3D10_COUNTER_DESC)* pDesc,
1638         D3D10_COUNTER_TYPE* pType,
1639         UINT* pActiveCounters,
1640         LPSTR szName,
1641         UINT* pNameLength,
1642         LPSTR szUnits,
1643         UINT* pUnitsLength,
1644         LPSTR szDescription,
1645         UINT* pDescriptionLength);
1646 
1647     UINT GetCreationFlags();
1648 
1649     HRESULT OpenSharedResource(
1650         HANDLE hResource,
1651         REFIID ReturnedInterface,
1652         void** ppResource);
1653 
1654     void SetTextFilterSize(
1655         UINT Width,
1656         UINT Height);
1657 
1658     void GetTextFilterSize(
1659         UINT* pWidth,
1660         UINT* pHeight);
1661 
1662 }
1663 
1664 mixin(uuid!(ID3D10Multithread, "9B7E4E00-342C-4106-A19F-4F2704F689F0"));
1665 extern (C++) interface ID3D10Multithread : IUnknown {
1666     void Enter();
1667     void Leave();
1668     BOOL SetMultithreadProtected(BOOL bMTProtect);
1669     BOOL GetMultithreadProtected();
1670 }
1671 
1672 alias DWORD D3D10_CREATE_DEVICE_FLAG;
1673 enum : D3D10_CREATE_DEVICE_FLAG
1674 {
1675     D3D10_CREATE_DEVICE_SINGLETHREADED  = 0x1,
1676     D3D10_CREATE_DEVICE_DEBUG   = 0x2,
1677     D3D10_CREATE_DEVICE_SWITCH_TO_REF   = 0x4,
1678     D3D10_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS        = 0x8,
1679     D3D10_CREATE_DEVICE_ALLOW_NULL_FROM_MAP     = 0x10,
1680     D3D10_CREATE_DEVICE_BGRA_SUPPORT    = 0x20,
1681     D3D10_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY   = 0x80,
1682     D3D10_CREATE_DEVICE_STRICT_VALIDATION       = 0x200,
1683     D3D10_CREATE_DEVICE_DEBUGGABLE      = 0x400
1684 }
1685 
1686 enum D3D10_SDK_VERSION = ( 29 );