1/* 2 * Copyright 2014 Jacek Caban for CodeWeavers 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19import "oaidl.idl"; 20import "ocidl.idl"; 21import "dxgi1_2.idl"; 22import "d3dcommon.idl"; 23import "d3d11.idl"; 24 25typedef enum D3D11_LOGIC_OP 26{ 27 D3D11_LOGIC_OP_CLEAR = 0, 28 D3D11_LOGIC_OP_SET, 29 D3D11_LOGIC_OP_COPY, 30 D3D11_LOGIC_OP_COPY_INVERTED, 31 D3D11_LOGIC_OP_NOOP, 32 D3D11_LOGIC_OP_INVERT, 33 D3D11_LOGIC_OP_AND, 34 D3D11_LOGIC_OP_NAND, 35 D3D11_LOGIC_OP_OR, 36 D3D11_LOGIC_OP_NOR, 37 D3D11_LOGIC_OP_XOR, 38 D3D11_LOGIC_OP_EQUIV, 39 D3D11_LOGIC_OP_AND_REVERSE, 40 D3D11_LOGIC_OP_AND_INVERTED, 41 D3D11_LOGIC_OP_OR_REVERSE, 42 D3D11_LOGIC_OP_OR_INVERTED 43} D3D11_LOGIC_OP; 44 45typedef enum D3D11_COPY_FLAGS 46{ 47 D3D11_COPY_NO_OVERWRITE = 0x00000001, 48 D3D11_COPY_DISCARD = 0x00000002, 49} D3D11_COPY_FLAGS; 50 51typedef enum D3D11_1_CREATE_DEVICE_CONTEXT_STATE_FLAG 52{ 53 D3D11_1_CREATE_DEVICE_CONTEXT_STATE_SINGLETHREADED = 0x1, 54} D3D11_1_CREATE_DEVICE_CONTEXT_STATE_FLAG; 55 56typedef enum D3D11_VIDEO_DECODER_CAPS 57{ 58 D3D11_VIDEO_DECODER_CAPS_DOWNSAMPLE = 0x01, 59 D3D11_VIDEO_DECODER_CAPS_NON_REAL_TIME = 0x02, 60 D3D11_VIDEO_DECODER_CAPS_DOWNSAMPLE_DYNAMIC = 0x04, 61 D3D11_VIDEO_DECODER_CAPS_DOWNSAMPLE_REQUIRED = 0x08, 62 D3D11_VIDEO_DECODER_CAPS_UNSUPPORTED = 0x10, 63} D3D11_VIDEO_DECODER_CAPS; 64 65typedef enum D3D11_VIDEO_PROCESSOR_BEHAVIOR_HINTS 66{ 67 D3D11_VIDEO_PROCESSOR_BEHAVIOR_HINT_MULTIPLANE_OVERLAY_ROTATION = 0x01, 68 D3D11_VIDEO_PROCESSOR_BEHAVIOR_HINT_MULTIPLANE_OVERLAY_RESIZE = 0x02, 69 D3D11_VIDEO_PROCESSOR_BEHAVIOR_HINT_MULTIPLANE_OVERLAY_COLOR_SPACE_CONVERSION = 0x04, 70 D3D11_VIDEO_PROCESSOR_BEHAVIOR_HINT_TRIPLE_BUFFER_OUTPUT = 0x08, 71} D3D11_VIDEO_PROCESSOR_BEHAVIOR_HINTS; 72 73typedef enum D3D11_CRYPTO_SESSION_STATUS 74{ 75 D3D11_CRYPTO_SESSION_STATUS_OK = 0x0, 76 D3D11_CRYPTO_SESSION_STATUS_KEY_LOST = 0x1, 77 D3D11_CRYPTO_SESSION_STATUS_KEY_AND_CONTENT_LOST = 0x2, 78} D3D11_CRYPTO_SESSION_STATUS; 79 80typedef struct D3D11_RENDER_TARGET_BLEND_DESC1 81{ 82 BOOL BlendEnable; 83 BOOL LogicOpEnable; 84 D3D11_BLEND SrcBlend; 85 D3D11_BLEND DestBlend; 86 D3D11_BLEND_OP BlendOp; 87 D3D11_BLEND SrcBlendAlpha; 88 D3D11_BLEND DestBlendAlpha; 89 D3D11_BLEND_OP BlendOpAlpha; 90 D3D11_LOGIC_OP LogicOp; 91 UINT8 RenderTargetWriteMask; 92} D3D11_RENDER_TARGET_BLEND_DESC1; 93 94typedef struct D3D11_BLEND_DESC1 95{ 96 BOOL AlphaToCoverageEnable; 97 BOOL IndependentBlendEnable; 98 D3D11_RENDER_TARGET_BLEND_DESC1 RenderTarget[D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT]; 99} D3D11_BLEND_DESC1; 100 101typedef struct D3D11_RASTERIZER_DESC1 102{ 103 D3D11_FILL_MODE FillMode; 104 D3D11_CULL_MODE CullMode; 105 BOOL FrontCounterClockwise; 106 INT DepthBias; 107 FLOAT DepthBiasClamp; 108 FLOAT SlopeScaledDepthBias; 109 BOOL DepthClipEnable; 110 BOOL ScissorEnable; 111 BOOL MultisampleEnable; 112 BOOL AntialiasedLineEnable; 113 UINT ForcedSampleCount; 114} D3D11_RASTERIZER_DESC1; 115 116typedef struct D3D11_VIDEO_DECODER_SUB_SAMPLE_MAPPING_BLOCK 117{ 118 UINT ClearSize; 119 UINT EncryptedSize; 120} D3D11_VIDEO_DECODER_SUB_SAMPLE_MAPPING_BLOCK; 121 122typedef struct D3D11_VIDEO_DECODER_BUFFER_DESC1 123{ 124 D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType; 125 UINT DataOffset; 126 UINT DataSize; 127 void *pIV; 128 UINT IVSize; 129 D3D11_VIDEO_DECODER_SUB_SAMPLE_MAPPING_BLOCK *pSubSampleMappingBlock; 130 UINT SubSampleMappingCount; 131} D3D11_VIDEO_DECODER_BUFFER_DESC1; 132 133typedef struct D3D11_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION 134{ 135 ID3D11CryptoSession *pCryptoSession; 136 UINT BlobSize; 137 void *pBlob; 138 GUID *pKeyInfoId; 139 UINT PrivateDataSize; 140 void *pPrivateData; 141} D3D11_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION; 142 143typedef struct D3D11_VIDEO_PROCESSOR_STREAM_BEHAVIOR_HINT 144{ 145 BOOL Enable; 146 UINT Width; 147 UINT Height; 148 DXGI_FORMAT Format; 149} D3D11_VIDEO_PROCESSOR_STREAM_BEHAVIOR_HINT; 150 151typedef struct D3D11_KEY_EXCHANGE_HW_PROTECTION_INPUT_DATA 152{ 153 UINT PrivateDataSize; 154 UINT HWProtectionDataSize; 155 BYTE pbInput[4]; 156} D3D11_KEY_EXCHANGE_HW_PROTECTION_INPUT_DATA; 157 158typedef struct D3D11_KEY_EXCHANGE_HW_PROTECTION_OUTPUT_DATA 159{ 160 UINT PrivateDataSize; 161 UINT MaxHWProtectionDataSize; 162 UINT HWProtectionDataSize; 163 UINT64 TransportTime; 164 UINT64 ExecutionTime; 165 BYTE pbOutput[4]; 166} D3D11_KEY_EXCHANGE_HW_PROTECTION_OUTPUT_DATA; 167 168typedef struct D3D11_KEY_EXCHANGE_HW_PROTECTION_DATA 169{ 170 UINT HWProtectionFunctionID; 171 D3D11_KEY_EXCHANGE_HW_PROTECTION_INPUT_DATA *pInputData; 172 D3D11_KEY_EXCHANGE_HW_PROTECTION_OUTPUT_DATA *pOutputData; 173 HRESULT Status; 174} D3D11_KEY_EXCHANGE_HW_PROTECTION_DATA; 175 176typedef struct D3D11_VIDEO_SAMPLE_DESC 177{ 178 UINT Width; 179 UINT Height; 180 DXGI_FORMAT Format; 181 DXGI_COLOR_SPACE_TYPE ColorSpace; 182} D3D11_VIDEO_SAMPLE_DESC; 183 184[ 185 uuid(cc86fabe-da55-401d-85e7-e3c9de2877e9), 186 object, 187 local, 188 pointer_default(unique) 189] 190interface ID3D11BlendState1 : ID3D11BlendState 191{ 192 void GetDesc1(D3D11_BLEND_DESC1 *pDesc); 193} 194 195[ 196 uuid(5c1e0d8a-7c23-48f9-8c59-a92958ceff11), 197 object, 198 local, 199 pointer_default(unique) 200] 201interface ID3DDeviceContextState : ID3D11DeviceChild 202{ 203} 204 205[ 206 uuid(bb2c6faa-b5fb-4082-8e6b-388b8cfa90e1), 207 object, 208 local, 209 pointer_default(unique) 210] 211interface ID3D11DeviceContext1 : ID3D11DeviceContext 212{ 213 void CopySubresourceRegion1( 214 ID3D11Resource *pDstResource, 215 UINT DstSubresource, 216 UINT DstX, 217 UINT DstY, 218 UINT DstZ, 219 ID3D11Resource *pSrcResource, 220 UINT SrcSubresource, 221 const D3D11_BOX *pSrcBox, 222 UINT CopyFlags); 223 224 void UpdateSubresource1( 225 ID3D11Resource *pDstResource, 226 UINT DstSubresource, 227 const D3D11_BOX *pDstBox, 228 const void *pSrcData, 229 UINT SrcRowPitch, 230 UINT SrcDepthPitch, 231 UINT CopyFlags); 232 233 void DiscardResource(ID3D11Resource *pResource); 234 235 void DiscardView(ID3D11View *pResourceView); 236 237 void VSSetConstantBuffers1( 238 UINT StartSlot, 239 UINT NumBuffers, 240 ID3D11Buffer *const *ppConstantBuffers, 241 const UINT *pFirstConstant, 242 const UINT *pNumConstants); 243 244 void HSSetConstantBuffers1( 245 UINT StartSlot, 246 UINT NumBuffers, 247 ID3D11Buffer *const *ppConstantBuffers, 248 const UINT *pFirstConstant, 249 const UINT *pNumConstants); 250 251 void DSSetConstantBuffers1( 252 UINT StartSlot, 253 UINT NumBuffers, 254 ID3D11Buffer *const *ppConstantBuffers, 255 const UINT *pFirstConstant, 256 const UINT *pNumConstants); 257 258 void GSSetConstantBuffers1( 259 UINT StartSlot, 260 UINT NumBuffers, 261 ID3D11Buffer *const *ppConstantBuffers, 262 const UINT *pFirstConstant, 263 const UINT *pNumConstants); 264 265 void PSSetConstantBuffers1( 266 UINT StartSlot, 267 UINT NumBuffers, 268 ID3D11Buffer *const *ppConstantBuffers, 269 const UINT *pFirstConstant, 270 const UINT *pNumConstants); 271 272 void CSSetConstantBuffers1( 273 UINT StartSlot, 274 UINT NumBuffers, 275 ID3D11Buffer *const *ppConstantBuffers, 276 const UINT *pFirstConstant, 277 const UINT *pNumConstants); 278 279 void VSGetConstantBuffers1( 280 UINT StartSlot, 281 UINT NumBuffers, 282 ID3D11Buffer **ppConstantBuffers, 283 UINT *pFirstConstant, 284 UINT *pNumConstants); 285 286 void HSGetConstantBuffers1( 287 UINT StartSlot, 288 UINT NumBuffers, 289 ID3D11Buffer **ppConstantBuffers, 290 UINT *pFirstConstant, 291 UINT *pNumConstants); 292 293 void DSGetConstantBuffers1( 294 UINT StartSlot, 295 UINT NumBuffers, 296 ID3D11Buffer **ppConstantBuffers, 297 UINT *pFirstConstant, 298 UINT *pNumConstants); 299 300 void GSGetConstantBuffers1( 301 UINT StartSlot, 302 UINT NumBuffers, 303 ID3D11Buffer **ppConstantBuffers, 304 UINT *pFirstConstant, 305 UINT *pNumConstants); 306 307 void PSGetConstantBuffers1( 308 UINT StartSlot, 309 UINT NumBuffers, 310 ID3D11Buffer **ppConstantBuffers, 311 UINT *pFirstConstant, 312 UINT *pNumConstants); 313 314 void CSGetConstantBuffers1( 315 UINT StartSlot, 316 UINT NumBuffers, 317 ID3D11Buffer **ppConstantBuffers, 318 UINT *pFirstConstant, 319 UINT *pNumConstants); 320 321 void SwapDeviceContextState( 322 ID3DDeviceContextState *pState, 323 ID3DDeviceContextState **ppPreviousState); 324 325 void ClearView( 326 ID3D11View *pView, 327 const FLOAT Color[4], 328 const D3D11_RECT *pRect, 329 UINT NumRects); 330 331 void DiscardView1( 332 ID3D11View *pResourceView, 333 const D3D11_RECT *pRects, 334 UINT NumRects); 335} 336 337[ 338 uuid(a7f026da-a5f8-4487-a564-15e34357651e), 339 object, 340 local, 341 pointer_default(unique) 342] 343interface ID3D11VideoContext1 : ID3D11VideoContext 344{ 345 HRESULT SubmitDecoderBuffers1( 346 ID3D11VideoDecoder *decoder, 347 UINT buffer_count, 348 const D3D11_VIDEO_DECODER_BUFFER_DESC1 *buffer_desc 349 ); 350 HRESULT GetDataForNewHardwareKey( 351 ID3D11CryptoSession *session, 352 UINT input_size, 353 const void *input_data, 354 UINT64 *output_data 355 ); 356 HRESULT CheckCryptoSessionStatus( 357 ID3D11CryptoSession *session, 358 D3D11_CRYPTO_SESSION_STATUS *status 359 ); 360 HRESULT DecoderEnableDownsampling( 361 ID3D11VideoDecoder *decoder, 362 DXGI_COLOR_SPACE_TYPE colour_space, 363 const D3D11_VIDEO_SAMPLE_DESC *output_desc, 364 UINT reference_frame_count 365 ); 366 HRESULT DecoderUpdateDownsampling( 367 ID3D11VideoDecoder *decoder, 368 const D3D11_VIDEO_SAMPLE_DESC *output_desc 369 ); 370 void VideoProcessorSetOutputColorSpace1( 371 ID3D11VideoProcessor *processor, 372 DXGI_COLOR_SPACE_TYPE colour_space 373 ); 374 void VideoProcessorSetOutputShaderUsage( 375 ID3D11VideoProcessor *processor, 376 BOOL shader_usage 377 ); 378 void VideoProcessorGetOutputColorSpace1( 379 ID3D11VideoProcessor *processor, 380 DXGI_COLOR_SPACE_TYPE *colour_space 381 ); 382 void VideoProcessorGetOutputShaderUsage( 383 ID3D11VideoProcessor *processor, 384 BOOL *shader_usage 385 ); 386 void VideoProcessorSetStreamColorSpace1( 387 ID3D11VideoProcessor *processor, 388 UINT stream_index, 389 DXGI_COLOR_SPACE_TYPE colour_space 390 ); 391 void VideoProcessorSetStreamMirror( 392 ID3D11VideoProcessor *processor, 393 UINT stream_index, 394 BOOL enable, 395 BOOL flip_horizontal, 396 BOOL flip_vertical 397 ); 398 void VideoProcessorGetStreamColorSpace1( 399 ID3D11VideoProcessor *processor, 400 UINT stream_index, 401 DXGI_COLOR_SPACE_TYPE *colour_space 402 ); 403 void VideoProcessorGetStreamMirror( 404 ID3D11VideoProcessor *processor, 405 UINT stream_index, 406 BOOL *enable, 407 BOOL *flip_horizontal, 408 BOOL *flip_vertical 409 ); 410 HRESULT VideoProcessorGetBehaviorHints( 411 ID3D11VideoProcessor *processor, 412 UINT output_width, 413 UINT output_height, 414 DXGI_FORMAT output_format, 415 UINT stream_count, 416 const D3D11_VIDEO_PROCESSOR_STREAM_BEHAVIOR_HINT *streams, 417 UINT *behaviour_hints 418 ); 419} 420 421[ 422 uuid(29da1d51-1321-4454-804b-f5fc9f861f0f), 423 object, 424 local, 425 pointer_default(unique) 426] 427interface ID3D11VideoDevice1 : ID3D11VideoDevice 428{ 429 HRESULT GetCryptoSessionPrivateDataSize( 430 const GUID *crypto_type, 431 const GUID *decoder_profile, 432 const GUID *key_exchange_type, 433 UINT *input_size, 434 UINT *output_size 435 ); 436 HRESULT GetVideoDecoderCaps( 437 const GUID *decoder_profile, 438 UINT sample_width, 439 UINT sample_height, 440 const DXGI_RATIONAL *framerate, 441 UINT bitrate, 442 const GUID *crypto_type, 443 UINT *decoder_caps 444 ); 445 HRESULT CheckVideoDecoderDownsampling( 446 const D3D11_VIDEO_DECODER_DESC *input_desc, 447 DXGI_COLOR_SPACE_TYPE input_colour_space, 448 const D3D11_VIDEO_DECODER_CONFIG *input_config, 449 const DXGI_RATIONAL *framerate, 450 const D3D11_VIDEO_SAMPLE_DESC *output_desc, 451 BOOL *supported, 452 BOOL *real_time_hint 453 ); 454 HRESULT RecommendVideoDecoderDownsampleParameters( 455 const D3D11_VIDEO_DECODER_DESC *input_desc, 456 DXGI_COLOR_SPACE_TYPE input_colour_space, 457 const D3D11_VIDEO_DECODER_CONFIG *input_config, 458 const DXGI_RATIONAL *framerate, 459 D3D11_VIDEO_SAMPLE_DESC *recommended_output_desc 460 ); 461} 462 463[ 464 uuid(465217f2-5568-43cf-b5b9-f61d54531ca1), 465 object, 466 local, 467 pointer_default(unique) 468] 469interface ID3D11VideoProcessorEnumerator1 : ID3D11VideoProcessorEnumerator 470{ 471 HRESULT CheckVideoProcessorFormatConversion( 472 DXGI_FORMAT input_format, 473 DXGI_COLOR_SPACE_TYPE input_colour_space, 474 DXGI_FORMAT output_format, 475 DXGI_COLOR_SPACE_TYPE output_colour_space, 476 BOOL *supported 477 ); 478} 479 480[ 481 uuid(b2daad8b-03d4-4dbf-95eb-32ab4b63d0ab), 482 object, 483 local, 484 pointer_default(unique) 485] 486interface ID3DUserDefinedAnnotation : IUnknown 487{ 488 INT BeginEvent(LPCWSTR Name); 489 INT EndEvent(); 490 void SetMarker(LPCWSTR Name); 491 BOOL GetStatus(); 492} 493 494[ 495 uuid(1217d7a6-5039-418c-b042-9cbe256afd6e), 496 object, 497 local, 498 pointer_default(unique) 499] 500interface ID3D11RasterizerState1 : ID3D11RasterizerState 501{ 502 void GetDesc1(D3D11_RASTERIZER_DESC1 *pDesc); 503} 504 505[ 506 uuid(a04bfb29-08ef-43d6-a49c-a9bdbdcbe686), 507 object, 508 local, 509 pointer_default(unique) 510] 511interface ID3D11Device1 : ID3D11Device 512{ 513 void GetImmediateContext1( 514 ID3D11DeviceContext1 **ppImmediateContext); 515 516 HRESULT CreateDeferredContext1( 517 UINT ContextFlags, 518 ID3D11DeviceContext1 **ppDeferredContext); 519 520 HRESULT CreateBlendState1( 521 const D3D11_BLEND_DESC1 *pBlendStateDesc, 522 ID3D11BlendState1 **ppBlendState); 523 524 HRESULT CreateRasterizerState1( 525 const D3D11_RASTERIZER_DESC1 *pRasterizerDesc, 526 ID3D11RasterizerState1 **ppRasterizerState); 527 528 HRESULT CreateDeviceContextState( 529 UINT Flags, 530 const D3D_FEATURE_LEVEL *pFeatureLevels, 531 UINT FeatureLevels, 532 UINT SDKVersion, 533 REFIID EmulatedInterface, 534 D3D_FEATURE_LEVEL *pChosenFeatureLevel, 535 ID3DDeviceContextState **ppContextState); 536 537 HRESULT OpenSharedResource1( 538 HANDLE hResource, 539 REFIID returnedInterface, 540 void **ppResource); 541 542 HRESULT OpenSharedResourceByName( 543 LPCWSTR lpName, 544 DWORD dwDesiredAccess, 545 REFIID returnedInterface, 546 void **ppResource); 547} 548