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