1 module directx.d3d11;
2 /*-------------------------------------------------------------------------------------
3  *
4  * Copyright (c) Microsoft Corporation
5  *
6  *-------------------------------------------------------------------------------------*/
7 
8 version(Windows):
9 
10 public import directx.dxgi;
11 public import directx.d3dcommon;
12 
13 enum D3D11_16BIT_INDEX_STRIP_CUT_VALUE = ( 0xffff );
14 enum D3D11_32BIT_INDEX_STRIP_CUT_VALUE = ( 0xffffffff );
15 enum D3D11_8BIT_INDEX_STRIP_CUT_VALUE = ( 0xff );
16 enum D3D11_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT = ( 9 );
17 enum D3D11_CLIP_OR_CULL_DISTANCE_COUNT = ( 8 );
18 enum D3D11_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT = ( 2 );
19 enum D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT = ( 14 );
20 enum D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS = ( 4 );
21 enum D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT = ( 32 );
22 enum D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT = ( 15 );
23 enum D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS = ( 4 );
24 enum D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT = ( 15 );
25 enum D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST = ( 1 );
26 enum D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS = ( 1 );
27 enum D3D11_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT = ( 64 );
28 enum D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS = ( 4 );
29 enum D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT = ( 1 );
30 enum D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST = ( 1 );
31 enum D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS = ( 1 );
32 enum D3D11_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT = ( 32 );
33 enum D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS = ( 1 );
34 enum D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT = ( 128 );
35 enum D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST = ( 1 );
36 enum D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS = ( 1 );
37 enum D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT = ( 128 );
38 enum D3D11_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS = ( 1 );
39 enum D3D11_COMMONSHADER_SAMPLER_REGISTER_COUNT = ( 16 );
40 enum D3D11_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST = ( 1 );
41 enum D3D11_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS = ( 1 );
42 enum D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT = ( 16 );
43 enum D3D11_COMMONSHADER_SUBROUTINE_NESTING_LIMIT = ( 32 );
44 enum D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENTS = ( 4 );
45 enum D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
46 enum D3D11_COMMONSHADER_TEMP_REGISTER_COUNT = ( 4096 );
47 enum D3D11_COMMONSHADER_TEMP_REGISTER_READS_PER_INST = ( 3 );
48 enum D3D11_COMMONSHADER_TEMP_REGISTER_READ_PORTS = ( 3 );
49 enum D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX = ( 10 );
50 enum D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN = ( -10 );
51 enum D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE = ( -8 );
52 enum D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE = ( 7 );
53 enum D3D11_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 256 );
54 enum D3D11_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP = ( 64 );
55 enum D3D11_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 240 );
56 enum D3D11_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP = ( 68 );
57 enum D3D11_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 224 );
58 enum D3D11_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP = ( 72 );
59 enum D3D11_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 208 );
60 enum D3D11_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP = ( 76 );
61 enum D3D11_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 192 );
62 enum D3D11_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP = ( 84 );
63 enum D3D11_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 176 );
64 enum D3D11_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP = ( 92 );
65 enum D3D11_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 160 );
66 enum D3D11_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP = ( 100 );
67 enum D3D11_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 144 );
68 enum D3D11_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP = ( 112 );
69 enum D3D11_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 128 );
70 enum D3D11_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP = ( 128 );
71 enum D3D11_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 112 );
72 enum D3D11_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP = ( 144 );
73 enum D3D11_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 96 );
74 enum D3D11_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP = ( 168 );
75 enum D3D11_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 80 );
76 enum D3D11_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP = ( 204 );
77 enum D3D11_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 64 );
78 enum D3D11_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP = ( 256 );
79 enum D3D11_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 48 );
80 enum D3D11_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP = ( 340 );
81 enum D3D11_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 32 );
82 enum D3D11_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP = ( 512 );
83 enum D3D11_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = ( 16 );
84 enum D3D11_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP = ( 768 );
85 enum D3D11_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION = ( 1 );
86 enum D3D11_CS_4_X_RAW_UAV_BYTE_ALIGNMENT = ( 256 );
87 enum D3D11_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP = ( 768 );
88 enum D3D11_CS_4_X_THREAD_GROUP_MAX_X = ( 768 );
89 enum D3D11_CS_4_X_THREAD_GROUP_MAX_Y = ( 768 );
90 enum D3D11_CS_4_X_UAV_REGISTER_COUNT = ( 1 );
91 enum D3D11_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION = ( 65535 );
92 enum D3D11_CS_TGSM_REGISTER_COUNT = ( 8192 );
93 enum D3D11_CS_TGSM_REGISTER_READS_PER_INST = ( 1 );
94 enum D3D11_CS_TGSM_RESOURCE_REGISTER_COMPONENTS = ( 1 );
95 enum D3D11_CS_TGSM_RESOURCE_REGISTER_READ_PORTS = ( 1 );
96 enum D3D11_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP = ( 1024 );
97 enum D3D11_CS_THREAD_GROUP_MAX_X = ( 1024 );
98 enum D3D11_CS_THREAD_GROUP_MAX_Y = ( 1024 );
99 enum D3D11_CS_THREAD_GROUP_MAX_Z = ( 64 );
100 enum D3D11_CS_THREAD_GROUP_MIN_X = ( 1 );
101 enum D3D11_CS_THREAD_GROUP_MIN_Y = ( 1 );
102 enum D3D11_CS_THREAD_GROUP_MIN_Z = ( 1 );
103 enum D3D11_CS_THREAD_LOCAL_TEMP_REGISTER_POOL = ( 16384 );
104 enum D3D11_DEFAULT_BLEND_FACTOR_ALPHA = ( 1.0f );
105 enum D3D11_DEFAULT_BLEND_FACTOR_BLUE = ( 1.0f );
106 enum D3D11_DEFAULT_BLEND_FACTOR_GREEN = ( 1.0f );
107 enum D3D11_DEFAULT_BLEND_FACTOR_RED = ( 1.0f );
108 enum D3D11_DEFAULT_BORDER_COLOR_COMPONENT = ( 0.0f );
109 enum D3D11_DEFAULT_DEPTH_BIAS = ( 0 );
110 enum D3D11_DEFAULT_DEPTH_BIAS_CLAMP = ( 0.0f );
111 enum D3D11_DEFAULT_MAX_ANISOTROPY = ( 16 );
112 enum D3D11_DEFAULT_MIP_LOD_BIAS = ( 0.0f );
113 enum D3D11_DEFAULT_RENDER_TARGET_ARRAY_INDEX = ( 0 );
114 enum D3D11_DEFAULT_SAMPLE_MASK = ( 0xffffffff );
115 enum D3D11_DEFAULT_SCISSOR_ENDX = ( 0 );
116 enum D3D11_DEFAULT_SCISSOR_ENDY = ( 0 );
117 enum D3D11_DEFAULT_SCISSOR_STARTX = ( 0 );
118 enum D3D11_DEFAULT_SCISSOR_STARTY = ( 0 );
119 enum D3D11_DEFAULT_SLOPE_SCALED_DEPTH_BIAS = ( 0.0f );
120 enum D3D11_DEFAULT_STENCIL_READ_MASK = ( 0xff );
121 enum D3D11_DEFAULT_STENCIL_REFERENCE = ( 0 );
122 enum D3D11_DEFAULT_STENCIL_WRITE_MASK = ( 0xff );
123 enum D3D11_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX = ( 0 );
124 enum D3D11_DEFAULT_VIEWPORT_HEIGHT = ( 0 );
125 enum D3D11_DEFAULT_VIEWPORT_MAX_DEPTH = ( 0.0f );
126 enum D3D11_DEFAULT_VIEWPORT_MIN_DEPTH = ( 0.0f );
127 enum D3D11_DEFAULT_VIEWPORT_TOPLEFTX = ( 0 );
128 enum D3D11_DEFAULT_VIEWPORT_TOPLEFTY = ( 0 );
129 enum D3D11_DEFAULT_VIEWPORT_WIDTH = ( 0 );
130 enum D3D11_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = ( 3968 );
131 enum D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS = ( 4 );
132 enum D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
133 enum D3D11_DS_INPUT_CONTROL_POINT_REGISTER_COUNT = ( 32 );
134 enum D3D11_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST = ( 2 );
135 enum D3D11_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS = ( 1 );
136 enum D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS = ( 3 );
137 enum D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
138 enum D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT = ( 1 );
139 enum D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST = ( 2 );
140 enum D3D11_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS = ( 1 );
141 enum D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = ( 4 );
142 enum D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
143 enum D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT = ( 32 );
144 enum D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = ( 2 );
145 enum D3D11_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = ( 1 );
146 enum D3D11_DS_OUTPUT_REGISTER_COMPONENTS = ( 4 );
147 enum D3D11_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
148 enum D3D11_DS_OUTPUT_REGISTER_COUNT = ( 32 );
149 enum D3D11_FLOAT16_FUSED_TOLERANCE_IN_ULP = ( 0.6 );
150 enum D3D11_FLOAT32_MAX	= ( 3.402823466e+38f );
151 enum D3D11_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP = ( 0.6f );
152 enum D3D11_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR = ( 2.4f );
153 enum D3D11_FLOAT_TO_SRGB_EXPONENT_NUMERATOR = ( 1.0f );
154 enum D3D11_FLOAT_TO_SRGB_OFFSET = ( 0.055f );
155 enum D3D11_FLOAT_TO_SRGB_SCALE_1 = ( 12.92f );
156 enum D3D11_FLOAT_TO_SRGB_SCALE_2 = ( 1.055f );
157 enum D3D11_FLOAT_TO_SRGB_THRESHOLD = ( 0.0031308f );
158 enum D3D11_FTOI_INSTRUCTION_MAX_INPUT = ( 2147483647.999f );
159 enum D3D11_FTOI_INSTRUCTION_MIN_INPUT = ( -2147483648.999f );
160 enum D3D11_FTOU_INSTRUCTION_MAX_INPUT = ( 4294967295.999f );
161 enum D3D11_FTOU_INSTRUCTION_MIN_INPUT = ( 0.0f );
162 enum D3D11_GS_INPUT_INSTANCE_ID_READS_PER_INST = ( 2 );
163 enum D3D11_GS_INPUT_INSTANCE_ID_READ_PORTS = ( 1 );
164 enum D3D11_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS = ( 1 );
165 enum D3D11_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
166 enum D3D11_GS_INPUT_INSTANCE_ID_REGISTER_COUNT = ( 1 );
167 enum D3D11_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS = ( 1 );
168 enum D3D11_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
169 enum D3D11_GS_INPUT_PRIM_CONST_REGISTER_COUNT = ( 1 );
170 enum D3D11_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST = ( 2 );
171 enum D3D11_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS = ( 1 );
172 enum D3D11_GS_INPUT_REGISTER_COMPONENTS = ( 4 );
173 enum D3D11_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
174 enum D3D11_GS_INPUT_REGISTER_COUNT = ( 32 );
175 enum D3D11_GS_INPUT_REGISTER_READS_PER_INST = ( 2 );
176 enum D3D11_GS_INPUT_REGISTER_READ_PORTS = ( 1 );
177 enum D3D11_GS_INPUT_REGISTER_VERTICES = ( 32 );
178 enum D3D11_GS_MAX_INSTANCE_COUNT = ( 32 );
179 enum D3D11_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES = ( 1024 );
180 enum D3D11_GS_OUTPUT_ELEMENTS = ( 32 );
181 enum D3D11_GS_OUTPUT_REGISTER_COMPONENTS = ( 4 );
182 enum D3D11_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
183 enum D3D11_GS_OUTPUT_REGISTER_COUNT = ( 32 );
184 enum D3D11_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT = ( 32 );
185 enum D3D11_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT = ( 32 );
186 enum D3D11_HS_CONTROL_POINT_REGISTER_COMPONENTS = ( 4 );
187 enum D3D11_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
188 enum D3D11_HS_CONTROL_POINT_REGISTER_READS_PER_INST = ( 2 );
189 enum D3D11_HS_CONTROL_POINT_REGISTER_READ_PORTS = ( 1 );
190 enum D3D11_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND = ( 0xffffffff );
191 enum D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS = ( 1 );
192 enum D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
193 enum D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT = ( 1 );
194 enum D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST = ( 2 );
195 enum D3D11_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS = ( 1 );
196 enum D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS = ( 1 );
197 enum D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
198 enum D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT = ( 1 );
199 enum D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST = ( 2 );
200 enum D3D11_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS = ( 1 );
201 enum D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = ( 1 );
202 enum D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
203 enum D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = ( 1 );
204 enum D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = ( 2 );
205 enum D3D11_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = ( 1 );
206 enum D3D11_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND = ( 0xffffffff );
207 enum D3D11_HS_MAXTESSFACTOR_LOWER_BOUND = ( 1.0f );
208 enum D3D11_HS_MAXTESSFACTOR_UPPER_BOUND = ( 64.0f );
209 enum D3D11_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = ( 3968 );
210 enum D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS = ( 1 );
211 enum D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
212 enum D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT = ( 1 );
213 enum D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST = ( 2 );
214 enum D3D11_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS = ( 1 );
215 enum D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = ( 4 );
216 enum D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
217 enum D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT = ( 32 );
218 enum D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = ( 2 );
219 enum D3D11_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = ( 1 );
220 enum D3D11_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES = ( 0 );
221 enum D3D11_IA_DEFAULT_PRIMITIVE_TOPOLOGY = ( 0 );
222 enum D3D11_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES = ( 0 );
223 enum D3D11_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT = ( 1 );
224 enum D3D11_IA_INSTANCE_ID_BIT_COUNT = ( 32 );
225 enum D3D11_IA_INTEGER_ARITHMETIC_BIT_COUNT = ( 32 );
226 enum D3D11_IA_PATCH_MAX_CONTROL_POINT_COUNT = ( 32 );
227 enum D3D11_IA_PRIMITIVE_ID_BIT_COUNT = ( 32 );
228 enum D3D11_IA_VERTEX_ID_BIT_COUNT = ( 32 );
229 enum D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT = ( 32 );
230 enum D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS = ( 128 );
231 enum D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT = ( 32 );
232 enum D3D11_INTEGER_DIVIDE_BY_ZERO_QUOTIENT = ( 0xffffffff );
233 enum D3D11_INTEGER_DIVIDE_BY_ZERO_REMAINDER = ( 0xffffffff );
234 enum D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL = ( 0xffffffff );
235 enum D3D11_KEEP_UNORDERED_ACCESS_VIEWS = ( 0xffffffff );
236 enum D3D11_LINEAR_GAMMA = ( 1.0f );
237 enum D3D11_MAJOR_VERSION = ( 11 );
238 enum D3D11_MAX_BORDER_COLOR_COMPONENT = ( 1.0f );
239 enum D3D11_MAX_DEPTH = ( 1.0f );
240 enum D3D11_MAX_MAXANISOTROPY = ( 16 );
241 enum D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT = ( 32 );
242 enum D3D11_MAX_POSITION_VALUE = ( 3.402823466e+34f );
243 enum D3D11_MAX_TEXTURE_DIMENSION_2_TO_EXP = ( 17 );
244 enum D3D11_MINOR_VERSION = ( 0 );
245 enum D3D11_MIN_BORDER_COLOR_COMPONENT = ( 0.0f );
246 enum D3D11_MIN_DEPTH = ( 0.0f );
247 enum D3D11_MIN_MAXANISOTROPY = ( 0 );
248 enum D3D11_MIP_LOD_BIAS_MAX = ( 15.99f );
249 enum D3D11_MIP_LOD_BIAS_MIN = ( -16.0f );
250 enum D3D11_MIP_LOD_FRACTIONAL_BIT_COUNT = ( 8 );
251 enum D3D11_MIP_LOD_RANGE_BIT_COUNT = ( 8 );
252 enum D3D11_MULTISAMPLE_ANTIALIAS_LINE_WIDTH = ( 1.4f );
253 enum D3D11_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT = ( 0 );
254 enum D3D11_PIXEL_ADDRESS_RANGE_BIT_COUNT = ( 15 );
255 enum D3D11_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT = ( 16 );
256 enum D3D11_PS_CS_UAV_REGISTER_COMPONENTS = ( 1 );
257 enum D3D11_PS_CS_UAV_REGISTER_COUNT = ( 8 );
258 enum D3D11_PS_CS_UAV_REGISTER_READS_PER_INST = ( 1 );
259 enum D3D11_PS_CS_UAV_REGISTER_READ_PORTS = ( 1 );
260 enum D3D11_PS_FRONTFACING_DEFAULT_VALUE = ( 0xffffffff );
261 enum D3D11_PS_FRONTFACING_FALSE_VALUE = ( 0 );
262 enum D3D11_PS_FRONTFACING_TRUE_VALUE = ( 0xffffffff );
263 enum D3D11_PS_INPUT_REGISTER_COMPONENTS = ( 4 );
264 enum D3D11_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
265 enum D3D11_PS_INPUT_REGISTER_COUNT = ( 32 );
266 enum D3D11_PS_INPUT_REGISTER_READS_PER_INST = ( 2 );
267 enum D3D11_PS_INPUT_REGISTER_READ_PORTS = ( 1 );
268 enum D3D11_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT = ( 0.0f );
269 enum D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS = ( 1 );
270 enum D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
271 enum D3D11_PS_OUTPUT_DEPTH_REGISTER_COUNT = ( 1 );
272 enum D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENTS = ( 1 );
273 enum D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
274 enum D3D11_PS_OUTPUT_MASK_REGISTER_COUNT = ( 1 );
275 enum D3D11_PS_OUTPUT_REGISTER_COMPONENTS = ( 4 );
276 enum D3D11_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
277 enum D3D11_PS_OUTPUT_REGISTER_COUNT = ( 8 );
278 enum D3D11_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT = ( 0.5f );
279 enum D3D11_RAW_UAV_SRV_BYTE_ALIGNMENT = ( 16 );
280 enum D3D11_REQ_BLEND_OBJECT_COUNT_PER_DEVICE = ( 4096 );
281 enum D3D11_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = ( 27 );
282 enum D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT = ( 4096 );
283 enum D3D11_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE = ( 4096 );
284 enum D3D11_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = ( 32 );
285 enum D3D11_REQ_DRAW_VERTEX_COUNT_2_TO_EXP = ( 32 );
286 enum D3D11_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION = ( 16384 );
287 enum D3D11_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT = ( 1024 );
288 enum D3D11_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = ( 4096 );
289 enum D3D11_REQ_MAXANISOTROPY = ( 16 );
290 enum D3D11_REQ_MIP_LEVELS = ( 15 );
291 enum D3D11_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES = ( 2048 );
292 enum D3D11_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE = ( 4096 );
293 enum D3D11_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH = ( 16384 );
294 enum D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM = ( 128 );
295 enum D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM = ( 0.25f );
296 enum D3D11_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP = ( 20 );
297 enum D3D11_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE = ( 4096 );
298 enum D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION = ( 2048 );
299 enum D3D11_REQ_TEXTURE1D_U_DIMENSION = ( 16384 );
300 enum D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION = ( 2048 );
301 enum D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION = ( 16384 );
302 enum D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = ( 2048 );
303 enum D3D11_REQ_TEXTURECUBE_DIMENSION = ( 16384 );
304 enum D3D11_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL = ( 0 );
305 enum D3D11_SHADER_MAJOR_VERSION = ( 5 );
306 enum D3D11_SHADER_MAX_INSTANCES = ( 65535 );
307 enum D3D11_SHADER_MAX_INTERFACES = ( 253 );
308 enum D3D11_SHADER_MAX_INTERFACE_CALL_SITES = ( 4096 );
309 enum D3D11_SHADER_MAX_TYPES = ( 65535 );
310 enum D3D11_SHADER_MINOR_VERSION = ( 0 );
311 enum D3D11_SHIFT_INSTRUCTION_PAD_VALUE = ( 0 );
312 enum D3D11_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT = ( 5 );
313 enum D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT = ( 8 );
314 enum D3D11_SO_BUFFER_MAX_STRIDE_IN_BYTES = ( 2048 );
315 enum D3D11_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES = ( 512 );
316 enum D3D11_SO_BUFFER_SLOT_COUNT = ( 4 );
317 enum D3D11_SO_DDI_REGISTER_INDEX_DENOTING_GAP = ( 0xffffffff );
318 enum D3D11_SO_NO_RASTERIZED_STREAM = ( 0xffffffff );
319 enum D3D11_SO_OUTPUT_COMPONENT_COUNT = ( 128 );
320 enum D3D11_SO_STREAM_COUNT = ( 4 );
321 enum D3D11_SPEC_DATE_DAY = ( 04 );
322 enum D3D11_SPEC_DATE_MONTH = ( 06 );
323 enum D3D11_SPEC_DATE_YEAR = ( 2009 );
324 enum D3D11_SPEC_VERSION = ( 1.0 );
325 enum D3D11_SRGB_GAMMA = ( 2.2f );
326 enum D3D11_SRGB_TO_FLOAT_DENOMINATOR_1 = ( 12.92f );
327 enum D3D11_SRGB_TO_FLOAT_DENOMINATOR_2 = ( 1.055f );
328 enum D3D11_SRGB_TO_FLOAT_EXPONENT = ( 2.4f );
329 enum D3D11_SRGB_TO_FLOAT_OFFSET = ( 0.055f );
330 enum D3D11_SRGB_TO_FLOAT_THRESHOLD = ( 0.04045f );
331 enum D3D11_SRGB_TO_FLOAT_TOLERANCE_IN_ULP = ( 0.5f );
332 enum D3D11_STANDARD_COMPONENT_BIT_COUNT = ( 32 );
333 enum D3D11_STANDARD_COMPONENT_BIT_COUNT_DOUBLED = ( 64 );
334 enum D3D11_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = ( 4 );
335 enum D3D11_STANDARD_PIXEL_COMPONENT_COUNT = ( 128 );
336 enum D3D11_STANDARD_PIXEL_ELEMENT_COUNT = ( 32 );
337 enum D3D11_STANDARD_VECTOR_SIZE = ( 4 );
338 enum D3D11_STANDARD_VERTEX_ELEMENT_COUNT = ( 32 );
339 enum D3D11_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT = ( 64 );
340 enum D3D11_SUBPIXEL_FRACTIONAL_BIT_COUNT = ( 8 );
341 enum D3D11_SUBTEXEL_FRACTIONAL_BIT_COUNT = ( 8 );
342 enum D3D11_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR = ( 64 );
343 enum D3D11_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR = ( 64 );
344 enum D3D11_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR = ( 63 );
345 enum D3D11_TESSELLATOR_MAX_TESSELLATION_FACTOR = ( 64 );
346 enum D3D11_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR = ( 2 );
347 enum D3D11_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR = ( 1 );
348 enum D3D11_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR = ( 1 );
349 enum D3D11_TEXEL_ADDRESS_RANGE_BIT_COUNT = ( 16 );
350 enum D3D11_UNBOUND_MEMORY_ACCESS_RESULT = ( 0 );
351 enum D3D11_VIEWPORT_AND_SCISSORRECT_MAX_INDEX = ( 15 );
352 enum D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = ( 16 );
353 enum D3D11_VIEWPORT_BOUNDS_MAX = ( 32767 );
354 enum D3D11_VIEWPORT_BOUNDS_MIN = ( -32768 );
355 enum D3D11_VS_INPUT_REGISTER_COMPONENTS = ( 4 );
356 enum D3D11_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
357 enum D3D11_VS_INPUT_REGISTER_COUNT = ( 32 );
358 enum D3D11_VS_INPUT_REGISTER_READS_PER_INST = ( 2 );
359 enum D3D11_VS_INPUT_REGISTER_READ_PORTS = ( 1 );
360 enum D3D11_VS_OUTPUT_REGISTER_COMPONENTS = ( 4 );
361 enum D3D11_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = ( 32 );
362 enum D3D11_VS_OUTPUT_REGISTER_COUNT = ( 32 );
363 enum D3D11_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT = ( 10 );
364 enum D3D11_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = ( 25 );
365 enum D3D11_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP = ( 25 );
366 
367 enum D3D11_1_UAV_SLOT_COUNT = ( 64 );
368 
369 enum D3D11_2_TILED_RESOURCE_TILE_SIZE_IN_BYTES = ( 65536 );
370 
371 enum _FACD3D11 = 0x87c;
372 enum _FACD3D11DEBUG	= _FACD3D11 + 1;
373 
374 HRESULT MAKE_D3D11_HRESULT(T)(T code) {
375 	return MAKE_HRESULT(1, _FACD3D11, code);
376 }
377 
378 HRESULT MAKE_D3D11_STATUS(T)(T code) {
379 	return MAKE_HRESULT(0, _FACD3D11, code);
380 }
381 
382 enum D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS  = MAKE_D3D11_HRESULT(1);
383 enum D3D11_ERROR_FILE_NOT_FOUND = MAKE_D3D11_HRESULT(2);
384 enum D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS = MAKE_D3D11_HRESULT(3);
385 enum D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD = MAKE_D3D11_HRESULT(4);
386 
387 
388 // TODO: move all externs to each symbols where needed, block is error-prone
389 extern(C):
390 
391 alias D3D11_INPUT_CLASSIFICATION = int;
392 enum : D3D11_INPUT_CLASSIFICATION
393 {
394 	D3D11_INPUT_PER_VERTEX_DATA = 0,
395 	D3D11_INPUT_PER_INSTANCE_DATA = 1
396 }
397 
398 enum D3D11_APPEND_ALIGNED_ELEMENT = ( 0xffffffff );
399 
400 struct D3D11_INPUT_ELEMENT_DESC
401 {
402 	LPCSTR SemanticName;
403 	UINT SemanticIndex;
404 	DXGI_FORMAT Format;
405 	UINT InputSlot;
406 	UINT AlignedByteOffset;
407 	D3D11_INPUT_CLASSIFICATION InputSlotClass;
408 	UINT InstanceDataStepRate;
409 }
410 
411 alias D3D11_FILL_MODE = int;
412 enum : D3D11_FILL_MODE
413 {
414 	D3D11_FILL_WIREFRAME	= 2,
415 	D3D11_FILL_SOLID	= 3
416 }
417 
418 alias D3D_PRIMITIVE_TOPOLOGY D3D11_PRIMITIVE_TOPOLOGY;
419 
420 alias D3D_PRIMITIVE D3D11_PRIMITIVE;
421 
422 alias D3D11_CULL_MODE = int;
423 enum : D3D11_CULL_MODE
424 {
425 	D3D11_CULL_NONE	= 1,
426 	D3D11_CULL_FRONT	= 2,
427 	D3D11_CULL_BACK	= 3
428 }
429 
430 struct D3D11_SO_DECLARATION_ENTRY
431 {
432 	UINT Stream;
433 	LPCSTR SemanticName;
434 	UINT SemanticIndex;
435 	BYTE StartComponent;
436 	BYTE ComponentCount;
437 	BYTE OutputSlot;
438 }
439 
440 struct D3D11_VIEWPORT
441 {
442 	FLOAT TopLeftX;
443 	FLOAT TopLeftY;
444 	FLOAT Width;
445 	FLOAT Height;
446 	FLOAT MinDepth = D3D11_MIN_DEPTH;
447 	FLOAT MaxDepth = D3D11_MAX_DEPTH;
448 }
449 
450 alias D3D11_RESOURCE_DIMENSION = int;
451 enum : D3D11_RESOURCE_DIMENSION
452 {
453 	D3D11_RESOURCE_DIMENSION_UNKNOWN	= 0,
454 	D3D11_RESOURCE_DIMENSION_BUFFER	= 1,
455 	D3D11_RESOURCE_DIMENSION_TEXTURE1D	= 2,
456 	D3D11_RESOURCE_DIMENSION_TEXTURE2D	= 3,
457 	D3D11_RESOURCE_DIMENSION_TEXTURE3D	= 4
458 }
459 
460 alias D3D11_SRV_DIMENSION = D3D_SRV_DIMENSION;
461 
462 alias D3D11_DSV_DIMENSION = int;
463 enum : D3D11_DSV_DIMENSION
464 {
465 	D3D11_DSV_DIMENSION_UNKNOWN	= 0,
466 	D3D11_DSV_DIMENSION_TEXTURE1D	= 1,
467 	D3D11_DSV_DIMENSION_TEXTURE1DARRAY	= 2,
468 	D3D11_DSV_DIMENSION_TEXTURE2D	= 3,
469 	D3D11_DSV_DIMENSION_TEXTURE2DARRAY	= 4,
470 	D3D11_DSV_DIMENSION_TEXTURE2DMS	= 5,
471 	D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY	= 6
472 }
473 
474 alias D3D11_RTV_DIMENSION = int;
475 enum : D3D11_RTV_DIMENSION
476 {
477 	D3D11_RTV_DIMENSION_UNKNOWN	= 0,
478 	D3D11_RTV_DIMENSION_BUFFER	= 1,
479 	D3D11_RTV_DIMENSION_TEXTURE1D	= 2,
480 	D3D11_RTV_DIMENSION_TEXTURE1DARRAY	= 3,
481 	D3D11_RTV_DIMENSION_TEXTURE2D	= 4,
482 	D3D11_RTV_DIMENSION_TEXTURE2DARRAY	= 5,
483 	D3D11_RTV_DIMENSION_TEXTURE2DMS	= 6,
484 	D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY	= 7,
485 	D3D11_RTV_DIMENSION_TEXTURE3D	= 8
486 }
487 
488 alias D3D11_UAV_DIMENSION = int;
489 enum : D3D11_UAV_DIMENSION
490 {
491 	D3D11_UAV_DIMENSION_UNKNOWN	= 0,
492 	D3D11_UAV_DIMENSION_BUFFER	= 1,
493 	D3D11_UAV_DIMENSION_TEXTURE1D	= 2,
494 	D3D11_UAV_DIMENSION_TEXTURE1DARRAY	= 3,
495 	D3D11_UAV_DIMENSION_TEXTURE2D	= 4,
496 	D3D11_UAV_DIMENSION_TEXTURE2DARRAY	= 5,
497 	D3D11_UAV_DIMENSION_TEXTURE3D	= 8
498 }
499 
500 alias D3D11_USAGE = int;
501 enum : D3D11_USAGE
502 {
503 	D3D11_USAGE_DEFAULT	= 0,
504 	D3D11_USAGE_IMMUTABLE	= 1,
505 	D3D11_USAGE_DYNAMIC	= 2,
506 	D3D11_USAGE_STAGING	= 3
507 }
508 
509 alias D3D11_BIND_FLAG = int;
510 enum : D3D11_BIND_FLAG
511 {
512 	D3D11_BIND_VERTEX_BUFFER	= 0x1L,
513 	D3D11_BIND_INDEX_BUFFER	= 0x2L,
514 	D3D11_BIND_CONSTANT_BUFFER	= 0x4L,
515 	D3D11_BIND_SHADER_RESOURCE	= 0x8L,
516 	D3D11_BIND_STREAM_OUTPUT	= 0x10L,
517 	D3D11_BIND_RENDER_TARGET	= 0x20L,
518 	D3D11_BIND_DEPTH_STENCIL	= 0x40L,
519 	D3D11_BIND_UNORDERED_ACCESS	= 0x80L
520 }
521 
522 alias D3D11_CPU_ACCESS_FLAG = int;
523 enum : D3D11_CPU_ACCESS_FLAG
524 {
525 	D3D11_CPU_ACCESS_WRITE	= 0x10000L,
526 	D3D11_CPU_ACCESS_READ	= 0x20000L
527 }
528 
529 alias D3D11_RESOURCE_MISC_FLAG = int;
530 enum : D3D11_RESOURCE_MISC_FLAG
531 {
532 	D3D11_RESOURCE_MISC_GENERATE_MIPS	= 0x1L,
533 	D3D11_RESOURCE_MISC_SHARED	= 0x2L,
534 	D3D11_RESOURCE_MISC_TEXTURECUBE	= 0x4L,
535 	D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS	= 0x10L,
536 	D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS	= 0x20L,
537 	D3D11_RESOURCE_MISC_BUFFER_STRUCTURED	= 0x40L,
538 	D3D11_RESOURCE_MISC_RESOURCE_CLAMP	= 0x80L,
539 	D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX	= 0x100L,
540 	D3D11_RESOURCE_MISC_GDI_COMPATIBLE	= 0x200L
541 }
542 
543 alias D3D11_MAP = int;
544 enum : D3D11_MAP
545 {
546 	D3D11_MAP_READ	= 1,
547 	D3D11_MAP_WRITE	= 2,
548 	D3D11_MAP_READ_WRITE	= 3,
549 	D3D11_MAP_WRITE_DISCARD	= 4,
550 	D3D11_MAP_WRITE_NO_OVERWRITE	= 5
551 }
552 
553 alias D3D11_MAP_FLAG = int;
554 enum : D3D11_MAP_FLAG
555 {
556 	D3D11_MAP_FLAG_DO_NOT_WAIT	= 0x100000L
557 }
558 
559 alias D3D11_RAISE_FLAG = int;
560 enum : D3D11_RAISE_FLAG
561 {
562 	D3D11_RAISE_FLAG_DRIVER_INTERNAL_ERROR	= 0x1L
563 }
564 
565 alias D3D11_CLEAR_FLAG = int;
566 enum : D3D11_CLEAR_FLAG
567 {
568 	D3D11_CLEAR_DEPTH	= 0x1L,
569 	D3D11_CLEAR_STENCIL	= 0x2L
570 }
571 
572 alias RECT D3D11_RECT;
573 
574 struct D3D11_BOX
575 {
576 	UINT left;
577 	UINT top;
578 	UINT front;
579 	UINT right;
580 	UINT bottom;
581 	UINT back;
582 }
583 
584 
585 mixin( uuid!(ID3D11DeviceChild, "1841e5c8-16b0-489b-bcc8-44cfb0d5deae") );
586 interface ID3D11DeviceChild : IUnknown
587 {
588     extern(Windows):
589 	void GetDevice( 
590 				ID3D11Device* ppDevice);
591 
592 	HRESULT  GetPrivateData( 
593 				REFGUID guid,
594 				UINT* pDataSize,
595 				void* pData);
596 
597 	HRESULT SetPrivateData( 
598 				REFGUID guid,
599 				UINT DataSize,
600 				const void* pData);
601 
602 	HRESULT SetPrivateDataInterface( 
603 				REFGUID guid,
604 				const(IUnknown) pData);
605         
606 }
607     
608 
609 alias D3D11_COMPARISON_FUNC = int;
610 enum : D3D11_COMPARISON_FUNC
611 {
612 	D3D11_COMPARISON_NEVER	= 1,
613 	D3D11_COMPARISON_LESS	= 2,
614 	D3D11_COMPARISON_EQUAL	= 3,
615 	D3D11_COMPARISON_LESS_EQUAL	= 4,
616 	D3D11_COMPARISON_GREATER	= 5,
617 	D3D11_COMPARISON_NOT_EQUAL	= 6,
618 	D3D11_COMPARISON_GREATER_EQUAL	= 7,
619 	D3D11_COMPARISON_ALWAYS	= 8
620 }
621 
622 alias D3D11_DEPTH_WRITE_MASK = int;
623 enum : D3D11_DEPTH_WRITE_MASK
624 {
625 	D3D11_DEPTH_WRITE_MASK_ZERO	= 0,
626 	D3D11_DEPTH_WRITE_MASK_ALL	= 1
627 }
628 
629 alias D3D11_STENCIL_OP = int;
630 enum : D3D11_STENCIL_OP
631 {
632 	D3D11_STENCIL_OP_KEEP	= 1,
633 	D3D11_STENCIL_OP_ZERO	= 2,
634 	D3D11_STENCIL_OP_REPLACE	= 3,
635 	D3D11_STENCIL_OP_INCR_SAT	= 4,
636 	D3D11_STENCIL_OP_DECR_SAT	= 5,
637 	D3D11_STENCIL_OP_INVERT	= 6,
638 	D3D11_STENCIL_OP_INCR	= 7,
639 	D3D11_STENCIL_OP_DECR	= 8
640 }
641 
642 struct D3D11_DEPTH_STENCILOP_DESC
643 {
644     D3D11_STENCIL_OP StencilFailOp;
645     D3D11_STENCIL_OP StencilDepthFailOp;
646     D3D11_STENCIL_OP StencilPassOp;
647     D3D11_COMPARISON_FUNC StencilFunc;
648 }
649 
650 struct D3D11_DEPTH_STENCIL_DESC
651 {
652 	BOOL DepthEnable = TRUE;
653 	D3D11_DEPTH_WRITE_MASK DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ALL;
654 	D3D11_COMPARISON_FUNC DepthFunc = D3D11_COMPARISON_LESS;
655 	BOOL StencilEnable = FALSE;
656 	UINT8 StencilReadMask = D3D11_DEFAULT_STENCIL_READ_MASK;
657 	UINT8 StencilWriteMask = D3D11_DEFAULT_STENCIL_WRITE_MASK;
658 	D3D11_DEPTH_STENCILOP_DESC FrontFace = { D3D11_STENCIL_OP_KEEP, D3D11_STENCIL_OP_KEEP, D3D11_STENCIL_OP_KEEP, D3D11_COMPARISON_ALWAYS };
659 	D3D11_DEPTH_STENCILOP_DESC BackFace = { D3D11_STENCIL_OP_KEEP, D3D11_STENCIL_OP_KEEP, D3D11_STENCIL_OP_KEEP, D3D11_COMPARISON_ALWAYS };
660 }
661 
662 
663 mixin( uuid!(ID3D11DepthStencilState, "03823efb-8d8f-4e1c-9aa2-f64bb2cbfdf1") );
664 interface ID3D11DepthStencilState : ID3D11DeviceChild
665 {
666 	extern(Windows):
667 	void GetDesc( 
668 				D3D11_DEPTH_STENCIL_DESC* pDesc);
669 }
670 
671 
672 alias D3D11_BLEND = int;
673 enum : D3D11_BLEND
674 {
675 	D3D11_BLEND_ZERO	= 1,
676 	D3D11_BLEND_ONE	= 2,
677 	D3D11_BLEND_SRC_COLOR	= 3,
678 	D3D11_BLEND_INV_SRC_COLOR	= 4,
679 	D3D11_BLEND_SRC_ALPHA	= 5,
680 	D3D11_BLEND_INV_SRC_ALPHA	= 6,
681 	D3D11_BLEND_DEST_ALPHA	= 7,
682 	D3D11_BLEND_INV_DEST_ALPHA	= 8,
683 	D3D11_BLEND_DEST_COLOR	= 9,
684 	D3D11_BLEND_INV_DEST_COLOR	= 10,
685 	D3D11_BLEND_SRC_ALPHA_SAT	= 11,
686 	D3D11_BLEND_BLEND_FACTOR	= 14,
687 	D3D11_BLEND_INV_BLEND_FACTOR	= 15,
688 	D3D11_BLEND_SRC1_COLOR	= 16,
689 	D3D11_BLEND_INV_SRC1_COLOR	= 17,
690 	D3D11_BLEND_SRC1_ALPHA	= 18,
691 	D3D11_BLEND_INV_SRC1_ALPHA	= 19
692 }
693 
694 alias D3D11_BLEND_OP = int;
695 enum : D3D11_BLEND_OP
696 {
697 	D3D11_BLEND_OP_ADD	= 1,
698 	D3D11_BLEND_OP_SUBTRACT	= 2,
699 	D3D11_BLEND_OP_REV_SUBTRACT	= 3,
700 	D3D11_BLEND_OP_MIN	= 4,
701 	D3D11_BLEND_OP_MAX	= 5
702 }
703 
704 alias D3D11_COLOR_WRITE_ENABLE = int;
705 enum : D3D11_COLOR_WRITE_ENABLE
706 {
707 	D3D11_COLOR_WRITE_ENABLE_RED	= 1,
708 	D3D11_COLOR_WRITE_ENABLE_GREEN	= 2,
709 	D3D11_COLOR_WRITE_ENABLE_BLUE	= 4,
710 	D3D11_COLOR_WRITE_ENABLE_ALPHA	= 8,
711 	D3D11_COLOR_WRITE_ENABLE_ALL	= ( ( ( D3D11_COLOR_WRITE_ENABLE_RED | D3D11_COLOR_WRITE_ENABLE_GREEN )  | D3D11_COLOR_WRITE_ENABLE_BLUE )  | D3D11_COLOR_WRITE_ENABLE_ALPHA ) 
712 }
713 
714 struct D3D11_RENDER_TARGET_BLEND_DESC
715 {
716 	BOOL BlendEnable;
717 	D3D11_BLEND SrcBlend;
718 	D3D11_BLEND DestBlend;
719 	D3D11_BLEND_OP BlendOp;
720 	D3D11_BLEND SrcBlendAlpha;
721 	D3D11_BLEND DestBlendAlpha;
722 	D3D11_BLEND_OP BlendOpAlpha;
723 	UINT8 RenderTargetWriteMask;
724 }
725 
726 // TODO: move Init() to CTFE and assign its result to RenderTarget initializer
727 struct D3D11_BLEND_DESC
728 {
729 	BOOL AlphaToCoverageEnable = FALSE;
730 	BOOL IndependentBlendEnable = FALSE;
731 	D3D11_RENDER_TARGET_BLEND_DESC[8] RenderTarget;
732 
733 	// hack:
734 	// default ctor not allowed in structs
735 	void Init() @property
736 	{
737 		const D3D11_RENDER_TARGET_BLEND_DESC defaultRenderTargetBlendDesc = {
738 		FALSE,
739 		D3D11_BLEND_ONE, D3D11_BLEND_ZERO, D3D11_BLEND_OP_ADD,
740 		D3D11_BLEND_ONE, D3D11_BLEND_ZERO, D3D11_BLEND_OP_ADD,
741 		D3D11_COLOR_WRITE_ENABLE_ALL,
742 		};
743 		for (UINT i = 0; i < D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT; ++i)
744 			RenderTarget[ i ] = defaultRenderTargetBlendDesc;
745 	}
746 }
747 
748 
749 mixin( uuid!(ID3D11BlendState, "75b68faa-347d-4159-8f45-a0640f01cd9a") );
750 interface ID3D11BlendState : ID3D11DeviceChild
751 {
752 	extern(Windows):
753 	void GetDesc( 
754 				D3D11_BLEND_DESC *pDesc);
755 }
756 
757 struct D3D11_RASTERIZER_DESC
758 {
759 	D3D11_FILL_MODE FillMode = D3D11_FILL_SOLID;
760 	D3D11_CULL_MODE CullMode = D3D11_CULL_BACK;
761 	BOOL FrontCounterClockwise = FALSE;
762 	INT DepthBias = D3D11_DEFAULT_DEPTH_BIAS;
763 	FLOAT DepthBiasClamp = D3D11_DEFAULT_DEPTH_BIAS_CLAMP;
764 	FLOAT SlopeScaledDepthBias = D3D11_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
765 	BOOL DepthClipEnable = TRUE;
766 	BOOL ScissorEnable = FALSE;
767 	BOOL MultisampleEnable = FALSE;
768 	BOOL AntialiasedLineEnable = FALSE;
769 }
770 
771 
772  mixin( uuid!(ID3D11RasterizerState, "9bb4ab81-ab1a-4d8f-b506-fc04200b6ee7") );
773  interface ID3D11RasterizerState : ID3D11DeviceChild
774  {
775 	extern(Windows):
776 	void GetDesc( 
777 				D3D11_RASTERIZER_DESC* pDesc);
778 }
779 
780 struct D3D11_SUBRESOURCE_DATA
781 {
782 	/*const*/ void* pSysMem; // const causes problems in real code
783 	UINT SysMemPitch;
784 	UINT SysMemSlicePitch;
785 }
786 
787 struct D3D11_MAPPED_SUBRESOURCE
788 {
789 	void* pData;
790 	UINT RowPitch;
791 	UINT DepthPitch;
792 }
793 
794 
795 mixin( uuid!(ID3D11Resource, "dc8e63f3-d12b-4952-b47b-5e45026a862d") );
796 interface ID3D11Resource : ID3D11DeviceChild
797 {
798 	extern(Windows):
799 	void GetType( 
800 				D3D11_RESOURCE_DIMENSION* pResourceDimension);
801 
802 	void SetEvictionPriority( 
803 				UINT EvictionPriority);
804 
805 	UINT GetEvictionPriority();
806 }
807     
808 struct D3D11_BUFFER_DESC
809 {
810 	UINT ByteWidth;
811 	D3D11_USAGE Usage = D3D11_USAGE_DEFAULT;
812 	UINT BindFlags;
813 	UINT CPUAccessFlags;
814 	UINT MiscFlags;
815 	UINT StructureByteStride;
816 }
817 
818 
819 mixin( uuid!(ID3D11Buffer, "48570b85-d1ee-4fcd-a250-eb350722b037") );
820 interface ID3D11Buffer : ID3D11Resource
821 {
822 	extern(Windows):
823 	void GetDesc( 
824 				D3D11_BUFFER_DESC* pDesc);
825 }
826     
827 struct D3D11_TEXTURE1D_DESC
828 {
829 	UINT Width;
830 	UINT MipLevels;
831 	UINT ArraySize = 1;
832 	DXGI_FORMAT Format;
833 	D3D11_USAGE Usage = D3D11_USAGE_DEFAULT;
834 	UINT BindFlags = D3D11_BIND_SHADER_RESOURCE;
835 	UINT CPUAccessFlags;
836 	UINT MiscFlags;
837 }
838 
839 
840 mixin( uuid!(ID3D11Texture1D, "f8fb5c27-c6b3-4f75-a4c8-439af2ef564c") );
841 interface ID3D11Texture1D : ID3D11Resource
842 {
843 	extern(Windows):
844 	void GetDesc( 
845 				D3D11_TEXTURE1D_DESC* pDesc);
846 
847 }
848     
849 struct D3D11_TEXTURE2D_DESC
850 {
851 	UINT Width;
852 	UINT Height;
853 	UINT MipLevels;
854 	UINT ArraySize = 1;
855 	DXGI_FORMAT Format;
856 	DXGI_SAMPLE_DESC SampleDesc = {Quality: 0, Count: 1};
857 	D3D11_USAGE Usage = D3D11_USAGE_DEFAULT;
858 	UINT BindFlags = D3D11_BIND_SHADER_RESOURCE;
859 	UINT CPUAccessFlags;
860 	UINT MiscFlags;
861 }
862 
863 
864 mixin( uuid!(ID3D11Texture2D, "6f15aaf2-d208-4e89-9ab4-489535d34f9c") );
865 interface ID3D11Texture2D : ID3D11Resource
866 {
867 	extern(Windows):
868 	void GetDesc( 
869 				D3D11_TEXTURE2D_DESC* pDesc);
870 }
871   
872 struct D3D11_TEXTURE3D_DESC
873 {
874 	UINT Width;
875 	UINT Height;
876 	UINT Depth;
877 	UINT MipLevels;
878 	DXGI_FORMAT Format;
879 	D3D11_USAGE Usage = D3D11_USAGE_DEFAULT;
880 	UINT BindFlags = D3D11_BIND_SHADER_RESOURCE;
881 	UINT CPUAccessFlags;
882 	UINT MiscFlags;
883 }
884 
885 
886 mixin( uuid!(ID3D11Texture3D, "037e866e-f56d-4357-a8af-9dabbe6e250e") );
887 interface ID3D11Texture3D : ID3D11Resource
888 {
889 	extern(Windows):
890 	void GetDesc( 
891 				D3D11_TEXTURE3D_DESC* pDesc);
892 }
893     
894 alias D3D11_TEXTURECUBE_FACE = int;
895 enum : D3D11_TEXTURECUBE_FACE
896 {
897 	D3D11_TEXTURECUBE_FACE_POSITIVE_X	= 0,
898 	D3D11_TEXTURECUBE_FACE_NEGATIVE_X	= 1,
899 	D3D11_TEXTURECUBE_FACE_POSITIVE_Y	= 2,
900 	D3D11_TEXTURECUBE_FACE_NEGATIVE_Y	= 3,
901 	D3D11_TEXTURECUBE_FACE_POSITIVE_Z	= 4,
902 	D3D11_TEXTURECUBE_FACE_NEGATIVE_Z	= 5
903 }
904 
905 
906 mixin( uuid!( ID3D11View, "839d1216-bb2e-412b-b7f4-a9dbebe08ed1") );
907 interface ID3D11View : ID3D11DeviceChild
908 {
909 	extern(Windows):
910 	void GetResource( 
911 				ID3D11Resource* ppResource);
912 }
913 
914     
915 struct D3D11_BUFFER_SRV
916 {
917 	union 
918 	{
919 		UINT FirstElement;
920 		UINT ElementOffset;
921 	}
922 	union 
923 	{
924 		UINT NumElements;
925 		UINT ElementWidth;
926 	}
927 }
928 
929 
930 alias D3D11_BUFFEREX_SRV_FLAG = int;
931 enum : D3D11_BUFFEREX_SRV_FLAG
932 {
933 	D3D11_BUFFEREX_SRV_FLAG_RAW	= 0x1
934 }
935 
936 
937 struct D3D11_BUFFEREX_SRV
938 {
939 	UINT FirstElement;
940 	UINT NumElements;
941 	UINT Flags;
942 }
943 
944 
945 struct D3D11_TEX1D_SRV
946 {
947 	UINT MostDetailedMip;
948 	UINT MipLevels;
949 }
950 
951 
952 struct D3D11_TEX1D_ARRAY_SRV
953 {
954 	UINT MostDetailedMip;
955 	UINT MipLevels;
956 	UINT FirstArraySlice;
957 	UINT ArraySize;
958 }
959 
960 struct D3D11_TEX2D_SRV
961 {
962 	UINT MostDetailedMip;
963 	UINT MipLevels;
964 }
965 
966 struct D3D11_TEX2D_ARRAY_SRV
967 {
968 	UINT MostDetailedMip;
969 	UINT MipLevels;
970 	UINT FirstArraySlice;
971 	UINT ArraySize;
972 }
973 
974 struct D3D11_TEX3D_SRV
975 {
976 	UINT MostDetailedMip;
977 	UINT MipLevels;
978 }
979 
980 struct D3D11_TEXCUBE_SRV
981 {
982 	UINT MostDetailedMip;
983 	UINT MipLevels;
984 }
985 
986 struct D3D11_TEXCUBE_ARRAY_SRV
987 {
988 	UINT MostDetailedMip;
989 	UINT MipLevels;
990 	UINT First2DArrayFace;
991 	UINT NumCubes;
992 }
993 
994 struct D3D11_TEX2DMS_SRV
995 {
996 	UINT UnusedField_NothingToDefine;
997 }
998 
999 struct D3D11_TEX2DMS_ARRAY_SRV
1000 {
1001 	UINT FirstArraySlice;
1002 	UINT ArraySize;
1003 }
1004 
1005 struct D3D11_SHADER_RESOURCE_VIEW_DESC
1006 {
1007 	DXGI_FORMAT Format = DXGI_FORMAT_UNKNOWN;
1008 	D3D11_SRV_DIMENSION ViewDimension;
1009 	union 
1010 	{
1011 		D3D11_BUFFER_SRV Buffer;
1012 		D3D11_TEX1D_SRV Texture1D;
1013 		D3D11_TEX1D_ARRAY_SRV Texture1DArray;
1014 		D3D11_TEX2D_SRV Texture2D;
1015 		D3D11_TEX2D_ARRAY_SRV Texture2DArray;
1016 		D3D11_TEX2DMS_SRV Texture2DMS;
1017 		D3D11_TEX2DMS_ARRAY_SRV Texture2DMSArray;
1018 		D3D11_TEX3D_SRV Texture3D;
1019 		D3D11_TEXCUBE_SRV TextureCube;
1020 		D3D11_TEXCUBE_ARRAY_SRV TextureCubeArray;
1021 		D3D11_BUFFEREX_SRV BufferEx;
1022 	}
1023 
1024 	this(
1025 		 D3D11_SRV_DIMENSION viewDimension,
1026 	     DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN,
1027 	     UINT mostDetailedMip = 0, // FirstElement for BUFFER
1028 	     UINT mipLevels = -1, // NumElements for BUFFER
1029 	     UINT firstArraySlice = 0, // First2DArrayFace for TEXTURECUBEARRAY
1030 	     UINT arraySize = -1, // NumCubes for TEXTURECUBEARRAY
1031 	     UINT flags = 0 ) // BUFFEREX only
1032 	{
1033 		Format = format;
1034 		ViewDimension = viewDimension;
1035 		switch (viewDimension)
1036 		{
1037 			case D3D11_SRV_DIMENSION_BUFFER:
1038 				Buffer.FirstElement = mostDetailedMip;
1039 				Buffer.NumElements = mipLevels;
1040 				break;
1041 			case D3D11_SRV_DIMENSION_TEXTURE1D:
1042 				Texture1D.MostDetailedMip = mostDetailedMip;
1043 				Texture1D.MipLevels = mipLevels;
1044 				break;
1045 			case D3D11_SRV_DIMENSION_TEXTURE1DARRAY:
1046 				Texture1DArray.MostDetailedMip = mostDetailedMip;
1047 				Texture1DArray.MipLevels = mipLevels;
1048 				Texture1DArray.FirstArraySlice = firstArraySlice;
1049 				Texture1DArray.ArraySize = arraySize;
1050 				break;
1051 			case D3D11_SRV_DIMENSION_TEXTURE2D:
1052 				Texture2D.MostDetailedMip = mostDetailedMip;
1053 				Texture2D.MipLevels = mipLevels;
1054 				break;
1055 			case D3D11_SRV_DIMENSION_TEXTURE2DARRAY:
1056 				Texture2DArray.MostDetailedMip = mostDetailedMip;
1057 				Texture2DArray.MipLevels = mipLevels;
1058 				Texture2DArray.FirstArraySlice = firstArraySlice;
1059 				Texture2DArray.ArraySize = arraySize;
1060 				break;
1061 			case D3D11_SRV_DIMENSION_TEXTURE2DMS:
1062 				break;
1063 			case D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY:
1064 				Texture2DMSArray.FirstArraySlice = firstArraySlice;
1065 				Texture2DMSArray.ArraySize = arraySize;
1066 				break;
1067 			case D3D11_SRV_DIMENSION_TEXTURE3D:
1068 				Texture3D.MostDetailedMip = mostDetailedMip;
1069 				Texture3D.MipLevels = mipLevels;
1070 				break;
1071 			case D3D11_SRV_DIMENSION_TEXTURECUBE:
1072 				TextureCube.MostDetailedMip = mostDetailedMip;
1073 				TextureCube.MipLevels = mipLevels;
1074 				break;
1075 			case D3D11_SRV_DIMENSION_TEXTURECUBEARRAY:
1076 				TextureCubeArray.MostDetailedMip = mostDetailedMip;
1077 				TextureCubeArray.MipLevels = mipLevels;
1078 				TextureCubeArray.First2DArrayFace = firstArraySlice;
1079 				TextureCubeArray.NumCubes = arraySize;
1080 				break;
1081 			case D3D11_SRV_DIMENSION_BUFFEREX:
1082 				BufferEx.FirstElement = mostDetailedMip;
1083 				BufferEx.NumElements = mipLevels;
1084 				BufferEx.Flags = flags;
1085 				break;
1086 			default: break;
1087 		}
1088 	}
1089 }
1090 
1091 
1092 mixin( uuid!(ID3D11ShaderResourceView, "b0e06fe0-8192-4e1a-b1ca-36d7414710b2") );
1093 interface ID3D11ShaderResourceView : ID3D11View
1094 {
1095 	extern(Windows):
1096 	void GetDesc( 
1097 				D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc);
1098 }
1099 
1100 
1101 struct D3D11_BUFFER_RTV
1102 {
1103 	union 
1104     {
1105 		UINT FirstElement;
1106 		UINT ElementOffset;
1107 	}
1108     union 
1109 	{
1110 		UINT NumElements;
1111 		UINT ElementWidth;
1112 	}
1113 }
1114 
1115 struct D3D11_TEX1D_RTV
1116 {
1117 	UINT MipSlice;
1118 }
1119 
1120 struct D3D11_TEX1D_ARRAY_RTV
1121 {
1122 	UINT MipSlice;
1123 	UINT FirstArraySlice;
1124 	UINT ArraySize;
1125 }
1126 
1127 struct D3D11_TEX2D_RTV
1128 {
1129 	UINT MipSlice;
1130 }
1131 
1132 struct D3D11_TEX2DMS_RTV
1133 {
1134 	UINT UnusedField_NothingToDefine;
1135 }
1136 
1137 struct D3D11_TEX2D_ARRAY_RTV
1138 {
1139 	UINT MipSlice;
1140 	UINT FirstArraySlice;
1141 	UINT ArraySize;
1142 }
1143 
1144 struct D3D11_TEX2DMS_ARRAY_RTV
1145 {
1146 	UINT FirstArraySlice;
1147 	UINT ArraySize;
1148 }
1149 
1150 struct D3D11_TEX3D_RTV
1151 {
1152 	UINT MipSlice;
1153 	UINT FirstWSlice;
1154 	UINT WSize;
1155 }
1156 
1157 struct D3D11_RENDER_TARGET_VIEW_DESC
1158 {
1159 	DXGI_FORMAT Format = DXGI_FORMAT_UNKNOWN;
1160 	D3D11_RTV_DIMENSION ViewDimension;
1161 	union 
1162 	{
1163 		D3D11_BUFFER_RTV Buffer;
1164 		D3D11_TEX1D_RTV Texture1D;
1165 		D3D11_TEX1D_ARRAY_RTV Texture1DArray;
1166 		D3D11_TEX2D_RTV Texture2D;
1167 		D3D11_TEX2D_ARRAY_RTV Texture2DArray;
1168 		D3D11_TEX2DMS_RTV Texture2DMS;
1169 		D3D11_TEX2DMS_ARRAY_RTV Texture2DMSArray;
1170 		D3D11_TEX3D_RTV Texture3D;
1171 	}
1172 
1173 	this(
1174 		D3D11_RTV_DIMENSION viewDimension,
1175 		DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN,
1176 		UINT mipSlice = 0, // FirstElement for BUFFER
1177 		UINT firstArraySlice = 0, // NumElements for BUFFER, FirstWSlice for TEXTURE3D
1178 		UINT arraySize = -1 ) // WSize for TEXTURE3D
1179 	{
1180 		Format = format;
1181 		ViewDimension = viewDimension;
1182 		switch (viewDimension)
1183 		{
1184 			case D3D11_RTV_DIMENSION_BUFFER:
1185 				Buffer.FirstElement = mipSlice;
1186 				Buffer.NumElements = firstArraySlice;
1187 				break;
1188 			case D3D11_RTV_DIMENSION_TEXTURE1D:
1189 				Texture1D.MipSlice = mipSlice;
1190 				break;
1191 			case D3D11_RTV_DIMENSION_TEXTURE1DARRAY:
1192 				Texture1DArray.MipSlice = mipSlice;
1193 				Texture1DArray.FirstArraySlice = firstArraySlice;
1194 				Texture1DArray.ArraySize = arraySize;
1195 				break;
1196 			case D3D11_RTV_DIMENSION_TEXTURE2D:
1197 				Texture2D.MipSlice = mipSlice;
1198 				break;
1199 			case D3D11_RTV_DIMENSION_TEXTURE2DARRAY:
1200 				Texture2DArray.MipSlice = mipSlice;
1201 				Texture2DArray.FirstArraySlice = firstArraySlice;
1202 				Texture2DArray.ArraySize = arraySize;
1203 				break;
1204 			case D3D11_RTV_DIMENSION_TEXTURE2DMS:
1205 				break;
1206 			case D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY:
1207 				Texture2DMSArray.FirstArraySlice = firstArraySlice;
1208 				Texture2DMSArray.ArraySize = arraySize;
1209 				break;
1210 			case D3D11_RTV_DIMENSION_TEXTURE3D:
1211 				Texture3D.MipSlice = mipSlice;
1212 				Texture3D.FirstWSlice = firstArraySlice;
1213 				Texture3D.WSize = arraySize;
1214 				break;
1215 			default: break;
1216 		}
1217 	}
1218 }
1219 
1220 
1221 mixin( uuid!(ID3D11RenderTargetView, "dfdba067-0b8d-4865-875b-d7b4516cc164") );
1222 interface ID3D11RenderTargetView : ID3D11View
1223 {
1224 	extern(Windows):
1225 	void GetDesc( 
1226 				D3D11_RENDER_TARGET_VIEW_DESC* pDesc);
1227 }
1228     
1229 struct D3D11_TEX1D_DSV
1230 {
1231 	UINT MipSlice;
1232 }
1233 
1234 struct D3D11_TEX1D_ARRAY_DSV
1235 {
1236 	UINT MipSlice;
1237 	UINT FirstArraySlice;
1238 	UINT ArraySize;
1239 }
1240 
1241 struct D3D11_TEX2D_DSV
1242 {
1243 	UINT MipSlice;
1244 }
1245 
1246 struct D3D11_TEX2D_ARRAY_DSV
1247 {
1248 	UINT MipSlice;
1249 	UINT FirstArraySlice;
1250 	UINT ArraySize;
1251 }
1252 
1253 struct D3D11_TEX2DMS_DSV
1254 {
1255 	UINT UnusedField_NothingToDefine;
1256 }
1257 
1258 struct D3D11_TEX2DMS_ARRAY_DSV
1259 {
1260 	UINT FirstArraySlice;
1261 	UINT ArraySize;
1262 }
1263 
1264 
1265 alias D3D11_DSV_FLAG = int;
1266 enum : D3D11_DSV_FLAG
1267 {
1268 	D3D11_DSV_READ_ONLY_DEPTH	= 0x1L,
1269 	D3D11_DSV_READ_ONLY_STENCIL	= 0x2L
1270 }
1271 
1272 struct D3D11_DEPTH_STENCIL_VIEW_DESC
1273 {
1274 	DXGI_FORMAT Format = DXGI_FORMAT_UNKNOWN;
1275 	D3D11_DSV_DIMENSION ViewDimension;
1276 	UINT Flags;
1277 	union 
1278 	{
1279 		D3D11_TEX1D_DSV Texture1D;
1280 		D3D11_TEX1D_ARRAY_DSV Texture1DArray;
1281 		D3D11_TEX2D_DSV Texture2D;
1282 		D3D11_TEX2D_ARRAY_DSV Texture2DArray;
1283 		D3D11_TEX2DMS_DSV Texture2DMS;
1284 		D3D11_TEX2DMS_ARRAY_DSV Texture2DMSArray;
1285 	}
1286 
1287 	this(
1288 		D3D11_DSV_DIMENSION viewDimension,
1289 		DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN,
1290 		UINT mipSlice = 0,
1291 		UINT firstArraySlice = 0,
1292 		UINT arraySize = -1,
1293 		UINT flags = 0 )
1294 	{
1295 		Format = format;
1296 		ViewDimension = viewDimension;
1297 		Flags = flags;
1298 		switch (viewDimension)
1299 		{
1300 			case D3D11_DSV_DIMENSION_TEXTURE1D:
1301 				Texture1D.MipSlice = mipSlice;
1302 				break;
1303 			case D3D11_DSV_DIMENSION_TEXTURE1DARRAY:
1304 				Texture1DArray.MipSlice = mipSlice;
1305 				Texture1DArray.FirstArraySlice = firstArraySlice;
1306 				Texture1DArray.ArraySize = arraySize;
1307 				break;
1308 			case D3D11_DSV_DIMENSION_TEXTURE2D:
1309 				Texture2D.MipSlice = mipSlice;
1310 				break;
1311 			case D3D11_DSV_DIMENSION_TEXTURE2DARRAY:
1312 				Texture2DArray.MipSlice = mipSlice;
1313 				Texture2DArray.FirstArraySlice = firstArraySlice;
1314 				Texture2DArray.ArraySize = arraySize;
1315 				break;
1316 			case D3D11_DSV_DIMENSION_TEXTURE2DMS:
1317 				break;
1318 			case D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY:
1319 				Texture2DMSArray.FirstArraySlice = firstArraySlice;
1320 				Texture2DMSArray.ArraySize = arraySize;
1321 				break;
1322 			default: break;
1323 		}
1324 	}
1325 }
1326 
1327 
1328 mixin( uuid!(ID3D11DepthStencilView, "9fdac92a-1876-48c3-afad-25b94f84a9b6") );
1329 interface ID3D11DepthStencilView : ID3D11View
1330 {
1331 	extern(Windows):
1332     void GetDesc( 
1333 				D3D11_DEPTH_STENCIL_VIEW_DESC* pDesc);
1334 }
1335 
1336 
1337 alias D3D11_BUFFER_UAV_FLAG = int;
1338 enum : D3D11_BUFFER_UAV_FLAG
1339 {
1340 	D3D11_BUFFER_UAV_FLAG_RAW	= 0x1,
1341 	D3D11_BUFFER_UAV_FLAG_APPEND	= 0x2,
1342 	D3D11_BUFFER_UAV_FLAG_COUNTER	= 0x4
1343 }
1344 
1345 struct D3D11_BUFFER_UAV
1346 {
1347 	UINT FirstElement;
1348 	UINT NumElements;
1349 	UINT Flags;
1350 }
1351 
1352 struct D3D11_TEX1D_UAV
1353 {
1354     UINT MipSlice;
1355 }
1356 
1357 struct D3D11_TEX1D_ARRAY_UAV
1358 {
1359 	UINT MipSlice;
1360 	UINT FirstArraySlice;
1361 	UINT ArraySize;
1362 }
1363 
1364 struct D3D11_TEX2D_UAV
1365 {
1366 	UINT MipSlice;
1367 }
1368 
1369 struct D3D11_TEX2D_ARRAY_UAV
1370 {
1371 	UINT MipSlice;
1372 	UINT FirstArraySlice;
1373 	UINT ArraySize;
1374 }
1375 
1376 struct D3D11_TEX3D_UAV
1377 {
1378 	UINT MipSlice;
1379 	UINT FirstWSlice;
1380 	UINT WSize;
1381 }
1382 
1383 struct D3D11_UNORDERED_ACCESS_VIEW_DESC
1384 {
1385 	DXGI_FORMAT Format = DXGI_FORMAT_UNKNOWN;
1386 	D3D11_UAV_DIMENSION ViewDimension;
1387 	union 
1388 	{
1389 		D3D11_BUFFER_UAV Buffer;
1390 		D3D11_TEX1D_UAV Texture1D;
1391 		D3D11_TEX1D_ARRAY_UAV Texture1DArray;
1392 		D3D11_TEX2D_UAV Texture2D;
1393 		D3D11_TEX2D_ARRAY_UAV Texture2DArray;
1394 		D3D11_TEX3D_UAV Texture3D;
1395 	}
1396 
1397 	this(
1398 		D3D11_UAV_DIMENSION viewDimension,
1399 		DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN,
1400 		UINT mipSlice = 0, // FirstElement for BUFFER
1401 		UINT firstArraySlice = 0, // NumElements for BUFFER, FirstWSlice for TEXTURE3D
1402 		UINT arraySize = -1, // WSize for TEXTURE3D
1403 		UINT flags = 0 ) // BUFFER only
1404 	{
1405 		Format = format;
1406 		ViewDimension = viewDimension;
1407 		switch (viewDimension)
1408 		{
1409 			case D3D11_UAV_DIMENSION_BUFFER:
1410 				Buffer.FirstElement = mipSlice;
1411 				Buffer.NumElements = firstArraySlice;
1412 				Buffer.Flags = flags;
1413 				break;
1414 			case D3D11_UAV_DIMENSION_TEXTURE1D:
1415 				Texture1D.MipSlice = mipSlice;
1416 				break;
1417 			case D3D11_UAV_DIMENSION_TEXTURE1DARRAY:
1418 				Texture1DArray.MipSlice = mipSlice;
1419 				Texture1DArray.FirstArraySlice = firstArraySlice;
1420 				Texture1DArray.ArraySize = arraySize;
1421 				break;
1422 			case D3D11_UAV_DIMENSION_TEXTURE2D:
1423 				Texture2D.MipSlice = mipSlice;
1424 				break;
1425 			case D3D11_UAV_DIMENSION_TEXTURE2DARRAY:
1426 				Texture2DArray.MipSlice = mipSlice;
1427 				Texture2DArray.FirstArraySlice = firstArraySlice;
1428 				Texture2DArray.ArraySize = arraySize;
1429 				break;
1430 			case D3D11_UAV_DIMENSION_TEXTURE3D:
1431 				Texture3D.MipSlice = mipSlice;
1432 				Texture3D.FirstWSlice = firstArraySlice;
1433 				Texture3D.WSize = arraySize;
1434 				break;
1435 			default: break;
1436 		}
1437 	}
1438 }
1439 
1440 
1441 mixin( uuid!( ID3D11UnorderedAccessView, "28acf509-7f5c-48f6-8611-f316010a6380") );
1442 interface ID3D11UnorderedAccessView : ID3D11View
1443 {
1444 	extern(Windows):
1445 	void GetDesc( 
1446 				D3D11_UNORDERED_ACCESS_VIEW_DESC* pDesc);
1447 }
1448    
1449 
1450 mixin( uuid!(ID3D11VertexShader, "3b301d64-d678-4289-8897-22f8928b72f3") );
1451 interface ID3D11VertexShader : ID3D11DeviceChild
1452 {
1453 	extern(Windows):
1454 }
1455     
1456 
1457 mixin( uuid!(ID3D11HullShader, "8e5c6061-628a-4c8e-8264-bbe45cb3d5dd") );
1458 interface ID3D11HullShader : ID3D11DeviceChild
1459 {
1460 	extern(Windows):
1461 }
1462 
1463 
1464 mixin( uuid!(ID3D11DomainShader, "f582c508-0f36-490c-9977-31eece268cfa") );
1465 interface ID3D11DomainShader : ID3D11DeviceChild
1466 {
1467 	extern(Windows):
1468 }
1469 
1470 
1471 mixin( uuid!( ID3D11GeometryShader, "38325b96-effb-4022-ba02-2e795b70275c") );
1472 interface ID3D11GeometryShader : ID3D11DeviceChild
1473 {
1474 	extern(Windows):
1475 }
1476 
1477 
1478 mixin( uuid!(ID3D11PixelShader, "ea82e40d-51dc-4f33-93d4-db7c9125ae8c") );
1479 interface ID3D11PixelShader : ID3D11DeviceChild
1480 {
1481 	extern(Windows):
1482 }
1483 
1484 
1485 mixin( uuid!( ID3D11ComputeShader, "4f5b196e-c2bd-495e-bd01-1fded38e4969") );
1486 interface ID3D11ComputeShader : ID3D11DeviceChild
1487 {
1488 	extern(Windows):
1489 }
1490 
1491 
1492 mixin( uuid!( ID3D11InputLayout, "e4819ddc-4cf0-4025-bd26-5de82a3e07b7") );
1493 interface ID3D11InputLayout : ID3D11DeviceChild
1494 {
1495 	extern(Windows):
1496 }
1497 
1498 
1499 alias D3D11_FILTER = int;
1500 enum : D3D11_FILTER
1501 {
1502 	D3D11_FILTER_MIN_MAG_MIP_POINT	= 0,
1503 	D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR	= 0x1,
1504 	D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT	= 0x4,
1505 	D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR	= 0x5,
1506 	D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT	= 0x10,
1507 	D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR	= 0x11,
1508 	D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT	= 0x14,
1509 	D3D11_FILTER_MIN_MAG_MIP_LINEAR	= 0x15,
1510 	D3D11_FILTER_ANISOTROPIC	= 0x55,
1511 	D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT	= 0x80,
1512 	D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR	= 0x81,
1513 	D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT	= 0x84,
1514 	D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR	= 0x85,
1515 	D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT	= 0x90,
1516 	D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR	= 0x91,
1517 	D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT	= 0x94,
1518 	D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR	= 0x95,
1519 	D3D11_FILTER_COMPARISON_ANISOTROPIC	= 0xd5
1520 }
1521 
1522 
1523 alias D3D11_FILTER_TYPE = int;
1524 enum : D3D11_FILTER_TYPE
1525 {
1526 	D3D11_FILTER_TYPE_POINT	= 0,
1527 	D3D11_FILTER_TYPE_LINEAR	= 1
1528 }
1529 
1530 enum D3D11_FILTER_TYPE_MASK = ( 0x3 );
1531 enum D3D11_MIN_FILTER_SHIFT = ( 4 );
1532 enum D3D11_MAG_FILTER_SHIFT = ( 2 );
1533 enum D3D11_MIP_FILTER_SHIFT = ( 0 );
1534 enum D3D11_COMPARISON_FILTERING_BIT = ( 0x80 );
1535 enum D3D11_ANISOTROPIC_FILTERING_BIT = ( 0x40 );
1536 
1537 D3D11_FILTER D3D11_ENCODE_BASIC_FILTER(T0, T1, T2, T3)( T0 min, T1 mag, T2 mip, T3 bComparison ){
1538     return ( cast( D3D11_FILTER ) (                                                   
1539     ( ( bComparison ) ? D3D11_COMPARISON_FILTERING_BIT : 0 ) |             
1540     ( ( ( min ) & D3D11_FILTER_TYPE_MASK ) << D3D11_MIN_FILTER_SHIFT ) |   
1541     ( ( ( mag ) & D3D11_FILTER_TYPE_MASK ) << D3D11_MAG_FILTER_SHIFT ) |
1542     ( ( ( mip ) & D3D11_FILTER_TYPE_MASK ) << D3D11_MIP_FILTER_SHIFT ) ) );
1543 }
1544 
1545 D3D11_FILTER D3D11_ENCODE_ANISOTROPIC_FILTER(T)(T bComparison ){
1546     return ( cast( D3D11_FILTER ) (
1547     D3D11_ANISOTROPIC_FILTERING_BIT |
1548     D3D11_ENCODE_BASIC_FILTER( D3D11_FILTER_TYPE.D3D11_FILTER_TYPE_LINEAR,
1549                             D3D11_FILTER_TYPE.D3D11_FILTER_TYPE_LINEAR,
1550                             D3D11_FILTER_TYPE.D3D11_FILTER_TYPE_LINEAR,
1551                             bComparison )));
1552 }
1553 
1554 
1555 D3D11_FILTER_TYPE D3D11_DECODE_MAG_FILTER(T)( d3d11Filter ){
1556     return ( cast( D3D11_FILTER_TYPE )
1557             ( ( ( d3d11Filter ) >> D3D11_MAG_FILTER_SHIFT ) & D3D11_FILTER_TYPE_MASK ) ) ;
1558 }
1559 
1560 
1561 D3D11_FILTER_TYPE D3D11_DECODE_MIN_FILTER(T)(T d3d11Filter ){                                                             
1562     return ( cast( D3D11_FILTER_TYPE )                                                    
1563             ( ( ( d3d11Filter ) >> D3D11_MIN_FILTER_SHIFT ) & D3D11_FILTER_TYPE_MASK ) );
1564 }
1565     
1566 bool D3D11_DECODE_IS_COMPARISON_FILTER(T)(T d3d11Filter ){
1567     return cast(bool)( ( d3d11Filter ) & D3D11_COMPARISON_FILTERING_BIT );
1568 }
1569 bool D3D11_DECODE_IS_ANISOTROPIC_FILTER(T)(T d3d11Filter ){
1570     return cast(bool)( ( ( d3d11Filter ) & D3D11_ANISOTROPIC_FILTERING_BIT ) &&
1571                       ( D3D11_FILTER_TYPE.D3D11_FILTER_TYPE_LINEAR == D3D11_DECODE_MIN_FILTER( d3d11Filter ) ) &&
1572                       ( D3D11_FILTER_TYPE.D3D11_FILTER_TYPE_LINEAR == D3D11_DECODE_MAG_FILTER( d3d11Filter ) ) &&
1573                       ( D3D11_FILTER_TYPE.D3D11_FILTER_TYPE_LINEAR == D3D11_DECODE_MIP_FILTER( d3d11Filter ) ) );
1574 }
1575 
1576 
1577 alias D3D11_TEXTURE_ADDRESS_MODE = int;
1578 enum : D3D11_TEXTURE_ADDRESS_MODE
1579 {
1580 	D3D11_TEXTURE_ADDRESS_WRAP	= 1,
1581 	D3D11_TEXTURE_ADDRESS_MIRROR	= 2,
1582 	D3D11_TEXTURE_ADDRESS_CLAMP	= 3,
1583 	D3D11_TEXTURE_ADDRESS_BORDER	= 4,
1584 	D3D11_TEXTURE_ADDRESS_MIRROR_ONCE	= 5
1585 }
1586 
1587 struct D3D11_SAMPLER_DESC
1588 {
1589 	D3D11_FILTER Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
1590 	D3D11_TEXTURE_ADDRESS_MODE AddressU = D3D11_TEXTURE_ADDRESS_CLAMP;
1591 	D3D11_TEXTURE_ADDRESS_MODE AddressV = D3D11_TEXTURE_ADDRESS_CLAMP;
1592 	D3D11_TEXTURE_ADDRESS_MODE AddressW = D3D11_TEXTURE_ADDRESS_CLAMP;
1593 	FLOAT MipLODBias = 0;
1594 	UINT MaxAnisotropy = 1;
1595 	D3D11_COMPARISON_FUNC ComparisonFunc = D3D11_COMPARISON_NEVER;
1596 	FLOAT[ 4 ] BorderColor = [1.0f, 1.0f, 1.0f, 1.0f];
1597 	FLOAT MinLOD = -3.402823466e+38F;
1598 	FLOAT MaxLOD = 3.402823466e+38F;
1599 }
1600 
1601 	
1602 mixin( uuid!( ID3D11SamplerState, "da6fea51-564c-4487-9810-f0d0f9b4e3a5") );
1603 interface ID3D11SamplerState : ID3D11DeviceChild
1604 {
1605 	extern(Windows):
1606 	void GetDesc( 
1607 				D3D11_SAMPLER_DESC* pDesc);
1608 }
1609 
1610 
1611 alias D3D11_FORMAT_SUPPORT = int;
1612 enum : D3D11_FORMAT_SUPPORT
1613 {
1614 	D3D11_FORMAT_SUPPORT_BUFFER	= 0x1,
1615 	D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER	= 0x2,
1616 	D3D11_FORMAT_SUPPORT_IA_INDEX_BUFFER	= 0x4,
1617 	D3D11_FORMAT_SUPPORT_SO_BUFFER	= 0x8,
1618 	D3D11_FORMAT_SUPPORT_TEXTURE1D	= 0x10,
1619 	D3D11_FORMAT_SUPPORT_TEXTURE2D	= 0x20,
1620 	D3D11_FORMAT_SUPPORT_TEXTURE3D	= 0x40,
1621 	D3D11_FORMAT_SUPPORT_TEXTURECUBE	= 0x80,
1622 	D3D11_FORMAT_SUPPORT_SHADER_LOAD	= 0x100,
1623 	D3D11_FORMAT_SUPPORT_SHADER_SAMPLE	= 0x200,
1624 	D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON	= 0x400,
1625 	D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT	= 0x800,
1626 	D3D11_FORMAT_SUPPORT_MIP	= 0x1000,
1627 	D3D11_FORMAT_SUPPORT_MIP_AUTOGEN	= 0x2000,
1628 	D3D11_FORMAT_SUPPORT_RENDER_TARGET	= 0x4000,
1629 	D3D11_FORMAT_SUPPORT_BLENDABLE	= 0x8000,
1630 	D3D11_FORMAT_SUPPORT_DEPTH_STENCIL	= 0x10000,
1631 	D3D11_FORMAT_SUPPORT_CPU_LOCKABLE	= 0x20000,
1632 	D3D11_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE	= 0x40000,
1633 	D3D11_FORMAT_SUPPORT_DISPLAY	= 0x80000,
1634 	D3D11_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT	= 0x100000,
1635 	D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET	= 0x200000,
1636 	D3D11_FORMAT_SUPPORT_MULTISAMPLE_LOAD	= 0x400000,
1637 	D3D11_FORMAT_SUPPORT_SHADER_GATHER	= 0x800000,
1638 	D3D11_FORMAT_SUPPORT_BACK_BUFFER_CAST	= 0x1000000,
1639 	D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW	= 0x2000000,
1640 	D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON	= 0x4000000
1641 }
1642 
1643 
1644 alias D3D11_FORMAT_SUPPORT2 = int;
1645 enum : D3D11_FORMAT_SUPPORT2
1646 {
1647 	D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_ADD	= 0x1,
1648 	D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS	= 0x2,
1649 	D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE	= 0x4,
1650 	D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE	= 0x8,
1651 	D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX	= 0x10,
1652 	D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX	= 0x20,
1653 	D3D11_FORMAT_SUPPORT2_UAV_TYPED_LOAD	= 0x40,
1654 	D3D11_FORMAT_SUPPORT2_UAV_TYPED_STORE	= 0x80
1655 }
1656 
1657 
1658 mixin( uuid!(ID3D11Asynchronous, "4b35d0cd-1e15-4258-9c98-1b1333f6dd3b") );
1659 interface ID3D11Asynchronous : ID3D11DeviceChild
1660 {
1661 	extern(Windows):
1662 				UINT GetDataSize();
1663 }
1664 
1665 
1666 alias D3D11_ASYNC_GETDATA_FLAG = int;
1667 enum : D3D11_ASYNC_GETDATA_FLAG
1668 {
1669 	D3D11_ASYNC_GETDATA_DONOTFLUSH	= 0x1
1670 }
1671 
1672 
1673 alias D3D11_QUERY = int;
1674 enum : D3D11_QUERY
1675 {
1676 	D3D11_QUERY_EVENT	= 0,
1677 	D3D11_QUERY_OCCLUSION	= ( D3D11_QUERY_EVENT + 1 ) ,
1678 	D3D11_QUERY_TIMESTAMP	= ( D3D11_QUERY_OCCLUSION + 1 ) ,
1679 	D3D11_QUERY_TIMESTAMP_DISJOINT	= ( D3D11_QUERY_TIMESTAMP + 1 ) ,
1680 	D3D11_QUERY_PIPELINE_STATISTICS	= ( D3D11_QUERY_TIMESTAMP_DISJOINT + 1 ) ,
1681 	D3D11_QUERY_OCCLUSION_PREDICATE	= ( D3D11_QUERY_PIPELINE_STATISTICS + 1 ) ,
1682 	D3D11_QUERY_SO_STATISTICS	= ( D3D11_QUERY_OCCLUSION_PREDICATE + 1 ) ,
1683 	D3D11_QUERY_SO_OVERFLOW_PREDICATE	= ( D3D11_QUERY_SO_STATISTICS + 1 ) ,
1684 	D3D11_QUERY_SO_STATISTICS_STREAM0	= ( D3D11_QUERY_SO_OVERFLOW_PREDICATE + 1 ) ,
1685 	D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0	= ( D3D11_QUERY_SO_STATISTICS_STREAM0 + 1 ) ,
1686 	D3D11_QUERY_SO_STATISTICS_STREAM1	= ( D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0 + 1 ) ,
1687 	D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1	= ( D3D11_QUERY_SO_STATISTICS_STREAM1 + 1 ) ,
1688 	D3D11_QUERY_SO_STATISTICS_STREAM2	= ( D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1 + 1 ) ,
1689 	D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2	= ( D3D11_QUERY_SO_STATISTICS_STREAM2 + 1 ) ,
1690 	D3D11_QUERY_SO_STATISTICS_STREAM3	= ( D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2 + 1 ) ,
1691 	D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3	= ( D3D11_QUERY_SO_STATISTICS_STREAM3 + 1 ) 
1692 }
1693 
1694 
1695 alias D3D11_QUERY_MISC_FLAG = int;
1696 enum : D3D11_QUERY_MISC_FLAG
1697 {
1698 	D3D11_QUERY_MISC_PREDICATEHINT	= 0x1
1699 }
1700 
1701 struct D3D11_QUERY_DESC
1702 {
1703 	D3D11_QUERY Query;
1704 	UINT MiscFlags;
1705 }
1706 
1707 	
1708 mixin( uuid!(ID3D11Query, "d6c00747-87b7-425e-b84d-44d108560afd") );
1709 interface ID3D11Query : ID3D11Asynchronous
1710 {
1711 	extern(Windows):
1712 	void GetDesc( 
1713 				D3D11_QUERY_DESC* pDesc);
1714 }
1715 
1716 
1717 mixin( uuid!(ID3D11Predicate, "9eb576dd-9f77-4d86-81aa-8bab5fe490e2") );
1718 interface ID3D11Predicate : ID3D11Query
1719 {
1720 	extern(Windows):
1721 }
1722     
1723 
1724 struct D3D11_QUERY_DATA_TIMESTAMP_DISJOINT
1725 {
1726 	UINT64 Frequency;
1727 	BOOL Disjoint;
1728 }
1729 
1730 struct D3D11_QUERY_DATA_PIPELINE_STATISTICS
1731 {
1732 	UINT64 IAVertices;
1733 	UINT64 IAPrimitives;
1734 	UINT64 VSInvocations;
1735 	UINT64 GSInvocations;
1736 	UINT64 GSPrimitives;
1737 	UINT64 CInvocations;
1738 	UINT64 CPrimitives;
1739 	UINT64 PSInvocations;
1740 	UINT64 HSInvocations;
1741 	UINT64 DSInvocations;
1742 	UINT64 CSInvocations;
1743 }
1744 
1745 struct D3D11_QUERY_DATA_SO_STATISTICS
1746 {
1747 	UINT64 NumPrimitivesWritten;
1748 	UINT64 PrimitivesStorageNeeded;
1749 }
1750 
1751 
1752 alias D3D11_COUNTER = int;
1753 enum : D3D11_COUNTER
1754 {
1755 	D3D11_COUNTER_DEVICE_DEPENDENT_0	= 0x40000000
1756 }
1757 
1758 
1759 alias D3D11_COUNTER_TYPE = int;
1760 enum : D3D11_COUNTER_TYPE
1761 {
1762 	D3D11_COUNTER_TYPE_FLOAT32	= 0,
1763 	D3D11_COUNTER_TYPE_UINT16	= ( D3D11_COUNTER_TYPE_FLOAT32 + 1 ) ,
1764 	D3D11_COUNTER_TYPE_UINT32	= ( D3D11_COUNTER_TYPE_UINT16 + 1 ) ,
1765 	D3D11_COUNTER_TYPE_UINT64	= ( D3D11_COUNTER_TYPE_UINT32 + 1 ) 
1766 }
1767 
1768 struct D3D11_COUNTER_DESC
1769 {
1770 	D3D11_COUNTER Counter;
1771 	UINT MiscFlags;
1772 }
1773 
1774 	
1775 struct D3D11_COUNTER_INFO
1776 {
1777 	D3D11_COUNTER LastDeviceDependentCounter;
1778 	UINT NumSimultaneousCounters;
1779 	UINT8 NumDetectableParallelUnits;
1780 }
1781 
1782 
1783 mixin( uuid!(ID3D11Counter, "6e8c49fb-a371-4770-b440-29086022b741") );
1784 interface ID3D11Counter : ID3D11Asynchronous
1785 {
1786 	extern(Windows):
1787 	void GetDesc( 
1788 				D3D11_COUNTER_DESC* pDesc);
1789 }
1790 
1791 
1792 alias D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS = int;
1793 enum : D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS
1794 {	
1795 	D3D11_STANDARD_MULTISAMPLE_PATTERN	= 0xffffffff,
1796 	D3D11_CENTER_MULTISAMPLE_PATTERN	= 0xfffffffe
1797 }
1798 
1799 
1800 alias D3D11_DEVICE_CONTEXT_TYPE = int;
1801 enum : D3D11_DEVICE_CONTEXT_TYPE
1802 {
1803 	D3D11_DEVICE_CONTEXT_IMMEDIATE	= 0,
1804 	D3D11_DEVICE_CONTEXT_DEFERRED	= ( D3D11_DEVICE_CONTEXT_IMMEDIATE + 1 ) 
1805 }
1806 
1807 struct D3D11_CLASS_INSTANCE_DESC
1808 {
1809 	UINT InstanceId;
1810 	UINT InstanceIndex;
1811 	UINT TypeId;
1812 	UINT ConstantBuffer;
1813 	UINT BaseConstantBufferOffset;
1814 	UINT BaseTexture;
1815 	UINT BaseSampler;
1816 	BOOL Created;
1817 }
1818 
1819 
1820 mixin( uuid!(ID3D11ClassInstance, "a6cd7faa-b0b7-4a2f-9436-8662a65797cb") );
1821 interface ID3D11ClassInstance : ID3D11DeviceChild
1822 {
1823 	extern(Windows):
1824 	void GetClassLinkage( 
1825 				ID3D11ClassLinkage* ppLinkage);
1826 
1827 	void GetDesc( 
1828 				D3D11_CLASS_INSTANCE_DESC* pDesc);
1829         
1830 	void GetInstanceName( 
1831 				LPSTR pInstanceName,
1832 				SIZE_T* pBufferLength);
1833 
1834 	void GetTypeName( 
1835 				LPSTR pTypeName,
1836 				SIZE_T* pBufferLength);
1837 }
1838     
1839 
1840 mixin( uuid!(ID3D11ClassLinkage, "ddf57cba-9543-46e4-a12b-f207a0fe7fed") );
1841 interface ID3D11ClassLinkage : ID3D11DeviceChild
1842 {
1843 	extern(Windows):
1844 	HRESULT GetClassInstance( 
1845 				LPCSTR pClassInstanceName,
1846 				UINT InstanceIndex,
1847 				ID3D11ClassInstance* ppInstance);
1848 
1849 	HRESULT CreateClassInstance( 
1850 				LPCSTR pClassTypeName,
1851 				UINT ConstantBufferOffset,
1852 				UINT ConstantVectorOffset,
1853 				UINT TextureOffset,
1854 				UINT SamplerOffset,
1855 				ID3D11ClassInstance* ppInstance);
1856 }
1857     
1858 
1859 mixin( uuid!(ID3D11CommandList, "a24bc4d1-769e-43f7-8013-98ff566c18e2") );
1860 interface ID3D11CommandList : ID3D11DeviceChild
1861 {
1862 	extern(Windows):
1863 				UINT GetContextFlags();
1864 }
1865     
1866 
1867 alias D3D11_FEATURE = int;
1868 enum : D3D11_FEATURE
1869 {
1870 	D3D11_FEATURE_THREADING	= 0,
1871 	D3D11_FEATURE_DOUBLES	= ( D3D11_FEATURE_THREADING + 1 ) ,
1872 	D3D11_FEATURE_FORMAT_SUPPORT	= ( D3D11_FEATURE_DOUBLES + 1 ) ,
1873 	D3D11_FEATURE_FORMAT_SUPPORT2	= ( D3D11_FEATURE_FORMAT_SUPPORT + 1 ) ,
1874 	D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS	= ( D3D11_FEATURE_FORMAT_SUPPORT2 + 1 ) 
1875 }
1876 
1877 struct D3D11_FEATURE_DATA_THREADING
1878 {
1879     BOOL DriverConcurrentCreates;
1880     BOOL DriverCommandLists;
1881 }
1882 
1883 struct D3D11_FEATURE_DATA_DOUBLES
1884 {
1885 	BOOL DoublePrecisionFloatShaderOps;
1886 }
1887 
1888 struct D3D11_FEATURE_DATA_FORMAT_SUPPORT
1889 {
1890 	DXGI_FORMAT InFormat;
1891 	UINT OutFormatSupport;
1892 }
1893 
1894 struct D3D11_FEATURE_DATA_FORMAT_SUPPORT2
1895 {
1896 	DXGI_FORMAT InFormat;
1897 	UINT OutFormatSupport2;
1898 }
1899 
1900 struct D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS
1901 {
1902 	BOOL ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x;
1903 }
1904 
1905 
1906 mixin( uuid!(ID3D11DeviceContext, "c0bfa96c-e089-44fb-8eaf-26f8796190da") );
1907 interface ID3D11DeviceContext : ID3D11DeviceChild
1908 {
1909 	extern(Windows):
1910 	void VSSetConstantBuffers( 
1911 				UINT StartSlot,
1912 				UINT NumBuffers,
1913 				const(ID3D11Buffer)* ppConstantBuffers);
1914 
1915 	void PSSetShaderResources( 
1916 				UINT StartSlot,
1917 				UINT NumViews,
1918 				const(ID3D11ShaderResourceView)* ppShaderResourceViews);
1919         
1920 	void PSSetShader( 
1921 				ID3D11PixelShader pPixelShader,
1922 				const(ID3D11ClassInstance)* ppClassInstances,
1923 				UINT NumClassInstances);
1924         
1925 	void PSSetSamplers( 
1926 				UINT StartSlot,
1927 				UINT NumSamplers,
1928 				const(ID3D11SamplerState)* ppSamplers);
1929         
1930 	void VSSetShader( 
1931 				ID3D11VertexShader pVertexShader,
1932 				const(ID3D11ClassInstance)* ppClassInstances,
1933 				UINT NumClassInstances);
1934         
1935 	void DrawIndexed( 
1936 				UINT IndexCount,
1937 				UINT StartIndexLocation,
1938 				INT BaseVertexLocation);
1939 
1940 	void Draw( 
1941 				UINT VertexCount,
1942 				UINT StartVertexLocation);
1943 
1944 	HRESULT Map( 
1945 				ID3D11Resource pResource,
1946 				UINT Subresource,
1947 				D3D11_MAP MapType,
1948 				UINT MapFlags,
1949 				D3D11_MAPPED_SUBRESOURCE* pMappedResource);
1950 
1951 	void Unmap( 
1952 				ID3D11Resource pResource,
1953 				UINT Subresource);
1954 
1955 	void PSSetConstantBuffers( 
1956 				UINT StartSlot,
1957 				UINT NumBuffers,
1958 				const(ID3D11Buffer)* ppConstantBuffers);
1959 
1960 	void IASetInputLayout( 
1961 				ID3D11InputLayout pInputLayout);
1962 
1963 	void IASetVertexBuffers( 
1964 				UINT StartSlot,
1965 				UINT NumBuffers,
1966 				const(ID3D11Buffer)* ppVertexBuffers,
1967 				const(UINT)* pStrides,
1968 				const(UINT)* pOffsets);
1969 
1970 	void IASetIndexBuffer( 
1971 				ID3D11Buffer pIndexBuffer,
1972 				DXGI_FORMAT Format,
1973 				UINT Offset);
1974 
1975 	void DrawIndexedInstanced( 
1976 				UINT IndexCountPerInstance,
1977 				UINT InstanceCount,
1978 				UINT StartIndexLocation,
1979 				INT BaseVertexLocation,
1980 				UINT StartInstanceLocation);
1981 
1982 	void DrawInstanced( 
1983 				UINT VertexCountPerInstance,
1984 				UINT InstanceCount,
1985 				UINT StartVertexLocation,
1986 				UINT StartInstanceLocation);
1987 
1988 	void GSSetConstantBuffers( 
1989 				UINT StartSlot,
1990 				UINT NumBuffers,
1991 				const(ID3D11Buffer)* ppConstantBuffers);
1992 
1993 	void GSSetShader( 
1994 				ID3D11GeometryShader pShader,
1995 				const(ID3D11ClassInstance)* ppClassInstances,
1996 				UINT NumClassInstances);
1997 
1998 	void IASetPrimitiveTopology( 
1999 				D3D11_PRIMITIVE_TOPOLOGY Topology);
2000 
2001 	void VSSetShaderResources( 
2002 				UINT StartSlot,
2003 				UINT NumViews,
2004 				const(ID3D11ShaderResourceView)* ppShaderResourceViews);
2005 
2006 	void VSSetSamplers( 
2007 				UINT StartSlot,
2008 				UINT NumSamplers,
2009 				const(ID3D11SamplerState)* ppSamplers);
2010 
2011 	void Begin( 
2012 				ID3D11Asynchronous pAsync);
2013 
2014 	void End( 
2015 				ID3D11Asynchronous pAsync);
2016         
2017 	HRESULT GetData( 
2018 				ID3D11Asynchronous pAsync,
2019 				void* pData,
2020 				UINT DataSize,
2021 				UINT GetDataFlags);
2022 
2023 	void SetPredication( 
2024 				ID3D11Predicate pPredicate,
2025 				BOOL PredicateValue);
2026 
2027 	void GSSetShaderResources( 
2028 				UINT StartSlot,
2029 				UINT NumViews,
2030 				const(ID3D11ShaderResourceView)* ppShaderResourceViews);
2031 
2032 	void GSSetSamplers( 
2033 				UINT StartSlot,
2034 				UINT NumSamplers,
2035 				const(ID3D11SamplerState)* ppSamplers);
2036 
2037 	void OMSetRenderTargets( 
2038 				UINT NumViews,
2039 				const(ID3D11RenderTargetView)* ppRenderTargetViews,
2040 				ID3D11DepthStencilView pDepthStencilView);
2041 
2042 	void OMSetRenderTargetsAndUnorderedAccessViews( 
2043 				UINT NumRTVs,
2044 				const(ID3D11RenderTargetView)* ppRenderTargetViews,
2045 				ID3D11DepthStencilView pDepthStencilView,
2046 				UINT UAVStartSlot,
2047 				UINT NumUAVs,
2048 				const(ID3D11UnorderedAccessView)* ppUnorderedAccessViews,
2049 				const(UINT)* pUAVInitialCounts);
2050 
2051 	void OMSetBlendState( 
2052 				ID3D11BlendState pBlendState,
2053 				FLOAT* BlendFactor, //FLOAT[ 4 ] BlendFactor
2054 				UINT SampleMask);
2055 
2056 	void OMSetDepthStencilState( 
2057 				ID3D11DepthStencilState pDepthStencilState,
2058 				UINT StencilRef);
2059 
2060 	void SOSetTargets( 
2061 				UINT NumBuffers,
2062 				const(ID3D11Buffer)* ppSOTargets,
2063 				const(UINT)* pOffsets);
2064 
2065 	void DrawAuto();
2066 
2067 	void DrawIndexedInstancedIndirect( 
2068 				ID3D11Buffer pBufferForArgs,
2069 				UINT AlignedByteOffsetForArgs);
2070 
2071 	void DrawInstancedIndirect( 
2072 				ID3D11Buffer pBufferForArgs,
2073 				UINT AlignedByteOffsetForArgs);
2074 
2075 	void Dispatch( 
2076 				UINT ThreadGroupCountX,
2077 				UINT ThreadGroupCountY,
2078 				UINT ThreadGroupCountZ);
2079 
2080 	void DispatchIndirect( 
2081 				ID3D11Buffer pBufferForArgs,
2082 				UINT AlignedByteOffsetForArgs);
2083 
2084 	void RSSetState( 
2085 				ID3D11RasterizerState pRasterizerState);
2086 
2087 	void RSSetViewports( 
2088 				UINT NumViewports,
2089 				const(D3D11_VIEWPORT)* pViewports);
2090 
2091 	void RSSetScissorRects( 
2092 				UINT NumRects,
2093 				const(D3D11_RECT)* pRects);
2094 
2095 	void CopySubresourceRegion( 
2096 				ID3D11Resource pDstResource,
2097 				UINT DstSubresource,
2098 				UINT DstX,
2099 				UINT DstY,
2100 				UINT DstZ,
2101 				ID3D11Resource pSrcResource,
2102 				UINT SrcSubresource,
2103 				const(D3D11_BOX)* pSrcBox);
2104 
2105 	void CopyResource( 
2106 				ID3D11Resource pDstResource,
2107 				ID3D11Resource pSrcResource);
2108 
2109 	void UpdateSubresource( 
2110 				ID3D11Resource pDstResource,
2111 				UINT DstSubresource,
2112 				const(D3D11_BOX)* pDstBox,
2113 				const void* pSrcData,
2114 				UINT SrcRowPitch,
2115 				UINT SrcDepthPitch);
2116 
2117 	void CopyStructureCount( 
2118 				ID3D11Buffer pDstBuffer,
2119 				UINT DstAlignedByteOffset,
2120 				ID3D11UnorderedAccessView pSrcView);
2121 
2122 	void ClearRenderTargetView( 
2123 				ID3D11RenderTargetView pRenderTargetView,
2124 				FLOAT* ColorRGBA); //FLOAT[ 4 ] ColorRGBA);
2125 
2126 	void ClearUnorderedAccessViewUint( 
2127 				ID3D11UnorderedAccessView pUnorderedAccessView,
2128 				UINT* Values); //UINT[ 4 ] Values);
2129 
2130 	void ClearUnorderedAccessViewFloat( 
2131 				ID3D11UnorderedAccessView pUnorderedAccessView,
2132 				FLOAT* Values); //FLOAT[ 4 ] Values);
2133 
2134 	void ClearDepthStencilView( 
2135 				ID3D11DepthStencilView pDepthStencilView,
2136 				UINT ClearFlags,
2137 				FLOAT Depth,
2138 				UINT8 Stencil);
2139 
2140 	void GenerateMips( 
2141 				ID3D11ShaderResourceView pShaderResourceView);
2142 
2143 	void SetResourceMinLOD( 
2144 				ID3D11Resource pResource,
2145 				FLOAT MinLOD);
2146 
2147 	FLOAT GetResourceMinLOD( 
2148 				ID3D11Resource pResource);
2149 
2150 	void ResolveSubresource( 
2151 				ID3D11Resource pDstResource,
2152 				UINT DstSubresource,
2153 				ID3D11Resource pSrcResource,
2154 				UINT SrcSubresource,
2155 				DXGI_FORMAT Format);
2156 
2157 	void ExecuteCommandList( 
2158 				ID3D11CommandList pCommandList,
2159 				BOOL RestoreContextState);
2160 
2161 	void HSSetShaderResources( 
2162 				UINT StartSlot,
2163 				UINT NumViews,
2164 				const(ID3D11ShaderResourceView)* ppShaderResourceViews);
2165 
2166 	void HSSetShader( 
2167 				ID3D11HullShader pHullShader,
2168 				const(ID3D11ClassInstance)* ppClassInstances,
2169 				UINT NumClassInstances);
2170 
2171 	void HSSetSamplers( 
2172 				UINT StartSlot,
2173 				UINT NumSamplers,
2174 				const(ID3D11SamplerState)* ppSamplers);
2175 
2176 	void HSSetConstantBuffers( 
2177 				UINT StartSlot,
2178 				UINT NumBuffers,
2179 				const(ID3D11Buffer)* ppConstantBuffers);
2180 
2181 	void DSSetShaderResources( 
2182 				UINT StartSlot,
2183 				UINT NumViews,
2184 				const(ID3D11ShaderResourceView)* ppShaderResourceViews);
2185 
2186 	void DSSetShader( 
2187 				ID3D11DomainShader pDomainShader,
2188 				const(ID3D11ClassInstance)* ppClassInstances,
2189 				UINT NumClassInstances);
2190 
2191 	void DSSetSamplers( 
2192 				UINT StartSlot,
2193 				UINT NumSamplers,
2194 				const(ID3D11SamplerState)* ppSamplers);
2195 
2196 	void DSSetConstantBuffers( 
2197 				UINT StartSlot,
2198 				UINT NumBuffers,
2199 				const(ID3D11Buffer)* ppConstantBuffers);
2200 
2201 	void CSSetShaderResources( 
2202 				UINT StartSlot,
2203 				UINT NumViews,
2204 				const(ID3D11ShaderResourceView)* ppShaderResourceViews);
2205 
2206 	void CSSetUnorderedAccessViews( 
2207 				UINT StartSlot,
2208 				UINT NumUAVs,
2209 				const(ID3D11UnorderedAccessView)* ppUnorderedAccessViews,
2210 				const(UINT)* pUAVInitialCounts);
2211 
2212 	void CSSetShader( 
2213 				ID3D11ComputeShader pComputeShader,
2214 				const(ID3D11ClassInstance)* ppClassInstances,
2215 				UINT NumClassInstances);
2216 
2217 	void CSSetSamplers( 
2218 				UINT StartSlot,
2219 				UINT NumSamplers,
2220 				const(ID3D11SamplerState)* ppSamplers);
2221         
2222 	void CSSetConstantBuffers( 
2223 				UINT StartSlot,
2224 				UINT NumBuffers,
2225 				const(ID3D11Buffer)* ppConstantBuffers);
2226         
2227 	void VSGetConstantBuffers( 
2228 				UINT StartSlot,
2229 				UINT NumBuffers,
2230 				ID3D11Buffer* ppConstantBuffers);
2231 
2232 	void PSGetShaderResources( 
2233 				UINT StartSlot,
2234 				UINT NumViews,
2235 				ID3D11ShaderResourceView* ppShaderResourceViews);
2236 
2237 	void PSGetShader( 
2238 				ID3D11PixelShader* ppPixelShader,
2239 				const(ID3D11ClassInstance)* ppClassInstances,
2240 				UINT* pNumClassInstances);
2241 
2242 	void PSGetSamplers( 
2243 				UINT StartSlot,
2244 				UINT NumSamplers,
2245 				ID3D11SamplerState* ppSamplers);
2246 
2247 	void VSGetShader( 
2248 				ID3D11VertexShader* ppVertexShader,
2249 				const(ID3D11ClassInstance)* ppClassInstances,
2250 				UINT* pNumClassInstances);
2251 
2252 	void PSGetConstantBuffers( 
2253 				UINT StartSlot,
2254 				UINT NumBuffers,
2255 				ID3D11Buffer* ppConstantBuffers);
2256 
2257 	void IAGetInputLayout( 
2258 				ID3D11InputLayout* ppInputLayout);
2259 
2260 	void IAGetVertexBuffers( 
2261 				UINT StartSlot,
2262 				UINT NumBuffers,
2263 				ID3D11Buffer* ppVertexBuffers,
2264 				UINT* pStrides,
2265 				UINT* pOffsets);
2266 
2267 	void IAGetIndexBuffer( 
2268 				ID3D11Buffer* pIndexBuffer,
2269 				DXGI_FORMAT* Format,
2270 				UINT* Offset);
2271 
2272 	void GSGetConstantBuffers( 
2273 				UINT StartSlot,
2274 				UINT NumBuffers,
2275 				ID3D11Buffer* ppConstantBuffers);
2276 
2277 	void GSGetShader( 
2278 				ID3D11GeometryShader* ppGeometryShader,
2279 				const(ID3D11ClassInstance)* ppClassInstances,
2280 				UINT* pNumClassInstances);
2281 
2282 	void IAGetPrimitiveTopology( 
2283 				D3D11_PRIMITIVE_TOPOLOGY* pTopology);
2284 
2285 	void VSGetShaderResources( 
2286 				UINT StartSlot,
2287 				UINT NumViews,
2288 				ID3D11ShaderResourceView* ppShaderResourceViews);
2289 
2290 	void VSGetSamplers( 
2291 				UINT StartSlot,
2292 				UINT NumSamplers,
2293 				ID3D11SamplerState* ppSamplers);
2294 
2295 	void GetPredication( 
2296 				ID3D11Predicate* ppPredicate,
2297 				BOOL* pPredicateValue);
2298 
2299 	void GSGetShaderResources( 
2300 				UINT StartSlot,
2301 				UINT NumViews,
2302 				ID3D11ShaderResourceView* ppShaderResourceViews);
2303 
2304 	void GSGetSamplers( 
2305 				UINT StartSlot,
2306 				UINT NumSamplers,
2307 				ID3D11SamplerState* ppSamplers);
2308 
2309 	void OMGetRenderTargets( 
2310 				UINT NumViews,
2311 				ID3D11RenderTargetView* ppRenderTargetViews,
2312 				ID3D11DepthStencilView* ppDepthStencilView);
2313 
2314 	void OMGetRenderTargetsAndUnorderedAccessViews( 
2315 				UINT NumRTVs,
2316 				ID3D11RenderTargetView* ppRenderTargetViews,
2317 				ID3D11DepthStencilView* ppDepthStencilView,
2318 				UINT UAVStartSlot,
2319 				UINT NumUAVs,
2320 				ID3D11UnorderedAccessView* ppUnorderedAccessViews);
2321 
2322 	void OMGetBlendState( 
2323 				ID3D11BlendState* ppBlendState,
2324 				FLOAT* BlendFactor, //FLOAT[ 4 ] BlendFactor,
2325 				UINT* pSampleMask);
2326 
2327 	void OMGetDepthStencilState( 
2328 				ID3D11DepthStencilState* ppDepthStencilState,
2329 				UINT* pStencilRef);
2330 
2331 	void SOGetTargets( 
2332 				UINT NumBuffers,
2333 				ID3D11Buffer* ppSOTargets);
2334 
2335 	void RSGetState( 
2336 				ID3D11RasterizerState* ppRasterizerState);
2337 
2338 	void RSGetViewports( 
2339 				UINT* pNumViewports,
2340 				D3D11_VIEWPORT* pViewports);
2341 
2342 	void RSGetScissorRects( 
2343 				UINT* pNumRects,
2344 				D3D11_RECT* pRects);
2345 
2346 	void HSGetShaderResources( 
2347 				UINT StartSlot,
2348 				UINT NumViews,
2349 				ID3D11ShaderResourceView* ppShaderResourceViews);
2350 
2351 	void HSGetShader( 
2352 				ID3D11HullShader* ppHullShader,
2353 				ID3D11ClassInstance* ppClassInstances,
2354 				UINT* pNumClassInstances);
2355 
2356 	void HSGetSamplers( 
2357 				UINT StartSlot,
2358 				UINT NumSamplers,
2359 				ID3D11SamplerState* ppSamplers);
2360 
2361 	void HSGetConstantBuffers( 
2362 				UINT StartSlot,
2363 				UINT NumBuffers,
2364 				ID3D11Buffer* ppConstantBuffers);
2365 
2366 	void DSGetShaderResources( 
2367 				UINT StartSlot,
2368 				UINT NumViews,
2369 				ID3D11ShaderResourceView* ppShaderResourceViews);
2370 
2371 	void DSGetShader( 
2372 				ID3D11DomainShader* ppDomainShader,
2373 				ID3D11ClassInstance* ppClassInstances,
2374 				UINT* pNumClassInstances);
2375 
2376 	void DSGetSamplers( 
2377 				UINT StartSlot,
2378 				UINT NumSamplers,
2379 				ID3D11SamplerState* ppSamplers);
2380 
2381 	void DSGetConstantBuffers( 
2382 				UINT StartSlot,
2383 				UINT NumBuffers,
2384 				ID3D11Buffer* ppConstantBuffers);
2385 
2386 	void CSGetShaderResources( 
2387 				UINT StartSlot,
2388 				UINT NumViews,
2389 				ID3D11ShaderResourceView* ppShaderResourceViews);
2390 
2391 	void CSGetUnorderedAccessViews( 
2392 				UINT StartSlot,
2393 				UINT NumUAVs,
2394 				ID3D11UnorderedAccessView* ppUnorderedAccessViews);
2395 
2396 	void CSGetShader( 
2397 				ID3D11ComputeShader* ppComputeShader,
2398 				ID3D11ClassInstance* ppClassInstances,
2399 				UINT* pNumClassInstances);
2400 
2401 	void CSGetSamplers( 
2402 				UINT StartSlot,
2403 				UINT NumSamplers,
2404 				ID3D11SamplerState* ppSamplers);
2405 
2406 	void CSGetConstantBuffers( 
2407 				UINT StartSlot,
2408 				UINT NumBuffers,
2409 				ID3D11Buffer* ppConstantBuffers);
2410 
2411 	void ClearState();
2412 
2413 	void Flush();
2414 
2415 	D3D11_DEVICE_CONTEXT_TYPE GetType();
2416 
2417 	UINT GetContextFlags();
2418 
2419 	HRESULT FinishCommandList( 
2420 				BOOL RestoreDeferredContextState,
2421 				ID3D11CommandList* ppCommandList);
2422 }
2423 
2424 
2425 mixin( uuid!(ID3D11Device, "db6f6ddb-ac77-4e88-8253-819df9bbf140") );
2426 interface ID3D11Device : IUnknown
2427 {
2428 	extern(Windows):
2429 	HRESULT CreateBuffer( 
2430 				const(D3D11_BUFFER_DESC)* pDesc,
2431 				const(D3D11_SUBRESOURCE_DATA)* pInitialData,
2432 				ID3D11Buffer* ppBuffer);
2433 
2434 	HRESULT CreateTexture1D( 
2435 				const(D3D11_TEXTURE1D_DESC)* pDesc,
2436 				const(D3D11_SUBRESOURCE_DATA)* pInitialData,
2437 				ID3D11Texture1D* ppTexture1D);
2438 
2439 	HRESULT CreateTexture2D( 
2440 				const(D3D11_TEXTURE2D_DESC)* pDesc,
2441 				const(D3D11_SUBRESOURCE_DATA)* pInitialData,
2442 				ID3D11Texture2D* ppTexture2D);
2443 
2444 	HRESULT CreateTexture3D( 
2445 				const(D3D11_TEXTURE3D_DESC)* pDesc,
2446 				const(D3D11_SUBRESOURCE_DATA)* pInitialData,
2447 				ID3D11Texture3D* ppTexture3D);
2448 
2449 	HRESULT CreateShaderResourceView( 
2450 				ID3D11Resource pResource,
2451 				const(D3D11_SHADER_RESOURCE_VIEW_DESC)* pDesc,
2452 				ID3D11ShaderResourceView* ppSRView);
2453 
2454 	HRESULT CreateUnorderedAccessView( 
2455 				ID3D11Resource pResource,
2456 				const(D3D11_UNORDERED_ACCESS_VIEW_DESC)* pDesc,
2457 				ID3D11UnorderedAccessView* ppUAView);
2458 
2459 	HRESULT CreateRenderTargetView( 
2460 				ID3D11Resource pResource,
2461 				const(D3D11_RENDER_TARGET_VIEW_DESC)* pDesc,
2462 				ID3D11RenderTargetView* ppRTView);
2463 
2464 	HRESULT CreateDepthStencilView( 
2465 				ID3D11Resource pResource,
2466 				const(D3D11_DEPTH_STENCIL_VIEW_DESC)* pDesc,
2467 				ID3D11DepthStencilView* ppDepthStencilView);
2468 
2469 	HRESULT CreateInputLayout( 
2470 				const(D3D11_INPUT_ELEMENT_DESC)* pInputElementDescs,
2471 				UINT NumElements,
2472 				const void* pShaderBytecodeWithInputSignature,
2473 				SIZE_T BytecodeLength,
2474 				ID3D11InputLayout* ppInputLayout);
2475 
2476 	HRESULT CreateVertexShader( 
2477 				const void* pShaderBytecode,
2478 				SIZE_T BytecodeLength,
2479 				ID3D11ClassLinkage pClassLinkage,
2480 				ID3D11VertexShader* ppVertexShader);
2481 
2482 	HRESULT CreateGeometryShader( 
2483 				const void* pShaderBytecode,
2484 				SIZE_T BytecodeLength,
2485 				ID3D11ClassLinkage pClassLinkage,
2486 				ID3D11GeometryShader* ppGeometryShader);
2487 
2488 	HRESULT CreateGeometryShaderWithStreamOutput( 
2489 				const void* pShaderBytecode,
2490 				SIZE_T BytecodeLength,
2491 				const(D3D11_SO_DECLARATION_ENTRY)* pSODeclaration,
2492 				UINT NumEntries,
2493 				const(UINT)* pBufferStrides,
2494 				UINT NumStrides,
2495 				UINT RasterizedStream,
2496 				ID3D11ClassLinkage pClassLinkage,
2497 				ID3D11GeometryShader* ppGeometryShader);
2498 
2499 	HRESULT CreatePixelShader( 
2500 				const void* pShaderBytecode,
2501 				SIZE_T BytecodeLength,
2502 				ID3D11ClassLinkage pClassLinkage,
2503 				ID3D11PixelShader* ppPixelShader);
2504 
2505 	HRESULT CreateHullShader( 
2506 				const void* pShaderBytecode,
2507 				SIZE_T BytecodeLength,
2508 				ID3D11ClassLinkage pClassLinkage,
2509 				ID3D11HullShader* ppHullShader);
2510 
2511 	HRESULT CreateDomainShader( 
2512 				const void* pShaderBytecode,
2513 				SIZE_T BytecodeLength,
2514 				ID3D11ClassLinkage pClassLinkage,
2515 				ID3D11DomainShader* ppDomainShader);
2516 
2517 	HRESULT CreateComputeShader( 
2518 				const void* pShaderBytecode,
2519 				SIZE_T BytecodeLength,
2520 				ID3D11ClassLinkage pClassLinkage,
2521 				ID3D11ComputeShader* ppComputeShader);
2522 
2523 	HRESULT CreateClassLinkage( 
2524 				ID3D11ClassLinkage* ppLinkage);
2525         
2526 	HRESULT CreateBlendState( 
2527 				const(D3D11_BLEND_DESC)* pBlendStateDesc,
2528 				ID3D11BlendState* ppBlendState);
2529 
2530 	HRESULT CreateDepthStencilState( 
2531 				const(D3D11_DEPTH_STENCIL_DESC)* pDepthStencilDesc,
2532 				ID3D11DepthStencilState* ppDepthStencilState);
2533 
2534 	HRESULT CreateRasterizerState( 
2535 				const(D3D11_RASTERIZER_DESC)* pRasterizerDesc,
2536 				ID3D11RasterizerState* ppRasterizerState);
2537 
2538 	HRESULT CreateSamplerState( 
2539 				const(D3D11_SAMPLER_DESC)* pSamplerDesc,
2540 				ID3D11SamplerState* ppSamplerState);
2541 
2542 	HRESULT CreateQuery( 
2543 				const(D3D11_QUERY_DESC)* pQueryDesc,
2544 				ID3D11Query* ppQuery);
2545 
2546 	HRESULT CreatePredicate( 
2547 				const(D3D11_QUERY_DESC)* pPredicateDesc,
2548 				ID3D11Predicate* ppPredicate);
2549 
2550 	HRESULT CreateCounter( 
2551 				const(D3D11_COUNTER_DESC)* pCounterDesc,
2552 				ID3D11Counter* ppCounter);
2553 
2554 	HRESULT CreateDeferredContext( 
2555 				UINT ContextFlags,
2556 				ID3D11DeviceContext* ppDeferredContext);
2557 
2558 	HRESULT OpenSharedResource( 
2559 				HANDLE hResource,
2560 				REFIID ReturnedInterface,
2561 				void** ppResource);
2562 
2563 	HRESULT CheckFormatSupport( 
2564 				DXGI_FORMAT Format,
2565 				UINT* pFormatSupport);
2566 
2567 	HRESULT CheckMultisampleQualityLevels( 
2568 				DXGI_FORMAT Format,
2569 				UINT SampleCount,
2570 				UINT* pNumQualityLevels);
2571 
2572 	void CheckCounterInfo( 
2573 				D3D11_COUNTER_INFO *pCounterInfo);
2574 
2575 	HRESULT CheckCounter( 
2576 				const(D3D11_COUNTER_DESC)* pDesc,
2577 				D3D11_COUNTER_TYPE* pType,
2578 				UINT* pActiveCounters,
2579 				LPSTR szName,
2580 				UINT* pNameLength,
2581 				LPSTR szUnits,
2582 				UINT* pUnitsLength,
2583 				LPSTR szDescription,
2584 				UINT* pDescriptionLength);
2585 
2586 	HRESULT CheckFeatureSupport( 
2587 				D3D11_FEATURE Feature,
2588 				void* pFeatureSupportData,
2589 				UINT FeatureSupportDataSize);
2590 
2591 	HRESULT GetPrivateData( 
2592 				REFGUID guid,
2593 				UINT* pDataSize,
2594 				void* pData);
2595 
2596 	HRESULT SetPrivateData( 
2597 				REFGUID guid,
2598 				UINT DataSize,
2599 				const void* pData);
2600 
2601 	HRESULT SetPrivateDataInterface( 
2602 				REFGUID guid,
2603 				const IUnknown pData);
2604 
2605 	D3D_FEATURE_LEVEL GetFeatureLevel();
2606 
2607 	UINT GetCreationFlags();
2608 
2609 	HRESULT GetDeviceRemovedReason();
2610 
2611 	void GetImmediateContext( 
2612 				ID3D11DeviceContext* ppImmediateContext);
2613 
2614 	HRESULT SetExceptionMode( 
2615 				UINT RaiseFlags);
2616 
2617 	UINT GetExceptionMode();
2618 }
2619 
2620 alias D3D11_CREATE_DEVICE_FLAG = int;
2621 enum : D3D11_CREATE_DEVICE_FLAG
2622 {
2623 	D3D11_CREATE_DEVICE_SINGLETHREADED	= 0x1,
2624 	D3D11_CREATE_DEVICE_DEBUG	= 0x2,
2625 	D3D11_CREATE_DEVICE_SWITCH_TO_REF	= 0x4,
2626 	D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS	= 0x8,
2627 	D3D11_CREATE_DEVICE_BGRA_SUPPORT	= 0x20
2628 }
2629 
2630 enum D3D11_SDK_VERSION = ( 7 );
2631 
2632 ///////////////////////////////////////////////////////////////////////////
2633 // D3D11CreateDevice
2634 // ------------------
2635 //
2636 // pAdapter
2637 //      If NULL, D3D11CreateDevice will choose the primary adapter and
2638 //      create a new instance from a temporarily created IDXGIFactory.
2639 //      If non-NULL, D3D11CreateDevice will register the appropriate
2640 //      device, if necessary (via IDXGIAdapter::RegisterDrver), before
2641 //      creating the device.
2642 // DriverType
2643 //      Specifies the driver type to be created: hardware, reference or
2644 //      null.
2645 // Software
2646 //      HMODULE of a DLL implementing a software rasterizer. Must be NULL for
2647 //      non-Software driver types.
2648 // Flags
2649 //      Any of those documented for D3D11CreateDeviceAndSwapChain.
2650 // pFeatureLevels
2651 //      Any of those documented for D3D11CreateDeviceAndSwapChain.
2652 // FeatureLevels
2653 //      Size of feature levels array.
2654 // SDKVersion
2655 //      SDK version. Use the D3D11_SDK_VERSION macro.
2656 // ppDevice
2657 //      Pointer to returned interface. May be NULL.
2658 // pFeatureLevel
2659 //      Pointer to returned feature level. May be NULL.
2660 // ppImmediateContext
2661 //      Pointer to returned interface. May be NULL.
2662 //
2663 // Return Values
2664 //  Any of those documented for 
2665 //          CreateDXGIFactory1
2666 //          IDXGIFactory::EnumAdapters
2667 //          IDXGIAdapter::RegisterDriver
2668 //          D3D11CreateDevice
2669 //
2670 ///////////////////////////////////////////////////////////////////////////
2671 extern (Windows) nothrow
2672 HRESULT D3D11CreateDevice(IDXGIAdapter        pAdapter,
2673                                                  D3D_DRIVER_TYPE     DriverType,
2674                                                  HMODULE             Software,
2675                                                  UINT                Flags,
2676                                                  const(D3D_FEATURE_LEVEL)* pFeatureLevels,
2677                                                  UINT                FeatureLevels,
2678                                                  UINT                SDKVersion,
2679                                                  ID3D11Device        *ppDevice,
2680                                                  D3D_FEATURE_LEVEL   *pFeatureLevel,
2681                                                  ID3D11DeviceContext *ppImmediateContext);
2682 
2683 
2684 alias PFN_D3D11_CREATE_DEVICE = extern (Windows) nothrow HRESULT function(IDXGIAdapter        pAdapter,
2685                                                  D3D_DRIVER_TYPE     DriverType,
2686                                                  HMODULE             Software,
2687                                                  UINT                Flags,
2688                                                  const(D3D_FEATURE_LEVEL)* pFeatureLevels,
2689                                                  UINT                FeatureLevels,
2690                                                  UINT                SDKVersion,
2691                                                  ID3D11Device        *ppDevice,
2692                                                  D3D_FEATURE_LEVEL   *pFeatureLevel,
2693                                                  ID3D11DeviceContext *ppImmediateContext);
2694 
2695 ///////////////////////////////////////////////////////////////////////////
2696 // D3D11CreateDeviceAndSwapChain
2697 // ------------------------------
2698 //
2699 // ppAdapter
2700 //      If NULL, D3D11CreateDevice will choose the primary adapter and 
2701 //      create a new instance from a temporarily created IDXGIFactory.
2702 //      If non-NULL, D3D11CreateDevice will register the appropriate
2703 //      device, if necessary (via IDXGIAdapter::RegisterDrver), before
2704 //      creating the device.
2705 // DriverType
2706 //      Specifies the driver type to be created: hardware, reference or
2707 //      null.
2708 // Software
2709 //      HMODULE of a DLL implementing a software rasterizer. Must be NULL for
2710 //      non-Software driver types.
2711 // Flags
2712 //      Any of those documented for D3D11CreateDevice.
2713 // pFeatureLevels
2714 //      Array of any of the following:
2715 //          D3D_FEATURE_LEVEL_11_0
2716 //          D3D_FEATURE_LEVEL_10_1
2717 //          D3D_FEATURE_LEVEL_10_0
2718 //          D3D_FEATURE_LEVEL_9_3
2719 //          D3D_FEATURE_LEVEL_9_2
2720 //          D3D_FEATURE_LEVEL_9_1
2721 //      Order indicates sequence in which instantiation will be attempted. If
2722 //      NULL, then the implied order is the same as previously listed (i.e. 
2723 //      prefer most features available). 
2724 // FeatureLevels
2725 //      Size of feature levels array.
2726 // SDKVersion
2727 //      SDK version. Use the D3D11_SDK_VERSION macro.
2728 // pSwapChainDesc
2729 //      Swap chain description, may be NULL.
2730 // ppSwapChain
2731 //      Pointer to returned interface. May be NULL.
2732 // ppDevice
2733 //      Pointer to returned interface. May be NULL.
2734 // pFeatureLevel
2735 //      Pointer to returned feature level. May be NULL.
2736 // ppImmediateContext
2737 //      Pointer to returned interface. May be NULL.
2738 //
2739 // Return Values
2740 //  Any of those documented for 
2741 //          CreateDXGIFactory1
2742 //          IDXGIFactory::EnumAdapters
2743 //          IDXGIAdapter::RegisterDriver
2744 //          D3D11CreateDevice
2745 //          IDXGIFactory::CreateSwapChain
2746 //
2747 ///////////////////////////////////////////////////////////////////////////
2748 
2749 
2750 extern(Windows) nothrow
2751 HRESULT D3D11CreateDeviceAndSwapChain(
2752     IDXGIAdapter pAdapter,
2753     D3D_DRIVER_TYPE DriverType,
2754     HMODULE Software,
2755     UINT Flags,
2756     const(D3D_FEATURE_LEVEL)* pFeatureLevels,
2757     UINT FeatureLevels,
2758     UINT SDKVersion,
2759     const(DXGI_SWAP_CHAIN_DESC)* pSwapChainDesc,
2760     IDXGISwapChain* ppSwapChain,
2761     ID3D11Device* ppDevice,
2762     D3D_FEATURE_LEVEL* pFeatureLevel,
2763     ID3D11DeviceContext* ppImmediateContext);
2764 
2765 alias PFN_D3D11_CREATE_DEVICE_AND_SWAP_CHAIN = extern(Windows) nothrow HRESULT function(
2766     IDXGIAdapter pAdapter,
2767     D3D_DRIVER_TYPE DriverType,
2768     HMODULE Software,
2769     UINT Flags,
2770     const(D3D_FEATURE_LEVEL)* pFeatureLevels,
2771     UINT FeatureLevels,
2772     UINT SDKVersion,
2773     const(DXGI_SWAP_CHAIN_DESC)* pSwapChainDesc,
2774     IDXGISwapChain* ppSwapChain,
2775     ID3D11Device* ppDevice,
2776     D3D_FEATURE_LEVEL* pFeatureLevel,
2777     ID3D11DeviceContext* ppImmediateContext);