winapi_ui_automation/um/
d3d11_1.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6use 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}}