1use ctypes::c_void;
7use shared::basetsd::{UINT64, UINT8};
8use shared::dxgiformat::DXGI_FORMAT;
9use shared::dxgitype::{DXGI_COLOR_SPACE_TYPE, DXGI_RATIONAL};
10use shared::guiddef::{GUID, REFIID};
11use shared::minwindef::{BOOL, BYTE, DWORD, FLOAT, INT, UINT};
12use um::d3d11::{
13 D3D11_BLEND, D3D11_BLEND_OP, D3D11_BOX, D3D11_CULL_MODE, D3D11_FILL_MODE, D3D11_RECT,
14 D3D11_VIDEO_DECODER_BUFFER_TYPE, D3D11_VIDEO_DECODER_CONFIG, D3D11_VIDEO_DECODER_DESC,
15 ID3D11BlendState, ID3D11BlendStateVtbl, ID3D11Buffer, ID3D11CryptoSession, ID3D11Device,
16 ID3D11DeviceChild, ID3D11DeviceChildVtbl, ID3D11DeviceContext, ID3D11DeviceContextVtbl,
17 ID3D11DeviceVtbl, ID3D11RasterizerState, ID3D11RasterizerStateVtbl, ID3D11Resource,
18 ID3D11VideoContext, ID3D11VideoContextVtbl, ID3D11VideoDecoder, ID3D11VideoDevice,
19 ID3D11VideoDeviceVtbl, ID3D11VideoProcessor, ID3D11VideoProcessorEnumerator,
20 ID3D11VideoProcessorEnumeratorVtbl, ID3D11View
21};
22use um::d3dcommon::D3D_FEATURE_LEVEL;
23use um::unknwnbase::{IUnknown, IUnknownVtbl};
24use um::winnt::{HANDLE, HRESULT, LPCWSTR};
25DEFINE_GUID!{IID_ID3D11BlendState1,
26 0xcc86fabe, 0xda55, 0x401d, 0x85, 0xe7, 0xe3, 0xc9, 0xde, 0x28, 0x77, 0xe9}
27DEFINE_GUID!{IID_ID3D11RasterizerState1,
28 0x1217d7a6, 0x5039, 0x418c, 0xb0, 0x42, 0x9c, 0xbe, 0x25, 0x6a, 0xfd, 0x6e}
29DEFINE_GUID!{IID_ID3DDeviceContextState,
30 0x5c1e0d8a, 0x7c23, 0x48f9, 0x8c, 0x59, 0xa9, 0x29, 0x58, 0xce, 0xff, 0x11}
31DEFINE_GUID!{IID_ID3D11DeviceContext1,
32 0xbb2c6faa, 0xb5fb, 0x4082, 0x8e, 0x6b, 0x38, 0x8b, 0x8c, 0xfa, 0x90, 0xe1}
33DEFINE_GUID!{IID_ID3D11VideoContext1,
34 0xa7f026da, 0xa5f8, 0x4487, 0xa5, 0x64, 0x15, 0xe3, 0x43, 0x57, 0x65, 0x1e}
35DEFINE_GUID!{IID_ID3D11VideoDevice1,
36 0x29da1d51, 0x1321, 0x4454, 0x80, 0x4b, 0xf5, 0xfc, 0x9f, 0x86, 0x1f, 0x0f}
37DEFINE_GUID!{IID_ID3D11VideoProcessorEnumerator1,
38 0x465217f2, 0x5568, 0x43cf, 0xb5, 0xb9, 0xf6, 0x1d, 0x54, 0x53, 0x1c, 0xa1}
39DEFINE_GUID!{IID_ID3D11Device1,
40 0xa04bfb29, 0x08ef, 0x43d6, 0xa4, 0x9c, 0xa9, 0xbd, 0xbd, 0xcb, 0xe6, 0x86}
41DEFINE_GUID!{IID_ID3DUserDefinedAnnotation,
42 0xb2daad8b, 0x03d4, 0x4dbf, 0x95, 0xeb, 0x32, 0xab, 0x4b, 0x63, 0xd0, 0xab}
43ENUM!{enum D3D11_COPY_FLAGS {
44 D3D11_COPY_NO_OVERWRITE = 0x00000001,
45 D3D11_COPY_DISCARD = 0x00000002,
46}}
47ENUM!{enum D3D11_LOGIC_OP {
48 D3D11_LOGIC_OP_CLEAR = 0,
49 D3D11_LOGIC_OP_SET = 1,
50 D3D11_LOGIC_OP_COPY = 2,
51 D3D11_LOGIC_OP_COPY_INVERTED = 3,
52 D3D11_LOGIC_OP_NOOP = 4,
53 D3D11_LOGIC_OP_INVERT = 5,
54 D3D11_LOGIC_OP_AND = 6,
55 D3D11_LOGIC_OP_NAND = 7,
56 D3D11_LOGIC_OP_OR = 8,
57 D3D11_LOGIC_OP_NOR = 9,
58 D3D11_LOGIC_OP_XOR = 10,
59 D3D11_LOGIC_OP_EQUIV = 11,
60 D3D11_LOGIC_OP_AND_REVERSE = 12,
61 D3D11_LOGIC_OP_AND_INVERTED = 13,
62 D3D11_LOGIC_OP_OR_REVERSE = 14,
63 D3D11_LOGIC_OP_OR_INVERTED = 15,
64}}
65STRUCT!{struct D3D11_RENDER_TARGET_BLEND_DESC1 {
66 BlendEnable: BOOL,
67 LogicOpEnable: BOOL,
68 SrcBlend: D3D11_BLEND,
69 DestBlend: D3D11_BLEND,
70 BlendOp: D3D11_BLEND_OP,
71 SrcBlendAlpha: D3D11_BLEND,
72 DestBlendAlpha: D3D11_BLEND,
73 BlendOpAlpha: D3D11_BLEND_OP,
74 LogicOp: D3D11_LOGIC_OP,
75 RenderTargetWriteMask: UINT8,
76}}
77STRUCT!{struct D3D11_BLEND_DESC1 {
78 AlphaToCoverageEnable: BOOL,
79 IndependentBlendEnable: BOOL,
80 RenderTarget: [D3D11_RENDER_TARGET_BLEND_DESC1; 8],
81}}
82RIDL!{#[uuid(0xcc86fabe, 0xda55, 0x401d, 0x85, 0xe7, 0xe3, 0xc9, 0xde, 0x28, 0x77, 0xe9)]
83interface ID3D11BlendState1(ID3D11BlendState1Vtbl): ID3D11BlendState(ID3D11BlendStateVtbl) {
84 fn GetDesc1(
85 pDesc: *mut D3D11_BLEND_DESC1,
86 ) -> (),
87}}
88STRUCT!{struct D3D11_RASTERIZER_DESC1 {
89 FillMode: D3D11_FILL_MODE,
90 CullMode: D3D11_CULL_MODE,
91 FrontCounterClockwise: BOOL,
92 DepthBias: INT,
93 DepthBiasClamp: FLOAT,
94 SlopeScaledDepthBias: FLOAT,
95 DepthClipEnable: BOOL,
96 ScissorEnable: BOOL,
97 MultisampleEnable: BOOL,
98 AntialiasedLineEnable: BOOL,
99 ForcedSampleCount: UINT,
100}}
101RIDL!{#[uuid(0x1217d7a6, 0x5039, 0x418c, 0xb0, 0x42, 0x9c, 0xbe, 0x25, 0x6a, 0xfd, 0x6e)]
102interface ID3D11RasterizerState1(ID3D11RasterizerState1Vtbl):
103 ID3D11RasterizerState(ID3D11RasterizerStateVtbl) {
104 fn GetDesc1(
105 pDesc: *mut D3D11_RASTERIZER_DESC1,
106 ) -> (),
107}}
108ENUM!{enum D3D11_1_CREATE_DEVICE_CONTEXT_STATE_FLAG {
109 D3D11_1_CREATE_DEVICE_CONTEXT_STATE_SINGLETHREADED = 0x1,
110}}
111RIDL!{#[uuid(0x5c1e0d8a, 0x7c23, 0x48f9, 0x8c, 0x59, 0xa9, 0x29, 0x58, 0xce, 0xff, 0x11)]
112interface ID3DDeviceContextState(ID3DDeviceContextStateVtbl):
113 ID3D11DeviceChild(ID3D11DeviceChildVtbl) {}}
114RIDL!{#[uuid(0xbb2c6faa, 0xb5fb, 0x4082, 0x8e, 0x6b, 0x38, 0x8b, 0x8c, 0xfa, 0x90, 0xe1)]
115interface ID3D11DeviceContext1(ID3D11DeviceContext1Vtbl):
116 ID3D11DeviceContext(ID3D11DeviceContextVtbl) {
117 fn CopySubresourceRegion1(
118 pDstResource: *mut ID3D11Resource,
119 DstSubresource: UINT,
120 DstX: UINT,
121 DstY: UINT,
122 DstZ: UINT,
123 pSrcResource: *mut ID3D11Resource,
124 SrcSubresource: UINT,
125 pSrcBox: *const D3D11_BOX,
126 CopyFlags: UINT,
127 ) -> (),
128 fn UpdateSubresource1(
129 pDstResource: *mut ID3D11Resource,
130 DstSubresource: UINT,
131 pDstBox: *const D3D11_BOX,
132 pSrcData: *mut c_void,
133 SrcRowPitch: UINT,
134 SrcDepthPitch: UINT,
135 CopyFlags: UINT,
136 ) -> (),
137 fn DiscardResource(
138 pResource: *mut ID3D11Resource,
139 ) -> (),
140 fn DiscardView(
141 pResource: *mut ID3D11Resource,
142 ) -> (),
143 fn VSSetConstantBuffers1(
144 StartSlot: UINT,
145 NumBuffers: UINT,
146 ppConstantBuffers: *const *mut ID3D11Buffer,
147 pFirstConstant: *const UINT,
148 pNumConstants: *const UINT,
149 ) -> (),
150 fn HSSetConstantBuffers1(
151 StartSlot: UINT,
152 NumBuffers: UINT,
153 ppConstantBuffers: *const *mut ID3D11Buffer,
154 pFirstConstant: *const UINT,
155 pNumConstants: *const UINT,
156 ) -> (),
157 fn DSSetConstantBuffers1(
158 StartSlot: UINT,
159 NumBuffers: UINT,
160 ppConstantBuffers: *const *mut ID3D11Buffer,
161 pFirstConstant: *const UINT,
162 pNumConstants: *const UINT,
163 ) -> (),
164 fn GSSetConstantBuffers1(
165 StartSlot: UINT,
166 NumBuffers: UINT,
167 ppConstantBuffers: *const *mut ID3D11Buffer,
168 pFirstConstant: *const UINT,
169 pNumConstants: *const UINT,
170 ) -> (),
171 fn PSSetConstantBuffers1(
172 StartSlot: UINT,
173 NumBuffers: UINT,
174 ppConstantBuffers: *const *mut ID3D11Buffer,
175 pFirstConstant: *const UINT,
176 pNumConstants: *const UINT,
177 ) -> (),
178 fn CSSetConstantBuffers1(
179 StartSlot: UINT,
180 NumBuffers: UINT,
181 ppConstantBuffers: *const *mut ID3D11Buffer,
182 pFirstConstant: *const UINT,
183 pNumConstants: *const UINT,
184 ) -> (),
185 fn VSGetConstantBuffers1(
186 StartSlot: UINT,
187 NumBuffers: UINT,
188 ppConstantBuffers: *mut *mut ID3D11Buffer,
189 pFirstConstant: *mut UINT,
190 pNumConstants: *mut UINT,
191 ) -> (),
192 fn HSGetConstantBuffers1(
193 StartSlot: UINT,
194 NumBuffers: UINT,
195 ppConstantBuffers: *mut *mut ID3D11Buffer,
196 pFirstConstant: *mut UINT,
197 pNumConstants: *mut UINT,
198 ) -> (),
199 fn DSGetConstantBuffers1(
200 StartSlot: UINT,
201 NumBuffers: UINT,
202 ppConstantBuffers: *mut *mut ID3D11Buffer,
203 pFirstConstant: *mut UINT,
204 pNumConstants: *mut UINT,
205 ) -> (),
206 fn GSGetConstantBuffers1(
207 StartSlot: UINT,
208 NumBuffers: UINT,
209 ppConstantBuffers: *mut *mut ID3D11Buffer,
210 pFirstConstant: *mut UINT,
211 pNumConstants: *mut UINT,
212 ) -> (),
213 fn PSGetConstantBuffers1(
214 StartSlot: UINT,
215 NumBuffers: UINT,
216 ppConstantBuffers: *mut *mut ID3D11Buffer,
217 pFirstConstant: *mut UINT,
218 pNumConstants: *mut UINT,
219 ) -> (),
220 fn CSGetConstantBuffers1(
221 StartSlot: UINT,
222 NumBuffers: UINT,
223 ppConstantBuffers: *mut *mut ID3D11Buffer,
224 pFirstConstant: *mut UINT,
225 pNumConstants: *mut UINT,
226 ) -> (),
227 fn SwapDeviceContextState(
228 pState: *mut ID3DDeviceContextState,
229 ppPreviousState: *mut *mut ID3DDeviceContextState,
230 ) -> (),
231 fn ClearView(
232 pView: *mut ID3D11View,
233 Color: [FLOAT; 4],
234 pRect: *const D3D11_RECT,
235 NumRects: UINT,
236 ) -> (),
237 fn DiscardView1(
238 pResourceView: *mut ID3D11View,
239 pRects: *const D3D11_RECT,
240 NumRects: UINT,
241 ) -> (),
242}}
243STRUCT!{struct D3D11_VIDEO_DECODER_SUB_SAMPLE_MAPPING_BLOCK {
244 ClearSize: UINT,
245 EncryptedSize: UINT,
246}}
247STRUCT!{struct D3D11_VIDEO_DECODER_BUFFER_DESC1 {
248 BufferType: D3D11_VIDEO_DECODER_BUFFER_TYPE,
249 DataOffset: UINT,
250 DataSize: UINT,
251 pIV: *mut c_void,
252 IVSize: UINT,
253 pSubSampleMappingBlock: *mut D3D11_VIDEO_DECODER_SUB_SAMPLE_MAPPING_BLOCK,
254 SubSampleMappingCount: UINT,
255}}
256STRUCT!{struct D3D11_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION {
257 pCryptoSession: *mut ID3D11CryptoSession,
258 BlobSize: UINT,
259 pBlob: *mut c_void,
260 pKeyInfoId: *mut GUID,
261 PrivateDataSize: UINT,
262 pPrivateData: *mut c_void,
263}}
264ENUM!{enum D3D11_VIDEO_DECODER_CAPS {
265 D3D11_VIDEO_DECODER_CAPS_DOWNSAMPLE = 0x1,
266 D3D11_VIDEO_DECODER_CAPS_NON_REAL_TIME = 0x02,
267 D3D11_VIDEO_DECODER_CAPS_DOWNSAMPLE_DYNAMIC = 0x04,
268 D3D11_VIDEO_DECODER_CAPS_DOWNSAMPLE_REQUIRED = 0x08,
269 D3D11_VIDEO_DECODER_CAPS_UNSUPPORTED = 0x10,
270}}
271ENUM!{enum D3D11_VIDEO_PROCESSOR_BEHAVIOR_HINTS {
272 D3D11_VIDEO_PROCESSOR_BEHAVIOR_HINT_MULTIPLANE_OVERLAY_ROTATION = 0x01,
273 D3D11_VIDEO_PROCESSOR_BEHAVIOR_HINT_MULTIPLANE_OVERLAY_RESIZE = 0x02,
274 D3D11_VIDEO_PROCESSOR_BEHAVIOR_HINT_MULTIPLANE_OVERLAY_COLOR_SPACE_CONVERSION = 0x04,
275 D3D11_VIDEO_PROCESSOR_BEHAVIOR_HINT_TRIPLE_BUFFER_OUTPUT = 0x08,
276}}
277STRUCT!{struct D3D11_VIDEO_PROCESSOR_STREAM_BEHAVIOR_HINT {
278 Enable: BOOL,
279 Width: UINT,
280 Height: UINT,
281 Format: DXGI_FORMAT,
282}}
283ENUM!{enum D3D11_CRYPTO_SESSION_STATUS {
284 D3D11_CRYPTO_SESSION_STATUS_OK = 0,
285 D3D11_CRYPTO_SESSION_STATUS_KEY_LOST = 1,
286 D3D11_CRYPTO_SESSION_STATUS_KEY_AND_CONTENT_LOST = 2,
287}}
288STRUCT!{struct D3D11_KEY_EXCHANGE_HW_PROTECTION_INPUT_DATA {
289 PrivateDataSize: UINT,
290 HWProtectionDataSize: UINT,
291 pbInput: [BYTE; 4],
292}}
293STRUCT!{struct D3D11_KEY_EXCHANGE_HW_PROTECTION_OUTPUT_DATA {
294 PrivateDataSize: UINT,
295 MaxHWProtectionDataSize: UINT,
296 HWProtectionDataSize: UINT,
297 TransportTime: UINT64,
298 ExecutionTime: UINT64,
299 pbOutput: [BYTE; 4],
300}}
301STRUCT!{struct D3D11_KEY_EXCHANGE_HW_PROTECTION_DATA {
302 HWProtectionFunctionID: UINT,
303 pInputData: *mut D3D11_KEY_EXCHANGE_HW_PROTECTION_INPUT_DATA,
304 pOutputData: *mut D3D11_KEY_EXCHANGE_HW_PROTECTION_OUTPUT_DATA,
305 Status: HRESULT,
306}}
307STRUCT!{struct D3D11_VIDEO_SAMPLE_DESC {
308 Width: UINT,
309 Height: UINT,
310 Format: DXGI_FORMAT,
311 ColorSpace: DXGI_COLOR_SPACE_TYPE,
312}}
313RIDL!{#[uuid(0xa7f026da, 0xa5f8, 0x4487, 0xa5, 0x64, 0x15, 0xe3, 0x43, 0x57, 0x65, 0x1e)]
314interface ID3D11VideoContext1(ID3D11VideoContext1Vtbl):
315 ID3D11VideoContext(ID3D11VideoContextVtbl) {
316 fn SubmitDecoderBuffers1(
317 pDecoder: *mut ID3D11VideoDecoder,
318 NumBuffers: UINT,
319 pBufferDesc: *const D3D11_VIDEO_DECODER_BUFFER_DESC1,
320 ) -> HRESULT,
321 fn GetDataForNewHardwareKey(
322 pCryptoSession: *mut ID3D11CryptoSession,
323 PrivateInputSize: UINT,
324 pPrivateInputData: *const c_void,
325 pPrivateOutputData: *mut UINT64,
326 ) -> HRESULT,
327 fn CheckCryptoSessionStatus(
328 pCryptoSession: *mut ID3D11CryptoSession,
329 pStatus: *mut D3D11_CRYPTO_SESSION_STATUS,
330 ) -> HRESULT,
331 fn DecoderEnableDownsampling(
332 pDecoder: *mut ID3D11VideoDecoder,
333 InputColorSpace: DXGI_COLOR_SPACE_TYPE,
334 pOutputDesc: *const D3D11_VIDEO_SAMPLE_DESC,
335 ReferenceFrameCount: UINT,
336 ) -> HRESULT,
337 fn DecoderUpdateDownsampling(
338 pDecoder: *mut ID3D11VideoDecoder,
339 pOutputDesc: *const D3D11_VIDEO_SAMPLE_DESC,
340 ) -> HRESULT,
341 fn VideoProcessorSetOutputColorSpace1(
342 pVideoProcessor: *mut ID3D11VideoProcessor,
343 ColorSpace: DXGI_COLOR_SPACE_TYPE,
344 ) -> (),
345 fn VideoProcessorSetOutputShaderUsage(
346 pVideoProcessor: *mut ID3D11VideoProcessor,
347 ShaderUsage: BOOL,
348 ) -> (),
349 fn VideoProcessorGetOutputColorSpace1(
350 pVideoProcessor: *mut ID3D11VideoProcessor,
351 pColorSpace: *mut DXGI_COLOR_SPACE_TYPE,
352 ) -> (),
353 fn VideoProcessorGetOutputShaderUsage(
354 pVideoProcessor: *mut ID3D11VideoProcessor,
355 pShaderUsage: *mut BOOL,
356 ) -> (),
357 fn VideoProcessorSetStreamColorSpace1(
358 pVideoProcessor: *mut ID3D11VideoProcessor,
359 StreamIndex: UINT,
360 ColorSpace: DXGI_COLOR_SPACE_TYPE,
361 ) -> (),
362 fn VideoProcessorSetStreamMirror(
363 pVideoProcessor: *mut ID3D11VideoProcessor,
364 StreamIndex: UINT,
365 Enable: BOOL,
366 FlipHorizontal: BOOL,
367 FlipVertical: BOOL,
368 ) -> (),
369 fn VideoProcessorGetStreamColorSpace1(
370 pVideoProcessor: *mut ID3D11VideoProcessor,
371 StreamIndex: UINT,
372 pColorSpace: *mut DXGI_COLOR_SPACE_TYPE,
373 ) -> (),
374 fn VideoProcessorGetStreamMirror(
375 pVideoProcessor: *mut ID3D11VideoProcessor,
376 StreamIndex: UINT,
377 pEnable: *mut BOOL,
378 pFlipHorizontal: *mut BOOL,
379 pFlipVertical: *mut BOOL,
380 ) -> (),
381 fn VideoProcessorGetBehaviorHints(
382 pVideoProcessor: *mut ID3D11VideoProcessor,
383 OutputWidth: UINT,
384 OutputHeight: UINT,
385 OutputFormat: DXGI_FORMAT,
386 StreamCount: UINT,
387 pStreams: *const D3D11_VIDEO_PROCESSOR_STREAM_BEHAVIOR_HINT,
388 pBehaviorHints: *mut UINT,
389 ) -> (),
390}}
391RIDL!{#[uuid(0x29da1d51, 0x1321, 0x4454, 0x80, 0x4b, 0xf5, 0xfc, 0x9f, 0x86, 0x1f, 0x0f)]
392interface ID3D11VideoDevice1(ID3D11VideoDevice1Vtbl): ID3D11VideoDevice(ID3D11VideoDeviceVtbl) {
393 fn GetCryptoSessionPrivateDataSize(
394 pCryptoType: *const GUID,
395 pDecoderProfile: *const GUID,
396 pKeyExchangeType: *const GUID,
397 pPrivateInputSize: *mut UINT,
398 pPrivateOutputSize: *mut UINT,
399 ) -> HRESULT,
400 fn GetVideoDecoderCaps(
401 pDecoderProfile: *const GUID,
402 SampleWidth: UINT,
403 SampleHeight: UINT,
404 pFrameRate: *const DXGI_RATIONAL,
405 BitRate: UINT,
406 pCryptoType: *const GUID,
407 pDecoderCaps: *mut UINT,
408 ) -> HRESULT,
409 fn CheckVideoDecoderDownsampling(
410 pInputDesc: *const D3D11_VIDEO_DECODER_DESC,
411 InputColorSpace: DXGI_COLOR_SPACE_TYPE,
412 pInputConfig: *const D3D11_VIDEO_DECODER_CONFIG,
413 pFrameRate: *const DXGI_RATIONAL,
414 pOutputDesc: *const D3D11_VIDEO_SAMPLE_DESC,
415 pSupported: *mut BOOL,
416 pRealTimeHint: *mut BOOL,
417 ) -> HRESULT,
418 fn RecommendVideoDecoderDownsampleParameters(
419 pInputDesc: *const D3D11_VIDEO_DECODER_DESC,
420 InputColorSpace: DXGI_COLOR_SPACE_TYPE,
421 pInputConfig: *const D3D11_VIDEO_DECODER_CONFIG,
422 pRecommendedOutputDesc: *mut D3D11_VIDEO_SAMPLE_DESC,
423 ) -> HRESULT,
424}}
425RIDL!{#[uuid(0x465217f2, 0x5568, 0x43cf, 0xb5, 0xb9, 0xf6, 0x1d, 0x54, 0x53, 0x1c, 0xa1)]
426interface ID3D11VideoProcessorEnumerator1(ID3D11VideoProcessorEnumerator1Vtbl):
427 ID3D11VideoProcessorEnumerator(ID3D11VideoProcessorEnumeratorVtbl) {
428 fn CheckVideoProcessorFormatConversion(
429 InputFormat: DXGI_FORMAT,
430 InputCOlorSpace: DXGI_COLOR_SPACE_TYPE,
431 OutputFormat: DXGI_FORMAT,
432 OutputColorSpace: DXGI_COLOR_SPACE_TYPE,
433 pSupported: *mut BOOL,
434 ) -> HRESULT,
435}}
436RIDL!{#[uuid(0xa04bfb29, 0x08ef, 0x43d6, 0xa4, 0x9c, 0xa9, 0xbd, 0xbd, 0xcb, 0xe6, 0x86)]
437interface ID3D11Device1(ID3D11Device1Vtbl): ID3D11Device(ID3D11DeviceVtbl) {
438 fn GetImmediateContext1(
439 ppImmediateContext: *mut *mut ID3D11DeviceContext1,
440 ) -> (),
441 fn CreateDeferredContext1(
442 ContextFlags: UINT,
443 ppDeferredContext: *mut *mut ID3D11DeviceContext1,
444 ) -> HRESULT,
445 fn CreateBlendState(
446 pBlendStateDesc: *const D3D11_BLEND_DESC1,
447 ppBlendState: *mut *mut ID3D11BlendState1,
448 ) -> HRESULT,
449 fn CreateRasterizerState(
450 pRasterizerDesc: *const D3D11_RASTERIZER_DESC1,
451 ppRasterizerState: *mut *mut ID3D11RasterizerState1,
452 ) -> HRESULT,
453 fn CreateDeviceContextState(
454 Flags: UINT,
455 pFeatureLevels: *const D3D_FEATURE_LEVEL,
456 FeatureLevels: UINT,
457 SDKVersion: UINT,
458 EmulatedInterface: REFIID,
459 pChosenFeatureLevel: *mut D3D_FEATURE_LEVEL,
460 ppContextState: *mut *mut ID3DDeviceContextState,
461 ) -> HRESULT,
462 fn OpenSharedResource1(
463 hResource: HANDLE,
464 returnedInterface: REFIID,
465 ppResource: *mut *mut c_void,
466 ) -> HRESULT,
467 fn OpenSharedResourceByName(
468 Name: LPCWSTR,
469 dwDesiredAccess: DWORD,
470 returnedInterface: REFIID,
471 ppResource: *mut *mut c_void,
472 ) -> HRESULT,
473}}
474RIDL!{#[uuid(0xb2daad8b, 0x03d4, 0x4dbf, 0x95, 0xeb, 0x32, 0xab, 0x4b, 0x63, 0xd0, 0xab)]
475interface ID3DUserDefinedAnnotation(ID3DUserDefinedAnnotationVtbl): IUnknown(IUnknownVtbl) {
476 fn BeginEvent(
477 Name: LPCWSTR,
478 ) -> INT,
479 fn EndEvent() -> INT,
480 fn SetMarker(
481 Name: LPCWSTR,
482 ) -> (),
483 fn GetStatus() -> BOOL,
484}}