root/trunk/win32/directx/d3d10.d

Revision 346, 46.3 kB (checked in by CyberShadow, 2 years ago)

Committing part of SHOO's patch from ticket #3

Line 
1 /***********************************************************************\
2 *                                 d3d10.d                               *
3 *                                                                       *
4 *                       Windows API header module                       *
5 *                                                                       *
6 *                       Placed into public domain                       *
7 \***********************************************************************/
8 module win32.directx.d3d10;
9
10 private import win32.windows;
11
12 public import win32.directx.dxgitype;
13 public import win32.directx.dxgi;
14 public import win32.directx.d3d10misc;
15
16 pragma(lib, "d3d10.lib");
17
18 const D3D10_16BIT_INDEX_STRIP_CUT_VALUE = 0xffff;
19 const D3D10_32BIT_INDEX_STRIP_CUT_VALUE = 0xffffffff;
20 const D3D10_8BIT_INDEX_STRIP_CUT_VALUE = 0xff;
21 const D3D10_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT = 9;
22 const D3D10_CLIP_OR_CULL_DISTANCE_COUNT = 8;
23 const D3D10_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT = 2;
24 const D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT = 14;
25 const D3D10_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS = 4;
26 const D3D10_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT = 32;
27 const D3D10_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT = 15;
28 const D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
29 const D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT = 15;
30 const D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
31 const D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
32 const D3D10_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT = 64;
33 const D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
34 const D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT = 1;
35 const D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
36 const D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
37 const D3D10_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT = 32;
38 const D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS = 1;
39 const D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT = 128;
40 const D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST = 1;
41 const D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS = 1;
42 const D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT = 128;
43 const D3D10_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS = 1;
44 const D3D10_COMMONSHADER_SAMPLER_REGISTER_COUNT = 16;
45 const D3D10_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST = 1;
46 const D3D10_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS = 1;
47 const D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT = 16;
48 const D3D10_COMMONSHADER_SUBROUTINE_NESTING_LIMIT = 32;
49 const D3D10_COMMONSHADER_TEMP_REGISTER_COMPONENTS = 4;
50 const D3D10_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT = 32;
51 const D3D10_COMMONSHADER_TEMP_REGISTER_COUNT = 4096;
52 const D3D10_COMMONSHADER_TEMP_REGISTER_READS_PER_INST = 3;
53 const D3D10_COMMONSHADER_TEMP_REGISTER_READ_PORTS = 3;
54 const D3D10_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX = 10;
55 const D3D10_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN = -10;
56 const D3D10_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE = -8;
57 const D3D10_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE = 7;
58 const D3D10_DEFAULT_BLEND_FACTOR_ALPHA = 1.0f;
59 const D3D10_DEFAULT_BLEND_FACTOR_BLUE = 1.0f;
60 const D3D10_DEFAULT_BLEND_FACTOR_GREEN = 1.0f;
61 const D3D10_DEFAULT_BLEND_FACTOR_RED = 1.0f;
62 const D3D10_DEFAULT_BORDER_COLOR_COMPONENT = 0.0f;
63 const D3D10_DEFAULT_DEPTH_BIAS = 0;
64 const D3D10_DEFAULT_DEPTH_BIAS_CLAMP = 0.0f;
65 const D3D10_DEFAULT_MAX_ANISOTROPY = 16.0f;
66 const D3D10_DEFAULT_MIP_LOD_BIAS = 0.0f;
67 const D3D10_DEFAULT_RENDER_TARGET_ARRAY_INDEX = 0;
68 const D3D10_DEFAULT_SAMPLE_MASK = 0xffffffff;
69 const D3D10_DEFAULT_SCISSOR_ENDX = 0;
70 const D3D10_DEFAULT_SCISSOR_ENDY = 0;
71 const D3D10_DEFAULT_SCISSOR_STARTX = 0;
72 const D3D10_DEFAULT_SCISSOR_STARTY = 0;
73 const D3D10_DEFAULT_SLOPE_SCALED_DEPTH_BIAS = 0.0f;
74 const D3D10_DEFAULT_STENCIL_READ_MASK = 0xff;
75 const D3D10_DEFAULT_STENCIL_REFERENCE = 0;
76 const D3D10_DEFAULT_STENCIL_WRITE_MASK = 0xff;
77 const D3D10_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX = 0;
78 const D3D10_DEFAULT_VIEWPORT_HEIGHT = 0;
79 const D3D10_DEFAULT_VIEWPORT_MAX_DEPTH = 0.0f;
80 const D3D10_DEFAULT_VIEWPORT_MIN_DEPTH = 0.0f;
81 const D3D10_DEFAULT_VIEWPORT_TOPLEFTX = 0;
82 const D3D10_DEFAULT_VIEWPORT_TOPLEFTY = 0;
83 const D3D10_DEFAULT_VIEWPORT_WIDTH = 0;
84 const D3D10_FLOAT16_FUSED_TOLERANCE_IN_ULP = 0.6;
85 const D3D10_FLOAT32_MAX = 3.402823466e+38f;
86 const D3D10_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP = 0.6f;
87 const D3D10_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR = 2.4f;
88 const D3D10_FLOAT_TO_SRGB_EXPONENT_NUMERATOR = 1.0f;
89 const D3D10_FLOAT_TO_SRGB_OFFSET = 0.055f;
90 const D3D10_FLOAT_TO_SRGB_SCALE_1 = 12.92f;
91 const D3D10_FLOAT_TO_SRGB_SCALE_2 = 1.055f;
92 const D3D10_FLOAT_TO_SRGB_THRESHOLD = 0.0031308f;
93 const D3D10_FTOI_INSTRUCTION_MAX_INPUT = 2147483647.999f;
94 const D3D10_FTOI_INSTRUCTION_MIN_INPUT = -2147483648.999f;
95 const D3D10_FTOU_INSTRUCTION_MAX_INPUT = 4294967295.999f;
96 const D3D10_FTOU_INSTRUCTION_MIN_INPUT = 0.0f;
97 const D3D10_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS = 1;
98 const D3D10_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT = 32;
99 const D3D10_GS_INPUT_PRIM_CONST_REGISTER_COUNT = 1;
100 const D3D10_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST = 2;
101 const D3D10_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS = 1;
102 const D3D10_GS_INPUT_REGISTER_COMPONENTS = 4;
103 const D3D10_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
104 const D3D10_GS_INPUT_REGISTER_COUNT = 16;
105 const D3D10_GS_INPUT_REGISTER_READS_PER_INST = 2;
106 const D3D10_GS_INPUT_REGISTER_READ_PORTS = 1;
107 const D3D10_GS_INPUT_REGISTER_VERTICES = 6;
108 const D3D10_GS_OUTPUT_ELEMENTS = 32;
109 const D3D10_GS_OUTPUT_REGISTER_COMPONENTS = 4;
110 const D3D10_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
111 const D3D10_GS_OUTPUT_REGISTER_COUNT = 32;
112 const D3D10_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES = 0;
113 const D3D10_IA_DEFAULT_PRIMITIVE_TOPOLOGY = 0;
114 const D3D10_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES = 0;
115 const D3D10_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT = 1;
116 const D3D10_IA_INSTANCE_ID_BIT_COUNT = 32;
117 const D3D10_IA_INTEGER_ARITHMETIC_BIT_COUNT = 32;
118 const D3D10_IA_PRIMITIVE_ID_BIT_COUNT = 32;
119 const D3D10_IA_VERTEX_ID_BIT_COUNT = 32;
120 const D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT = 16;
121 const D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS = 64;
122 const D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT = 16;
123 const D3D10_INTEGER_DIVIDE_BY_ZERO_QUOTIENT = 0xffffffff;
124 const D3D10_INTEGER_DIVIDE_BY_ZERO_REMAINDER = 0xffffffff;
125 const D3D10_LINEAR_GAMMA = 1.0f;
126 const D3D10_MAX_BORDER_COLOR_COMPONENT = 1.0f;
127 const D3D10_MAX_DEPTH = 1.0f;
128 const D3D10_MAX_MAXANISOTROPY = 16;
129 const D3D10_MAX_MULTISAMPLE_SAMPLE_COUNT = 32;
130 const D3D10_MAX_POSITION_VALUE = 3.402823466e+34f;
131 const D3D10_MAX_TEXTURE_DIMENSION_2_TO_EXP = 17;
132 const D3D10_MIN_BORDER_COLOR_COMPONENT = 0.0f;
133 const D3D10_MIN_DEPTH = 0.0f;
134 const D3D10_MIN_MAXANISOTROPY = 0;
135 const D3D10_MIP_LOD_BIAS_MAX = 15.99f;
136 const D3D10_MIP_LOD_BIAS_MIN = -16.0f;
137 const D3D10_MIP_LOD_FRACTIONAL_BIT_COUNT = 6;
138 const D3D10_MIP_LOD_RANGE_BIT_COUNT = 8;
139 const D3D10_MULTISAMPLE_ANTIALIAS_LINE_WIDTH = 1.4f;
140 const D3D10_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT = 0;
141 const D3D10_PIXEL_ADDRESS_RANGE_BIT_COUNT = 13;
142 const D3D10_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT = 15;
143 const D3D10_PS_FRONTFACING_DEFAULT_VALUE = 0xffffffff;
144 const D3D10_PS_FRONTFACING_FALSE_VALUE = 0;
145 const D3D10_PS_FRONTFACING_TRUE_VALUE = 0xffffffff;
146 const D3D10_PS_INPUT_REGISTER_COMPONENTS = 4;
147 const D3D10_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
148 const D3D10_PS_INPUT_REGISTER_COUNT = 32;
149 const D3D10_PS_INPUT_REGISTER_READS_PER_INST = 2;
150 const D3D10_PS_INPUT_REGISTER_READ_PORTS = 1;
151 const D3D10_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT = 0.0f;
152 const D3D10_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS = 1;
153 const D3D10_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT = 32;
154 const D3D10_PS_OUTPUT_DEPTH_REGISTER_COUNT = 1;
155 const D3D10_PS_OUTPUT_REGISTER_COMPONENTS = 4;
156 const D3D10_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
157 const D3D10_PS_OUTPUT_REGISTER_COUNT = 8;
158 const D3D10_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT = 0.5f;
159 const D3D10_REQ_BLEND_OBJECT_COUNT_PER_CONTEXT = 4096;
160 const D3D10_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = 27;
161 const D3D10_REQ_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
162 const D3D10_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_CONTEXT = 4096;
163 const D3D10_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 32;
164 const D3D10_REQ_DRAW_VERTEX_COUNT_2_TO_EXP = 32;
165 const D3D10_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION = 8192;
166 const D3D10_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT = 1024;
167 const D3D10_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
168 const D3D10_REQ_MAXANISOTROPY = 16;
169 const D3D10_REQ_MIP_LEVELS = 14;
170 const D3D10_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES = 2048;
171 const D3D10_REQ_RASTERIZER_OBJECT_COUNT_PER_CONTEXT = 4096;
172 const D3D10_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH = 8192;
173 const D3D10_REQ_RESOURCE_SIZE_IN_MEGABYTES = 128;
174 const D3D10_REQ_RESOURCE_VIEW_COUNT_PER_CONTEXT_2_TO_EXP = 20;
175 const D3D10_REQ_SAMPLER_OBJECT_COUNT_PER_CONTEXT = 4096;
176 const D3D10_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION = 512;
177 const D3D10_REQ_TEXTURE1D_U_DIMENSION = 8192;
178 const D3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION = 512;
179 const D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION = 8192;
180 const D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = 2048;
181 const D3D10_REQ_TEXTURECUBE_DIMENSION = 8192;
182 const D3D10_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL = 0;
183 const D3D10_SHADER_MAJOR_VERSION = 4;
184 const D3D10_SHADER_MINOR_VERSION = 0;
185 const D3D10_SHIFT_INSTRUCTION_PAD_VALUE = 0;
186 const D3D10_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT = 5;
187 const D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT = 8;
188 const D3D10_SO_BUFFER_MAX_STRIDE_IN_BYTES = 2048;
189 const D3D10_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES = 256;
190 const D3D10_SO_BUFFER_SLOT_COUNT = 4;
191 const D3D10_SO_DDI_REGISTER_INDEX_DENOTING_GAP = 0xffffffff;
192 const D3D10_SO_MULTIPLE_BUFFER_ELEMENTS_PER_BUFFER = 1;
193 const D3D10_SO_SINGLE_BUFFER_COMPONENT_LIMIT = 64;
194 const D3D10_SRGB_GAMMA = 2.2f;
195 const D3D10_SRGB_TO_FLOAT_DENOMINATOR_1 = 12.92f;
196 const D3D10_SRGB_TO_FLOAT_DENOMINATOR_2 = 1.055f;
197 const D3D10_SRGB_TO_FLOAT_EXPONENT = 2.4f;
198 const D3D10_SRGB_TO_FLOAT_OFFSET = 0.055f;
199 const D3D10_SRGB_TO_FLOAT_THRESHOLD = 0.04045f;
200 const D3D10_SRGB_TO_FLOAT_TOLERANCE_IN_ULP = 0.5f;
201 const D3D10_STANDARD_COMPONENT_BIT_COUNT = 32;
202 const D3D10_STANDARD_COMPONENT_BIT_COUNT_DOUBLED = 64;
203 const D3D10_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = 4;
204 const D3D10_STANDARD_PIXEL_COMPONENT_COUNT = 128;
205 const D3D10_STANDARD_PIXEL_ELEMENT_COUNT = 32;
206 const D3D10_STANDARD_VECTOR_SIZE = 4;
207 const D3D10_STANDARD_VERTEX_ELEMENT_COUNT = 16;
208 const D3D10_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT = 64;
209 const D3D10_SUBPIXEL_FRACTIONAL_BIT_COUNT = 8;
210 const D3D10_SUBTEXEL_FRACTIONAL_BIT_COUNT = 6;
211 const D3D10_TEXEL_ADDRESS_RANGE_BIT_COUNT = 18;
212 const D3D10_UNBOUND_MEMORY_ACCESS_RESULT = 0;
213 const D3D10_VIEWPORT_AND_SCISSORRECT_MAX_INDEX = 15;
214 const D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = 16;
215 const D3D10_VIEWPORT_BOUNDS_MAX = 16383;
216 const D3D10_VIEWPORT_BOUNDS_MIN = -16384;
217 const D3D10_VS_INPUT_REGISTER_COMPONENTS = 4;
218 const D3D10_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
219 const D3D10_VS_INPUT_REGISTER_COUNT = 16;
220 const D3D10_VS_INPUT_REGISTER_READS_PER_INST = 2;
221 const D3D10_VS_INPUT_REGISTER_READ_PORTS = 1;
222 const D3D10_VS_OUTPUT_REGISTER_COMPONENTS = 4;
223 const D3D10_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
224 const D3D10_VS_OUTPUT_REGISTER_COUNT = 16;
225 const D3D10_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT = 10;
226 const D3D10_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 25;
227 const D3D10_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP = 25;
228 const D3D_MAJOR_VERSION = 10;
229 const D3D_MINOR_VERSION = 0;
230 const D3D_SPEC_DATE_DAY = 8;
231 const D3D_SPEC_DATE_MONTH = 8;
232 const D3D_SPEC_DATE_YEAR = 2006;
233 const D3D_SPEC_VERSION = 1.050005;
234
235 const _FACD3D10 = 0x879;
236 const _FACD3D10DEBUG = _FACD3D10 + 1;
237
238 HRESULT MAKE_D3D10_HRESULT(T)(T code) {
239     return MAKE_HRESULT(1, _FACD3D10, code);
240 }
241
242 HRESULT MAKE_D3D10_STATUS(T)(T code) {
243     return MAKE_HRESULT(0, _FACD3D10, code);
244 }
245
246 const D3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS = MAKE_D3D10_HRESULT(1);
247 const D3D10_ERROR_FILE_NOT_FOUND = MAKE_D3D10_HRESULT(2);
248
249 enum D3D10_INPUT_CLASSIFICATION {
250     D3D10_INPUT_PER_VERTEX_DATA     = 0,
251     D3D10_INPUT_PER_INSTANCE_DATA   = 1
252 }
253
254 const D3D10_APPEND_ALIGNED_ELEMENT = 0xffffffff;
255
256 struct D3D10_INPUT_ELEMENT_DESC {
257     LPCSTR SemanticName;
258     UINT SemanticIndex;
259     DXGI_FORMAT Format;
260     UINT InputSlot;
261     UINT AlignedByteOffset;
262     D3D10_INPUT_CLASSIFICATION InputSlotClass;
263     UINT InstanceDataStepRate;
264 }
265
266 enum D3D10_FILL_MODE {
267     D3D10_FILL_WIREFRAME    = 2,
268     D3D10_FILL_SOLID        = 3
269 }
270
271 enum D3D10_PRIMITIVE_TOPOLOGY {
272     D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED          = 0,
273     D3D10_PRIMITIVE_TOPOLOGY_POINTLIST          = 1,
274     D3D10_PRIMITIVE_TOPOLOGY_LINELIST           = 2,
275     D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP          = 3,
276     D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST       = 4,
277     D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP      = 5,
278     D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ       = 10,
279     D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ      = 11,
280     D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ   = 12,
281     D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ  = 13
282 }
283
284 enum D3D10_PRIMITIVE {
285     D3D10_PRIMITIVE_UNDEFINED   = 0,
286     D3D10_PRIMITIVE_POINT   = 1,
287     D3D10_PRIMITIVE_LINE    = 2,
288     D3D10_PRIMITIVE_TRIANGLE    = 3,
289     D3D10_PRIMITIVE_LINE_ADJ    = 6,
290     D3D10_PRIMITIVE_TRIANGLE_ADJ    = 7
291 }
292
293 enum D3D10_CULL_MODE {
294     D3D10_CULL_NONE = 1,
295     D3D10_CULL_FRONT,
296     D3D10_CULL_BACK
297 }
298
299 struct D3D10_SO_DECLARATION_ENTRY {
300     LPCSTR SemanticName;
301     UINT SemanticIndex;
302     BYTE StartComponent;
303     BYTE ComponentCount;
304     BYTE OutputSlot;
305 }
306
307 struct D3D10_VIEWPORT {
308     INT TopLeftX;
309     INT TopLeftY;
310     UINT Width;
311     UINT Height;
312     FLOAT MinDepth;
313     FLOAT MaxDepth;
314 }
315
316 enum D3D10_RESOURCE_DIMENSION {
317     D3D10_RESOURCE_DIMENSION_UNKNOWN    = 0,
318     D3D10_RESOURCE_DIMENSION_BUFFER,
319     D3D10_RESOURCE_DIMENSION_TEXTURE1D,
320     D3D10_RESOURCE_DIMENSION_TEXTURE2D,
321     D3D10_RESOURCE_DIMENSION_TEXTURE3D
322 }
323
324 enum D3D10_SRV_DIMENSION {
325     D3D10_SRV_DIMENSION_UNKNOWN = 0,
326     D3D10_SRV_DIMENSION_BUFFER,
327     D3D10_SRV_DIMENSION_TEXTURE1D,
328     D3D10_SRV_DIMENSION_TEXTURE1DARRAY,
329     D3D10_SRV_DIMENSION_TEXTURE2D,
330     D3D10_SRV_DIMENSION_TEXTURE2DARRAY,
331     D3D10_SRV_DIMENSION_TEXTURE2DMS,
332     D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY,
333     D3D10_SRV_DIMENSION_TEXTURE3D,
334     D3D10_SRV_DIMENSION_TEXTURECUBE
335 }
336
337 enum D3D10_DSV_DIMENSION {
338     D3D10_DSV_DIMENSION_UNKNOWN = 0,
339     D3D10_DSV_DIMENSION_TEXTURE1D,
340     D3D10_DSV_DIMENSION_TEXTURE1DARRAY,
341     D3D10_DSV_DIMENSION_TEXTURE2D,
342     D3D10_DSV_DIMENSION_TEXTURE2DARRAY,
343     D3D10_DSV_DIMENSION_TEXTURE2DMS,
344     D3D10_DSV_DIMENSION_TEXTURE2DMSARRAY6
345 }
346
347 enum D3D10_RTV_DIMENSION {
348     D3D10_RTV_DIMENSION_UNKNOWN = 0,
349     D3D10_RTV_DIMENSION_BUFFER,
350     D3D10_RTV_DIMENSION_TEXTURE1D,
351     D3D10_RTV_DIMENSION_TEXTURE1DARRAY,
352     D3D10_RTV_DIMENSION_TEXTURE2D,
353     D3D10_RTV_DIMENSION_TEXTURE2DARRAY,
354     D3D10_RTV_DIMENSION_TEXTURE2DMS,
355     D3D10_RTV_DIMENSION_TEXTURE2DMSARRAY,
356     D3D10_RTV_DIMENSION_TEXTURE3D
357 }
358
359 enum D3D10_USAGE {
360     D3D10_USAGE_DEFAULT = 0,
361     D3D10_USAGE_IMMUTABLE,
362     D3D10_USAGE_DYNAMIC,
363     D3D10_USAGE_STAGING
364 }
365
366 enum D3D10_BIND_FLAG {
367     D3D10_BIND_VERTEX_BUFFER    = 0x01,
368     D3D10_BIND_INDEX_BUFFER     = 0x02,
369     D3D10_BIND_CONSTANT_BUFFER  = 0x04,
370     D3D10_BIND_SHADER_RESOURCE  = 0x08,
371     D3D10_BIND_STREAM_OUTPUT    = 0x10,
372     D3D10_BIND_RENDER_TARGET    = 0x20,
373     D3D10_BIND_DEPTH_STENCIL    = 0x40
374 }
375
376 enum D3D10_CPU_ACCESS_FLAG {
377     D3D10_CPU_ACCESS_WRITE  = 0x10000,
378     D3D10_CPU_ACCESS_READ   = 0x20000
379 }
380
381 enum D3D10_RESOURCE_MISC_FLAG {
382     D3D10_RESOURCE_MISC_GENERATE_MIPS   = 0x01,
383     D3D10_RESOURCE_MISC_SHARED          = 0x02,
384     D3D10_RESOURCE_MISC_TEXTURECUBE     = 0x04
385 }
386
387 enum D3D10_MAP {
388     D3D10_MAP_READ = 1,
389     D3D10_MAP_WRITE,
390     D3D10_MAP_READ_WRITE,
391     D3D10_MAP_WRITE_DISCARD,
392     D3D10_MAP_WRITE_NO_OVERWRITE
393 }
394
395 enum D3D10_MAP_FLAG {
396     D3D10_MAP_FLAG_DO_NOT_WAIT = 0x100000
397 }
398
399 enum D3D10_RAISE_FLAG {
400     D3D10_RAISE_FLAG_DRIVER_INTERNAL_ERROR = 0x01
401 }
402
403 enum D3D10_CLEAR_FLAG {
404     D3D10_CLEAR_DEPTH   = 0x01,
405     D3D10_CLEAR_STENCIL = 0x02
406 }
407
408 alias RECT D3D10_RECT;
409
410 struct D3D10_BOX {
411     UINT left;
412     UINT top;
413     UINT front;
414     UINT right;
415     UINT bottom;
416     UINT back;
417 }
418
419 extern (Windows) interface ID3D10DeviceChild : IUnknown {
420     //extern(Windows) :
421     void GetDevice(ID3D10Device* ppDevice);
422     HRESULT GetPrivateData(REFGUID guid, UINT *pDataSize, void *pData);
423     HRESULT SetPrivateData(REFGUID guid, UINT DataSize, void *pData);
424     HRESULT SetPrivateDataInterface(REFGUID guid, IUnknown pData);
425 }
426
427 enum D3D10_COMPARISON_FUNC {
428     D3D10_COMPARISON_NEVER = 1,
429     D3D10_COMPARISON_LESS,
430     D3D10_COMPARISON_EQUAL,
431     D3D10_COMPARISON_LESS_EQUAL,
432     D3D10_COMPARISON_GREATER,
433     D3D10_COMPARISON_NOT_EQUAL,
434     D3D10_COMPARISON_GREATER_EQUAL,
435     D3D10_COMPARISON_ALWAYS
436 }
437
438 enum D3D10_DEPTH_WRITE_MASK {
439     D3D10_DEPTH_WRITE_MASK_ZERO = 0,
440     D3D10_DEPTH_WRITE_MASK_ALL
441 }
442
443 enum D3D10_STENCIL_OP {
444     D3D10_STENCIL_OP_KEEP = 1,
445     D3D10_STENCIL_OP_ZERO,
446     D3D10_STENCIL_OP_REPLACE,
447     D3D10_STENCIL_OP_INCR_SAT,
448     D3D10_STENCIL_OP_DECR_SAT,
449     D3D10_STENCIL_OP_INVERT,
450     D3D10_STENCIL_OP_INCR,
451     D3D10_STENCIL_OP_DECR
452 }
453
454 struct D3D10_DEPTH_STENCILOP_DESC {
455     D3D10_STENCIL_OP StencilFailOp;
456     D3D10_STENCIL_OP StencilDepthFailOp;
457     D3D10_STENCIL_OP StencilPassOp;
458     D3D10_COMPARISON_FUNC StencilFunc;
459 }
460
461 struct D3D10_DEPTH_STENCIL_DESC {
462     BOOL DepthEnable;
463     D3D10_DEPTH_WRITE_MASK DepthWriteMask;
464     D3D10_COMPARISON_FUNC DepthFunc;
465     BOOL StencilEnable;
466     UINT8 StencilReadMask;
467     UINT8 StencilWriteMask;
468     D3D10_DEPTH_STENCILOP_DESC FrontFace;
469     D3D10_DEPTH_STENCILOP_DESC BackFace;
470 }
471
472 interface ID3D10DepthStencilState : ID3D10DeviceChild {
473     extern(Windows) :
474     void GetDesc(D3D10_DEPTH_STENCIL_DESC *pDesc);
475 }
476
477 enum D3D10_BLEND {
478     D3D10_BLEND_ZERO            = 1,
479     D3D10_BLEND_ONE             = 2,
480     D3D10_BLEND_SRC_COLOR       = 3,
481     D3D10_BLEND_INV_SRC_COLOR   = 4,
482     D3D10_BLEND_SRC_ALPHA       = 5,
483     D3D10_BLEND_INV_SRC_ALPHA   = 6,
484     D3D10_BLEND_DEST_ALPHA      = 7,
485     D3D10_BLEND_INV_DEST_ALPHA  = 8,
486     D3D10_BLEND_DEST_COLOR      = 9,
487     D3D10_BLEND_INV_DEST_COLOR  = 10,
488     D3D10_BLEND_SRC_ALPHA_SAT   = 11,
489     D3D10_BLEND_BLEND_FACTOR    = 14,
490     D3D10_BLEND_INV_BLEND_FACTOR    = 15,
491     D3D10_BLEND_SRC1_COLOR      = 16,
492     D3D10_BLEND_INV_SRC1_COLOR  = 17,
493     D3D10_BLEND_SRC1_ALPHA      = 18,
494     D3D10_BLEND_INV_SRC1_ALPHA  = 19
495 }
496
497 enum D3D10_BLEND_OP {
498     D3D10_BLEND_OP_ADD = 1,
499     D3D10_BLEND_OP_SUBTRACT,
500     D3D10_BLEND_OP_REV_SUBTRACT,
501     D3D10_BLEND_OP_MIN,
502     D3D10_BLEND_OP_MAX
503 }
504
505 enum D3D10_COLOR_WRITE_ENABLE {
506     D3D10_COLOR_WRITE_ENABLE_RED    = 1,
507     D3D10_COLOR_WRITE_ENABLE_GREEN  = 2,
508     D3D10_COLOR_WRITE_ENABLE_BLUE   = 4,
509     D3D10_COLOR_WRITE_ENABLE_ALPHA  = 8,
510     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)
511 }
512
513 struct D3D10_BLEND_DESC {
514     BOOL AlphaToCoverageEnable;
515     BOOL[8] BlendEnable;
516     D3D10_BLEND SrcBlend;
517     D3D10_BLEND DestBlend;
518     D3D10_BLEND_OP BlendOp;
519     D3D10_BLEND SrcBlendAlpha;
520     D3D10_BLEND DestBlendAlpha;
521     D3D10_BLEND_OP BlendOpAlpha;
522     UINT8[8] RenderTargetWriteMask;
523 }
524
525 interface ID3D10BlendState : ID3D10DeviceChild {
526     extern(Windows) :
527     void GetDesc(D3D10_BLEND_DESC *pDesc);
528 }
529
530 struct D3D10_RASTERIZER_DESC {
531     D3D10_FILL_MODE FillMode;
532     D3D10_CULL_MODE CullMode;
533     BOOL FrontCounterClockwise;
534     INT DepthBias;
535     FLOAT DepthBiasClamp;
536     FLOAT SlopeScaledDepthBias;
537     BOOL DepthClipEnable;
538     BOOL ScissorEnable;
539     BOOL MultisampleEnable;
540     BOOL AntialiasedLineEnable;
541 }
542
543 interface ID3D10RasterizerState : ID3D10DeviceChild {
544     extern(Windows) :
545     void GetDesc(D3D10_RASTERIZER_DESC *pDesc);
546 }
547
548 UINT D3D10CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT MipLevels) {
549     return MipSlice + ArraySlice * MipLevels;
550 }
551
552 struct D3D10_SUBRESOURCE_DATA {
553     void *pSysMem;
554     UINT SysMemPitch;
555     UINT SysMemSlicePitch;
556 }
557
558 interface ID3D10Resource : ID3D10DeviceChild {
559     extern(Windows) :
560     void GetType(D3D10_RESOURCE_DIMENSION *rType);
561     void SetEvictionPriority(UINT EvictionPriority);
562     UINT GetEvictionPriority();
563 }
564
565 struct D3D10_BUFFER_DESC {
566     UINT ByteWidth;
567     D3D10_USAGE Usage;
568     UINT BindFlags;
569     UINT CPUAccessFlags;
570     UINT MiscFlags;
571 }
572
573 interface ID3D10Buffer : ID3D10Resource {
574     extern(Windows) :
575     HRESULT Map(D3D10_MAP MapType, UINT MapFlags, void **ppData);
576     void Unmap();
577     void GetDesc(D3D10_BUFFER_DESC *pDesc);
578 }
579
580 struct D3D10_TEXTURE1D_DESC {
581     UINT Width;
582     UINT MipLevels;
583     UINT ArraySize;
584     DXGI_FORMAT Format;
585     D3D10_USAGE Usage;
586     UINT BindFlags;
587     UINT CPUAccessFlags;
588     UINT MiscFlags;
589 }
590
591 interface ID3D10Texture1D : ID3D10Resource {
592     extern(Windows) :
593     HRESULT Map(UINT Subresource, D3D10_MAP MapType, UINT MapFlags, void **ppData);
594     void Unmap(UINT Subresource);
595     void GetDesc(D3D10_TEXTURE1D_DESC *pDesc);
596 }
597
598 struct D3D10_TEXTURE2D_DESC {
599     UINT Width;
600     UINT Height;
601     UINT MipLevels;
602     UINT ArraySize;
603     DXGI_FORMAT Format;
604     DXGI_SAMPLE_DESC SampleDesc;
605     D3D10_USAGE Usage;
606     UINT BindFlags;
607     UINT CPUAccessFlags;
608     UINT MiscFlags;
609 }
610
611 struct D3D10_MAPPED_TEXTURE2D {
612     void *pData;
613     UINT RowPitch;
614 }
615
616 interface ID3D10Texture2D : ID3D10Resource {
617     extern(Windows) :
618     HRESULT Map(UINT Subresource, D3D10_MAP MapType, UINT MapFlags, D3D10_MAPPED_TEXTURE2D *pMappedTex2D);
619     void Unmap(UINT Subresource);
620     void GetDesc(D3D10_TEXTURE2D_DESC *pDesc);
621 }
622
623 struct D3D10_TEXTURE3D_DESC {
624     UINT Width;
625     UINT Height;
626     UINT Depth;
627     UINT MipLevels;
628     DXGI_FORMAT Format;
629     D3D10_USAGE Usage;
630     UINT BindFlags;
631     UINT CPUAccessFlags;
632     UINT MiscFlags;
633 }
634
635 struct D3D10_MAPPED_TEXTURE3D {
636     void *pData;
637     UINT RowPitch;
638     UINT DepthPitch;
639 }
640
641 interface ID3D10Texture3D : ID3D10Resource {
642     extern(Windows) :
643     HRESULT Map(UINT Subresource, D3D10_MAP MapType, UINT MapFlags, D3D10_MAPPED_TEXTURE3D *pMappedTex3D);
644     void Unmap(UINT Subresource);
645     void GetDesc(D3D10_TEXTURE3D_DESC *pDesc);
646 }
647
648 enum D3D10_TEXTURECUBE_FACE {
649     D3D10_TEXTURECUBE_FACE_POSITIVE_X = 0,
650     D3D10_TEXTURECUBE_FACE_NEGATIVE_X,
651     D3D10_TEXTURECUBE_FACE_POSITIVE_Y,
652     D3D10_TEXTURECUBE_FACE_NEGATIVE_Y,
653     D3D10_TEXTURECUBE_FACE_POSITIVE_Z,
654     D3D10_TEXTURECUBE_FACE_NEGATIVE_Z
655 }
656
657 interface ID3D10View : ID3D10DeviceChild {
658     extern(Windows) :
659     void GetResource(ID3D10Resource *ppResource);
660 }
661
662 struct D3D10_BUFFER_SRV {
663     UINT ElementOffset;
664     UINT ElementWidth;
665 }
666
667 struct D3D10_TEX1D_SRV {
668     UINT MostDetailedMip;
669     UINT MipLevels;
670 }
671
672 struct D3D10_TEX1D_ARRAY_SRV {
673     UINT MostDetailedMip;
674     UINT MipLevels;
675     UINT FirstArraySlice;
676     UINT ArraySize;
677 }
678
679 struct D3D10_TEX2D_SRV {
680     UINT MostDetailedMip;
681     UINT MipLevels;
682 }
683
684 struct D3D10_TEX2D_ARRAY_SRV {
685     UINT MostDetailedMip;
686     UINT MipLevels;
687     UINT FirstArraySlice;
688     UINT ArraySize;
689 }
690
691 struct D3D10_TEX3D_SRV {
692     UINT MostDetailedMip;
693     UINT MipLevels;
694 }
695
696 struct D3D10_TEXCUBE_SRV {
697     UINT MostDetailedMip;
698     UINT MipLevels;
699 }
700
701 struct D3D10_TEX2DMS_SRV {
702     UINT UnusedField_NothingToDefine;
703 }
704
705 struct D3D10_TEX2DMS_ARRAY_SRV {
706     UINT FirstArraySlice;
707     UINT ArraySize;
708 }
709
710 struct D3D10_SHADER_RESOURCE_VIEW_DESC {
711     DXGI_FORMAT Format;
712     D3D10_SRV_DIMENSION ViewDimension;
713     union {
714         D3D10_BUFFER_SRV Buffer;
715         D3D10_TEX1D_SRV Texture1D;
716         D3D10_TEX1D_ARRAY_SRV Texture1DArray;
717         D3D10_TEX2D_SRV Texture2D;
718         D3D10_TEX2D_ARRAY_SRV Texture2DArray;
719         D3D10_TEX2DMS_SRV Texture2DMS;
720         D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray;
721         D3D10_TEX3D_SRV Texture3D;
722         D3D10_TEXCUBE_SRV TextureCube;
723     }
724 }
725
726 interface ID3D10ShaderResourceView : ID3D10View {
727     extern(Windows) :
728     void GetDesc(D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc);
729 }
730
731 struct D3D10_BUFFER_RTV {
732     UINT ElementOffset;
733     UINT ElementWidth;
734 }
735
736 struct D3D10_TEX1D_RTV {
737     UINT MipSlice;
738 }
739
740 struct D3D10_TEX1D_ARRAY_RTV {
741     UINT MipSlice;
742     UINT FirstArraySlice;
743     UINT ArraySize;
744 }
745
746 struct D3D10_TEX2D_RTV {
747     UINT MipSlice;
748 }
749
750 struct D3D10_TEX2DMS_RTV {
751     UINT UnusedField_NothingToDefine;
752 }
753
754 struct D3D10_TEX2D_ARRAY_RTV {
755     UINT MipSlice;
756     UINT FirstArraySlice;
757     UINT ArraySize;
758 }
759
760 struct D3D10_TEX2DMS_ARRAY_RTV {
761     UINT FirstArraySlice;
762     UINT ArraySize;
763 }
764
765 struct D3D10_TEX3D_RTV {
766     UINT MipSlice;
767     UINT FirstWSlice;
768     UINT WSize;
769 }
770
771 struct D3D10_RENDER_TARGET_VIEW_DESC {
772     DXGI_FORMAT Format;
773     D3D10_RTV_DIMENSION ViewDimension;
774     union {
775         D3D10_BUFFER_RTV Buffer;
776         D3D10_TEX1D_RTV Texture1D;
777         D3D10_TEX1D_ARRAY_RTV Texture1DArray;
778         D3D10_TEX2D_RTV Texture2D;
779         D3D10_TEX2D_ARRAY_RTV Texture2DArray;
780         D3D10_TEX2DMS_RTV Texture2DMS;
781         D3D10_TEX2DMS_ARRAY_RTV Texture2DMSArray;
782         D3D10_TEX3D_RTV Texture3D;
783     }
784 }
785
786 interface ID3D10RenderTargetView : ID3D10View {
787     extern(Windows) :
788     void GetDesc(D3D10_RENDER_TARGET_VIEW_DESC *pDesc);
789 }
790
791 struct D3D10_TEX1D_DSV {
792     UINT MipSlice;
793 }
794
795 struct D3D10_TEX1D_ARRAY_DSV {
796     UINT MipSlice;
797     UINT FirstArraySlice;
798     UINT ArraySize;
799 }
800
801 struct D3D10_TEX2D_DSV {
802     UINT MipSlice;
803 }
804
805 struct D3D10_TEX2D_ARRAY_DSV {
806     UINT MipSlice;
807     UINT FirstArraySlice;
808     UINT ArraySize;
809 }
810
811 struct D3D10_TEX2DMS_DSV {
812     UINT UnusedField_NothingToDefine;
813 }
814
815 struct D3D10_TEX2DMS_ARRAY_DSV {
816     UINT FirstArraySlice;
817     UINT ArraySize;
818 }
819
820 struct D3D10_DEPTH_STENCIL_VIEW_DESC {
821     DXGI_FORMAT Format;
822     D3D10_DSV_DIMENSION ViewDimension;
823     union {
824         D3D10_TEX1D_DSV Texture1D;
825         D3D10_TEX1D_ARRAY_DSV Texture1DArray;
826         D3D10_TEX2D_DSV Texture2D;
827         D3D10_TEX2D_ARRAY_DSV Texture2DArray;
828         D3D10_TEX2DMS_DSV Texture2DMS;
829         D3D10_TEX2DMS_ARRAY_DSV Texture2DMSArray;
830     }
831 }
832
833 interface ID3D10DepthStencilView : ID3D10View {
834     extern(Windows) :
835     void GetDesc(D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc);
836 }
837
838 interface ID3D10VertexShader : ID3D10DeviceChild { }
839
840 interface ID3D10GeometryShader : ID3D10DeviceChild { }
841
842 interface ID3D10PixelShader : ID3D10DeviceChild { }
843
844 interface ID3D10InputLayout : ID3D10DeviceChild { }
845
846 enum D3D10_FILTER {
847     D3D10_FILTER_MIN_MAG_MIP_POINT                          = 0x00,
848     D3D10_FILTER_MIN_MAG_POINT_MIP_LINEAR                   = 0x01,
849     D3D10_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT             = 0x04,
850     D3D10_FILTER_MIN_POINT_MAG_MIP_LINEAR                   = 0x05,
851     D3D10_FILTER_MIN_LINEAR_MAG_MIP_POINT                   = 0x10,
852     D3D10_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR            = 0x11,
853     D3D10_FILTER_MIN_MAG_LINEAR_MIP_POINT                   = 0x14,
854     D3D10_FILTER_MIN_MAG_MIP_LINEAR                         = 0x15,
855     D3D10_FILTER_ANISOTROPIC                                = 0x55,
856     D3D10_FILTER_COMPARISON_MIN_MAG_MIP_POINT               = 0x80,
857     D3D10_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR        = 0x81,
858     D3D10_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT  = 0x84,
859     D3D10_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR        = 0x85,
860     D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT        = 0x90,
861     D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
862     D3D10_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT        = 0x94,
863     D3D10_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR              = 0x95,
864     D3D10_FILTER_COMPARISON_ANISOTROPIC                     = 0xd5,
865     D3D10_FILTER_TEXT_1BIT                                  = 0x80000000
866 }
867
868
869 enum D3D10_FILTER_TYPE {
870     D3D10_FILTER_TYPE_POINT     = 0,
871     D3D10_FILTER_TYPE_LINEAR
872 }
873
874 const D3D10_FILTER_TYPE_MASK = 0x03;
875
876 const D3D10_MIN_FILTER_SHIFT = 4;
877
878 const D3D10_MAG_FILTER_SHIFT = 2;
879
880 const D3D10_MIP_FILTER_SHIFT = 0;
881
882 const D3D10_COMPARISON_FILTERING_BIT = 0x80;
883
884 const D3D10_ANISOTROPIC_FILTERING_BIT = 0x40;
885
886 const D3D10_TEXT_1BIT_BIT = 0x80000000;
887
888 D3D10_FILTER D3D10_ENCODE_BASIC_FILTER(int min, int mag, int mip, bool bComparison) {
889     return cast(D3D10_FILTER)(((bComparison) ? D3D10_COMPARISON_FILTERING_BIT : 0) |
890            ((min & D3D10_FILTER_TYPE_MASK) << D3D10_MIN_FILTER_SHIFT) |
891            ((mag & D3D10_FILTER_TYPE_MASK) << D3D10_MAG_FILTER_SHIFT) |
892            ((mip & D3D10_FILTER_TYPE_MASK) << D3D10_MIP_FILTER_SHIFT));
893 }
894
895 D3D10_FILTER D3D10_ENCODE_ANISOTROPIC_FILTER(bool bComparison) {
896     return cast(D3D10_FILTER)(D3D10_ANISOTROPIC_FILTERING_BIT |
897         D3D10_ENCODE_BASIC_FILTER(D3D10_FILTER_TYPE.D3D10_FILTER_TYPE_LINEAR,
898             D3D10_FILTER_TYPE.D3D10_FILTER_TYPE_LINEAR, D3D10_FILTER_TYPE.D3D10_FILTER_TYPE_LINEAR,
899             bComparison));
900 }
901
902 D3D10_FILTER_TYPE D3D10_DECODE_MIN_FILTER(D3D10_FILTER d3d10Filter) {
903     return cast(D3D10_FILTER_TYPE)((d3d10Filter >> D3D10_MIN_FILTER_SHIFT) & D3D10_FILTER_TYPE_MASK);
904 }
905
906 D3D10_FILTER_TYPE D3D10_DECODE_MAG_FILTER(D3D10_FILTER d3d10Filter) {
907     return cast(D3D10_FILTER_TYPE)((d3d10Filter >> D3D10_MAG_FILTER_SHIFT) & D3D10_FILTER_TYPE_MASK);
908 }
909
910 D3D10_FILTER_TYPE D3D10_DECODE_MIP_FILTER(D3D10_FILTER d3d10Filter) {
911     return cast(D3D10_FILTER_TYPE)((d3d10Filter >> D3D10_MIP_FILTER_SHIFT) & D3D10_FILTER_TYPE_MASK);
912 }
913
914 bool D3D10_DECODE_IS_COMPARISON_FILTER(D3D10_FILTER d3d10Filter) {
915     return (d3d10Filter & D3D10_COMPARISON_FILTERING_BIT) == D3D10_COMPARISON_FILTERING_BIT;
916 }
917
918 bool D3D10_DECODE_IS_ANISOTROPIC_FILTER(D3D10_FILTER d3d10Filter) {
919     return ((d3d10Filter & D3D10_ANISOTROPIC_FILTERING_BIT) &&
920            (D3D10_FILTER_TYPE.D3D10_FILTER_TYPE_LINEAR == D3D10_DECODE_MIN_FILTER(d3d10Filter)) &&
921            (D3D10_FILTER_TYPE.D3D10_FILTER_TYPE_LINEAR == D3D10_DECODE_MAG_FILTER(d3d10Filter)) &&
922            (D3D10_FILTER_TYPE.D3D10_FILTER_TYPE_LINEAR == D3D10_DECODE_MIP_FILTER(d3d10Filter)));
923 }
924
925 bool D3D10_DECODE_IS_TEXT_1BIT_FILTER(D3D10_FILTER d3d10Filter) {
926     return d3d10Filter == D3D10_TEXT_1BIT_BIT;
927 }
928
929 enum D3D10_TEXTURE_ADDRESS_MODE {
930     D3D10_TEXTURE_ADDRESS_WRAP = 1,
931     D3D10_TEXTURE_ADDRESS_MIRROR,
932     D3D10_TEXTURE_ADDRESS_CLAMP,
933     D3D10_TEXTURE_ADDRESS_BORDER,
934     D3D10_TEXTURE_ADDRESS_MIRROR_ONCE
935 }
936
937 struct D3D10_SAMPLER_DESC {
938     D3D10_FILTER Filter;
939     D3D10_TEXTURE_ADDRESS_MODE AddressU;
940     D3D10_TEXTURE_ADDRESS_MODE AddressV;
941     D3D10_TEXTURE_ADDRESS_MODE AddressW;
942     FLOAT MipLODBias;
943     UINT MaxAnisotropy;
944     D3D10_COMPARISON_FUNC ComparisonFunc;
945     FLOAT[4] BorderColor;
946     FLOAT MinLOD;
947     FLOAT MaxLOD;
948 }
949
950 interface ID3D10SamplerState : ID3D10DeviceChild {
951     extern(Windows) :
952     void GetDesc(D3D10_SAMPLER_DESC *pDesc);
953 }
954
955 enum D3D10_FORMAT_SUPPORT {
956     D3D10_FORMAT_SUPPORT_BUFFER                     = 0x000001,
957     D3D10_FORMAT_SUPPORT_IA_VERTEX_BUFFER           = 0x000002,
958     D3D10_FORMAT_SUPPORT_IA_INDEX_BUFFER            = 0x000004,
959     D3D10_FORMAT_SUPPORT_SO_BUFFER                  = 0x000008,
960     D3D10_FORMAT_SUPPORT_TEXTURE1D                  = 0x000010,
961     D3D10_FORMAT_SUPPORT_TEXTURE2D                  = 0x000020,
962     D3D10_FORMAT_SUPPORT_TEXTURE3D                  = 0x000040,
963     D3D10_FORMAT_SUPPORT_TEXTURECUBE                = 0x000080,
964     D3D10_FORMAT_SUPPORT_SHADER_LOAD                = 0x000100,
965     D3D10_FORMAT_SUPPORT_SHADER_SAMPLE              = 0x000200,
966     D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON   = 0x000400,
967     D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT    = 0x000800,
968     D3D10_FORMAT_SUPPORT_MIP                        = 0x001000,
969     D3D10_FORMAT_SUPPORT_MIP_AUTOGEN                = 0x002000,
970     D3D10_FORMAT_SUPPORT_RENDER_TARGET              = 0x004000,
971     D3D10_FORMAT_SUPPORT_BLENDABLE                  = 0x008000,
972     D3D10_FORMAT_SUPPORT_DEPTH_STENCIL              = 0x010000,
973     D3D10_FORMAT_SUPPORT_CPU_LOCKABLE               = 0x020000,
974     D3D10_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE        = 0x040000,
975     D3D10_FORMAT_SUPPORT_DISPLAY                    = 0x080000,
976     D3D10_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT     = 0x100000,
977     D3D10_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET   = 0x200000,
978     D3D10_FORMAT_SUPPORT_MULTISAMPLE_LOAD           = 0x400000,
979     D3D10_FORMAT_SUPPORT_SHADER_GATHER              = 0x800000
980 }
981
982 interface ID3D10Asynchronous : ID3D10DeviceChild {
983     extern(Windows) :
984     void Begin();
985     void End();
986     HRESULT GetData(void *pData, UINT DataSize, UINT GetDataFlags);
987     UINT GetDataSize();
988 }
989
990 enum D3D10_ASYNC_GETDATA_FLAG {
991     D3D10_ASYNC_GETDATA_DONOTFLUSH  = 0x1
992 }
993
994 enum D3D10_QUERY {
995     D3D10_QUERY_EVENT                   = 0,
996     D3D10_QUERY_OCCLUSION               = (D3D10_QUERY_EVENT + 1),
997     D3D10_QUERY_TIMESTAMP               = (D3D10_QUERY_OCCLUSION + 1),
998     D3D10_QUERY_TIMESTAMP_DISJOINT      = (D3D10_QUERY_TIMESTAMP + 1),
999     D3D10_QUERY_PIPELINE_STATISTICS     = (D3D10_QUERY_TIMESTAMP_DISJOINT + 1),
1000     D3D10_QUERY_OCCLUSION_PREDICATE     = (D3D10_QUERY_PIPELINE_STATISTICS + 1),
1001     D3D10_QUERY_SO_STATISTICS           = (D3D10_QUERY_OCCLUSION_PREDICATE + 1),
1002     D3D10_QUERY_SO_OVERFLOW_PREDICATE   = (D3D10_QUERY_SO_STATISTICS + 1)
1003 }
1004
1005 enum D3D10_QUERY_MISC_FLAG {
1006     D3D10_QUERY_MISC_PREDICATEHINT = 0x01
1007 }
1008
1009 struct D3D10_QUERY_DESC {
1010     D3D10_QUERY Query;
1011     UINT MiscFlags;
1012 }
1013
1014 interface ID3D10Query : ID3D10Asynchronous {
1015     extern(Windows) :
1016     void GetDesc(D3D10_QUERY_DESC *pDesc);
1017 }
1018
1019 interface ID3D10Predicate : ID3D10Query { }
1020
1021 struct D3D10_QUERY_DATA_TIMESTAMP_DISJOINT {
1022     UINT64 Frequency;
1023     BOOL Disjoint;
1024 }
1025
1026 struct D3D10_QUERY_DATA_PIPELINE_STATISTICS {
1027     UINT64 IAVertices;
1028     UINT64 IAPrimitives;
1029     UINT64 VSInvocations;
1030     UINT64 GSInvocations;
1031     UINT64 GSPrimitives;
1032     UINT64 CInvocations;
1033     UINT64 CPrimitives;
1034     UINT64 PSInvocations;
1035 }
1036
1037 struct D3D10_QUERY_DATA_SO_STATISTICS {
1038     UINT64 NumPrimitivesWritten;
1039     UINT64 PrimitivesStorageNeeded;
1040 }
1041
1042 enum D3D10_COUNTER {
1043     D3D10_COUNTER_GPU_IDLE                              = 0,
1044     D3D10_COUNTER_VERTEX_PROCESSING                     = (D3D10_COUNTER_GPU_IDLE + 1),
1045     D3D10_COUNTER_GEOMETRY_PROCESSING                   = (D3D10_COUNTER_VERTEX_PROCESSING + 1),
1046     D3D10_COUNTER_PIXEL_PROCESSING                      = (D3D10_COUNTER_GEOMETRY_PROCESSING + 1),
1047     D3D10_COUNTER_OTHER_GPU_PROCESSING                  = (D3D10_COUNTER_PIXEL_PROCESSING + 1),
1048     D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION    = (D3D10_COUNTER_OTHER_GPU_PROCESSING + 1),
1049     D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION    = (D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION + 1),
1050     D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION         = (D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION + 1),
1051     D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION = (D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION + 1),
1052     D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION       = (D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION + 1),
1053     D3D10_COUNTER_VS_MEMORY_LIMITED                     = (D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION + 1),
1054     D3D10_COUNTER_VS_COMPUTATION_LIMITED                = (D3D10_COUNTER_VS_MEMORY_LIMITED + 1),
1055     D3D10_COUNTER_GS_MEMORY_LIMITED                     = (D3D10_COUNTER_VS_COMPUTATION_LIMITED + 1),
1056     D3D10_COUNTER_GS_COMPUTATION_LIMITED                = (D3D10_COUNTER_GS_MEMORY_LIMITED + 1),
1057     D3D10_COUNTER_PS_MEMORY_LIMITED                     = (D3D10_COUNTER_GS_COMPUTATION_LIMITED + 1),
1058     D3D10_COUNTER_PS_COMPUTATION_LIMITED                = (D3D10_COUNTER_PS_MEMORY_LIMITED + 1),
1059     D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE         = (D3D10_COUNTER_PS_COMPUTATION_LIMITED + 1),
1060     D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE                = (D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE + 1),
1061     D3D10_COUNTER_DEVICE_DEPENDENT_0                    = 0x40000000
1062 }
1063
1064 enum D3D10_COUNTER_TYPE {
1065     D3D10_COUNTER_TYPE_FLOAT32  = 0,
1066     D3D10_COUNTER_TYPE_UINT16   = (D3D10_COUNTER_TYPE_FLOAT32 + 1),
1067     D3D10_COUNTER_TYPE_UINT32   = (D3D10_COUNTER_TYPE_UINT16 + 1),
1068     D3D10_COUNTER_TYPE_UINT64   = (D3D10_COUNTER_TYPE_UINT32 + 1)
1069 }
1070
1071 struct D3D10_COUNTER_DESC {
1072     D3D10_COUNTER Counter;
1073     UINT MiscFlags;
1074 }
1075
1076 struct D3D10_COUNTER_INFO {
1077     D3D10_COUNTER LastDeviceDependentCounter;
1078     UINT NumSimultaneousCounters;
1079     UINT8 NumDetectableParallelUnits;
1080 }
1081
1082 interface ID3D10Counter : ID3D10Asynchronous {
1083     extern(Windows) :
1084     void GetDesc(D3D10_COUNTER_DESC *pDesc);
1085 }
1086
1087 interface ID3D10Device : IUnknown {
1088     extern(Windows) :
1089     void VSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D10Buffer* ppConstantBuffers);
1090     void PSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D10ShaderResourceView* ppShaderResourceViews);
1091     void PSSetShader(ID3D10PixelShader pPixelShader);
1092     void PSSetSamplers(UINT StartSlot, UINT NumSamplers, ID3D10SamplerState* ppSamplers);
1093     void VSSetShader(ID3D10VertexShader pVertexShader);
1094     void DrawIndexed(UINT IndexCount, UINT StartIndexLocation, INT BaseVertexLocation);
1095     void Draw(UINT VertexCount, UINT StartVertexLocation);
1096     void PSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D10Buffer* ppConstantBuffers);
1097     void IASetInputLayout(ID3D10InputLayout pInputLayout);
1098     void IASetVertexBuffers(UINT StartSlot, UINT NumBuffers, ID3D10Buffer* ppVertexBuffers, UINT* pStrides, UINT* pOffsets);
1099     void IASetIndexBuffer(ID3D10Buffer pIndexBuffer, DXGI_FORMAT Format, UINT Offset);
1100     void DrawIndexedInstanced(UINT IndexCountPerInstance, UINT InstanceCount, UINT StartIndexLocation, INT BaseVertexLocation, UINT StartInstanceLocation);
1101     void DrawInstanced(UINT VertexCountPerInstance, UINT InstanceCount, UINT StartVertexLocation, UINT StartInstanceLocation);
1102     void GSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D10Buffer* ppConstantBuffers);
1103     void GSSetShader(ID3D10GeometryShader pShader);
1104     void IASetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY Topology);
1105     void VSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D10ShaderResourceView* ppShaderResourceViews);
1106     void VSSetSamplers(UINT StartSlot, UINT NumSamplers, ID3D10SamplerState* ppSamplers);
1107     void SetPredication(ID3D10Predicate pPredicate, BOOL PredicateValue);
1108     void GSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D10ShaderResourceView* ppShaderResourceViews);
1109     void GSSetSamplers(UINT StartSlot, UINT NumSamplers, ID3D10SamplerState* ppSamplers);
1110     void OMSetRenderTargets(UINT NumViews, ID3D10RenderTargetView* ppRenderTargetViews, ID3D10DepthStencilView pDepthStencilView);
1111     void OMSetBlendState(ID3D10BlendState pBlendState, FLOAT[4] BlendFactor, UINT SampleMask);
1112     void OMSetDepthStencilState(ID3D10DepthStencilState pDepthStencilState, UINT StencilRef);
1113     void SOSetTargets(UINT NumBuffers, ID3D10Buffer* ppSOTargets, UINT* pOffsets);
1114     void DrawAuto();
1115     void RSSetState(ID3D10RasterizerState pRasterizerState);
1116     void RSSetViewports(UINT NumViewports, D3D10_VIEWPORT* pViewports);
1117     void RSSetScissorRects(UINT NumRects, D3D10_RECT* pRects);
1118     void CopySubresourceRegion(ID3D10Resource pDstResource, UINT DstSubresource, UINT DstX, UINT DstY, UINT DstZ, ID3D10Resource pSrcResource, UINT SrcSubresource, D3D10_BOX* pSrcBox);
1119     void CopyResource(ID3D10Resource pDstResource, ID3D10Resource pSrcResource);
1120     void UpdateSubresource(ID3D10Resource pDstResource, UINT DstSubresource, D3D10_BOX* pDstBox, void* pSrcData, UINT SrcRowPitch, UINT SrcDepthPitch);
1121     void ClearRenderTargetView(ID3D10RenderTargetView pRenderTargetView, FLOAT[4]* ColorRGBA);
1122     void ClearDepthStencilView(ID3D10DepthStencilView pDepthStencilView, UINT ClearFlags, FLOAT Depth, UINT8 Stencil);
1123     void GenerateMips(ID3D10ShaderResourceView pShaderResourceView);
1124     void ResolveSubresource(ID3D10Resource pDstResource, UINT DstSubresource, ID3D10Resource pSrcResource, UINT SrcSubresource, DXGI_FORMAT Format);
1125     void VSGetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D10Buffer* ppConstantBuffers);
1126     void PSGetShaderResources(UINT StartSlot, UINT NumViews, ID3D10ShaderResourceView* ppShaderResourceViews);
1127     void PSGetShader(ID3D10PixelShader* ppPixelShader);
1128     void PSGetSamplers(UINT StartSlot, UINT NumSamplers, ID3D10SamplerState* ppSamplers);
1129     void VSGetShader(ID3D10VertexShader* ppVertexShader);
1130     void PSGetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D10Buffer* ppConstantBuffers);
1131     void IAGetInputLayout(ID3D10InputLayout* ppInputLayout);
1132     void IAGetVertexBuffers(UINT StartSlot, UINT NumBuffers, ID3D10Buffer* ppVertexBuffers, UINT* pStrides, UINT* pOffsets);
1133     void IAGetIndexBuffer(ID3D10Buffer* pIndexBuffer, DXGI_FORMAT* Format, UINT* Offset);
1134     void GSGetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D10Buffer* ppConstantBuffers);
1135     void GSGetShader(ID3D10GeometryShader* ppGeometryShader);
1136     void IAGetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY* pTopology);
1137     void VSGetShaderResources(UINT StartSlot, UINT NumViews, ID3D10ShaderResourceView* ppShaderResourceViews);
1138     void VSGetSamplers(UINT StartSlot, UINT NumSamplers, ID3D10SamplerState* ppSamplers);
1139     void GetPredication(ID3D10Predicate* ppPredicate, BOOL* pPredicateValue);
1140     void GSGetShaderResources(UINT StartSlot, UINT NumViews, ID3D10ShaderResourceView* ppShaderResourceViews);
1141     void GSGetSamplers(UINT StartSlot, UINT NumSamplers, ID3D10SamplerState* ppSamplers);
1142     void OMGetRenderTargets(UINT NumViews, ID3D10RenderTargetView* ppRenderTargetViews, ID3D10DepthStencilView* ppDepthStencilView);
1143     void OMGetBlendState(ID3D10BlendState* ppBlendState, FLOAT BlendFactor[ 4 ], UINT* pSampleMask);
1144     void OMGetDepthStencilState(ID3D10DepthStencilState* ppDepthStencilState, UINT* pStencilRef);
1145     void SOGetTargets(UINT NumBuffers, ID3D10Buffer* ppSOTargets, UINT* pOffsets);
1146     void RSGetState(ID3D10RasterizerState* ppRasterizerState);
1147     void RSGetViewports(UINT* NumViewports, D3D10_VIEWPORT* pViewports);
1148     void RSGetScissorRects(UINT* NumRects, D3D10_RECT* pRects);
1149     HRESULT GetDeviceRemovedReason();
1150     HRESULT SetExceptionMode(UINT RaiseFlags);
1151     UINT GetExceptionMode();
1152     HRESULT GetPrivateData(REFGUID guid, UINT* pDataSize, void* pData);
1153     HRESULT SetPrivateData(REFGUID guid, UINT DataSize, void* pData);
1154     HRESULT SetPrivateDataInterface(REFGUID guid, IUnknown pData);
1155     void ClearState();
1156     void Flush();
1157     HRESULT CreateBuffer(D3D10_BUFFER_DESC* pDesc, D3D10_SUBRESOURCE_DATA* pInitialData, ID3D10Buffer* ppBuffer);
1158     HRESULT CreateTexture1D(D3D10_TEXTURE1D_DESC* pDesc, D3D10_SUBRESOURCE_DATA* pInitialData, ID3D10Texture1D* ppTexture1D);
1159     HRESULT CreateTexture2D(D3D10_TEXTURE2D_DESC* pDesc, D3D10_SUBRESOURCE_DATA* pInitialData, ID3D10Texture2D* ppTexture2D);
1160     HRESULT CreateTexture3D(D3D10_TEXTURE3D_DESC* pDesc, D3D10_SUBRESOURCE_DATA* pInitialData, ID3D10Texture3D* ppTexture3D);
1161     HRESULT CreateShaderResourceView(ID3D10Resource pResource, D3D10_SHADER_RESOURCE_VIEW_DESC* pDesc, ID3D10ShaderResourceView* ppSRView);
1162     HRESULT CreateRenderTargetView(ID3D10Resource pResource, D3D10_RENDER_TARGET_VIEW_DESC* pDesc, ID3D10RenderTargetView* ppRTView);
1163     HRESULT CreateDepthStencilView(ID3D10Resource pResource, D3D10_DEPTH_STENCIL_VIEW_DESC* pDesc, ID3D10DepthStencilView* ppDepthStencilView);
1164     HRESULT CreateInputLayout(D3D10_INPUT_ELEMENT_DESC* pInputElementDescs, UINT NumElements, void* pShaderBytecodeWithInputSignature, SIZE_T BytecodeLength, ID3D10InputLayout* ppInputLayout);
1165     HRESULT CreateVertexShader(void* pShaderBytecode, SIZE_T BytecodeLength, ID3D10VertexShader* ppVertexShader);
1166     HRESULT CreateGeometryShader(void* pShaderBytecode, SIZE_T BytecodeLength, ID3D10GeometryShader* ppGeometryShader);
1167     HRESULT CreateGeometryShaderWithStreamOutput(void* pShaderBytecode, SIZE_T BytecodeLength, D3D10_SO_DECLARATION_ENTRY* pSODeclaration, UINT NumEntries, UINT OutputStreamStride, ID3D10GeometryShader* ppGeometryShader);
1168     HRESULT CreatePixelShader(void* pShaderBytecode, SIZE_T BytecodeLength, ID3D10PixelShader* ppPixelShader);
1169     HRESULT CreateBlendState(D3D10_BLEND_DESC* pBlendStateDesc, ID3D10BlendState* ppBlendState);
1170     HRESULT CreateDepthStencilState(D3D10_DEPTH_STENCIL_DESC* pDepthStencilDesc, ID3D10DepthStencilState* ppDepthStencilState);
1171     HRESULT CreateRasterizerState(D3D10_RASTERIZER_DESC* pRasterizerDesc, ID3D10RasterizerState* ppRasterizerState);
1172     HRESULT CreateSamplerState(D3D10_SAMPLER_DESC* pSamplerDesc, ID3D10SamplerState* ppSamplerState);
1173     HRESULT CreateQuery(D3D10_QUERY_DESC* pQueryDesc, ID3D10Query* ppQuery);
1174     HRESULT CreatePredicate(D3D10_QUERY_DESC* pPredicateDesc, ID3D10Predicate* ppPredicate);
1175     HRESULT CreateCounter(D3D10_COUNTER_DESC* pCounterDesc, ID3D10Counter* ppCounter);
1176     HRESULT CheckFormatSupport(DXGI_FORMAT Format, UINT* pFormatSupport);
1177     HRESULT CheckMultisampleQualityLevels(DXGI_FORMAT Format, UINT SampleCount, UINT* pNumQualityLevels);
1178     void CheckCounterInfo(D3D10_COUNTER_INFO* pCounterInfo);
1179     HRESULT CheckCounter(D3D10_COUNTER_DESC* pDesc, D3D10_COUNTER_TYPE* pType, UINT* pActiveCounters, LPSTR szName, UINT* pNameLength, LPSTR szUnits, UINT* pUnitsLength, LPSTR szDescription, UINT* pDescriptionLength);
1180     UINT GetCreationFlags();
1181     HRESULT OpenSharedResource(HANDLE hResource, REFIID ReturnedInterface, void** ppResource);
1182     void SetTextFilterSize(UINT Width, UINT Height);
1183     void GetTextFilterSize(UINT* pWidth, UINT* pHeight);
1184 }
1185
1186 interface ID3D10Multithread : IUnknown {
1187     extern(Windows) :
1188     void Enter();
1189     void Leave();
1190     BOOL SetMultithreadProtected(BOOL bMTProtect);
1191     BOOL GetMultithreadProtected();
1192 }
1193
1194 enum D3D10_CREATE_DEVICE_FLAG {
1195     D3D10_CREATE_DEVICE_SINGLETHREADED                              = 0x01,
1196     D3D10_CREATE_DEVICE_DEBUG                                       = 0x02,
1197     D3D10_CREATE_DEVICE_SWITCH_TO_REF                               = 0x04,
1198     D3D10_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS    = 0x08
1199 }
1200
1201 const D3D10_SDK_VERSION = 29;
1202
1203 extern(C) const GUID IID_ID3D10DeviceChild          = {0x9B7E4C00, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]};
1204 extern(C) const GUID IID_ID3D10DepthStencilState    = {0x2B4B1CC8, 0xA4AD, 0x41f8, [0x83, 0x22, 0xCA, 0x86, 0xFC, 0x3E, 0xC6, 0x75]};
1205 extern(C) const GUID IID_ID3D10BlendState           = {0xEDAD8D19, 0x8A35, 0x4d6d, [0x85, 0x66, 0x2E, 0xA2, 0x76, 0xCD, 0xE1, 0x61]};
1206 extern(C) const GUID IID_ID3D10RasterizerState      = {0xA2A07292, 0x89AF, 0x4345, [0xBE, 0x2E, 0xC5, 0x3D, 0x9F, 0xBB, 0x6E, 0x9F]};
1207 extern(C) const GUID IID_ID3D10Resource             = {0x9B7E4C01, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]};
1208 extern(C) const GUID IID_ID3D10Buffer               = {0x9B7E4C02, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]};
1209 extern(C) const GUID IID_ID3D10Texture1D            = {0x9B7E4C03, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]};
1210 extern(C) const GUID IID_ID3D10Texture2D            = {0x9B7E4C04, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]};
1211 extern(C) const GUID IID_ID3D10Texture3D            = {0x9B7E4C05, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]};
1212 extern(C) const GUID IID_ID3D10View                 = {0xC902B03F, 0x60A7, 0x49BA, [0x99, 0x36, 0x2A, 0x3A, 0xB3, 0x7A, 0x7E, 0x33]};
1213 extern(C) const GUID IID_ID3D10ShaderResourceView   = {0x9B7E4C07, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]};
1214 extern(C) const GUID IID_ID3D10RenderTargetView     = {0x9B7E4C08, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]};
1215 extern(C) const GUID IID_ID3D10DepthStencilView     = {0x9B7E4C09, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]};
1216 extern(C) const GUID IID_ID3D10VertexShader         = {0x9B7E4C0A, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]};
1217 extern(C) const GUID IID_ID3D10GeometryShader       = {0x6316BE88, 0x54CD, 0x4040, [0xAB, 0x44, 0x20, 0x46, 0x1B, 0xC8, 0x1F, 0x68]};
1218 extern(C) const GUID IID_ID3D10PixelShader          = {0x4968B601, 0x9D00, 0x4cde, [0x83, 0x46, 0x8E, 0x7F, 0x67, 0x58, 0x19, 0xB6]};
1219 extern(C) const GUID IID_ID3D10InputLayout          = {0x9B7E4C0B, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]};
1220 extern(C) const GUID IID_ID3D10SamplerState         = {0x9B7E4C0C, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]};
1221 extern(C) const GUID IID_ID3D10Asynchronous         = {0x9B7E4C0D, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]};
1222 extern(C) const GUID IID_ID3D10Query                = {0x9B7E4C0E, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]};
1223 extern(C) const GUID IID_ID3D10Predicate            = {0x9B7E4C10, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]};
1224 extern(C) const GUID IID_ID3D10Counter              = {0x9B7E4C11, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]};
1225 extern(C) const GUID IID_ID3D10Device               = {0x9B7E4C0F, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]};
1226 extern(C) const GUID IID_ID3D10Multithread          = {0x9B7E4E00, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]};
1227
1228 public import win32.directx.d3d10shader;
1229 public import win32.directx.d3d10effect;
Note: See TracBrowser for help on using the browser.