diff --git a/mingw-w64-crt-git/0001-Allow-to-use-bessel-and-complex-functions-without-un.patch b/mingw-w64-crt-git/0001-Allow-to-use-bessel-and-complex-functions-without-un.patch new file mode 100644 index 0000000000..ad533db768 --- /dev/null +++ b/mingw-w64-crt-git/0001-Allow-to-use-bessel-and-complex-functions-without-un.patch @@ -0,0 +1,26 @@ +From 58ff03526ba9a0e5ebe2e318b54fdbe993d5abbd Mon Sep 17 00:00:00 2001 +From: Alexey Pavlov +Date: Thu, 14 Sep 2017 11:13:45 +0300 +Subject: [PATCH 1/3] Allow to use bessel and complex functions without + undefining + +--- + mingw-w64-headers/crt/math.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mingw-w64-headers/crt/math.h b/mingw-w64-headers/crt/math.h +index 658abc80..7d5a26da 100644 +--- a/mingw-w64-headers/crt/math.h ++++ b/mingw-w64-headers/crt/math.h +@@ -263,7 +263,7 @@ extern "C" { + #define EDOM 33 + #define ERANGE 34 + +-#ifndef __STRICT_ANSI__ ++#if !defined(__STRICT_ANSI__) || defined(_POSIX_C_SOURCE) || defined(_POSIX_SOURCE) || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + + #ifndef _COMPLEX_DEFINED + #define _COMPLEX_DEFINED +-- +2.14.1 + diff --git a/mingw-w64-crt-git/0002-DirectX-9-fixes-for-VLC.patch b/mingw-w64-crt-git/0002-DirectX-9-fixes-for-VLC.patch new file mode 100644 index 0000000000..9633e20cf3 --- /dev/null +++ b/mingw-w64-crt-git/0002-DirectX-9-fixes-for-VLC.patch @@ -0,0 +1,3402 @@ +From 973132c972dd40707307135583eb4fdeae8ce894 Mon Sep 17 00:00:00 2001 +From: Alexey Pavlov +Date: Thu, 14 Sep 2017 11:18:59 +0300 +Subject: [PATCH 2/3] DirectX 9 fixes for VLC + +--- + mingw-w64-headers/direct-x/include/d3d9.h | 37 + + mingw-w64-headers/direct-x/include/d3d9caps.h | 7 + + mingw-w64-headers/include/dxva2api.h | 2935 +++++++++++++++---------- + mingw-w64-headers/include/dxva2api.idl | 117 + + 4 files changed, 1905 insertions(+), 1191 deletions(-) + +diff --git a/mingw-w64-headers/direct-x/include/d3d9.h b/mingw-w64-headers/direct-x/include/d3d9.h +index 75da9a81..e5478a0e 100644 +--- a/mingw-w64-headers/direct-x/include/d3d9.h ++++ b/mingw-w64-headers/direct-x/include/d3d9.h +@@ -2185,6 +2185,43 @@ __CRT_UUID_DECL(IDirect3DDevice9Ex, 0xb18b10ce, 0x2649, 0x405a, 0x87, + #define IDirect3DDevice9Ex_GetDisplayModeEx(p,a,b,c) (p)->GetDisplayModeEx(a,b,c) + #endif + ++/***************************************************************************** ++ * IDirect3D9ExOverlayExtension interface ++ */ ++#define INTERFACE IDirect3D9ExOverlayExtension ++DECLARE_INTERFACE_(IDirect3D9ExOverlayExtension,IUnknown) ++{ ++ /*** IUnknown methods ***/ ++ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; ++ STDMETHOD_(ULONG,AddRef)(THIS) PURE; ++ STDMETHOD_(ULONG,Release)(THIS) PURE; ++ /*** IDirect3D9ExOverlayExtension methods ***/ ++ STDMETHOD(CheckDeviceOverlayType)(THIS_ UINT Adapter, D3DDEVTYPE DevType, UINT OverlayWidth, UINT OverlayHeight, ++ D3DFORMAT OverlayFormat, D3DDISPLAYMODEEX* pDisplayMode, D3DDISPLAYROTATION DisplayRotation, D3DOVERLAYCAPS* pOverlayCaps) PURE; ++}; ++#undef INTERFACE ++ ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(IDirect3D9ExOverlayExtension, 0x187aeb13, 0xaaf5, 0x4c59, 0x87, 0x6d, 0xe0, 0x59, 0x8, 0x8c, 0xd, 0xf8); ++#endif ++ ++#if !defined(__cplusplus) || defined(CINTERFACE) ++/*** IUnknown methods ***/ ++#define IDirect3D9ExOverlayExtension_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) ++#define IDirect3D9ExOverlayExtension_AddRef(p) (p)->lpVtbl->AddRef(p) ++#define IDirect3D9ExOverlayExtension_Release(p) (p)->lpVtbl->Release(p) ++/*** IDirect3D9ExOverlayExtension ***/ ++#define IDirect3D9ExOverlayExtension_CheckDeviceOverlayType(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->CheckDeviceOverlayType(p,a,b,c,d,e,f,g,h) ++#else ++/*** IUnknown methods ***/ ++#define IDirect3D9ExOverlayExtension_QueryInterface(p,a,b) (p)->QueryInterface(a,b) ++#define IDirect3D9ExOverlayExtension_AddRef(p) (p)->AddRef() ++#define IDirect3D9ExOverlayExtension_Release(p) (p)->Release() ++/*** IDirect3D9ExOverlayExtension ***/ ++#define IDirect3D9ExOverlayExtension_CheckDeviceOverlayType(p,a,b,c,d,e,f,g,h) (p)->CheckDeviceOverlayType(a,b,c,d,e,f,g,h) ++#endif ++ ++ + #ifdef __cplusplus + extern "C" { + #endif /* defined(__cplusplus) */ +diff --git a/mingw-w64-headers/direct-x/include/d3d9caps.h b/mingw-w64-headers/direct-x/include/d3d9caps.h +index 424b20cd..72c65cdb 100644 +--- a/mingw-w64-headers/direct-x/include/d3d9caps.h ++++ b/mingw-w64-headers/direct-x/include/d3d9caps.h +@@ -399,6 +399,13 @@ typedef struct _D3DCAPS9 { + + } D3DCAPS9; + ++typedef struct _D3DOVERLAYCAPS { ++ UINT Caps; ++ UINT MaxOverlayDisplayWidth; ++ UINT MaxOverlayDisplayHeight; ++ ++} D3DOVERLAYCAPS; ++ + #ifdef __i386__ + #include + #endif +diff --git a/mingw-w64-headers/include/dxva2api.h b/mingw-w64-headers/include/dxva2api.h +index d4c54462..6a6eef5b 100644 +--- a/mingw-w64-headers/include/dxva2api.h ++++ b/mingw-w64-headers/include/dxva2api.h +@@ -1,1191 +1,1744 @@ +-/*** Autogenerated by WIDL 1.6 from include/dxva2api.idl - Do not edit ***/ +- +-#ifndef __REQUIRED_RPCNDR_H_VERSION__ +-#define __REQUIRED_RPCNDR_H_VERSION__ 475 +-#endif +- +-#include +-#include +- +-#ifndef COM_NO_WINDOWS_H +-#include +-#include +-#endif +- +-#ifndef __dxva2api_h__ +-#define __dxva2api_h__ +- +-/* Forward declarations */ +- +-#ifndef __IDirect3DDeviceManager9_FWD_DEFINED__ +-#define __IDirect3DDeviceManager9_FWD_DEFINED__ +-typedef interface IDirect3DDeviceManager9 IDirect3DDeviceManager9; +-#endif +- +-#ifndef __IDirectXVideoDecoder_FWD_DEFINED__ +-#define __IDirectXVideoDecoder_FWD_DEFINED__ +-typedef interface IDirectXVideoDecoder IDirectXVideoDecoder; +-#endif +- +-#ifndef __IDirectXVideoAccelerationService_FWD_DEFINED__ +-#define __IDirectXVideoAccelerationService_FWD_DEFINED__ +-typedef interface IDirectXVideoAccelerationService IDirectXVideoAccelerationService; +-#endif +- +-#ifndef __IDirectXVideoDecoderService_FWD_DEFINED__ +-#define __IDirectXVideoDecoderService_FWD_DEFINED__ +-typedef interface IDirectXVideoDecoderService IDirectXVideoDecoderService; +-#endif +- +-/* Headers for imported files */ +- +-#include +- +-#ifdef __cplusplus +-extern "C" { +-#endif +- +-#if 0 +-typedef DWORD IDirect3DDevice9; +-typedef DWORD IDirect3DSurface9; +-typedef DWORD D3DFORMAT; +-typedef DWORD D3DPOOL; +-#endif +-#ifndef __IDirectXVideoDecoderService_FWD_DEFINED__ +-#define __IDirectXVideoDecoderService_FWD_DEFINED__ +-typedef interface IDirectXVideoDecoderService IDirectXVideoDecoderService; +-#endif +- +-#ifndef __REFERENCE_TIME_DEFINED +-#define __REFERENCE_TIME_DEFINED +-typedef LONGLONG REFERENCE_TIME; +-#endif /*__REFERENCE_TIME_DEFINED*/ +-#define DXVA2_ProcAmp_None 0x0000 +-#define DXVA2_ProcAmp_Brightness 0x0001 +-#define DXVA2_ProcAmp_Contrast 0x0002 +-#define DXVA2_ProcAmp_Hue 0x0004 +-#define DXVA2_ProcAmp_Saturation 0x0008 +- +-#define DXVA2_E_NOT_INITIALIZED MAKE_HRESULT(1, 4, 4096) +-#define DXVA2_E_NEW_VIDEO_DEVICE MAKE_HRESULT(1, 4, 4097) +-#define DXVA2_E_VIDEO_DEVICE_LOCKED MAKE_HRESULT(1, 4, 4098) +-#define DXVA2_E_NOT_AVAILABLE MAKE_HRESULT(1, 4, 4099) +- +-DEFINE_GUID(DXVA2_ModeMPEG2_MoComp, 0xe6a9f44b, 0x61b0,0x4563, 0x9e,0xa4,0x63,0xd2,0xa3,0xc6,0xfe,0x66); +-DEFINE_GUID(DXVA2_ModeMPEG2_IDCT, 0xbf22ad00, 0x03ea,0x4690, 0x80,0x77,0x47,0x33,0x46,0x20,0x9b,0x7e); +-DEFINE_GUID(DXVA2_ModeMPEG2_VLD, 0xee27417f, 0x5e28,0x4e65, 0xbe,0xea,0x1d,0x26,0xb5,0x08,0xad,0xc9); +-DEFINE_GUID(DXVA2_ModeH264_A, 0x1b81be64, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +-DEFINE_GUID(DXVA2_ModeH264_B, 0x1b81be65, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +-DEFINE_GUID(DXVA2_ModeH264_C, 0x1b81be66, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +-DEFINE_GUID(DXVA2_ModeH264_D, 0x1b81be67, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +-DEFINE_GUID(DXVA2_ModeH264_E, 0x1b81be68, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +-DEFINE_GUID(DXVA2_ModeH264_F, 0x1b81be69, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +-DEFINE_GUID(DXVA2_ModeWMV8_A, 0x1b81be80, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +-DEFINE_GUID(DXVA2_ModeWMV8_B, 0x1b81be81, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +-DEFINE_GUID(DXVA2_ModeWMV9_A, 0x1b81be90, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +-DEFINE_GUID(DXVA2_ModeWMV9_B, 0x1b81be91, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +-DEFINE_GUID(DXVA2_ModeWMV9_C, 0x1b81be94, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +-DEFINE_GUID(DXVA2_ModeVC1_A, 0x1b81beA0, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +-DEFINE_GUID(DXVA2_ModeVC1_B, 0x1b81beA1, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +-DEFINE_GUID(DXVA2_ModeVC1_C, 0x1b81beA2, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +-DEFINE_GUID(DXVA2_ModeVC1_D, 0x1b81beA3, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); +- +-typedef enum _DXVA2_SampleFormat { +- DXVA2_SampleFormatMask = 0x00FF, +- DXVA2_SampleUnknown = 0, +- DXVA2_SampleProgressiveFrame = 2, +- DXVA2_SampleFieldInterleavedEvenFirst = 3, +- DXVA2_SampleFieldInterleavedOddFirst = 4, +- DXVA2_SampleFieldSingleEven = 5, +- DXVA2_SampleFieldSingleOdd = 6, +- DXVA2_SampleSubStream = 7 +-} DXVA2_SampleFormat; +- +-typedef enum _DXVA2_VideoChromaSubSampling { +- DXVA2_VideoChromaSubsamplingMask = 0x0F, +- DXVA2_VideoChromaSubsampling_Unknown = 0, +- DXVA2_VideoChromaSubsampling_ProgressiveChroma = 0x8, +- DXVA2_VideoChromaSubsampling_Horizontally_Cosited = 0x4, +- DXVA2_VideoChromaSubsampling_Vertically_Cosited = 0x2, +- DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes = 0x1, +- DXVA2_VideoChromaSubsampling_MPEG2 = +- DXVA2_VideoChromaSubsampling_Horizontally_Cosited | +- DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes, +- DXVA2_VideoChromaSubsampling_MPEG1 = +- DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes, +- DXVA2_VideoChromaSubsampling_DV_PAL = +- DXVA2_VideoChromaSubsampling_Horizontally_Cosited | +- DXVA2_VideoChromaSubsampling_Vertically_Cosited, +- DXVA2_VideoChromaSubsampling_Cosited = +- DXVA2_VideoChromaSubsampling_Horizontally_Cosited | +- DXVA2_VideoChromaSubsampling_Vertically_Cosited | +- DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes +-} DXVA2_VideoChromaSubSampling; +- +-typedef enum _DXVA2_NominalRange { +- DXVA2_NominalRangeMask = 0x07, +- DXVA2_NominalRange_Unknown = 0, +- DXVA2_NominalRange_Normal = 1, +- DXVA2_NominalRange_Wide = 2, +- DXVA2_NominalRange_0_255 = 1, +- DXVA2_NominalRange_16_235 = 2, +- DXVA2_NominalRange_48_208 = 3 +-} DXVA2_NominalRange; +- +-typedef enum _DXVA2_VideoLighting { +- DXVA2_VideoLightingMask = 0x0F, +- DXVA2_VideoLighting_Unknown = 0, +- DXVA2_VideoLighting_bright = 1, +- DXVA2_VideoLighting_office = 2, +- DXVA2_VideoLighting_dim = 3, +- DXVA2_VideoLighting_dark = 4 +-} DXVA2_VideoLighting; +- +-typedef enum _DXVA2_VideoPrimaries { +- DXVA2_VideoPrimariesMask = 0x001f, +- DXVA2_VideoPrimaries_Unknown = 0, +- DXVA2_VideoPrimaries_reserved = 1, +- DXVA2_VideoPrimaries_BT709 = 2, +- DXVA2_VideoPrimaries_BT470_2_SysM = 3, +- DXVA2_VideoPrimaries_BT470_2_SysBG = 4, +- DXVA2_VideoPrimaries_SMPTE170M = 5, +- DXVA2_VideoPrimaries_SMPTE240M = 6, +- DXVA2_VideoPrimaries_EBU3213 = 7, +- DXVA2_VideoPrimaries_SMPTE_C = 8 +-} DXVA2_VideoPrimaries; +- +-typedef enum _DXVA2_VideoTransferFunction { +- DXVA2_VideoTransFuncMask = 0x001f, +- DXVA2_VideoTransFunc_Unknown = 0, +- DXVA2_VideoTransFunc_10 = 1, +- DXVA2_VideoTransFunc_18 = 2, +- DXVA2_VideoTransFunc_20 = 3, +- DXVA2_VideoTransFunc_22 = 4, +- DXVA2_VideoTransFunc_709 = 5, +- DXVA2_VideoTransFunc_240M = 6, +- DXVA2_VideoTransFunc_sRGB = 7, +- DXVA2_VideoTransFunc_28 = 8 +-} DXVA2_VideoTransferFunction; +- +-typedef enum { +- DXVA2_SurfaceType_DecoderRenderTarget = 0, +- DXVA2_SurfaceType_ProcessorRenderTarget = 1, +- DXVA2_SurfaceType_D3DRenderTargetTexture = 2 +-} DXVA2_SurfaceType; +- +-typedef enum _DXVA2_VideoTransferMatrix { +- DXVA2_VideoTransferMatrixMask = 0x07, +- DXVA2_VideoTransferMatrix_Unknown = 0, +- DXVA2_VideoTransferMatrix_BT709 = 1, +- DXVA2_VideoTransferMatrix_BT601 = 2, +- DXVA2_VideoTransferMatrix_SMPTE240M = 3 +-} DXVA2_VideoTransferMatrix; +- +-typedef struct _DXVA2_AYUVSample16 { +- USHORT Cr; +- USHORT Cb; +- USHORT Y; +- USHORT Alpha; +-} DXVA2_AYUVSample16; +- +-typedef struct _DXVA2_AYUVSample8 { +- UCHAR Cr; +- UCHAR Cb; +- UCHAR Y; +- UCHAR Alpha; +-} DXVA2_AYUVSample8; +-typedef struct _DXVA2_ConfigPictureDecode { +- GUID guidConfigBitstreamEncryption; +- GUID guidConfigMBcontrolEncryption; +- GUID guidConfigResidDiffEncryption; +- UINT ConfigBitstreamRaw; +- UINT ConfigMBcontrolRasterOrder; +- UINT ConfigResidDiffHost; +- UINT ConfigSpatialResid8; +- UINT ConfigResid8Subtraction; +- UINT ConfigSpatialHost8or9Clipping; +- UINT ConfigSpatialResidInterleaved; +- UINT ConfigIntraResidUnsigned; +- UINT ConfigResidDiffAccelerator; +- UINT ConfigHostInverseScan; +- UINT ConfigSpecificIDCT; +- UINT Config4GroupedCoefs; +- USHORT ConfigMinRenderTargetBuffCount; +- USHORT ConfigDecoderSpecific; +-} DXVA2_ConfigPictureDecode; +-typedef struct _DXVA2_DecodeBufferDesc { +- DWORD CompressedBufferType; +- UINT BufferIndex; +- UINT DataOffset; +- UINT DataSize; +- UINT FirstMBaddress; +- UINT NumMBsInBuffer; +- UINT Width; +- UINT Height; +- UINT Stride; +- UINT ReservedBits; +- PVOID pvPVPState; +-} DXVA2_DecodeBufferDesc; +-typedef struct _DXVA2_DecodeExtensionData { +- UINT Function; +- PVOID pPrivateInputData; +- UINT PrivateInputDataSize; +- PVOID pPrivateOutputData; +- UINT PrivateOutputDataSize; +-} DXVA2_DecodeExtensionData; +-typedef struct _DXVA2_DecodeExecuteParams { +- UINT NumCompBuffers; +- DXVA2_DecodeBufferDesc *pCompressedBuffers; +- DXVA2_DecodeExtensionData *pExtensionData; +-} DXVA2_DecodeExecuteParams; +-typedef struct _DXVA2_ExtendedFormat { +- __C89_NAMELESS union { +- __C89_NAMELESS struct { +- UINT SampleFormat : 8; +- UINT VideoChromaSubsampling : 4; +- UINT NominalRange : 3; +- UINT VideoTransferMatrix : 3; +- UINT VideoLighting : 4; +- UINT VideoPrimaries : 5; +- UINT VideoTransferFunction : 5; +- } __C89_NAMELESSSTRUCTNAME; +- UINT value; +- } __C89_NAMELESSUNIONNAME; +-} DXVA2_ExtendedFormat; +-typedef struct _DXVA2_Fixed32 { +- __C89_NAMELESS union { +- __C89_NAMELESS struct { +- USHORT Fraction; +- SHORT Value; +- } DUMMYSTRUCTNAME; +- LONG ll; +- } DUMMYUNIONNAME; +-} DXVA2_Fixed32; +- +-typedef struct _DXVA2_FilterValues { +- DXVA2_Fixed32 Level; +- DXVA2_Fixed32 Threshold; +- DXVA2_Fixed32 Radius; +-} DXVA2_FilterValues; +-typedef struct _DXVA2_Frequency { +- UINT Numerator; +- UINT Denominator; +-} DXVA2_Frequency; +-typedef struct _DXVA2_ProcAmpValues { +- DXVA2_Fixed32 Brightness; +- DXVA2_Fixed32 Contrast; +- DXVA2_Fixed32 Hue; +- DXVA2_Fixed32 Saturation; +-} DXVA2_ProcAmpValues; +- +-typedef struct _DXVA2_ValueRange { +- DXVA2_Fixed32 MinValue; +- DXVA2_Fixed32 MaxValue; +- DXVA2_Fixed32 DefaultValue; +- DXVA2_Fixed32 StepSize; +-} DXVA2_ValueRange; +-typedef struct _DXVA2_VideoDesc { +- UINT SampleWidth; +- UINT SampleHeight; +- DXVA2_ExtendedFormat SampleFormat; +- D3DFORMAT Format; +- DXVA2_Frequency InputSampleFreq; +- DXVA2_Frequency OutputFrameFreq; +- UINT UABProtectionLevel; +- UINT Reserved; +-} DXVA2_VideoDesc; +-/* DeviceCaps +-DXVA2_VPDev_EmulatedDXVA1 +-DXVA2_VPDev_HardwareDevice +-DXVA2_VPDev_SoftwareDevice +-*/ +-/* DeinterlaceTechnology +-DXVA2_DeinterlaceTech_Unknown +-DXVA2_DeinterlaceTech_BOBLineReplicate +-DXVA2_DeinterlaceTech_BOBVerticalStretch +-DXVA2_DeinterlaceTech_BOBVerticalStretch4Tap +-DXVA2_DeinterlaceTech_MedianFiltering +-DXVA2_DeinterlaceTech_EdgeFiltering +-DXVA2_DeinterlaceTech_FieldAdaptive +-DXVA2_DeinterlaceTech_PixelAdaptive +-DXVA2_DeinterlaceTech_MotionVectorSteered +-DXVA2_DeinterlaceTech_InverseTelecine +-*/ +- +-/* VideoProcessorOperations +-DXVA2_VideoProcess_YUV2RGB +-DXVA2_VideoProcess_StretchX +-DXVA2_VideoProcess_StretchY +-DXVA2_VideoProcess_AlphaBlend +-DXVA2_VideoProcess_SubRects +-DXVA2_VideoProcess_SubStreams +-DXVA2_VideoProcess_SubStreamsExtended +-DXVA2_VideoProcess_YUV2RGBExtended +-DXVA2_VideoProcess_AlphaBlendExtended +-DXVA2_VideoProcess_Constriction +-DXVA2_VideoProcess_NoiseFilter +-DXVA2_VideoProcess_DetailFilter +-DXVA2_VideoProcess_PlanarAlpha +-DXVA2_VideoProcess_LinearScaling +-DXVA2_VideoProcess_GammaCompensated +-DXVA2_VideoProcess_MaintainsOriginalFieldData +-*/ +- +-/*NoiseFilterTechnology +-DXVA2_NoiseFilterTech_Unsupported +-DXVA2_NoiseFilterTech_Unknown +-DXVA2_NoiseFilterTech_Median +-DXVA2_NoiseFilterTech_Temporal +-DXVA2_NoiseFilterTech_BlockNoise +-DXVA2_NoiseFilterTech_MosquitoNoise +-*/ +- +-/* DetailFilterTechnology +-DXVA2_DetailFilterTech_Unsupported +-DXVA2_DetailFilterTech_Unknown +-DXVA2_DetailFilterTech_Edge +-DXVA2_DetailFilterTech_Sharpening +-*/ +-typedef struct _DXVA2_VideoProcessBltParams { +- REFERENCE_TIME TargetFrame; +- RECT TargetRect; +- SIZE ConstrictionSize; +- UINT StreamingFlags; +- DXVA2_AYUVSample16 BackgroundColor; +- DXVA2_ExtendedFormat DestFormat; +- DXVA2_ProcAmpValues ProcAmpValues; +- DXVA2_Fixed32 Alpha; +- DXVA2_FilterValues NoiseFilterLuma; +- DXVA2_FilterValues NoiseFilterChroma; +- DXVA2_FilterValues DetailFilterLuma; +- DXVA2_FilterValues DetailFilterChroma; +- DWORD DestData; +-} DXVA2_VideoProcessBltParams; +- +-#ifdef _D3D9_H_ +-typedef struct _DXVA2_VideoProcessorCaps { +- UINT DeviceCaps; +- D3DPOOL InputPool; +- UINT NumForwardRefSamples; +- UINT NumBackwardRefSamples; +- UINT Reserved; +- UINT DeinterlaceTechnology; +- UINT ProcAmpControlCaps; +- UINT VideoProcessorOperations; +- UINT NoiseFilterTechnology; +- UINT DetailFilterTechnology; +-} DXVA2_VideoProcessorCaps; +-#endif +- +-/* SampleData +-DXVA2_SampleData_RFF +-DXVA2_SampleData_TFF +-DXVA2_SampleData_RFF_TFF_Present +-*/ +- +-#ifdef _D3D9_H_ +-typedef struct _DXVA2_VideoSample { +- REFERENCE_TIME Start; +- REFERENCE_TIME End; +- DXVA2_ExtendedFormat SampleFormat; +- IDirect3DSurface9* SrcSurface; +- RECT SrcRect; +- RECT DstRect; +- DXVA2_AYUVSample8 Pal[16]; +- DXVA2_Fixed32 PlanarAlpha; +- DWORD SampleData; +-} DXVA2_VideoSample; +-#endif +- +-/* Constants */ +- +-#define DXVA2_VideoDecoderRenderTarget 0 +-#define DXVA2_VideoProcessorRenderTarget 1 +-#define DXVA2_VideoSoftwareRenderTarget 2 +- +-/* CompressedBufferType */ +-#define DXVA2_PictureParametersBufferType 0 +-#define DXVA2_MacroBlockControlBufferType 1 +-#define DXVA2_ResidualDifferenceBufferType 2 +-#define DXVA2_DeblockingControlBufferType 3 +-#define DXVA2_InverseQuantizationMatrixBufferType 4 +-#define DXVA2_SliceControlBufferType 5 +-#define DXVA2_BitStreamDateBufferType 6 +-#define DXVA2_MotionVectorBuffer 7 +-#define DXVA2_FilmGrainBuffer 8 +- +-__forceinline const DXVA2_Fixed32 DXVA2_Fixed32OpaqueAlpha (void) { +- DXVA2_Fixed32 f32; +- f32.ll = 0 + (1 << 16); +- return f32; +-} +- +-__forceinline const DXVA2_Fixed32 DXVA2_Fixed32TransparentAlpha (void) { +- DXVA2_Fixed32 f32; +- f32.ll = 0; +- return f32; +-} +- +-__forceinline float DXVA2FixedToFloat (const DXVA2_Fixed32 f32) { +- return (float)f32.Value + (float)f32.Fraction / (1 << 16); +-} +- +-__forceinline DXVA2_Fixed32 DXVA2FloatToFixed (const float f) { +- DXVA2_Fixed32 f32; +- f32.Value = ((ULONG) (f * (1 << 16))) >> 16; +- f32.Fraction = ((ULONG) (f * (1 << 16))) & 0xFFFF; +- return f32; +-} +-#ifdef _D3D9_H_ +-HRESULT WINAPI DXVA2CreateDirect3DDeviceManager9(UINT *pResetToken,IDirect3DDeviceManager9 **ppDXVAManager); +-HRESULT WINAPI DXVA2CreateVideoService(IDirect3DDevice9 *pDD,REFIID riid,void **ppService); +-/***************************************************************************** +- * IDirect3DDeviceManager9 interface +- */ +-#ifndef __IDirect3DDeviceManager9_INTERFACE_DEFINED__ +-#define __IDirect3DDeviceManager9_INTERFACE_DEFINED__ +- +-DEFINE_GUID(IID_IDirect3DDeviceManager9, 0xa0cade0f, 0x06d5, 0x4cf4, 0xa1,0xc7, 0xf3,0xcd,0xd7,0x25,0xaa,0x75); +-#if defined(__cplusplus) && !defined(CINTERFACE) +-MIDL_INTERFACE("a0cade0f-06d5-4cf4-a1c7-f3cdd725aa75") +-IDirect3DDeviceManager9 : public IUnknown +-{ +- virtual HRESULT STDMETHODCALLTYPE ResetDevice( +- IDirect3DDevice9 *pDevice, +- UINT resetToken) = 0; +- +- virtual HRESULT STDMETHODCALLTYPE OpenDeviceHandle( +- HANDLE *phDevice) = 0; +- +- virtual HRESULT STDMETHODCALLTYPE CloseDeviceHandle( +- HANDLE hDevice) = 0; +- +- virtual HRESULT STDMETHODCALLTYPE TestDevice( +- HANDLE hDevice) = 0; +- +- virtual HRESULT STDMETHODCALLTYPE LockDevice( +- HANDLE hDevice, +- IDirect3DDevice9 **ppDevice, +- WINBOOL fBlock) = 0; +- +- virtual HRESULT STDMETHODCALLTYPE UnlockDevice( +- HANDLE hDevice, +- WINBOOL fSaveState) = 0; +- +- virtual HRESULT STDMETHODCALLTYPE GetVideoService( +- HANDLE hDevice, +- REFIID riid, +- void **ppService) = 0; +- +-}; +-#ifdef __CRT_UUID_DECL +-__CRT_UUID_DECL(IDirect3DDeviceManager9, 0xa0cade0f, 0x06d5, 0x4cf4, 0xa1,0xc7, 0xf3,0xcd,0xd7,0x25,0xaa,0x75) +-#endif +-#else +-typedef struct IDirect3DDeviceManager9Vtbl { +- BEGIN_INTERFACE +- +- /*** IUnknown methods ***/ +- HRESULT (STDMETHODCALLTYPE *QueryInterface)( +- IDirect3DDeviceManager9* This, +- REFIID riid, +- void **ppvObject); +- +- ULONG (STDMETHODCALLTYPE *AddRef)( +- IDirect3DDeviceManager9* This); +- +- ULONG (STDMETHODCALLTYPE *Release)( +- IDirect3DDeviceManager9* This); +- +- /*** IDirect3DDeviceManager9 methods ***/ +- HRESULT (STDMETHODCALLTYPE *ResetDevice)( +- IDirect3DDeviceManager9* This, +- IDirect3DDevice9 *pDevice, +- UINT resetToken); +- +- HRESULT (STDMETHODCALLTYPE *OpenDeviceHandle)( +- IDirect3DDeviceManager9* This, +- HANDLE *phDevice); +- +- HRESULT (STDMETHODCALLTYPE *CloseDeviceHandle)( +- IDirect3DDeviceManager9* This, +- HANDLE hDevice); +- +- HRESULT (STDMETHODCALLTYPE *TestDevice)( +- IDirect3DDeviceManager9* This, +- HANDLE hDevice); +- +- HRESULT (STDMETHODCALLTYPE *LockDevice)( +- IDirect3DDeviceManager9* This, +- HANDLE hDevice, +- IDirect3DDevice9 **ppDevice, +- WINBOOL fBlock); +- +- HRESULT (STDMETHODCALLTYPE *UnlockDevice)( +- IDirect3DDeviceManager9* This, +- HANDLE hDevice, +- WINBOOL fSaveState); +- +- HRESULT (STDMETHODCALLTYPE *GetVideoService)( +- IDirect3DDeviceManager9* This, +- HANDLE hDevice, +- REFIID riid, +- void **ppService); +- +- END_INTERFACE +-} IDirect3DDeviceManager9Vtbl; +-interface IDirect3DDeviceManager9 { +- CONST_VTBL IDirect3DDeviceManager9Vtbl* lpVtbl; +-}; +- +-#ifdef COBJMACROS +-#ifndef WIDL_C_INLINE_WRAPPERS +-/*** IUnknown methods ***/ +-#define IDirect3DDeviceManager9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +-#define IDirect3DDeviceManager9_AddRef(This) (This)->lpVtbl->AddRef(This) +-#define IDirect3DDeviceManager9_Release(This) (This)->lpVtbl->Release(This) +-/*** IDirect3DDeviceManager9 methods ***/ +-#define IDirect3DDeviceManager9_ResetDevice(This,pDevice,resetToken) (This)->lpVtbl->ResetDevice(This,pDevice,resetToken) +-#define IDirect3DDeviceManager9_OpenDeviceHandle(This,phDevice) (This)->lpVtbl->OpenDeviceHandle(This,phDevice) +-#define IDirect3DDeviceManager9_CloseDeviceHandle(This,hDevice) (This)->lpVtbl->CloseDeviceHandle(This,hDevice) +-#define IDirect3DDeviceManager9_TestDevice(This,hDevice) (This)->lpVtbl->TestDevice(This,hDevice) +-#define IDirect3DDeviceManager9_LockDevice(This,hDevice,ppDevice,fBlock) (This)->lpVtbl->LockDevice(This,hDevice,ppDevice,fBlock) +-#define IDirect3DDeviceManager9_UnlockDevice(This,hDevice,fSaveState) (This)->lpVtbl->UnlockDevice(This,hDevice,fSaveState) +-#define IDirect3DDeviceManager9_GetVideoService(This,hDevice,riid,ppService) (This)->lpVtbl->GetVideoService(This,hDevice,riid,ppService) +-#else +-/*** IUnknown methods ***/ +-static FORCEINLINE HRESULT IDirect3DDeviceManager9_QueryInterface(IDirect3DDeviceManager9* This,REFIID riid,void **ppvObject) { +- return This->lpVtbl->QueryInterface(This,riid,ppvObject); +-} +-static FORCEINLINE ULONG IDirect3DDeviceManager9_AddRef(IDirect3DDeviceManager9* This) { +- return This->lpVtbl->AddRef(This); +-} +-static FORCEINLINE ULONG IDirect3DDeviceManager9_Release(IDirect3DDeviceManager9* This) { +- return This->lpVtbl->Release(This); +-} +-/*** IDirect3DDeviceManager9 methods ***/ +-static FORCEINLINE HRESULT IDirect3DDeviceManager9_ResetDevice(IDirect3DDeviceManager9* This,IDirect3DDevice9 *pDevice,UINT resetToken) { +- return This->lpVtbl->ResetDevice(This,pDevice,resetToken); +-} +-static FORCEINLINE HRESULT IDirect3DDeviceManager9_OpenDeviceHandle(IDirect3DDeviceManager9* This,HANDLE *phDevice) { +- return This->lpVtbl->OpenDeviceHandle(This,phDevice); +-} +-static FORCEINLINE HRESULT IDirect3DDeviceManager9_CloseDeviceHandle(IDirect3DDeviceManager9* This,HANDLE hDevice) { +- return This->lpVtbl->CloseDeviceHandle(This,hDevice); +-} +-static FORCEINLINE HRESULT IDirect3DDeviceManager9_TestDevice(IDirect3DDeviceManager9* This,HANDLE hDevice) { +- return This->lpVtbl->TestDevice(This,hDevice); +-} +-static FORCEINLINE HRESULT IDirect3DDeviceManager9_LockDevice(IDirect3DDeviceManager9* This,HANDLE hDevice,IDirect3DDevice9 **ppDevice,WINBOOL fBlock) { +- return This->lpVtbl->LockDevice(This,hDevice,ppDevice,fBlock); +-} +-static FORCEINLINE HRESULT IDirect3DDeviceManager9_UnlockDevice(IDirect3DDeviceManager9* This,HANDLE hDevice,WINBOOL fSaveState) { +- return This->lpVtbl->UnlockDevice(This,hDevice,fSaveState); +-} +-static FORCEINLINE HRESULT IDirect3DDeviceManager9_GetVideoService(IDirect3DDeviceManager9* This,HANDLE hDevice,REFIID riid,void **ppService) { +- return This->lpVtbl->GetVideoService(This,hDevice,riid,ppService); +-} +-#endif +-#endif +- +-#endif +- +-HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_ResetDevice_Proxy( +- IDirect3DDeviceManager9* This, +- IDirect3DDevice9 *pDevice, +- UINT resetToken); +-void __RPC_STUB IDirect3DDeviceManager9_ResetDevice_Stub( +- IRpcStubBuffer* This, +- IRpcChannelBuffer* pRpcChannelBuffer, +- PRPC_MESSAGE pRpcMessage, +- DWORD* pdwStubPhase); +-HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_OpenDeviceHandle_Proxy( +- IDirect3DDeviceManager9* This, +- HANDLE *phDevice); +-void __RPC_STUB IDirect3DDeviceManager9_OpenDeviceHandle_Stub( +- IRpcStubBuffer* This, +- IRpcChannelBuffer* pRpcChannelBuffer, +- PRPC_MESSAGE pRpcMessage, +- DWORD* pdwStubPhase); +-HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_CloseDeviceHandle_Proxy( +- IDirect3DDeviceManager9* This, +- HANDLE hDevice); +-void __RPC_STUB IDirect3DDeviceManager9_CloseDeviceHandle_Stub( +- IRpcStubBuffer* This, +- IRpcChannelBuffer* pRpcChannelBuffer, +- PRPC_MESSAGE pRpcMessage, +- DWORD* pdwStubPhase); +-HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_TestDevice_Proxy( +- IDirect3DDeviceManager9* This, +- HANDLE hDevice); +-void __RPC_STUB IDirect3DDeviceManager9_TestDevice_Stub( +- IRpcStubBuffer* This, +- IRpcChannelBuffer* pRpcChannelBuffer, +- PRPC_MESSAGE pRpcMessage, +- DWORD* pdwStubPhase); +-HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_LockDevice_Proxy( +- IDirect3DDeviceManager9* This, +- HANDLE hDevice, +- IDirect3DDevice9 **ppDevice, +- WINBOOL fBlock); +-void __RPC_STUB IDirect3DDeviceManager9_LockDevice_Stub( +- IRpcStubBuffer* This, +- IRpcChannelBuffer* pRpcChannelBuffer, +- PRPC_MESSAGE pRpcMessage, +- DWORD* pdwStubPhase); +-HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_UnlockDevice_Proxy( +- IDirect3DDeviceManager9* This, +- HANDLE hDevice, +- WINBOOL fSaveState); +-void __RPC_STUB IDirect3DDeviceManager9_UnlockDevice_Stub( +- IRpcStubBuffer* This, +- IRpcChannelBuffer* pRpcChannelBuffer, +- PRPC_MESSAGE pRpcMessage, +- DWORD* pdwStubPhase); +-HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_GetVideoService_Proxy( +- IDirect3DDeviceManager9* This, +- HANDLE hDevice, +- REFIID riid, +- void **ppService); +-void __RPC_STUB IDirect3DDeviceManager9_GetVideoService_Stub( +- IRpcStubBuffer* This, +- IRpcChannelBuffer* pRpcChannelBuffer, +- PRPC_MESSAGE pRpcMessage, +- DWORD* pdwStubPhase); +- +-#endif /* __IDirect3DDeviceManager9_INTERFACE_DEFINED__ */ +- +-/***************************************************************************** +- * IDirectXVideoDecoder interface +- */ +-#ifndef __IDirectXVideoDecoder_INTERFACE_DEFINED__ +-#define __IDirectXVideoDecoder_INTERFACE_DEFINED__ +- +-DEFINE_GUID(IID_IDirectXVideoDecoder, 0xf2b0810a, 0xfd00, 0x43c9, 0x91,0x8c, 0xdf,0x94,0xe2,0xd8,0xef,0x7d); +-#if defined(__cplusplus) && !defined(CINTERFACE) +-MIDL_INTERFACE("f2b0810a-fd00-43c9-918c-df94e2d8ef7d") +-IDirectXVideoDecoder : public IUnknown +-{ +- virtual HRESULT STDMETHODCALLTYPE GetVideoDecoderService( +- IDirectXVideoDecoderService **ppService) = 0; +- +- virtual HRESULT STDMETHODCALLTYPE GetCreationParameters( +- GUID *pDeviceGuid, +- DXVA2_VideoDesc *pVideoDesc, +- DXVA2_ConfigPictureDecode *pConfig, +- IDirect3DSurface9 ***pDecoderRenderTargets, +- UINT *pNumSurfaces) = 0; +- +- virtual HRESULT STDMETHODCALLTYPE GetBuffer( +- UINT BufferType, +- void **ppBuffer, +- UINT *pBufferSize) = 0; +- +- virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer( +- UINT BufferType) = 0; +- +- virtual HRESULT STDMETHODCALLTYPE BeginFrame( +- IDirect3DSurface9 *pRenderTarget, +- void *pvPVPData) = 0; +- +- virtual HRESULT STDMETHODCALLTYPE EndFrame( +- HANDLE *pHandleComplete) = 0; +- +- virtual HRESULT STDMETHODCALLTYPE Execute( +- const DXVA2_DecodeExecuteParams *pExecuteParams) = 0; +- +-}; +-#ifdef __CRT_UUID_DECL +-__CRT_UUID_DECL(IDirectXVideoDecoder, 0xf2b0810a, 0xfd00, 0x43c9, 0x91,0x8c, 0xdf,0x94,0xe2,0xd8,0xef,0x7d) +-#endif +-#else +-typedef struct IDirectXVideoDecoderVtbl { +- BEGIN_INTERFACE +- +- /*** IUnknown methods ***/ +- HRESULT (STDMETHODCALLTYPE *QueryInterface)( +- IDirectXVideoDecoder* This, +- REFIID riid, +- void **ppvObject); +- +- ULONG (STDMETHODCALLTYPE *AddRef)( +- IDirectXVideoDecoder* This); +- +- ULONG (STDMETHODCALLTYPE *Release)( +- IDirectXVideoDecoder* This); +- +- /*** IDirectXVideoDecoder methods ***/ +- HRESULT (STDMETHODCALLTYPE *GetVideoDecoderService)( +- IDirectXVideoDecoder* This, +- IDirectXVideoDecoderService **ppService); +- +- HRESULT (STDMETHODCALLTYPE *GetCreationParameters)( +- IDirectXVideoDecoder* This, +- GUID *pDeviceGuid, +- DXVA2_VideoDesc *pVideoDesc, +- DXVA2_ConfigPictureDecode *pConfig, +- IDirect3DSurface9 ***pDecoderRenderTargets, +- UINT *pNumSurfaces); +- +- HRESULT (STDMETHODCALLTYPE *GetBuffer)( +- IDirectXVideoDecoder* This, +- UINT BufferType, +- void **ppBuffer, +- UINT *pBufferSize); +- +- HRESULT (STDMETHODCALLTYPE *ReleaseBuffer)( +- IDirectXVideoDecoder* This, +- UINT BufferType); +- +- HRESULT (STDMETHODCALLTYPE *BeginFrame)( +- IDirectXVideoDecoder* This, +- IDirect3DSurface9 *pRenderTarget, +- void *pvPVPData); +- +- HRESULT (STDMETHODCALLTYPE *EndFrame)( +- IDirectXVideoDecoder* This, +- HANDLE *pHandleComplete); +- +- HRESULT (STDMETHODCALLTYPE *Execute)( +- IDirectXVideoDecoder* This, +- const DXVA2_DecodeExecuteParams *pExecuteParams); +- +- END_INTERFACE +-} IDirectXVideoDecoderVtbl; +-interface IDirectXVideoDecoder { +- CONST_VTBL IDirectXVideoDecoderVtbl* lpVtbl; +-}; +- +-#ifdef COBJMACROS +-#ifndef WIDL_C_INLINE_WRAPPERS +-/*** IUnknown methods ***/ +-#define IDirectXVideoDecoder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +-#define IDirectXVideoDecoder_AddRef(This) (This)->lpVtbl->AddRef(This) +-#define IDirectXVideoDecoder_Release(This) (This)->lpVtbl->Release(This) +-/*** IDirectXVideoDecoder methods ***/ +-#define IDirectXVideoDecoder_GetVideoDecoderService(This,ppService) (This)->lpVtbl->GetVideoDecoderService(This,ppService) +-#define IDirectXVideoDecoder_GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pDecoderRenderTargets,pNumSurfaces) (This)->lpVtbl->GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pDecoderRenderTargets,pNumSurfaces) +-#define IDirectXVideoDecoder_GetBuffer(This,BufferType,ppBuffer,pBufferSize) (This)->lpVtbl->GetBuffer(This,BufferType,ppBuffer,pBufferSize) +-#define IDirectXVideoDecoder_ReleaseBuffer(This,BufferType) (This)->lpVtbl->ReleaseBuffer(This,BufferType) +-#define IDirectXVideoDecoder_BeginFrame(This,pRenderTarget,pvPVPData) (This)->lpVtbl->BeginFrame(This,pRenderTarget,pvPVPData) +-#define IDirectXVideoDecoder_EndFrame(This,pHandleComplete) (This)->lpVtbl->EndFrame(This,pHandleComplete) +-#define IDirectXVideoDecoder_Execute(This,pExecuteParams) (This)->lpVtbl->Execute(This,pExecuteParams) +-#else +-/*** IUnknown methods ***/ +-static FORCEINLINE HRESULT IDirectXVideoDecoder_QueryInterface(IDirectXVideoDecoder* This,REFIID riid,void **ppvObject) { +- return This->lpVtbl->QueryInterface(This,riid,ppvObject); +-} +-static FORCEINLINE ULONG IDirectXVideoDecoder_AddRef(IDirectXVideoDecoder* This) { +- return This->lpVtbl->AddRef(This); +-} +-static FORCEINLINE ULONG IDirectXVideoDecoder_Release(IDirectXVideoDecoder* This) { +- return This->lpVtbl->Release(This); +-} +-/*** IDirectXVideoDecoder methods ***/ +-static FORCEINLINE HRESULT IDirectXVideoDecoder_GetVideoDecoderService(IDirectXVideoDecoder* This,IDirectXVideoDecoderService **ppService) { +- return This->lpVtbl->GetVideoDecoderService(This,ppService); +-} +-static FORCEINLINE HRESULT IDirectXVideoDecoder_GetCreationParameters(IDirectXVideoDecoder* This,GUID *pDeviceGuid,DXVA2_VideoDesc *pVideoDesc,DXVA2_ConfigPictureDecode *pConfig,IDirect3DSurface9 ***pDecoderRenderTargets,UINT *pNumSurfaces) { +- return This->lpVtbl->GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pDecoderRenderTargets,pNumSurfaces); +-} +-static FORCEINLINE HRESULT IDirectXVideoDecoder_GetBuffer(IDirectXVideoDecoder* This,UINT BufferType,void **ppBuffer,UINT *pBufferSize) { +- return This->lpVtbl->GetBuffer(This,BufferType,ppBuffer,pBufferSize); +-} +-static FORCEINLINE HRESULT IDirectXVideoDecoder_ReleaseBuffer(IDirectXVideoDecoder* This,UINT BufferType) { +- return This->lpVtbl->ReleaseBuffer(This,BufferType); +-} +-static FORCEINLINE HRESULT IDirectXVideoDecoder_BeginFrame(IDirectXVideoDecoder* This,IDirect3DSurface9 *pRenderTarget,void *pvPVPData) { +- return This->lpVtbl->BeginFrame(This,pRenderTarget,pvPVPData); +-} +-static FORCEINLINE HRESULT IDirectXVideoDecoder_EndFrame(IDirectXVideoDecoder* This,HANDLE *pHandleComplete) { +- return This->lpVtbl->EndFrame(This,pHandleComplete); +-} +-static FORCEINLINE HRESULT IDirectXVideoDecoder_Execute(IDirectXVideoDecoder* This,const DXVA2_DecodeExecuteParams *pExecuteParams) { +- return This->lpVtbl->Execute(This,pExecuteParams); +-} +-#endif +-#endif +- +-#endif +- +-HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_GetVideoDecoderService_Proxy( +- IDirectXVideoDecoder* This, +- IDirectXVideoDecoderService **ppService); +-void __RPC_STUB IDirectXVideoDecoder_GetVideoDecoderService_Stub( +- IRpcStubBuffer* This, +- IRpcChannelBuffer* pRpcChannelBuffer, +- PRPC_MESSAGE pRpcMessage, +- DWORD* pdwStubPhase); +-HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_GetCreationParameters_Proxy( +- IDirectXVideoDecoder* This, +- GUID *pDeviceGuid, +- DXVA2_VideoDesc *pVideoDesc, +- DXVA2_ConfigPictureDecode *pConfig, +- IDirect3DSurface9 ***pDecoderRenderTargets, +- UINT *pNumSurfaces); +-void __RPC_STUB IDirectXVideoDecoder_GetCreationParameters_Stub( +- IRpcStubBuffer* This, +- IRpcChannelBuffer* pRpcChannelBuffer, +- PRPC_MESSAGE pRpcMessage, +- DWORD* pdwStubPhase); +-HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_GetBuffer_Proxy( +- IDirectXVideoDecoder* This, +- UINT BufferType, +- void **ppBuffer, +- UINT *pBufferSize); +-void __RPC_STUB IDirectXVideoDecoder_GetBuffer_Stub( +- IRpcStubBuffer* This, +- IRpcChannelBuffer* pRpcChannelBuffer, +- PRPC_MESSAGE pRpcMessage, +- DWORD* pdwStubPhase); +-HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_ReleaseBuffer_Proxy( +- IDirectXVideoDecoder* This, +- UINT BufferType); +-void __RPC_STUB IDirectXVideoDecoder_ReleaseBuffer_Stub( +- IRpcStubBuffer* This, +- IRpcChannelBuffer* pRpcChannelBuffer, +- PRPC_MESSAGE pRpcMessage, +- DWORD* pdwStubPhase); +-HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_BeginFrame_Proxy( +- IDirectXVideoDecoder* This, +- IDirect3DSurface9 *pRenderTarget, +- void *pvPVPData); +-void __RPC_STUB IDirectXVideoDecoder_BeginFrame_Stub( +- IRpcStubBuffer* This, +- IRpcChannelBuffer* pRpcChannelBuffer, +- PRPC_MESSAGE pRpcMessage, +- DWORD* pdwStubPhase); +-HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_EndFrame_Proxy( +- IDirectXVideoDecoder* This, +- HANDLE *pHandleComplete); +-void __RPC_STUB IDirectXVideoDecoder_EndFrame_Stub( +- IRpcStubBuffer* This, +- IRpcChannelBuffer* pRpcChannelBuffer, +- PRPC_MESSAGE pRpcMessage, +- DWORD* pdwStubPhase); +-HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_Execute_Proxy( +- IDirectXVideoDecoder* This, +- const DXVA2_DecodeExecuteParams *pExecuteParams); +-void __RPC_STUB IDirectXVideoDecoder_Execute_Stub( +- IRpcStubBuffer* This, +- IRpcChannelBuffer* pRpcChannelBuffer, +- PRPC_MESSAGE pRpcMessage, +- DWORD* pdwStubPhase); +- +-#endif /* __IDirectXVideoDecoder_INTERFACE_DEFINED__ */ +- +-/***************************************************************************** +- * IDirectXVideoAccelerationService interface +- */ +-#ifndef __IDirectXVideoAccelerationService_INTERFACE_DEFINED__ +-#define __IDirectXVideoAccelerationService_INTERFACE_DEFINED__ +- +-DEFINE_GUID(IID_IDirectXVideoAccelerationService, 0xfc51a550, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02); +-#if defined(__cplusplus) && !defined(CINTERFACE) +-MIDL_INTERFACE("fc51a550-d5e7-11d9-af55-00054e43ff02") +-IDirectXVideoAccelerationService : public IUnknown +-{ +- virtual HRESULT STDMETHODCALLTYPE CreateSurface( +- UINT Width, +- UINT Height, +- UINT BackBuffers, +- D3DFORMAT Format, +- D3DPOOL Pool, +- DWORD Usage, +- DWORD DxvaType, +- IDirect3DSurface9 **ppSurface, +- HANDLE *pSharedHandle) = 0; +- +-}; +-#ifdef __CRT_UUID_DECL +-__CRT_UUID_DECL(IDirectXVideoAccelerationService, 0xfc51a550, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02) +-#endif +-#else +-typedef struct IDirectXVideoAccelerationServiceVtbl { +- BEGIN_INTERFACE +- +- /*** IUnknown methods ***/ +- HRESULT (STDMETHODCALLTYPE *QueryInterface)( +- IDirectXVideoAccelerationService* This, +- REFIID riid, +- void **ppvObject); +- +- ULONG (STDMETHODCALLTYPE *AddRef)( +- IDirectXVideoAccelerationService* This); +- +- ULONG (STDMETHODCALLTYPE *Release)( +- IDirectXVideoAccelerationService* This); +- +- /*** IDirectXVideoAccelerationService methods ***/ +- HRESULT (STDMETHODCALLTYPE *CreateSurface)( +- IDirectXVideoAccelerationService* This, +- UINT Width, +- UINT Height, +- UINT BackBuffers, +- D3DFORMAT Format, +- D3DPOOL Pool, +- DWORD Usage, +- DWORD DxvaType, +- IDirect3DSurface9 **ppSurface, +- HANDLE *pSharedHandle); +- +- END_INTERFACE +-} IDirectXVideoAccelerationServiceVtbl; +-interface IDirectXVideoAccelerationService { +- CONST_VTBL IDirectXVideoAccelerationServiceVtbl* lpVtbl; +-}; +- +-#ifdef COBJMACROS +-#ifndef WIDL_C_INLINE_WRAPPERS +-/*** IUnknown methods ***/ +-#define IDirectXVideoAccelerationService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +-#define IDirectXVideoAccelerationService_AddRef(This) (This)->lpVtbl->AddRef(This) +-#define IDirectXVideoAccelerationService_Release(This) (This)->lpVtbl->Release(This) +-/*** IDirectXVideoAccelerationService methods ***/ +-#define IDirectXVideoAccelerationService_CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle) (This)->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle) +-#else +-/*** IUnknown methods ***/ +-static FORCEINLINE HRESULT IDirectXVideoAccelerationService_QueryInterface(IDirectXVideoAccelerationService* This,REFIID riid,void **ppvObject) { +- return This->lpVtbl->QueryInterface(This,riid,ppvObject); +-} +-static FORCEINLINE ULONG IDirectXVideoAccelerationService_AddRef(IDirectXVideoAccelerationService* This) { +- return This->lpVtbl->AddRef(This); +-} +-static FORCEINLINE ULONG IDirectXVideoAccelerationService_Release(IDirectXVideoAccelerationService* This) { +- return This->lpVtbl->Release(This); +-} +-/*** IDirectXVideoAccelerationService methods ***/ +-static FORCEINLINE HRESULT IDirectXVideoAccelerationService_CreateSurface(IDirectXVideoAccelerationService* This,UINT Width,UINT Height,UINT BackBuffers,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DWORD DxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) { +- return This->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle); +-} +-#endif +-#endif +- +-#endif +- +-HRESULT STDMETHODCALLTYPE IDirectXVideoAccelerationService_CreateSurface_Proxy( +- IDirectXVideoAccelerationService* This, +- UINT Width, +- UINT Height, +- UINT BackBuffers, +- D3DFORMAT Format, +- D3DPOOL Pool, +- DWORD Usage, +- DWORD DxvaType, +- IDirect3DSurface9 **ppSurface, +- HANDLE *pSharedHandle); +-void __RPC_STUB IDirectXVideoAccelerationService_CreateSurface_Stub( +- IRpcStubBuffer* This, +- IRpcChannelBuffer* pRpcChannelBuffer, +- PRPC_MESSAGE pRpcMessage, +- DWORD* pdwStubPhase); +- +-#endif /* __IDirectXVideoAccelerationService_INTERFACE_DEFINED__ */ +- +-/***************************************************************************** +- * IDirectXVideoDecoderService interface +- */ +-#ifndef __IDirectXVideoDecoderService_INTERFACE_DEFINED__ +-#define __IDirectXVideoDecoderService_INTERFACE_DEFINED__ +- +-DEFINE_GUID(IID_IDirectXVideoDecoderService, 0xfc51a551, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02); +-#if defined(__cplusplus) && !defined(CINTERFACE) +-MIDL_INTERFACE("fc51a551-d5e7-11d9-af55-00054e43ff02") +-IDirectXVideoDecoderService : public IDirectXVideoAccelerationService +-{ +- virtual HRESULT STDMETHODCALLTYPE GetDecoderDeviceGuids( +- UINT *pCount, +- GUID **pGuids) = 0; +- +- virtual HRESULT STDMETHODCALLTYPE GetDecoderRenderTargets( +- REFGUID Guid, +- UINT *pCount, +- D3DFORMAT **pFormats) = 0; +- +- virtual HRESULT STDMETHODCALLTYPE GetDecoderConfigurations( +- REFGUID Guid, +- const DXVA2_VideoDesc *pVideoDesc, +- void *pReserved, +- UINT *pCount, +- DXVA2_ConfigPictureDecode **ppConfigs) = 0; +- +- virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder( +- REFGUID Guid, +- const DXVA2_VideoDesc *pVideoDesc, +- const DXVA2_ConfigPictureDecode *pConfig, +- IDirect3DSurface9 **ppDecoderRenderTargets, +- UINT NumRenderTargets, +- IDirectXVideoDecoder **ppDecode) = 0; +- +-}; +-#ifdef __CRT_UUID_DECL +-__CRT_UUID_DECL(IDirectXVideoDecoderService, 0xfc51a551, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02) +-#endif +-#else +-typedef struct IDirectXVideoDecoderServiceVtbl { +- BEGIN_INTERFACE +- +- /*** IUnknown methods ***/ +- HRESULT (STDMETHODCALLTYPE *QueryInterface)( +- IDirectXVideoDecoderService* This, +- REFIID riid, +- void **ppvObject); +- +- ULONG (STDMETHODCALLTYPE *AddRef)( +- IDirectXVideoDecoderService* This); +- +- ULONG (STDMETHODCALLTYPE *Release)( +- IDirectXVideoDecoderService* This); +- +- /*** IDirectXVideoAccelerationService methods ***/ +- HRESULT (STDMETHODCALLTYPE *CreateSurface)( +- IDirectXVideoDecoderService* This, +- UINT Width, +- UINT Height, +- UINT BackBuffers, +- D3DFORMAT Format, +- D3DPOOL Pool, +- DWORD Usage, +- DWORD DxvaType, +- IDirect3DSurface9 **ppSurface, +- HANDLE *pSharedHandle); +- +- /*** IDirectXVideoDecoderService methods ***/ +- HRESULT (STDMETHODCALLTYPE *GetDecoderDeviceGuids)( +- IDirectXVideoDecoderService* This, +- UINT *pCount, +- GUID **pGuids); +- +- HRESULT (STDMETHODCALLTYPE *GetDecoderRenderTargets)( +- IDirectXVideoDecoderService* This, +- REFGUID Guid, +- UINT *pCount, +- D3DFORMAT **pFormats); +- +- HRESULT (STDMETHODCALLTYPE *GetDecoderConfigurations)( +- IDirectXVideoDecoderService* This, +- REFGUID Guid, +- const DXVA2_VideoDesc *pVideoDesc, +- void *pReserved, +- UINT *pCount, +- DXVA2_ConfigPictureDecode **ppConfigs); +- +- HRESULT (STDMETHODCALLTYPE *CreateVideoDecoder)( +- IDirectXVideoDecoderService* This, +- REFGUID Guid, +- const DXVA2_VideoDesc *pVideoDesc, +- const DXVA2_ConfigPictureDecode *pConfig, +- IDirect3DSurface9 **ppDecoderRenderTargets, +- UINT NumRenderTargets, +- IDirectXVideoDecoder **ppDecode); +- +- END_INTERFACE +-} IDirectXVideoDecoderServiceVtbl; +-interface IDirectXVideoDecoderService { +- CONST_VTBL IDirectXVideoDecoderServiceVtbl* lpVtbl; +-}; +- +-#ifdef COBJMACROS +-#ifndef WIDL_C_INLINE_WRAPPERS +-/*** IUnknown methods ***/ +-#define IDirectXVideoDecoderService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +-#define IDirectXVideoDecoderService_AddRef(This) (This)->lpVtbl->AddRef(This) +-#define IDirectXVideoDecoderService_Release(This) (This)->lpVtbl->Release(This) +-/*** IDirectXVideoAccelerationService methods ***/ +-#define IDirectXVideoDecoderService_CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle) (This)->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle) +-/*** IDirectXVideoDecoderService methods ***/ +-#define IDirectXVideoDecoderService_GetDecoderDeviceGuids(This,pCount,pGuids) (This)->lpVtbl->GetDecoderDeviceGuids(This,pCount,pGuids) +-#define IDirectXVideoDecoderService_GetDecoderRenderTargets(This,Guid,pCount,pFormats) (This)->lpVtbl->GetDecoderRenderTargets(This,Guid,pCount,pFormats) +-#define IDirectXVideoDecoderService_GetDecoderConfigurations(This,Guid,pVideoDesc,pReserved,pCount,ppConfigs) (This)->lpVtbl->GetDecoderConfigurations(This,Guid,pVideoDesc,pReserved,pCount,ppConfigs) +-#define IDirectXVideoDecoderService_CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumRenderTargets,ppDecode) (This)->lpVtbl->CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumRenderTargets,ppDecode) +-#else +-/*** IUnknown methods ***/ +-static FORCEINLINE HRESULT IDirectXVideoDecoderService_QueryInterface(IDirectXVideoDecoderService* This,REFIID riid,void **ppvObject) { +- return This->lpVtbl->QueryInterface(This,riid,ppvObject); +-} +-static FORCEINLINE ULONG IDirectXVideoDecoderService_AddRef(IDirectXVideoDecoderService* This) { +- return This->lpVtbl->AddRef(This); +-} +-static FORCEINLINE ULONG IDirectXVideoDecoderService_Release(IDirectXVideoDecoderService* This) { +- return This->lpVtbl->Release(This); +-} +-/*** IDirectXVideoAccelerationService methods ***/ +-static FORCEINLINE HRESULT IDirectXVideoDecoderService_CreateSurface(IDirectXVideoDecoderService* This,UINT Width,UINT Height,UINT BackBuffers,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DWORD DxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) { +- return This->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle); +-} +-/*** IDirectXVideoDecoderService methods ***/ +-static FORCEINLINE HRESULT IDirectXVideoDecoderService_GetDecoderDeviceGuids(IDirectXVideoDecoderService* This,UINT *pCount,GUID **pGuids) { +- return This->lpVtbl->GetDecoderDeviceGuids(This,pCount,pGuids); +-} +-static FORCEINLINE HRESULT IDirectXVideoDecoderService_GetDecoderRenderTargets(IDirectXVideoDecoderService* This,REFGUID Guid,UINT *pCount,D3DFORMAT **pFormats) { +- return This->lpVtbl->GetDecoderRenderTargets(This,Guid,pCount,pFormats); +-} +-static FORCEINLINE HRESULT IDirectXVideoDecoderService_GetDecoderConfigurations(IDirectXVideoDecoderService* This,REFGUID Guid,const DXVA2_VideoDesc *pVideoDesc,void *pReserved,UINT *pCount,DXVA2_ConfigPictureDecode **ppConfigs) { +- return This->lpVtbl->GetDecoderConfigurations(This,Guid,pVideoDesc,pReserved,pCount,ppConfigs); +-} +-static FORCEINLINE HRESULT IDirectXVideoDecoderService_CreateVideoDecoder(IDirectXVideoDecoderService* This,REFGUID Guid,const DXVA2_VideoDesc *pVideoDesc,const DXVA2_ConfigPictureDecode *pConfig,IDirect3DSurface9 **ppDecoderRenderTargets,UINT NumRenderTargets,IDirectXVideoDecoder **ppDecode) { +- return This->lpVtbl->CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumRenderTargets,ppDecode); +-} +-#endif +-#endif +- +-#endif +- +-HRESULT STDMETHODCALLTYPE IDirectXVideoDecoderService_GetDecoderDeviceGuids_Proxy( +- IDirectXVideoDecoderService* This, +- UINT *pCount, +- GUID **pGuids); +-void __RPC_STUB IDirectXVideoDecoderService_GetDecoderDeviceGuids_Stub( +- IRpcStubBuffer* This, +- IRpcChannelBuffer* pRpcChannelBuffer, +- PRPC_MESSAGE pRpcMessage, +- DWORD* pdwStubPhase); +-HRESULT STDMETHODCALLTYPE IDirectXVideoDecoderService_GetDecoderRenderTargets_Proxy( +- IDirectXVideoDecoderService* This, +- REFGUID Guid, +- UINT *pCount, +- D3DFORMAT **pFormats); +-void __RPC_STUB IDirectXVideoDecoderService_GetDecoderRenderTargets_Stub( +- IRpcStubBuffer* This, +- IRpcChannelBuffer* pRpcChannelBuffer, +- PRPC_MESSAGE pRpcMessage, +- DWORD* pdwStubPhase); +-HRESULT STDMETHODCALLTYPE IDirectXVideoDecoderService_GetDecoderConfigurations_Proxy( +- IDirectXVideoDecoderService* This, +- REFGUID Guid, +- const DXVA2_VideoDesc *pVideoDesc, +- void *pReserved, +- UINT *pCount, +- DXVA2_ConfigPictureDecode **ppConfigs); +-void __RPC_STUB IDirectXVideoDecoderService_GetDecoderConfigurations_Stub( +- IRpcStubBuffer* This, +- IRpcChannelBuffer* pRpcChannelBuffer, +- PRPC_MESSAGE pRpcMessage, +- DWORD* pdwStubPhase); +-HRESULT STDMETHODCALLTYPE IDirectXVideoDecoderService_CreateVideoDecoder_Proxy( +- IDirectXVideoDecoderService* This, +- REFGUID Guid, +- const DXVA2_VideoDesc *pVideoDesc, +- const DXVA2_ConfigPictureDecode *pConfig, +- IDirect3DSurface9 **ppDecoderRenderTargets, +- UINT NumRenderTargets, +- IDirectXVideoDecoder **ppDecode); +-void __RPC_STUB IDirectXVideoDecoderService_CreateVideoDecoder_Stub( +- IRpcStubBuffer* This, +- IRpcChannelBuffer* pRpcChannelBuffer, +- PRPC_MESSAGE pRpcMessage, +- DWORD* pdwStubPhase); +- +-#endif /* __IDirectXVideoDecoderService_INTERFACE_DEFINED__ */ +- +-#endif /* _D3D9_H_ */ +-/* Begin additional prototypes for all interfaces */ +- +- +-/* End additional prototypes */ +- +-#ifdef __cplusplus +-} +-#endif +- +-#endif /* __dxva2api_h__ */ ++/*** Autogenerated by WIDL 1.6 from dxva2api.idl - Do not edit ***/ ++ ++#ifndef __REQUIRED_RPCNDR_H_VERSION__ ++#define __REQUIRED_RPCNDR_H_VERSION__ 475 ++#endif ++ ++#include ++#include ++ ++#ifndef COM_NO_WINDOWS_H ++#include ++#include ++#endif ++ ++#ifndef __dxva2api_h__ ++#define __dxva2api_h__ ++ ++/* Forward declarations */ ++ ++#ifndef __IDirect3DDeviceManager9_FWD_DEFINED__ ++#define __IDirect3DDeviceManager9_FWD_DEFINED__ ++typedef interface IDirect3DDeviceManager9 IDirect3DDeviceManager9; ++#endif ++ ++#ifndef __IDirectXVideoDecoder_FWD_DEFINED__ ++#define __IDirectXVideoDecoder_FWD_DEFINED__ ++typedef interface IDirectXVideoDecoder IDirectXVideoDecoder; ++#endif ++ ++#ifndef __IDirectXVideoAccelerationService_FWD_DEFINED__ ++#define __IDirectXVideoAccelerationService_FWD_DEFINED__ ++typedef interface IDirectXVideoAccelerationService IDirectXVideoAccelerationService; ++#endif ++ ++#ifndef __IDirectXVideoDecoderService_FWD_DEFINED__ ++#define __IDirectXVideoDecoderService_FWD_DEFINED__ ++typedef interface IDirectXVideoDecoderService IDirectXVideoDecoderService; ++#endif ++ ++#ifndef __IDirectXVideoProcessor_FWD_DEFINED__ ++#define __IDirectXVideoProcessor_FWD_DEFINED__ ++typedef interface IDirectXVideoProcessor IDirectXVideoProcessor; ++#endif ++ ++#ifndef __IDirectXVideoProcessorService_FWD_DEFINED__ ++#define __IDirectXVideoProcessorService_FWD_DEFINED__ ++typedef interface IDirectXVideoProcessorService IDirectXVideoProcessorService; ++#endif ++ ++/* Headers for imported files */ ++ ++#include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++#include ++#if 0 ++typedef DWORD IDirect3DDevice9; ++typedef DWORD IDirect3DSurface9; ++typedef DWORD D3DFORMAT; ++typedef DWORD D3DPOOL; ++#endif ++#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) ++#ifndef __IDirectXVideoDecoderService_FWD_DEFINED__ ++#define __IDirectXVideoDecoderService_FWD_DEFINED__ ++typedef interface IDirectXVideoDecoderService IDirectXVideoDecoderService; ++#endif ++ ++#ifndef __IDirectXVideoProcessorService_FWD_DEFINED__ ++#define __IDirectXVideoProcessorService_FWD_DEFINED__ ++typedef interface IDirectXVideoProcessorService IDirectXVideoProcessorService; ++#endif ++ ++typedef LONGLONG REFERENCE_TIME; ++#define DXVA2_ProcAmp_None 0x0000 ++#define DXVA2_ProcAmp_Brightness 0x0001 ++#define DXVA2_ProcAmp_Contrast 0x0002 ++#define DXVA2_ProcAmp_Hue 0x0004 ++#define DXVA2_ProcAmp_Saturation 0x0008 ++ ++#define DXVA2_E_NOT_INITIALIZED MAKE_HRESULT(1, 4, 4096) ++#define DXVA2_E_NEW_VIDEO_DEVICE MAKE_HRESULT(1, 4, 4097) ++#define DXVA2_E_VIDEO_DEVICE_LOCKED MAKE_HRESULT(1, 4, 4098) ++#define DXVA2_E_NOT_AVAILABLE MAKE_HRESULT(1, 4, 4099) ++ ++DEFINE_GUID(DXVA2_ModeMPEG2_MoComp, 0xe6a9f44b, 0x61b0,0x4563, 0x9e,0xa4,0x63,0xd2,0xa3,0xc6,0xfe,0x66); ++DEFINE_GUID(DXVA2_ModeMPEG2_IDCT, 0xbf22ad00, 0x03ea,0x4690, 0x80,0x77,0x47,0x33,0x46,0x20,0x9b,0x7e); ++DEFINE_GUID(DXVA2_ModeMPEG2_VLD, 0xee27417f, 0x5e28,0x4e65, 0xbe,0xea,0x1d,0x26,0xb5,0x08,0xad,0xc9); ++DEFINE_GUID(DXVA2_ModeH264_A, 0x1b81be64, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); ++DEFINE_GUID(DXVA2_ModeH264_B, 0x1b81be65, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); ++DEFINE_GUID(DXVA2_ModeH264_C, 0x1b81be66, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); ++DEFINE_GUID(DXVA2_ModeH264_D, 0x1b81be67, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); ++DEFINE_GUID(DXVA2_ModeH264_E, 0x1b81be68, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); ++DEFINE_GUID(DXVA2_ModeH264_F, 0x1b81be69, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); ++DEFINE_GUID(DXVA2_ModeWMV8_A, 0x1b81be80, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); ++DEFINE_GUID(DXVA2_ModeWMV8_B, 0x1b81be81, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); ++DEFINE_GUID(DXVA2_ModeWMV9_A, 0x1b81be90, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); ++DEFINE_GUID(DXVA2_ModeWMV9_B, 0x1b81be91, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); ++DEFINE_GUID(DXVA2_ModeWMV9_C, 0x1b81be94, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); ++DEFINE_GUID(DXVA2_ModeVC1_A, 0x1b81beA0, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); ++DEFINE_GUID(DXVA2_ModeVC1_B, 0x1b81beA1, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); ++DEFINE_GUID(DXVA2_ModeVC1_C, 0x1b81beA2, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); ++DEFINE_GUID(DXVA2_ModeVC1_D, 0x1b81beA3, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5); ++ ++typedef enum _DXVA2_SampleFormat { ++ DXVA2_SampleFormatMask = 0x00FF, ++ DXVA2_SampleUnknown = 0, ++ DXVA2_SampleProgressiveFrame = 2, ++ DXVA2_SampleFieldInterleavedEvenFirst = 3, ++ DXVA2_SampleFieldInterleavedOddFirst = 4, ++ DXVA2_SampleFieldSingleEven = 5, ++ DXVA2_SampleFieldSingleOdd = 6, ++ DXVA2_SampleSubStream = 7 ++} DXVA2_SampleFormat; ++ ++typedef enum _DXVA2_VideoChromaSubSampling { ++ DXVA2_VideoChromaSubsamplingMask = 0x0F, ++ DXVA2_VideoChromaSubsampling_Unknown = 0, ++ DXVA2_VideoChromaSubsampling_ProgressiveChroma = 0x8, ++ DXVA2_VideoChromaSubsampling_Horizontally_Cosited = 0x4, ++ DXVA2_VideoChromaSubsampling_Vertically_Cosited = 0x2, ++ DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes = 0x1, ++ DXVA2_VideoChromaSubsampling_MPEG2 = ++ DXVA2_VideoChromaSubsampling_Horizontally_Cosited | ++ DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes, ++ DXVA2_VideoChromaSubsampling_MPEG1 = ++ DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes, ++ DXVA2_VideoChromaSubsampling_DV_PAL = ++ DXVA2_VideoChromaSubsampling_Horizontally_Cosited | ++ DXVA2_VideoChromaSubsampling_Vertically_Cosited, ++ DXVA2_VideoChromaSubsampling_Cosited = ++ DXVA2_VideoChromaSubsampling_Horizontally_Cosited | ++ DXVA2_VideoChromaSubsampling_Vertically_Cosited | ++ DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes ++} DXVA2_VideoChromaSubSampling; ++ ++typedef enum _DXVA2_NominalRange { ++ DXVA2_NominalRangeMask = 0x07, ++ DXVA2_NominalRange_Unknown = 0, ++ DXVA2_NominalRange_Normal = 1, ++ DXVA2_NominalRange_Wide = 2, ++ DXVA2_NominalRange_0_255 = 1, ++ DXVA2_NominalRange_16_235 = 2, ++ DXVA2_NominalRange_48_208 = 3 ++} DXVA2_NominalRange; ++ ++typedef enum _DXVA2_VideoLighting { ++ DXVA2_VideoLightingMask = 0x0F, ++ DXVA2_VideoLighting_Unknown = 0, ++ DXVA2_VideoLighting_bright = 1, ++ DXVA2_VideoLighting_office = 2, ++ DXVA2_VideoLighting_dim = 3, ++ DXVA2_VideoLighting_dark = 4 ++} DXVA2_VideoLighting; ++ ++typedef enum _DXVA2_VideoPrimaries { ++ DXVA2_VideoPrimariesMask = 0x001f, ++ DXVA2_VideoPrimaries_Unknown = 0, ++ DXVA2_VideoPrimaries_reserved = 1, ++ DXVA2_VideoPrimaries_BT709 = 2, ++ DXVA2_VideoPrimaries_BT470_2_SysM = 3, ++ DXVA2_VideoPrimaries_BT470_2_SysBG = 4, ++ DXVA2_VideoPrimaries_SMPTE170M = 5, ++ DXVA2_VideoPrimaries_SMPTE240M = 6, ++ DXVA2_VideoPrimaries_EBU3213 = 7, ++ DXVA2_VideoPrimaries_SMPTE_C = 8 ++} DXVA2_VideoPrimaries; ++ ++typedef enum _DXVA2_VideoTransferFunction { ++ DXVA2_VideoTransFuncMask = 0x001f, ++ DXVA2_VideoTransFunc_Unknown = 0, ++ DXVA2_VideoTransFunc_10 = 1, ++ DXVA2_VideoTransFunc_18 = 2, ++ DXVA2_VideoTransFunc_20 = 3, ++ DXVA2_VideoTransFunc_22 = 4, ++ DXVA2_VideoTransFunc_709 = 5, ++ DXVA2_VideoTransFunc_240M = 6, ++ DXVA2_VideoTransFunc_sRGB = 7, ++ DXVA2_VideoTransFunc_28 = 8 ++} DXVA2_VideoTransferFunction; ++ ++typedef enum { ++ DXVA2_SurfaceType_DecoderRenderTarget = 0, ++ DXVA2_SurfaceType_ProcessorRenderTarget = 1, ++ DXVA2_SurfaceType_D3DRenderTargetTexture = 2 ++} DXVA2_SurfaceType; ++ ++typedef enum _DXVA2_VideoTransferMatrix { ++ DXVA2_VideoTransferMatrixMask = 0x07, ++ DXVA2_VideoTransferMatrix_Unknown = 0, ++ DXVA2_VideoTransferMatrix_BT709 = 1, ++ DXVA2_VideoTransferMatrix_BT601 = 2, ++ DXVA2_VideoTransferMatrix_SMPTE240M = 3 ++} DXVA2_VideoTransferMatrix; ++ ++typedef struct _DXVA2_AYUVSample16 { ++ USHORT Cr; ++ USHORT Cb; ++ USHORT Y; ++ USHORT Alpha; ++} DXVA2_AYUVSample16; ++typedef struct _DXVA2_AYUVSample8 { ++ UCHAR Cr; ++ UCHAR Cb; ++ UCHAR Y; ++ UCHAR Alpha; ++} DXVA2_AYUVSample8; ++typedef struct _DXVA2_ConfigPictureDecode { ++ GUID guidConfigBitstreamEncryption; ++ GUID guidConfigMBcontrolEncryption; ++ GUID guidConfigResidDiffEncryption; ++ UINT ConfigBitstreamRaw; ++ UINT ConfigMBcontrolRasterOrder; ++ UINT ConfigResidDiffHost; ++ UINT ConfigSpatialResid8; ++ UINT ConfigResid8Subtraction; ++ UINT ConfigSpatialHost8or9Clipping; ++ UINT ConfigSpatialResidInterleaved; ++ UINT ConfigIntraResidUnsigned; ++ UINT ConfigResidDiffAccelerator; ++ UINT ConfigHostInverseScan; ++ UINT ConfigSpecificIDCT; ++ UINT Config4GroupedCoefs; ++ USHORT ConfigMinRenderTargetBuffCount; ++ USHORT ConfigDecoderSpecific; ++} DXVA2_ConfigPictureDecode; ++typedef struct _DXVA2_DecodeBufferDesc { ++ DWORD CompressedBufferType; ++ UINT BufferIndex; ++ UINT DataOffset; ++ UINT DataSize; ++ UINT FirstMBaddress; ++ UINT NumMBsInBuffer; ++ UINT Width; ++ UINT Height; ++ UINT Stride; ++ UINT ReservedBits; ++ PVOID pvPVPState; ++} DXVA2_DecodeBufferDesc; ++typedef struct _DXVA2_DecodeExtensionData { ++ UINT Function; ++ PVOID pPrivateInputData; ++ UINT PrivateInputDataSize; ++ PVOID pPrivateOutputData; ++ UINT PrivateOutputDataSize; ++} DXVA2_DecodeExtensionData; ++typedef struct _DXVA2_DecodeExecuteParams { ++ UINT NumCompBuffers; ++ DXVA2_DecodeBufferDesc *pCompressedBuffers; ++ DXVA2_DecodeExtensionData *pExtensionData; ++} DXVA2_DecodeExecuteParams; ++typedef struct _DXVA2_ExtendedFormat { ++ __C89_NAMELESS union { ++ __C89_NAMELESS struct { ++ UINT SampleFormat : 8; ++ UINT VideoChromaSubsampling : 4; ++ UINT NominalRange : 3; ++ UINT VideoTransferMatrix : 3; ++ UINT VideoLighting : 4; ++ UINT VideoPrimaries : 5; ++ UINT VideoTransferFunction : 5; ++ } __C89_NAMELESSSTRUCTNAME; ++ UINT value; ++ } __C89_NAMELESSUNIONNAME; ++} DXVA2_ExtendedFormat; ++typedef struct _DXVA2_Fixed32 { ++ __C89_NAMELESS union { ++ __C89_NAMELESS struct { ++ USHORT Fraction; ++ SHORT Value; ++ } DUMMYSTRUCTNAME; ++ LONG ll; ++ } DUMMYUNIONNAME; ++} DXVA2_Fixed32; ++typedef struct _DXVA2_FilterValues { ++ DXVA2_Fixed32 Level; ++ DXVA2_Fixed32 Threshold; ++ DXVA2_Fixed32 Radius; ++} DXVA2_FilterValues; ++typedef struct _DXVA2_Frequency { ++ UINT Numerator; ++ UINT Denominator; ++} DXVA2_Frequency; ++typedef struct _DXVA2_ProcAmpValues { ++ DXVA2_Fixed32 Brightness; ++ DXVA2_Fixed32 Contrast; ++ DXVA2_Fixed32 Hue; ++ DXVA2_Fixed32 Saturation; ++} DXVA2_ProcAmpValues; ++typedef struct _DXVA2_ValueRange { ++ DXVA2_Fixed32 MinValue; ++ DXVA2_Fixed32 MaxValue; ++ DXVA2_Fixed32 DefaultValue; ++ DXVA2_Fixed32 StepSize; ++} DXVA2_ValueRange; ++typedef struct _DXVA2_VideoDesc { ++ UINT SampleWidth; ++ UINT SampleHeight; ++ DXVA2_ExtendedFormat SampleFormat; ++ D3DFORMAT Format; ++ DXVA2_Frequency InputSampleFreq; ++ DXVA2_Frequency OutputFrameFreq; ++ UINT UABProtectionLevel; ++ UINT Reserved; ++} DXVA2_VideoDesc; ++/* DeviceCaps ++DXVA2_VPDev_EmulatedDXVA1 ++DXVA2_VPDev_HardwareDevice ++DXVA2_VPDev_SoftwareDevice ++*/ ++/* DeinterlaceTechnology ++DXVA2_DeinterlaceTech_Unknown ++DXVA2_DeinterlaceTech_BOBLineReplicate ++DXVA2_DeinterlaceTech_BOBVerticalStretch ++DXVA2_DeinterlaceTech_BOBVerticalStretch4Tap ++DXVA2_DeinterlaceTech_MedianFiltering ++DXVA2_DeinterlaceTech_EdgeFiltering ++DXVA2_DeinterlaceTech_FieldAdaptive ++DXVA2_DeinterlaceTech_PixelAdaptive ++DXVA2_DeinterlaceTech_MotionVectorSteered ++DXVA2_DeinterlaceTech_InverseTelecine ++*/ ++ ++/* VideoProcessorOperations ++DXVA2_VideoProcess_YUV2RGB ++DXVA2_VideoProcess_StretchX ++DXVA2_VideoProcess_StretchY ++DXVA2_VideoProcess_AlphaBlend ++DXVA2_VideoProcess_SubRects ++DXVA2_VideoProcess_SubStreams ++DXVA2_VideoProcess_SubStreamsExtended ++DXVA2_VideoProcess_YUV2RGBExtended ++DXVA2_VideoProcess_AlphaBlendExtended ++DXVA2_VideoProcess_Constriction ++DXVA2_VideoProcess_NoiseFilter ++DXVA2_VideoProcess_DetailFilter ++DXVA2_VideoProcess_PlanarAlpha ++DXVA2_VideoProcess_LinearScaling ++DXVA2_VideoProcess_GammaCompensated ++DXVA2_VideoProcess_MaintainsOriginalFieldData ++*/ ++ ++/*NoiseFilterTechnology ++DXVA2_NoiseFilterTech_Unsupported ++DXVA2_NoiseFilterTech_Unknown ++DXVA2_NoiseFilterTech_Median ++DXVA2_NoiseFilterTech_Temporal ++DXVA2_NoiseFilterTech_BlockNoise ++DXVA2_NoiseFilterTech_MosquitoNoise ++*/ ++ ++/* DetailFilterTechnology ++DXVA2_DetailFilterTech_Unsupported ++DXVA2_DetailFilterTech_Unknown ++DXVA2_DetailFilterTech_Edge ++DXVA2_DetailFilterTech_Sharpening ++*/ ++typedef struct _DXVA2_VideoProcessBltParams { ++ REFERENCE_TIME TargetFrame; ++ RECT TargetRect; ++ SIZE ConstrictionSize; ++ UINT StreamingFlags; ++ DXVA2_AYUVSample16 BackgroundColor; ++ DXVA2_ExtendedFormat DestFormat; ++ DXVA2_ProcAmpValues ProcAmpValues; ++ DXVA2_Fixed32 Alpha; ++ DXVA2_FilterValues NoiseFilterLuma; ++ DXVA2_FilterValues NoiseFilterChroma; ++ DXVA2_FilterValues DetailFilterLuma; ++ DXVA2_FilterValues DetailFilterChroma; ++ DWORD DestData; ++} DXVA2_VideoProcessBltParams; ++typedef struct _DXVA2_VideoProcessorCaps { ++ UINT DeviceCaps; ++ D3DPOOL InputPool; ++ UINT NumForwardRefSamples; ++ UINT NumBackwardRefSamples; ++ UINT Reserved; ++ UINT DeinterlaceTechnology; ++ UINT ProcAmpControlCaps; ++ UINT VideoProcessorOperations; ++ UINT NoiseFilterTechnology; ++ UINT DetailFilterTechnology; ++} DXVA2_VideoProcessorCaps; ++/* deinterlacing capabilities */ ++#define DXVA2_DeinterlaceTech_Unknown 0x0 ++#define DXVA2_DeinterlaceTech_BOBLineReplicate 0x1 ++#define DXVA2_DeinterlaceTech_BOBVerticalStretch 0x2 ++#define DXVA2_DeinterlaceTech_BOBVerticalStretch4Tap 0x4 ++#define DXVA2_DeinterlaceTech_MedianFiltering 0x8 ++#define DXVA2_DeinterlaceTech_EdgeFiltering 0x10 ++#define DXVA2_DeinterlaceTech_FieldAdaptive 0x20 ++#define DXVA2_DeinterlaceTech_PixelAdaptive 0x40 ++#define DXVA2_DeinterlaceTech_MotionVectorSteered 0x80 ++#define DXVA2_DeinterlaceTech_InverseTelecine 0x100 ++#define DXVA2_DeinterlaceTech_Mask 0x1FF ++ ++/* VideoProcessor capabilities */ ++#define DXVA2_VideoProcess_None 0x0 ++#define DXVA2_VideoProcess_YUV2RGB 0x1 ++#define DXVA2_VideoProcess_StretchX 0x2 ++#define DXVA2_VideoProcess_StretchY 0x4 ++#define DXVA2_VideoProcess_AlphaBlend 0x8 ++#define DXVA2_VideoProcess_SubRects 0x10 ++#define DXVA2_VideoProcess_SubStreams 0x20 ++#define DXVA2_VideoProcess_SubStreamsExtended 0x40 ++#define DXVA2_VideoProcess_YUV2RGBExtended 0x80 ++#define DXVA2_VideoProcess_AlphaBlendExtended 0x100 ++#define DXVA2_VideoProcess_Constriction 0x200 ++#define DXVA2_VideoProcess_NoiseFilter 0x400 ++#define DXVA2_VideoProcess_DetailFilter 0x800 ++#define DXVA2_VideoProcess_PlanarAlpha 0x1000 ++#define DXVA2_VideoProcess_LinearScaling 0x2000 ++#define DXVA2_VideoProcess_GammaCompensated 0x4000 ++#define DXVA2_VideoProcess_MaintainsOriginalFieldData 0x8000 ++#define DXVA2_VideoProcess_Mask 0xFFFF ++/* SampleData */ ++enum { ++ DXVA2_SampleData_RFF = 1, ++ DXVA2_SampleData_TFF = 2, ++ DXVA2_SampleData_RFF_TFF_Present = 4, ++ DXVA2_SampleData_Mask = 0xffff ++}; ++ ++typedef struct _DXVA2_VideoSample { ++ REFERENCE_TIME Start; ++ REFERENCE_TIME End; ++ DXVA2_ExtendedFormat SampleFormat; ++ IDirect3DSurface9 *SrcSurface; ++ RECT SrcRect; ++ RECT DstRect; ++ DXVA2_AYUVSample8 Pal[16]; ++ DXVA2_Fixed32 PlanarAlpha; ++ DWORD SampleData; ++} DXVA2_VideoSample; ++/* Constants */ ++ ++#define DXVA2_VideoDecoderRenderTarget 0 ++#define DXVA2_VideoProcessorRenderTarget 1 ++#define DXVA2_VideoSoftwareRenderTarget 2 ++ ++/* CompressedBufferType */ ++#define DXVA2_PictureParametersBufferType 0 ++#define DXVA2_MacroBlockControlBufferType 1 ++#define DXVA2_ResidualDifferenceBufferType 2 ++#define DXVA2_DeblockingControlBufferType 3 ++#define DXVA2_InverseQuantizationMatrixBufferType 4 ++#define DXVA2_SliceControlBufferType 5 ++#define DXVA2_BitStreamDateBufferType 6 ++#define DXVA2_MotionVectorBuffer 7 ++#define DXVA2_FilmGrainBuffer 8 ++ ++__forceinline DXVA2_Fixed32 DXVA2_Fixed32OpaqueAlpha (void) { ++ DXVA2_Fixed32 f32; ++ f32.ll = 0 + (1 << 16); ++ return f32; ++} ++ ++__forceinline DXVA2_Fixed32 DXVA2_Fixed32TransparentAlpha (void) { ++ DXVA2_Fixed32 f32; ++ f32.ll = 0; ++ return f32; ++} ++ ++__forceinline float DXVA2FixedToFloat (const DXVA2_Fixed32 f32) { ++ return (float)f32.Value + (float)f32.Fraction / (1 << 16); ++} ++ ++__forceinline DXVA2_Fixed32 DXVA2FloatToFixed (const float f) { ++ DXVA2_Fixed32 f32; ++ f32.Value = ((ULONG) (f * (1 << 16))) >> 16; ++ f32.Fraction = ((ULONG) (f * (1 << 16))) & 0xFFFF; ++ return f32; ++} ++#ifdef _D3D9_H_ ++HRESULT WINAPI DXVA2CreateDirect3DDeviceManager9(UINT *pResetToken,IDirect3DDeviceManager9 **ppDXVAManager); ++HRESULT WINAPI DXVA2CreateVideoService(IDirect3DDevice9 *pDD,REFIID riid,void **ppService); ++/***************************************************************************** ++ * IDirect3DDeviceManager9 interface ++ */ ++#ifndef __IDirect3DDeviceManager9_INTERFACE_DEFINED__ ++#define __IDirect3DDeviceManager9_INTERFACE_DEFINED__ ++ ++DEFINE_GUID(IID_IDirect3DDeviceManager9, 0xa0cade0f, 0x06d5, 0x4cf4, 0xa1,0xc7, 0xf3,0xcd,0xd7,0x25,0xaa,0x75); ++#if defined(__cplusplus) && !defined(CINTERFACE) ++MIDL_INTERFACE("a0cade0f-06d5-4cf4-a1c7-f3cdd725aa75") ++IDirect3DDeviceManager9 : public IUnknown ++{ ++ virtual HRESULT STDMETHODCALLTYPE ResetDevice( ++ IDirect3DDevice9 *pDevice, ++ UINT resetToken) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE OpenDeviceHandle( ++ HANDLE *phDevice) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE CloseDeviceHandle( ++ HANDLE hDevice) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE TestDevice( ++ HANDLE hDevice) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE LockDevice( ++ HANDLE hDevice, ++ IDirect3DDevice9 **ppDevice, ++ WINBOOL fBlock) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE UnlockDevice( ++ HANDLE hDevice, ++ WINBOOL fSaveState) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetVideoService( ++ HANDLE hDevice, ++ REFIID riid, ++ void **ppService) = 0; ++ ++}; ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(IDirect3DDeviceManager9, 0xa0cade0f, 0x06d5, 0x4cf4, 0xa1,0xc7, 0xf3,0xcd,0xd7,0x25,0xaa,0x75) ++#endif ++#else ++typedef struct IDirect3DDeviceManager9Vtbl { ++ BEGIN_INTERFACE ++ ++ /*** IUnknown methods ***/ ++ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ++ IDirect3DDeviceManager9* This, ++ REFIID riid, ++ void **ppvObject); ++ ++ ULONG (STDMETHODCALLTYPE *AddRef)( ++ IDirect3DDeviceManager9* This); ++ ++ ULONG (STDMETHODCALLTYPE *Release)( ++ IDirect3DDeviceManager9* This); ++ ++ /*** IDirect3DDeviceManager9 methods ***/ ++ HRESULT (STDMETHODCALLTYPE *ResetDevice)( ++ IDirect3DDeviceManager9* This, ++ IDirect3DDevice9 *pDevice, ++ UINT resetToken); ++ ++ HRESULT (STDMETHODCALLTYPE *OpenDeviceHandle)( ++ IDirect3DDeviceManager9* This, ++ HANDLE *phDevice); ++ ++ HRESULT (STDMETHODCALLTYPE *CloseDeviceHandle)( ++ IDirect3DDeviceManager9* This, ++ HANDLE hDevice); ++ ++ HRESULT (STDMETHODCALLTYPE *TestDevice)( ++ IDirect3DDeviceManager9* This, ++ HANDLE hDevice); ++ ++ HRESULT (STDMETHODCALLTYPE *LockDevice)( ++ IDirect3DDeviceManager9* This, ++ HANDLE hDevice, ++ IDirect3DDevice9 **ppDevice, ++ WINBOOL fBlock); ++ ++ HRESULT (STDMETHODCALLTYPE *UnlockDevice)( ++ IDirect3DDeviceManager9* This, ++ HANDLE hDevice, ++ WINBOOL fSaveState); ++ ++ HRESULT (STDMETHODCALLTYPE *GetVideoService)( ++ IDirect3DDeviceManager9* This, ++ HANDLE hDevice, ++ REFIID riid, ++ void **ppService); ++ ++ END_INTERFACE ++} IDirect3DDeviceManager9Vtbl; ++interface IDirect3DDeviceManager9 { ++ CONST_VTBL IDirect3DDeviceManager9Vtbl* lpVtbl; ++}; ++ ++#ifdef COBJMACROS ++#ifndef WIDL_C_INLINE_WRAPPERS ++/*** IUnknown methods ***/ ++#define IDirect3DDeviceManager9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) ++#define IDirect3DDeviceManager9_AddRef(This) (This)->lpVtbl->AddRef(This) ++#define IDirect3DDeviceManager9_Release(This) (This)->lpVtbl->Release(This) ++/*** IDirect3DDeviceManager9 methods ***/ ++#define IDirect3DDeviceManager9_ResetDevice(This,pDevice,resetToken) (This)->lpVtbl->ResetDevice(This,pDevice,resetToken) ++#define IDirect3DDeviceManager9_OpenDeviceHandle(This,phDevice) (This)->lpVtbl->OpenDeviceHandle(This,phDevice) ++#define IDirect3DDeviceManager9_CloseDeviceHandle(This,hDevice) (This)->lpVtbl->CloseDeviceHandle(This,hDevice) ++#define IDirect3DDeviceManager9_TestDevice(This,hDevice) (This)->lpVtbl->TestDevice(This,hDevice) ++#define IDirect3DDeviceManager9_LockDevice(This,hDevice,ppDevice,fBlock) (This)->lpVtbl->LockDevice(This,hDevice,ppDevice,fBlock) ++#define IDirect3DDeviceManager9_UnlockDevice(This,hDevice,fSaveState) (This)->lpVtbl->UnlockDevice(This,hDevice,fSaveState) ++#define IDirect3DDeviceManager9_GetVideoService(This,hDevice,riid,ppService) (This)->lpVtbl->GetVideoService(This,hDevice,riid,ppService) ++#else ++/*** IUnknown methods ***/ ++static FORCEINLINE HRESULT IDirect3DDeviceManager9_QueryInterface(IDirect3DDeviceManager9* This,REFIID riid,void **ppvObject) { ++ return This->lpVtbl->QueryInterface(This,riid,ppvObject); ++} ++static FORCEINLINE ULONG IDirect3DDeviceManager9_AddRef(IDirect3DDeviceManager9* This) { ++ return This->lpVtbl->AddRef(This); ++} ++static FORCEINLINE ULONG IDirect3DDeviceManager9_Release(IDirect3DDeviceManager9* This) { ++ return This->lpVtbl->Release(This); ++} ++/*** IDirect3DDeviceManager9 methods ***/ ++static FORCEINLINE HRESULT IDirect3DDeviceManager9_ResetDevice(IDirect3DDeviceManager9* This,IDirect3DDevice9 *pDevice,UINT resetToken) { ++ return This->lpVtbl->ResetDevice(This,pDevice,resetToken); ++} ++static FORCEINLINE HRESULT IDirect3DDeviceManager9_OpenDeviceHandle(IDirect3DDeviceManager9* This,HANDLE *phDevice) { ++ return This->lpVtbl->OpenDeviceHandle(This,phDevice); ++} ++static FORCEINLINE HRESULT IDirect3DDeviceManager9_CloseDeviceHandle(IDirect3DDeviceManager9* This,HANDLE hDevice) { ++ return This->lpVtbl->CloseDeviceHandle(This,hDevice); ++} ++static FORCEINLINE HRESULT IDirect3DDeviceManager9_TestDevice(IDirect3DDeviceManager9* This,HANDLE hDevice) { ++ return This->lpVtbl->TestDevice(This,hDevice); ++} ++static FORCEINLINE HRESULT IDirect3DDeviceManager9_LockDevice(IDirect3DDeviceManager9* This,HANDLE hDevice,IDirect3DDevice9 **ppDevice,WINBOOL fBlock) { ++ return This->lpVtbl->LockDevice(This,hDevice,ppDevice,fBlock); ++} ++static FORCEINLINE HRESULT IDirect3DDeviceManager9_UnlockDevice(IDirect3DDeviceManager9* This,HANDLE hDevice,WINBOOL fSaveState) { ++ return This->lpVtbl->UnlockDevice(This,hDevice,fSaveState); ++} ++static FORCEINLINE HRESULT IDirect3DDeviceManager9_GetVideoService(IDirect3DDeviceManager9* This,HANDLE hDevice,REFIID riid,void **ppService) { ++ return This->lpVtbl->GetVideoService(This,hDevice,riid,ppService); ++} ++#endif ++#endif ++ ++#endif ++ ++HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_ResetDevice_Proxy( ++ IDirect3DDeviceManager9* This, ++ IDirect3DDevice9 *pDevice, ++ UINT resetToken); ++void __RPC_STUB IDirect3DDeviceManager9_ResetDevice_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_OpenDeviceHandle_Proxy( ++ IDirect3DDeviceManager9* This, ++ HANDLE *phDevice); ++void __RPC_STUB IDirect3DDeviceManager9_OpenDeviceHandle_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_CloseDeviceHandle_Proxy( ++ IDirect3DDeviceManager9* This, ++ HANDLE hDevice); ++void __RPC_STUB IDirect3DDeviceManager9_CloseDeviceHandle_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_TestDevice_Proxy( ++ IDirect3DDeviceManager9* This, ++ HANDLE hDevice); ++void __RPC_STUB IDirect3DDeviceManager9_TestDevice_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_LockDevice_Proxy( ++ IDirect3DDeviceManager9* This, ++ HANDLE hDevice, ++ IDirect3DDevice9 **ppDevice, ++ WINBOOL fBlock); ++void __RPC_STUB IDirect3DDeviceManager9_LockDevice_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_UnlockDevice_Proxy( ++ IDirect3DDeviceManager9* This, ++ HANDLE hDevice, ++ WINBOOL fSaveState); ++void __RPC_STUB IDirect3DDeviceManager9_UnlockDevice_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_GetVideoService_Proxy( ++ IDirect3DDeviceManager9* This, ++ HANDLE hDevice, ++ REFIID riid, ++ void **ppService); ++void __RPC_STUB IDirect3DDeviceManager9_GetVideoService_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ ++#endif /* __IDirect3DDeviceManager9_INTERFACE_DEFINED__ */ ++ ++/***************************************************************************** ++ * IDirectXVideoDecoder interface ++ */ ++#ifndef __IDirectXVideoDecoder_INTERFACE_DEFINED__ ++#define __IDirectXVideoDecoder_INTERFACE_DEFINED__ ++ ++DEFINE_GUID(IID_IDirectXVideoDecoder, 0xf2b0810a, 0xfd00, 0x43c9, 0x91,0x8c, 0xdf,0x94,0xe2,0xd8,0xef,0x7d); ++#if defined(__cplusplus) && !defined(CINTERFACE) ++MIDL_INTERFACE("f2b0810a-fd00-43c9-918c-df94e2d8ef7d") ++IDirectXVideoDecoder : public IUnknown ++{ ++ virtual HRESULT STDMETHODCALLTYPE GetVideoDecoderService( ++ IDirectXVideoDecoderService **ppService) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetCreationParameters( ++ GUID *pDeviceGuid, ++ DXVA2_VideoDesc *pVideoDesc, ++ DXVA2_ConfigPictureDecode *pConfig, ++ IDirect3DSurface9 ***pDecoderRenderTargets, ++ UINT *pNumSurfaces) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetBuffer( ++ UINT BufferType, ++ void **ppBuffer, ++ UINT *pBufferSize) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer( ++ UINT BufferType) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE BeginFrame( ++ IDirect3DSurface9 *pRenderTarget, ++ void *pvPVPData) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE EndFrame( ++ HANDLE *pHandleComplete) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE Execute( ++ const DXVA2_DecodeExecuteParams *pExecuteParams) = 0; ++ ++}; ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(IDirectXVideoDecoder, 0xf2b0810a, 0xfd00, 0x43c9, 0x91,0x8c, 0xdf,0x94,0xe2,0xd8,0xef,0x7d) ++#endif ++#else ++typedef struct IDirectXVideoDecoderVtbl { ++ BEGIN_INTERFACE ++ ++ /*** IUnknown methods ***/ ++ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ++ IDirectXVideoDecoder* This, ++ REFIID riid, ++ void **ppvObject); ++ ++ ULONG (STDMETHODCALLTYPE *AddRef)( ++ IDirectXVideoDecoder* This); ++ ++ ULONG (STDMETHODCALLTYPE *Release)( ++ IDirectXVideoDecoder* This); ++ ++ /*** IDirectXVideoDecoder methods ***/ ++ HRESULT (STDMETHODCALLTYPE *GetVideoDecoderService)( ++ IDirectXVideoDecoder* This, ++ IDirectXVideoDecoderService **ppService); ++ ++ HRESULT (STDMETHODCALLTYPE *GetCreationParameters)( ++ IDirectXVideoDecoder* This, ++ GUID *pDeviceGuid, ++ DXVA2_VideoDesc *pVideoDesc, ++ DXVA2_ConfigPictureDecode *pConfig, ++ IDirect3DSurface9 ***pDecoderRenderTargets, ++ UINT *pNumSurfaces); ++ ++ HRESULT (STDMETHODCALLTYPE *GetBuffer)( ++ IDirectXVideoDecoder* This, ++ UINT BufferType, ++ void **ppBuffer, ++ UINT *pBufferSize); ++ ++ HRESULT (STDMETHODCALLTYPE *ReleaseBuffer)( ++ IDirectXVideoDecoder* This, ++ UINT BufferType); ++ ++ HRESULT (STDMETHODCALLTYPE *BeginFrame)( ++ IDirectXVideoDecoder* This, ++ IDirect3DSurface9 *pRenderTarget, ++ void *pvPVPData); ++ ++ HRESULT (STDMETHODCALLTYPE *EndFrame)( ++ IDirectXVideoDecoder* This, ++ HANDLE *pHandleComplete); ++ ++ HRESULT (STDMETHODCALLTYPE *Execute)( ++ IDirectXVideoDecoder* This, ++ const DXVA2_DecodeExecuteParams *pExecuteParams); ++ ++ END_INTERFACE ++} IDirectXVideoDecoderVtbl; ++interface IDirectXVideoDecoder { ++ CONST_VTBL IDirectXVideoDecoderVtbl* lpVtbl; ++}; ++ ++#ifdef COBJMACROS ++#ifndef WIDL_C_INLINE_WRAPPERS ++/*** IUnknown methods ***/ ++#define IDirectXVideoDecoder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) ++#define IDirectXVideoDecoder_AddRef(This) (This)->lpVtbl->AddRef(This) ++#define IDirectXVideoDecoder_Release(This) (This)->lpVtbl->Release(This) ++/*** IDirectXVideoDecoder methods ***/ ++#define IDirectXVideoDecoder_GetVideoDecoderService(This,ppService) (This)->lpVtbl->GetVideoDecoderService(This,ppService) ++#define IDirectXVideoDecoder_GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pDecoderRenderTargets,pNumSurfaces) (This)->lpVtbl->GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pDecoderRenderTargets,pNumSurfaces) ++#define IDirectXVideoDecoder_GetBuffer(This,BufferType,ppBuffer,pBufferSize) (This)->lpVtbl->GetBuffer(This,BufferType,ppBuffer,pBufferSize) ++#define IDirectXVideoDecoder_ReleaseBuffer(This,BufferType) (This)->lpVtbl->ReleaseBuffer(This,BufferType) ++#define IDirectXVideoDecoder_BeginFrame(This,pRenderTarget,pvPVPData) (This)->lpVtbl->BeginFrame(This,pRenderTarget,pvPVPData) ++#define IDirectXVideoDecoder_EndFrame(This,pHandleComplete) (This)->lpVtbl->EndFrame(This,pHandleComplete) ++#define IDirectXVideoDecoder_Execute(This,pExecuteParams) (This)->lpVtbl->Execute(This,pExecuteParams) ++#else ++/*** IUnknown methods ***/ ++static FORCEINLINE HRESULT IDirectXVideoDecoder_QueryInterface(IDirectXVideoDecoder* This,REFIID riid,void **ppvObject) { ++ return This->lpVtbl->QueryInterface(This,riid,ppvObject); ++} ++static FORCEINLINE ULONG IDirectXVideoDecoder_AddRef(IDirectXVideoDecoder* This) { ++ return This->lpVtbl->AddRef(This); ++} ++static FORCEINLINE ULONG IDirectXVideoDecoder_Release(IDirectXVideoDecoder* This) { ++ return This->lpVtbl->Release(This); ++} ++/*** IDirectXVideoDecoder methods ***/ ++static FORCEINLINE HRESULT IDirectXVideoDecoder_GetVideoDecoderService(IDirectXVideoDecoder* This,IDirectXVideoDecoderService **ppService) { ++ return This->lpVtbl->GetVideoDecoderService(This,ppService); ++} ++static FORCEINLINE HRESULT IDirectXVideoDecoder_GetCreationParameters(IDirectXVideoDecoder* This,GUID *pDeviceGuid,DXVA2_VideoDesc *pVideoDesc,DXVA2_ConfigPictureDecode *pConfig,IDirect3DSurface9 ***pDecoderRenderTargets,UINT *pNumSurfaces) { ++ return This->lpVtbl->GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pDecoderRenderTargets,pNumSurfaces); ++} ++static FORCEINLINE HRESULT IDirectXVideoDecoder_GetBuffer(IDirectXVideoDecoder* This,UINT BufferType,void **ppBuffer,UINT *pBufferSize) { ++ return This->lpVtbl->GetBuffer(This,BufferType,ppBuffer,pBufferSize); ++} ++static FORCEINLINE HRESULT IDirectXVideoDecoder_ReleaseBuffer(IDirectXVideoDecoder* This,UINT BufferType) { ++ return This->lpVtbl->ReleaseBuffer(This,BufferType); ++} ++static FORCEINLINE HRESULT IDirectXVideoDecoder_BeginFrame(IDirectXVideoDecoder* This,IDirect3DSurface9 *pRenderTarget,void *pvPVPData) { ++ return This->lpVtbl->BeginFrame(This,pRenderTarget,pvPVPData); ++} ++static FORCEINLINE HRESULT IDirectXVideoDecoder_EndFrame(IDirectXVideoDecoder* This,HANDLE *pHandleComplete) { ++ return This->lpVtbl->EndFrame(This,pHandleComplete); ++} ++static FORCEINLINE HRESULT IDirectXVideoDecoder_Execute(IDirectXVideoDecoder* This,const DXVA2_DecodeExecuteParams *pExecuteParams) { ++ return This->lpVtbl->Execute(This,pExecuteParams); ++} ++#endif ++#endif ++ ++#endif ++ ++HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_GetVideoDecoderService_Proxy( ++ IDirectXVideoDecoder* This, ++ IDirectXVideoDecoderService **ppService); ++void __RPC_STUB IDirectXVideoDecoder_GetVideoDecoderService_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_GetCreationParameters_Proxy( ++ IDirectXVideoDecoder* This, ++ GUID *pDeviceGuid, ++ DXVA2_VideoDesc *pVideoDesc, ++ DXVA2_ConfigPictureDecode *pConfig, ++ IDirect3DSurface9 ***pDecoderRenderTargets, ++ UINT *pNumSurfaces); ++void __RPC_STUB IDirectXVideoDecoder_GetCreationParameters_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_GetBuffer_Proxy( ++ IDirectXVideoDecoder* This, ++ UINT BufferType, ++ void **ppBuffer, ++ UINT *pBufferSize); ++void __RPC_STUB IDirectXVideoDecoder_GetBuffer_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_ReleaseBuffer_Proxy( ++ IDirectXVideoDecoder* This, ++ UINT BufferType); ++void __RPC_STUB IDirectXVideoDecoder_ReleaseBuffer_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_BeginFrame_Proxy( ++ IDirectXVideoDecoder* This, ++ IDirect3DSurface9 *pRenderTarget, ++ void *pvPVPData); ++void __RPC_STUB IDirectXVideoDecoder_BeginFrame_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_EndFrame_Proxy( ++ IDirectXVideoDecoder* This, ++ HANDLE *pHandleComplete); ++void __RPC_STUB IDirectXVideoDecoder_EndFrame_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_Execute_Proxy( ++ IDirectXVideoDecoder* This, ++ const DXVA2_DecodeExecuteParams *pExecuteParams); ++void __RPC_STUB IDirectXVideoDecoder_Execute_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ ++#endif /* __IDirectXVideoDecoder_INTERFACE_DEFINED__ */ ++ ++/***************************************************************************** ++ * IDirectXVideoAccelerationService interface ++ */ ++#ifndef __IDirectXVideoAccelerationService_INTERFACE_DEFINED__ ++#define __IDirectXVideoAccelerationService_INTERFACE_DEFINED__ ++ ++DEFINE_GUID(IID_IDirectXVideoAccelerationService, 0xfc51a550, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02); ++#if defined(__cplusplus) && !defined(CINTERFACE) ++MIDL_INTERFACE("fc51a550-d5e7-11d9-af55-00054e43ff02") ++IDirectXVideoAccelerationService : public IUnknown ++{ ++ virtual HRESULT STDMETHODCALLTYPE CreateSurface( ++ UINT Width, ++ UINT Height, ++ UINT BackBuffers, ++ D3DFORMAT Format, ++ D3DPOOL Pool, ++ DWORD Usage, ++ DWORD DxvaType, ++ IDirect3DSurface9 **ppSurface, ++ HANDLE *pSharedHandle) = 0; ++ ++}; ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(IDirectXVideoAccelerationService, 0xfc51a550, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02) ++#endif ++#else ++typedef struct IDirectXVideoAccelerationServiceVtbl { ++ BEGIN_INTERFACE ++ ++ /*** IUnknown methods ***/ ++ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ++ IDirectXVideoAccelerationService* This, ++ REFIID riid, ++ void **ppvObject); ++ ++ ULONG (STDMETHODCALLTYPE *AddRef)( ++ IDirectXVideoAccelerationService* This); ++ ++ ULONG (STDMETHODCALLTYPE *Release)( ++ IDirectXVideoAccelerationService* This); ++ ++ /*** IDirectXVideoAccelerationService methods ***/ ++ HRESULT (STDMETHODCALLTYPE *CreateSurface)( ++ IDirectXVideoAccelerationService* This, ++ UINT Width, ++ UINT Height, ++ UINT BackBuffers, ++ D3DFORMAT Format, ++ D3DPOOL Pool, ++ DWORD Usage, ++ DWORD DxvaType, ++ IDirect3DSurface9 **ppSurface, ++ HANDLE *pSharedHandle); ++ ++ END_INTERFACE ++} IDirectXVideoAccelerationServiceVtbl; ++interface IDirectXVideoAccelerationService { ++ CONST_VTBL IDirectXVideoAccelerationServiceVtbl* lpVtbl; ++}; ++ ++#ifdef COBJMACROS ++#ifndef WIDL_C_INLINE_WRAPPERS ++/*** IUnknown methods ***/ ++#define IDirectXVideoAccelerationService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) ++#define IDirectXVideoAccelerationService_AddRef(This) (This)->lpVtbl->AddRef(This) ++#define IDirectXVideoAccelerationService_Release(This) (This)->lpVtbl->Release(This) ++/*** IDirectXVideoAccelerationService methods ***/ ++#define IDirectXVideoAccelerationService_CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle) (This)->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle) ++#else ++/*** IUnknown methods ***/ ++static FORCEINLINE HRESULT IDirectXVideoAccelerationService_QueryInterface(IDirectXVideoAccelerationService* This,REFIID riid,void **ppvObject) { ++ return This->lpVtbl->QueryInterface(This,riid,ppvObject); ++} ++static FORCEINLINE ULONG IDirectXVideoAccelerationService_AddRef(IDirectXVideoAccelerationService* This) { ++ return This->lpVtbl->AddRef(This); ++} ++static FORCEINLINE ULONG IDirectXVideoAccelerationService_Release(IDirectXVideoAccelerationService* This) { ++ return This->lpVtbl->Release(This); ++} ++/*** IDirectXVideoAccelerationService methods ***/ ++static FORCEINLINE HRESULT IDirectXVideoAccelerationService_CreateSurface(IDirectXVideoAccelerationService* This,UINT Width,UINT Height,UINT BackBuffers,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DWORD DxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) { ++ return This->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle); ++} ++#endif ++#endif ++ ++#endif ++ ++HRESULT STDMETHODCALLTYPE IDirectXVideoAccelerationService_CreateSurface_Proxy( ++ IDirectXVideoAccelerationService* This, ++ UINT Width, ++ UINT Height, ++ UINT BackBuffers, ++ D3DFORMAT Format, ++ D3DPOOL Pool, ++ DWORD Usage, ++ DWORD DxvaType, ++ IDirect3DSurface9 **ppSurface, ++ HANDLE *pSharedHandle); ++void __RPC_STUB IDirectXVideoAccelerationService_CreateSurface_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ ++#endif /* __IDirectXVideoAccelerationService_INTERFACE_DEFINED__ */ ++ ++/***************************************************************************** ++ * IDirectXVideoDecoderService interface ++ */ ++#ifndef __IDirectXVideoDecoderService_INTERFACE_DEFINED__ ++#define __IDirectXVideoDecoderService_INTERFACE_DEFINED__ ++ ++DEFINE_GUID(IID_IDirectXVideoDecoderService, 0xfc51a551, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02); ++#if defined(__cplusplus) && !defined(CINTERFACE) ++MIDL_INTERFACE("fc51a551-d5e7-11d9-af55-00054e43ff02") ++IDirectXVideoDecoderService : public IDirectXVideoAccelerationService ++{ ++ virtual HRESULT STDMETHODCALLTYPE GetDecoderDeviceGuids( ++ UINT *pCount, ++ GUID **pGuids) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetDecoderRenderTargets( ++ REFGUID Guid, ++ UINT *pCount, ++ D3DFORMAT **pFormats) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetDecoderConfigurations( ++ REFGUID Guid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ void *pReserved, ++ UINT *pCount, ++ DXVA2_ConfigPictureDecode **ppConfigs) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder( ++ REFGUID Guid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ const DXVA2_ConfigPictureDecode *pConfig, ++ IDirect3DSurface9 **ppDecoderRenderTargets, ++ UINT NumRenderTargets, ++ IDirectXVideoDecoder **ppDecode) = 0; ++ ++}; ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(IDirectXVideoDecoderService, 0xfc51a551, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02) ++#endif ++#else ++typedef struct IDirectXVideoDecoderServiceVtbl { ++ BEGIN_INTERFACE ++ ++ /*** IUnknown methods ***/ ++ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ++ IDirectXVideoDecoderService* This, ++ REFIID riid, ++ void **ppvObject); ++ ++ ULONG (STDMETHODCALLTYPE *AddRef)( ++ IDirectXVideoDecoderService* This); ++ ++ ULONG (STDMETHODCALLTYPE *Release)( ++ IDirectXVideoDecoderService* This); ++ ++ /*** IDirectXVideoAccelerationService methods ***/ ++ HRESULT (STDMETHODCALLTYPE *CreateSurface)( ++ IDirectXVideoDecoderService* This, ++ UINT Width, ++ UINT Height, ++ UINT BackBuffers, ++ D3DFORMAT Format, ++ D3DPOOL Pool, ++ DWORD Usage, ++ DWORD DxvaType, ++ IDirect3DSurface9 **ppSurface, ++ HANDLE *pSharedHandle); ++ ++ /*** IDirectXVideoDecoderService methods ***/ ++ HRESULT (STDMETHODCALLTYPE *GetDecoderDeviceGuids)( ++ IDirectXVideoDecoderService* This, ++ UINT *pCount, ++ GUID **pGuids); ++ ++ HRESULT (STDMETHODCALLTYPE *GetDecoderRenderTargets)( ++ IDirectXVideoDecoderService* This, ++ REFGUID Guid, ++ UINT *pCount, ++ D3DFORMAT **pFormats); ++ ++ HRESULT (STDMETHODCALLTYPE *GetDecoderConfigurations)( ++ IDirectXVideoDecoderService* This, ++ REFGUID Guid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ void *pReserved, ++ UINT *pCount, ++ DXVA2_ConfigPictureDecode **ppConfigs); ++ ++ HRESULT (STDMETHODCALLTYPE *CreateVideoDecoder)( ++ IDirectXVideoDecoderService* This, ++ REFGUID Guid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ const DXVA2_ConfigPictureDecode *pConfig, ++ IDirect3DSurface9 **ppDecoderRenderTargets, ++ UINT NumRenderTargets, ++ IDirectXVideoDecoder **ppDecode); ++ ++ END_INTERFACE ++} IDirectXVideoDecoderServiceVtbl; ++interface IDirectXVideoDecoderService { ++ CONST_VTBL IDirectXVideoDecoderServiceVtbl* lpVtbl; ++}; ++ ++#ifdef COBJMACROS ++#ifndef WIDL_C_INLINE_WRAPPERS ++/*** IUnknown methods ***/ ++#define IDirectXVideoDecoderService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) ++#define IDirectXVideoDecoderService_AddRef(This) (This)->lpVtbl->AddRef(This) ++#define IDirectXVideoDecoderService_Release(This) (This)->lpVtbl->Release(This) ++/*** IDirectXVideoAccelerationService methods ***/ ++#define IDirectXVideoDecoderService_CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle) (This)->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle) ++/*** IDirectXVideoDecoderService methods ***/ ++#define IDirectXVideoDecoderService_GetDecoderDeviceGuids(This,pCount,pGuids) (This)->lpVtbl->GetDecoderDeviceGuids(This,pCount,pGuids) ++#define IDirectXVideoDecoderService_GetDecoderRenderTargets(This,Guid,pCount,pFormats) (This)->lpVtbl->GetDecoderRenderTargets(This,Guid,pCount,pFormats) ++#define IDirectXVideoDecoderService_GetDecoderConfigurations(This,Guid,pVideoDesc,pReserved,pCount,ppConfigs) (This)->lpVtbl->GetDecoderConfigurations(This,Guid,pVideoDesc,pReserved,pCount,ppConfigs) ++#define IDirectXVideoDecoderService_CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumRenderTargets,ppDecode) (This)->lpVtbl->CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumRenderTargets,ppDecode) ++#else ++/*** IUnknown methods ***/ ++static FORCEINLINE HRESULT IDirectXVideoDecoderService_QueryInterface(IDirectXVideoDecoderService* This,REFIID riid,void **ppvObject) { ++ return This->lpVtbl->QueryInterface(This,riid,ppvObject); ++} ++static FORCEINLINE ULONG IDirectXVideoDecoderService_AddRef(IDirectXVideoDecoderService* This) { ++ return This->lpVtbl->AddRef(This); ++} ++static FORCEINLINE ULONG IDirectXVideoDecoderService_Release(IDirectXVideoDecoderService* This) { ++ return This->lpVtbl->Release(This); ++} ++/*** IDirectXVideoAccelerationService methods ***/ ++static FORCEINLINE HRESULT IDirectXVideoDecoderService_CreateSurface(IDirectXVideoDecoderService* This,UINT Width,UINT Height,UINT BackBuffers,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DWORD DxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) { ++ return This->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle); ++} ++/*** IDirectXVideoDecoderService methods ***/ ++static FORCEINLINE HRESULT IDirectXVideoDecoderService_GetDecoderDeviceGuids(IDirectXVideoDecoderService* This,UINT *pCount,GUID **pGuids) { ++ return This->lpVtbl->GetDecoderDeviceGuids(This,pCount,pGuids); ++} ++static FORCEINLINE HRESULT IDirectXVideoDecoderService_GetDecoderRenderTargets(IDirectXVideoDecoderService* This,REFGUID Guid,UINT *pCount,D3DFORMAT **pFormats) { ++ return This->lpVtbl->GetDecoderRenderTargets(This,Guid,pCount,pFormats); ++} ++static FORCEINLINE HRESULT IDirectXVideoDecoderService_GetDecoderConfigurations(IDirectXVideoDecoderService* This,REFGUID Guid,const DXVA2_VideoDesc *pVideoDesc,void *pReserved,UINT *pCount,DXVA2_ConfigPictureDecode **ppConfigs) { ++ return This->lpVtbl->GetDecoderConfigurations(This,Guid,pVideoDesc,pReserved,pCount,ppConfigs); ++} ++static FORCEINLINE HRESULT IDirectXVideoDecoderService_CreateVideoDecoder(IDirectXVideoDecoderService* This,REFGUID Guid,const DXVA2_VideoDesc *pVideoDesc,const DXVA2_ConfigPictureDecode *pConfig,IDirect3DSurface9 **ppDecoderRenderTargets,UINT NumRenderTargets,IDirectXVideoDecoder **ppDecode) { ++ return This->lpVtbl->CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumRenderTargets,ppDecode); ++} ++#endif ++#endif ++ ++#endif ++ ++HRESULT STDMETHODCALLTYPE IDirectXVideoDecoderService_GetDecoderDeviceGuids_Proxy( ++ IDirectXVideoDecoderService* This, ++ UINT *pCount, ++ GUID **pGuids); ++void __RPC_STUB IDirectXVideoDecoderService_GetDecoderDeviceGuids_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirectXVideoDecoderService_GetDecoderRenderTargets_Proxy( ++ IDirectXVideoDecoderService* This, ++ REFGUID Guid, ++ UINT *pCount, ++ D3DFORMAT **pFormats); ++void __RPC_STUB IDirectXVideoDecoderService_GetDecoderRenderTargets_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirectXVideoDecoderService_GetDecoderConfigurations_Proxy( ++ IDirectXVideoDecoderService* This, ++ REFGUID Guid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ void *pReserved, ++ UINT *pCount, ++ DXVA2_ConfigPictureDecode **ppConfigs); ++void __RPC_STUB IDirectXVideoDecoderService_GetDecoderConfigurations_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirectXVideoDecoderService_CreateVideoDecoder_Proxy( ++ IDirectXVideoDecoderService* This, ++ REFGUID Guid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ const DXVA2_ConfigPictureDecode *pConfig, ++ IDirect3DSurface9 **ppDecoderRenderTargets, ++ UINT NumRenderTargets, ++ IDirectXVideoDecoder **ppDecode); ++void __RPC_STUB IDirectXVideoDecoderService_CreateVideoDecoder_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ ++#endif /* __IDirectXVideoDecoderService_INTERFACE_DEFINED__ */ ++ ++/***************************************************************************** ++ * IDirectXVideoProcessor interface ++ */ ++#ifndef __IDirectXVideoProcessor_INTERFACE_DEFINED__ ++#define __IDirectXVideoProcessor_INTERFACE_DEFINED__ ++ ++DEFINE_GUID(IID_IDirectXVideoProcessor, 0x8c3a39f0, 0x916e, 0x4690, 0x80,0x4f, 0x4c,0x80,0x01,0x35,0x5d,0x25); ++#if defined(__cplusplus) && !defined(CINTERFACE) ++MIDL_INTERFACE("8c3a39f0-916e-4690-804f-4c8001355d25") ++IDirectXVideoProcessor : public IUnknown ++{ ++ virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorService( ++ IDirectXVideoProcessorService **ppService) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetCreationParameters( ++ GUID *pDeviceGuid, ++ DXVA2_VideoDesc *pVideoDesc, ++ D3DFORMAT *pRenderTargetFormat, ++ UINT *pMaxNumSubStreams) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorCaps( ++ DXVA2_VideoProcessorCaps *pCaps) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetProcAmpRange( ++ UINT ProcAmpCap, ++ DXVA2_ValueRange *pRange) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetFilterPropertyRange( ++ UINT FilterSetting, ++ DXVA2_ValueRange *pRange) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE VideoProcessBlt( ++ IDirect3DSurface9 *pRenderTarget, ++ const DXVA2_VideoProcessBltParams *pBltParams, ++ const DXVA2_VideoSample *pSamples, ++ UINT NumSamples, ++ HANDLE *pHandleComplete) = 0; ++ ++}; ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(IDirectXVideoProcessor, 0x8c3a39f0, 0x916e, 0x4690, 0x80,0x4f, 0x4c,0x80,0x01,0x35,0x5d,0x25) ++#endif ++#else ++typedef struct IDirectXVideoProcessorVtbl { ++ BEGIN_INTERFACE ++ ++ /*** IUnknown methods ***/ ++ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ++ IDirectXVideoProcessor* This, ++ REFIID riid, ++ void **ppvObject); ++ ++ ULONG (STDMETHODCALLTYPE *AddRef)( ++ IDirectXVideoProcessor* This); ++ ++ ULONG (STDMETHODCALLTYPE *Release)( ++ IDirectXVideoProcessor* This); ++ ++ /*** IDirectXVideoProcessor methods ***/ ++ HRESULT (STDMETHODCALLTYPE *GetVideoProcessorService)( ++ IDirectXVideoProcessor* This, ++ IDirectXVideoProcessorService **ppService); ++ ++ HRESULT (STDMETHODCALLTYPE *GetCreationParameters)( ++ IDirectXVideoProcessor* This, ++ GUID *pDeviceGuid, ++ DXVA2_VideoDesc *pVideoDesc, ++ D3DFORMAT *pRenderTargetFormat, ++ UINT *pMaxNumSubStreams); ++ ++ HRESULT (STDMETHODCALLTYPE *GetVideoProcessorCaps)( ++ IDirectXVideoProcessor* This, ++ DXVA2_VideoProcessorCaps *pCaps); ++ ++ HRESULT (STDMETHODCALLTYPE *GetProcAmpRange)( ++ IDirectXVideoProcessor* This, ++ UINT ProcAmpCap, ++ DXVA2_ValueRange *pRange); ++ ++ HRESULT (STDMETHODCALLTYPE *GetFilterPropertyRange)( ++ IDirectXVideoProcessor* This, ++ UINT FilterSetting, ++ DXVA2_ValueRange *pRange); ++ ++ HRESULT (STDMETHODCALLTYPE *VideoProcessBlt)( ++ IDirectXVideoProcessor* This, ++ IDirect3DSurface9 *pRenderTarget, ++ const DXVA2_VideoProcessBltParams *pBltParams, ++ const DXVA2_VideoSample *pSamples, ++ UINT NumSamples, ++ HANDLE *pHandleComplete); ++ ++ END_INTERFACE ++} IDirectXVideoProcessorVtbl; ++interface IDirectXVideoProcessor { ++ CONST_VTBL IDirectXVideoProcessorVtbl* lpVtbl; ++}; ++ ++#ifdef COBJMACROS ++#ifndef WIDL_C_INLINE_WRAPPERS ++/*** IUnknown methods ***/ ++#define IDirectXVideoProcessor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) ++#define IDirectXVideoProcessor_AddRef(This) (This)->lpVtbl->AddRef(This) ++#define IDirectXVideoProcessor_Release(This) (This)->lpVtbl->Release(This) ++/*** IDirectXVideoProcessor methods ***/ ++#define IDirectXVideoProcessor_GetVideoProcessorService(This,ppService) (This)->lpVtbl->GetVideoProcessorService(This,ppService) ++#define IDirectXVideoProcessor_GetCreationParameters(This,pDeviceGuid,pVideoDesc,pRenderTargetFormat,pMaxNumSubStreams) (This)->lpVtbl->GetCreationParameters(This,pDeviceGuid,pVideoDesc,pRenderTargetFormat,pMaxNumSubStreams) ++#define IDirectXVideoProcessor_GetVideoProcessorCaps(This,pCaps) (This)->lpVtbl->GetVideoProcessorCaps(This,pCaps) ++#define IDirectXVideoProcessor_GetProcAmpRange(This,ProcAmpCap,pRange) (This)->lpVtbl->GetProcAmpRange(This,ProcAmpCap,pRange) ++#define IDirectXVideoProcessor_GetFilterPropertyRange(This,FilterSetting,pRange) (This)->lpVtbl->GetFilterPropertyRange(This,FilterSetting,pRange) ++#define IDirectXVideoProcessor_VideoProcessBlt(This,pRenderTarget,pBltParams,pSamples,NumSamples,pHandleComplete) (This)->lpVtbl->VideoProcessBlt(This,pRenderTarget,pBltParams,pSamples,NumSamples,pHandleComplete) ++#else ++/*** IUnknown methods ***/ ++static FORCEINLINE HRESULT IDirectXVideoProcessor_QueryInterface(IDirectXVideoProcessor* This,REFIID riid,void **ppvObject) { ++ return This->lpVtbl->QueryInterface(This,riid,ppvObject); ++} ++static FORCEINLINE ULONG IDirectXVideoProcessor_AddRef(IDirectXVideoProcessor* This) { ++ return This->lpVtbl->AddRef(This); ++} ++static FORCEINLINE ULONG IDirectXVideoProcessor_Release(IDirectXVideoProcessor* This) { ++ return This->lpVtbl->Release(This); ++} ++/*** IDirectXVideoProcessor methods ***/ ++static FORCEINLINE HRESULT IDirectXVideoProcessor_GetVideoProcessorService(IDirectXVideoProcessor* This,IDirectXVideoProcessorService **ppService) { ++ return This->lpVtbl->GetVideoProcessorService(This,ppService); ++} ++static FORCEINLINE HRESULT IDirectXVideoProcessor_GetCreationParameters(IDirectXVideoProcessor* This,GUID *pDeviceGuid,DXVA2_VideoDesc *pVideoDesc,D3DFORMAT *pRenderTargetFormat,UINT *pMaxNumSubStreams) { ++ return This->lpVtbl->GetCreationParameters(This,pDeviceGuid,pVideoDesc,pRenderTargetFormat,pMaxNumSubStreams); ++} ++static FORCEINLINE HRESULT IDirectXVideoProcessor_GetVideoProcessorCaps(IDirectXVideoProcessor* This,DXVA2_VideoProcessorCaps *pCaps) { ++ return This->lpVtbl->GetVideoProcessorCaps(This,pCaps); ++} ++static FORCEINLINE HRESULT IDirectXVideoProcessor_GetProcAmpRange(IDirectXVideoProcessor* This,UINT ProcAmpCap,DXVA2_ValueRange *pRange) { ++ return This->lpVtbl->GetProcAmpRange(This,ProcAmpCap,pRange); ++} ++static FORCEINLINE HRESULT IDirectXVideoProcessor_GetFilterPropertyRange(IDirectXVideoProcessor* This,UINT FilterSetting,DXVA2_ValueRange *pRange) { ++ return This->lpVtbl->GetFilterPropertyRange(This,FilterSetting,pRange); ++} ++static FORCEINLINE HRESULT IDirectXVideoProcessor_VideoProcessBlt(IDirectXVideoProcessor* This,IDirect3DSurface9 *pRenderTarget,const DXVA2_VideoProcessBltParams *pBltParams,const DXVA2_VideoSample *pSamples,UINT NumSamples,HANDLE *pHandleComplete) { ++ return This->lpVtbl->VideoProcessBlt(This,pRenderTarget,pBltParams,pSamples,NumSamples,pHandleComplete); ++} ++#endif ++#endif ++ ++#endif ++ ++HRESULT STDMETHODCALLTYPE IDirectXVideoProcessor_GetVideoProcessorService_Proxy( ++ IDirectXVideoProcessor* This, ++ IDirectXVideoProcessorService **ppService); ++void __RPC_STUB IDirectXVideoProcessor_GetVideoProcessorService_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirectXVideoProcessor_GetCreationParameters_Proxy( ++ IDirectXVideoProcessor* This, ++ GUID *pDeviceGuid, ++ DXVA2_VideoDesc *pVideoDesc, ++ D3DFORMAT *pRenderTargetFormat, ++ UINT *pMaxNumSubStreams); ++void __RPC_STUB IDirectXVideoProcessor_GetCreationParameters_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirectXVideoProcessor_GetVideoProcessorCaps_Proxy( ++ IDirectXVideoProcessor* This, ++ DXVA2_VideoProcessorCaps *pCaps); ++void __RPC_STUB IDirectXVideoProcessor_GetVideoProcessorCaps_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirectXVideoProcessor_GetProcAmpRange_Proxy( ++ IDirectXVideoProcessor* This, ++ UINT ProcAmpCap, ++ DXVA2_ValueRange *pRange); ++void __RPC_STUB IDirectXVideoProcessor_GetProcAmpRange_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirectXVideoProcessor_GetFilterPropertyRange_Proxy( ++ IDirectXVideoProcessor* This, ++ UINT FilterSetting, ++ DXVA2_ValueRange *pRange); ++void __RPC_STUB IDirectXVideoProcessor_GetFilterPropertyRange_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirectXVideoProcessor_VideoProcessBlt_Proxy( ++ IDirectXVideoProcessor* This, ++ IDirect3DSurface9 *pRenderTarget, ++ const DXVA2_VideoProcessBltParams *pBltParams, ++ const DXVA2_VideoSample *pSamples, ++ UINT NumSamples, ++ HANDLE *pHandleComplete); ++void __RPC_STUB IDirectXVideoProcessor_VideoProcessBlt_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ ++#endif /* __IDirectXVideoProcessor_INTERFACE_DEFINED__ */ ++ ++/***************************************************************************** ++ * IDirectXVideoProcessorService interface ++ */ ++#ifndef __IDirectXVideoProcessorService_INTERFACE_DEFINED__ ++#define __IDirectXVideoProcessorService_INTERFACE_DEFINED__ ++ ++DEFINE_GUID(IID_IDirectXVideoProcessorService, 0xfc51a552, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02); ++#if defined(__cplusplus) && !defined(CINTERFACE) ++MIDL_INTERFACE("fc51a552-d5e7-11d9-af55-00054e43ff02") ++IDirectXVideoProcessorService : public IDirectXVideoAccelerationService ++{ ++ virtual HRESULT STDMETHODCALLTYPE RegisterVideoProcessorSoftwareDevice( ++ void *pCallbacks) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorDeviceGuids( ++ const DXVA2_VideoDesc *pVideoDesc, ++ UINT *pCount, ++ GUID **pGuids) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorRenderTargets( ++ REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ UINT *pCount, ++ D3DFORMAT **pFormats) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorSubStreamFormats( ++ REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ D3DFORMAT RenderTargetFormat, ++ UINT *pCount, ++ D3DFORMAT **pFormats) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorCaps( ++ REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ D3DFORMAT RenderTargetFormat, ++ DXVA2_VideoProcessorCaps *pCaps) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetProcAmpRange( ++ REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ D3DFORMAT RenderTargetFormat, ++ UINT ProcAmpCap, ++ DXVA2_ValueRange *pRange) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetFilterPropertyRange( ++ REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ D3DFORMAT RenderTargetFormat, ++ UINT FilterSetting, ++ DXVA2_ValueRange *pRange) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor( ++ REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ D3DFORMAT RenderTargetFormat, ++ UINT MaxNumSubStreams, ++ IDirectXVideoProcessor **ppVidProcess) = 0; ++ ++}; ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(IDirectXVideoProcessorService, 0xfc51a552, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02) ++#endif ++#else ++typedef struct IDirectXVideoProcessorServiceVtbl { ++ BEGIN_INTERFACE ++ ++ /*** IUnknown methods ***/ ++ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ++ IDirectXVideoProcessorService* This, ++ REFIID riid, ++ void **ppvObject); ++ ++ ULONG (STDMETHODCALLTYPE *AddRef)( ++ IDirectXVideoProcessorService* This); ++ ++ ULONG (STDMETHODCALLTYPE *Release)( ++ IDirectXVideoProcessorService* This); ++ ++ /*** IDirectXVideoAccelerationService methods ***/ ++ HRESULT (STDMETHODCALLTYPE *CreateSurface)( ++ IDirectXVideoProcessorService* This, ++ UINT Width, ++ UINT Height, ++ UINT BackBuffers, ++ D3DFORMAT Format, ++ D3DPOOL Pool, ++ DWORD Usage, ++ DWORD DxvaType, ++ IDirect3DSurface9 **ppSurface, ++ HANDLE *pSharedHandle); ++ ++ /*** IDirectXVideoProcessorService methods ***/ ++ HRESULT (STDMETHODCALLTYPE *RegisterVideoProcessorSoftwareDevice)( ++ IDirectXVideoProcessorService* This, ++ void *pCallbacks); ++ ++ HRESULT (STDMETHODCALLTYPE *GetVideoProcessorDeviceGuids)( ++ IDirectXVideoProcessorService* This, ++ const DXVA2_VideoDesc *pVideoDesc, ++ UINT *pCount, ++ GUID **pGuids); ++ ++ HRESULT (STDMETHODCALLTYPE *GetVideoProcessorRenderTargets)( ++ IDirectXVideoProcessorService* This, ++ REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ UINT *pCount, ++ D3DFORMAT **pFormats); ++ ++ HRESULT (STDMETHODCALLTYPE *GetVideoProcessorSubStreamFormats)( ++ IDirectXVideoProcessorService* This, ++ REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ D3DFORMAT RenderTargetFormat, ++ UINT *pCount, ++ D3DFORMAT **pFormats); ++ ++ HRESULT (STDMETHODCALLTYPE *GetVideoProcessorCaps)( ++ IDirectXVideoProcessorService* This, ++ REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ D3DFORMAT RenderTargetFormat, ++ DXVA2_VideoProcessorCaps *pCaps); ++ ++ HRESULT (STDMETHODCALLTYPE *GetProcAmpRange)( ++ IDirectXVideoProcessorService* This, ++ REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ D3DFORMAT RenderTargetFormat, ++ UINT ProcAmpCap, ++ DXVA2_ValueRange *pRange); ++ ++ HRESULT (STDMETHODCALLTYPE *GetFilterPropertyRange)( ++ IDirectXVideoProcessorService* This, ++ REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ D3DFORMAT RenderTargetFormat, ++ UINT FilterSetting, ++ DXVA2_ValueRange *pRange); ++ ++ HRESULT (STDMETHODCALLTYPE *CreateVideoProcessor)( ++ IDirectXVideoProcessorService* This, ++ REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ D3DFORMAT RenderTargetFormat, ++ UINT MaxNumSubStreams, ++ IDirectXVideoProcessor **ppVidProcess); ++ ++ END_INTERFACE ++} IDirectXVideoProcessorServiceVtbl; ++interface IDirectXVideoProcessorService { ++ CONST_VTBL IDirectXVideoProcessorServiceVtbl* lpVtbl; ++}; ++ ++#ifdef COBJMACROS ++#ifndef WIDL_C_INLINE_WRAPPERS ++/*** IUnknown methods ***/ ++#define IDirectXVideoProcessorService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) ++#define IDirectXVideoProcessorService_AddRef(This) (This)->lpVtbl->AddRef(This) ++#define IDirectXVideoProcessorService_Release(This) (This)->lpVtbl->Release(This) ++/*** IDirectXVideoAccelerationService methods ***/ ++#define IDirectXVideoProcessorService_CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle) (This)->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle) ++/*** IDirectXVideoProcessorService methods ***/ ++#define IDirectXVideoProcessorService_RegisterVideoProcessorSoftwareDevice(This,pCallbacks) (This)->lpVtbl->RegisterVideoProcessorSoftwareDevice(This,pCallbacks) ++#define IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids(This,pVideoDesc,pCount,pGuids) (This)->lpVtbl->GetVideoProcessorDeviceGuids(This,pVideoDesc,pCount,pGuids) ++#define IDirectXVideoProcessorService_GetVideoProcessorRenderTargets(This,VideoProcDeviceGuid,pVideoDesc,pCount,pFormats) (This)->lpVtbl->GetVideoProcessorRenderTargets(This,VideoProcDeviceGuid,pVideoDesc,pCount,pFormats) ++#define IDirectXVideoProcessorService_GetVideoProcessorSubStreamFormats(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,pCount,pFormats) (This)->lpVtbl->GetVideoProcessorSubStreamFormats(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,pCount,pFormats) ++#define IDirectXVideoProcessorService_GetVideoProcessorCaps(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,pCaps) (This)->lpVtbl->GetVideoProcessorCaps(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,pCaps) ++#define IDirectXVideoProcessorService_GetProcAmpRange(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,ProcAmpCap,pRange) (This)->lpVtbl->GetProcAmpRange(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,ProcAmpCap,pRange) ++#define IDirectXVideoProcessorService_GetFilterPropertyRange(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,FilterSetting,pRange) (This)->lpVtbl->GetFilterPropertyRange(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,FilterSetting,pRange) ++#define IDirectXVideoProcessorService_CreateVideoProcessor(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,MaxNumSubStreams,ppVidProcess) (This)->lpVtbl->CreateVideoProcessor(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,MaxNumSubStreams,ppVidProcess) ++#else ++/*** IUnknown methods ***/ ++static FORCEINLINE HRESULT IDirectXVideoProcessorService_QueryInterface(IDirectXVideoProcessorService* This,REFIID riid,void **ppvObject) { ++ return This->lpVtbl->QueryInterface(This,riid,ppvObject); ++} ++static FORCEINLINE ULONG IDirectXVideoProcessorService_AddRef(IDirectXVideoProcessorService* This) { ++ return This->lpVtbl->AddRef(This); ++} ++static FORCEINLINE ULONG IDirectXVideoProcessorService_Release(IDirectXVideoProcessorService* This) { ++ return This->lpVtbl->Release(This); ++} ++/*** IDirectXVideoAccelerationService methods ***/ ++static FORCEINLINE HRESULT IDirectXVideoProcessorService_CreateSurface(IDirectXVideoProcessorService* This,UINT Width,UINT Height,UINT BackBuffers,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DWORD DxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) { ++ return This->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle); ++} ++/*** IDirectXVideoProcessorService methods ***/ ++static FORCEINLINE HRESULT IDirectXVideoProcessorService_RegisterVideoProcessorSoftwareDevice(IDirectXVideoProcessorService* This,void *pCallbacks) { ++ return This->lpVtbl->RegisterVideoProcessorSoftwareDevice(This,pCallbacks); ++} ++static FORCEINLINE HRESULT IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids(IDirectXVideoProcessorService* This,const DXVA2_VideoDesc *pVideoDesc,UINT *pCount,GUID **pGuids) { ++ return This->lpVtbl->GetVideoProcessorDeviceGuids(This,pVideoDesc,pCount,pGuids); ++} ++static FORCEINLINE HRESULT IDirectXVideoProcessorService_GetVideoProcessorRenderTargets(IDirectXVideoProcessorService* This,REFGUID VideoProcDeviceGuid,const DXVA2_VideoDesc *pVideoDesc,UINT *pCount,D3DFORMAT **pFormats) { ++ return This->lpVtbl->GetVideoProcessorRenderTargets(This,VideoProcDeviceGuid,pVideoDesc,pCount,pFormats); ++} ++static FORCEINLINE HRESULT IDirectXVideoProcessorService_GetVideoProcessorSubStreamFormats(IDirectXVideoProcessorService* This,REFGUID VideoProcDeviceGuid,const DXVA2_VideoDesc *pVideoDesc,D3DFORMAT RenderTargetFormat,UINT *pCount,D3DFORMAT **pFormats) { ++ return This->lpVtbl->GetVideoProcessorSubStreamFormats(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,pCount,pFormats); ++} ++static FORCEINLINE HRESULT IDirectXVideoProcessorService_GetVideoProcessorCaps(IDirectXVideoProcessorService* This,REFGUID VideoProcDeviceGuid,const DXVA2_VideoDesc *pVideoDesc,D3DFORMAT RenderTargetFormat,DXVA2_VideoProcessorCaps *pCaps) { ++ return This->lpVtbl->GetVideoProcessorCaps(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,pCaps); ++} ++static FORCEINLINE HRESULT IDirectXVideoProcessorService_GetProcAmpRange(IDirectXVideoProcessorService* This,REFGUID VideoProcDeviceGuid,const DXVA2_VideoDesc *pVideoDesc,D3DFORMAT RenderTargetFormat,UINT ProcAmpCap,DXVA2_ValueRange *pRange) { ++ return This->lpVtbl->GetProcAmpRange(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,ProcAmpCap,pRange); ++} ++static FORCEINLINE HRESULT IDirectXVideoProcessorService_GetFilterPropertyRange(IDirectXVideoProcessorService* This,REFGUID VideoProcDeviceGuid,const DXVA2_VideoDesc *pVideoDesc,D3DFORMAT RenderTargetFormat,UINT FilterSetting,DXVA2_ValueRange *pRange) { ++ return This->lpVtbl->GetFilterPropertyRange(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,FilterSetting,pRange); ++} ++static FORCEINLINE HRESULT IDirectXVideoProcessorService_CreateVideoProcessor(IDirectXVideoProcessorService* This,REFGUID VideoProcDeviceGuid,const DXVA2_VideoDesc *pVideoDesc,D3DFORMAT RenderTargetFormat,UINT MaxNumSubStreams,IDirectXVideoProcessor **ppVidProcess) { ++ return This->lpVtbl->CreateVideoProcessor(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,MaxNumSubStreams,ppVidProcess); ++} ++#endif ++#endif ++ ++#endif ++ ++HRESULT STDMETHODCALLTYPE IDirectXVideoProcessorService_RegisterVideoProcessorSoftwareDevice_Proxy( ++ IDirectXVideoProcessorService* This, ++ void *pCallbacks); ++void __RPC_STUB IDirectXVideoProcessorService_RegisterVideoProcessorSoftwareDevice_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids_Proxy( ++ IDirectXVideoProcessorService* This, ++ const DXVA2_VideoDesc *pVideoDesc, ++ UINT *pCount, ++ GUID **pGuids); ++void __RPC_STUB IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirectXVideoProcessorService_GetVideoProcessorRenderTargets_Proxy( ++ IDirectXVideoProcessorService* This, ++ REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ UINT *pCount, ++ D3DFORMAT **pFormats); ++void __RPC_STUB IDirectXVideoProcessorService_GetVideoProcessorRenderTargets_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirectXVideoProcessorService_GetVideoProcessorSubStreamFormats_Proxy( ++ IDirectXVideoProcessorService* This, ++ REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ D3DFORMAT RenderTargetFormat, ++ UINT *pCount, ++ D3DFORMAT **pFormats); ++void __RPC_STUB IDirectXVideoProcessorService_GetVideoProcessorSubStreamFormats_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirectXVideoProcessorService_GetVideoProcessorCaps_Proxy( ++ IDirectXVideoProcessorService* This, ++ REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ D3DFORMAT RenderTargetFormat, ++ DXVA2_VideoProcessorCaps *pCaps); ++void __RPC_STUB IDirectXVideoProcessorService_GetVideoProcessorCaps_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirectXVideoProcessorService_GetProcAmpRange_Proxy( ++ IDirectXVideoProcessorService* This, ++ REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ D3DFORMAT RenderTargetFormat, ++ UINT ProcAmpCap, ++ DXVA2_ValueRange *pRange); ++void __RPC_STUB IDirectXVideoProcessorService_GetProcAmpRange_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirectXVideoProcessorService_GetFilterPropertyRange_Proxy( ++ IDirectXVideoProcessorService* This, ++ REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ D3DFORMAT RenderTargetFormat, ++ UINT FilterSetting, ++ DXVA2_ValueRange *pRange); ++void __RPC_STUB IDirectXVideoProcessorService_GetFilterPropertyRange_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDirectXVideoProcessorService_CreateVideoProcessor_Proxy( ++ IDirectXVideoProcessorService* This, ++ REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc *pVideoDesc, ++ D3DFORMAT RenderTargetFormat, ++ UINT MaxNumSubStreams, ++ IDirectXVideoProcessor **ppVidProcess); ++void __RPC_STUB IDirectXVideoProcessorService_CreateVideoProcessor_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ ++#endif /* __IDirectXVideoProcessorService_INTERFACE_DEFINED__ */ ++ ++#endif /* _D3D9_H_ */ ++#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ ++/* Begin additional prototypes for all interfaces */ ++ ++ ++/* End additional prototypes */ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* __dxva2api_h__ */ +diff --git a/mingw-w64-headers/include/dxva2api.idl b/mingw-w64-headers/include/dxva2api.idl +index 8aa03897..f8c3db14 100644 +--- a/mingw-w64-headers/include/dxva2api.idl ++++ b/mingw-w64-headers/include/dxva2api.idl +@@ -6,6 +6,8 @@ + + import "unknwn.idl"; + ++cpp_quote("#include ") ++ + /* Fake widl types */ + cpp_quote("#if 0") + typedef DWORD IDirect3DDevice9; +@@ -14,12 +16,15 @@ typedef DWORD D3DFORMAT; + typedef DWORD D3DPOOL; + cpp_quote("#endif") + ++cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)") ++ + interface IDirectXVideoDecoderService; ++interface IDirectXVideoProcessorService; + +-cpp_quote("#ifndef __REFERENCE_TIME_DEFINED") +-cpp_quote("#define __REFERENCE_TIME_DEFINED") +-cpp_quote("typedef LONGLONG REFERENCE_TIME;") +-cpp_quote("#endif /*__REFERENCE_TIME_DEFINED*/") ++#ifndef __REFERENCE_TIME_DEFINED ++#define __REFERENCE_TIME_DEFINED ++typedef LONGLONG REFERENCE_TIME; ++#endif /*__REFERENCE_TIME_DEFINED*/ + + cpp_quote("#define DXVA2_ProcAmp_None 0x0000") + cpp_quote("#define DXVA2_ProcAmp_Brightness 0x0001") +@@ -142,19 +147,19 @@ cpp_quote(" DXVA2_VideoTransferMatrix_B + cpp_quote(" DXVA2_VideoTransferMatrix_SMPTE240M = 3 ") + cpp_quote("} DXVA2_VideoTransferMatrix;") + cpp_quote("") +-cpp_quote("typedef struct _DXVA2_AYUVSample16 {") +-cpp_quote(" USHORT Cr;") +-cpp_quote(" USHORT Cb;") +-cpp_quote(" USHORT Y;") +-cpp_quote(" USHORT Alpha;") +-cpp_quote("} DXVA2_AYUVSample16;") +-cpp_quote("") +-cpp_quote("typedef struct _DXVA2_AYUVSample8 {") +-cpp_quote(" UCHAR Cr;") +-cpp_quote(" UCHAR Cb;") +-cpp_quote(" UCHAR Y;") +-cpp_quote(" UCHAR Alpha;") +-cpp_quote("} DXVA2_AYUVSample8;") ++typedef struct _DXVA2_AYUVSample16 { ++ USHORT Cr; ++ USHORT Cb; ++ USHORT Y; ++ USHORT Alpha; ++} DXVA2_AYUVSample16; ++ ++typedef struct _DXVA2_AYUVSample8 { ++ UCHAR Cr; ++ UCHAR Cb; ++ UCHAR Y; ++ UCHAR Alpha; ++} DXVA2_AYUVSample8; + + typedef struct _DXVA2_ConfigPictureDecode { + GUID guidConfigBitstreamEncryption; +@@ -219,40 +224,40 @@ typedef struct _DXVA2_ExtendedFormat { + }; + } DXVA2_ExtendedFormat; + +-cpp_quote("typedef struct _DXVA2_Fixed32 {") +-cpp_quote(" __C89_NAMELESS union {") +-cpp_quote(" __C89_NAMELESS struct {") +-cpp_quote(" USHORT Fraction;") +-cpp_quote(" SHORT Value;") +-cpp_quote(" } DUMMYSTRUCTNAME;") +-cpp_quote(" LONG ll;") +-cpp_quote(" } DUMMYUNIONNAME;") +-cpp_quote("} DXVA2_Fixed32;") +-cpp_quote("") +-cpp_quote("typedef struct _DXVA2_FilterValues {") +-cpp_quote(" DXVA2_Fixed32 Level;") +-cpp_quote(" DXVA2_Fixed32 Threshold;") +-cpp_quote(" DXVA2_Fixed32 Radius;") +-cpp_quote("} DXVA2_FilterValues;") ++typedef struct _DXVA2_Fixed32 { ++ __C89_NAMELESS union { ++ __C89_NAMELESS struct { ++ USHORT Fraction; ++ SHORT Value; ++ } DUMMYSTRUCTNAME; ++ LONG ll; ++ } DUMMYUNIONNAME; ++} DXVA2_Fixed32; ++ ++typedef struct _DXVA2_FilterValues { ++ DXVA2_Fixed32 Level; ++ DXVA2_Fixed32 Threshold; ++ DXVA2_Fixed32 Radius; ++} DXVA2_FilterValues; + + typedef struct _DXVA2_Frequency { + UINT Numerator; + UINT Denominator; + } DXVA2_Frequency; + +-cpp_quote("typedef struct _DXVA2_ProcAmpValues {") +-cpp_quote(" DXVA2_Fixed32 Brightness;") +-cpp_quote(" DXVA2_Fixed32 Contrast;") +-cpp_quote(" DXVA2_Fixed32 Hue;") +-cpp_quote(" DXVA2_Fixed32 Saturation;") +-cpp_quote("} DXVA2_ProcAmpValues;") +-cpp_quote("") +-cpp_quote("typedef struct _DXVA2_ValueRange {") +-cpp_quote(" DXVA2_Fixed32 MinValue;") +-cpp_quote(" DXVA2_Fixed32 MaxValue;") +-cpp_quote(" DXVA2_Fixed32 DefaultValue;") +-cpp_quote(" DXVA2_Fixed32 StepSize;") +-cpp_quote("} DXVA2_ValueRange;") ++typedef struct _DXVA2_ProcAmpValues { ++ DXVA2_Fixed32 Brightness; ++ DXVA2_Fixed32 Contrast; ++ DXVA2_Fixed32 Hue; ++ DXVA2_Fixed32 Saturation; ++} DXVA2_ProcAmpValues; ++ ++typedef struct _DXVA2_ValueRange { ++ DXVA2_Fixed32 MinValue; ++ DXVA2_Fixed32 MaxValue; ++ DXVA2_Fixed32 DefaultValue; ++ DXVA2_Fixed32 StepSize; ++} DXVA2_ValueRange; + + typedef struct _DXVA2_VideoDesc { + UINT SampleWidth; +@@ -317,57 +322,93 @@ cpp_quote("DXVA2_DetailFilterTech_Unknow + cpp_quote("DXVA2_DetailFilterTech_Edge") + cpp_quote("DXVA2_DetailFilterTech_Sharpening") + cpp_quote("*/") +-cpp_quote("typedef struct _DXVA2_VideoProcessBltParams {") +-cpp_quote(" REFERENCE_TIME TargetFrame;") +-cpp_quote(" RECT TargetRect;") +-cpp_quote(" SIZE ConstrictionSize;") +-cpp_quote(" UINT StreamingFlags;") +-cpp_quote(" DXVA2_AYUVSample16 BackgroundColor;") +-cpp_quote(" DXVA2_ExtendedFormat DestFormat;") +-cpp_quote(" DXVA2_ProcAmpValues ProcAmpValues;") +-cpp_quote(" DXVA2_Fixed32 Alpha;") +-cpp_quote(" DXVA2_FilterValues NoiseFilterLuma;") +-cpp_quote(" DXVA2_FilterValues NoiseFilterChroma;") +-cpp_quote(" DXVA2_FilterValues DetailFilterLuma;") +-cpp_quote(" DXVA2_FilterValues DetailFilterChroma;") +-cpp_quote(" DWORD DestData;") +-cpp_quote("} DXVA2_VideoProcessBltParams;") +-cpp_quote("") +-cpp_quote("#ifdef _D3D9_H_") +-cpp_quote("typedef struct _DXVA2_VideoProcessorCaps {") +-cpp_quote(" UINT DeviceCaps;") +-cpp_quote(" D3DPOOL InputPool;") +-cpp_quote(" UINT NumForwardRefSamples;") +-cpp_quote(" UINT NumBackwardRefSamples;") +-cpp_quote(" UINT Reserved;") +-cpp_quote(" UINT DeinterlaceTechnology;") +-cpp_quote(" UINT ProcAmpControlCaps;") +-cpp_quote(" UINT VideoProcessorOperations;") +-cpp_quote(" UINT NoiseFilterTechnology;") +-cpp_quote(" UINT DetailFilterTechnology;") +-cpp_quote("} DXVA2_VideoProcessorCaps;") +-cpp_quote("#endif") +-cpp_quote("") +-cpp_quote("/* SampleData") +-cpp_quote("DXVA2_SampleData_RFF") +-cpp_quote("DXVA2_SampleData_TFF") +-cpp_quote("DXVA2_SampleData_RFF_TFF_Present") +-cpp_quote("*/") +-cpp_quote("") +-cpp_quote("#ifdef _D3D9_H_") +-cpp_quote("typedef struct _DXVA2_VideoSample {") +-cpp_quote(" REFERENCE_TIME Start;") +-cpp_quote(" REFERENCE_TIME End;") +-cpp_quote(" DXVA2_ExtendedFormat SampleFormat;") +-cpp_quote(" IDirect3DSurface9* SrcSurface;") +-cpp_quote(" RECT SrcRect;") +-cpp_quote(" RECT DstRect;") +-cpp_quote(" DXVA2_AYUVSample8 Pal[16];") +-cpp_quote(" DXVA2_Fixed32 PlanarAlpha;") +-cpp_quote(" DWORD SampleData;") +-cpp_quote("} DXVA2_VideoSample;") +-cpp_quote("#endif") +-cpp_quote("") ++typedef struct _DXVA2_VideoProcessBltParams { ++ REFERENCE_TIME TargetFrame; ++ RECT TargetRect; ++ SIZE ConstrictionSize; ++ UINT StreamingFlags; ++ DXVA2_AYUVSample16 BackgroundColor; ++ DXVA2_ExtendedFormat DestFormat; ++ DXVA2_ProcAmpValues ProcAmpValues; ++ DXVA2_Fixed32 Alpha; ++ DXVA2_FilterValues NoiseFilterLuma; ++ DXVA2_FilterValues NoiseFilterChroma; ++ DXVA2_FilterValues DetailFilterLuma; ++ DXVA2_FilterValues DetailFilterChroma; ++ DWORD DestData; ++} DXVA2_VideoProcessBltParams; ++ ++#ifdef _D3D9_H_ ++typedef struct _DXVA2_VideoProcessorCaps { ++ UINT DeviceCaps; ++ D3DPOOL InputPool; ++ UINT NumForwardRefSamples; ++ UINT NumBackwardRefSamples; ++ UINT Reserved; ++ UINT DeinterlaceTechnology; ++ UINT ProcAmpControlCaps; ++ UINT VideoProcessorOperations; ++ UINT NoiseFilterTechnology; ++ UINT DetailFilterTechnology; ++} DXVA2_VideoProcessorCaps; ++#endif ++ ++cpp_quote("/* deinterlacing capabilities */") ++cpp_quote("#define DXVA2_DeinterlaceTech_Unknown 0x0") ++cpp_quote("#define DXVA2_DeinterlaceTech_BOBLineReplicate 0x1") ++cpp_quote("#define DXVA2_DeinterlaceTech_BOBVerticalStretch 0x2") ++cpp_quote("#define DXVA2_DeinterlaceTech_BOBVerticalStretch4Tap 0x4") ++cpp_quote("#define DXVA2_DeinterlaceTech_MedianFiltering 0x8") ++cpp_quote("#define DXVA2_DeinterlaceTech_EdgeFiltering 0x10") ++cpp_quote("#define DXVA2_DeinterlaceTech_FieldAdaptive 0x20") ++cpp_quote("#define DXVA2_DeinterlaceTech_PixelAdaptive 0x40") ++cpp_quote("#define DXVA2_DeinterlaceTech_MotionVectorSteered 0x80") ++cpp_quote("#define DXVA2_DeinterlaceTech_InverseTelecine 0x100") ++cpp_quote("#define DXVA2_DeinterlaceTech_Mask 0x1FF") ++ ++cpp_quote("/* VideoProcessor capabilities */") ++cpp_quote("#define DXVA2_VideoProcess_None 0x0") ++cpp_quote("#define DXVA2_VideoProcess_YUV2RGB 0x1") ++cpp_quote("#define DXVA2_VideoProcess_StretchX 0x2") ++cpp_quote("#define DXVA2_VideoProcess_StretchY 0x4") ++cpp_quote("#define DXVA2_VideoProcess_AlphaBlend 0x8") ++cpp_quote("#define DXVA2_VideoProcess_SubRects 0x10") ++cpp_quote("#define DXVA2_VideoProcess_SubStreams 0x20") ++cpp_quote("#define DXVA2_VideoProcess_SubStreamsExtended 0x40") ++cpp_quote("#define DXVA2_VideoProcess_YUV2RGBExtended 0x80") ++cpp_quote("#define DXVA2_VideoProcess_AlphaBlendExtended 0x100") ++cpp_quote("#define DXVA2_VideoProcess_Constriction 0x200") ++cpp_quote("#define DXVA2_VideoProcess_NoiseFilter 0x400") ++cpp_quote("#define DXVA2_VideoProcess_DetailFilter 0x800") ++cpp_quote("#define DXVA2_VideoProcess_PlanarAlpha 0x1000") ++cpp_quote("#define DXVA2_VideoProcess_LinearScaling 0x2000") ++cpp_quote("#define DXVA2_VideoProcess_GammaCompensated 0x4000") ++cpp_quote("#define DXVA2_VideoProcess_MaintainsOriginalFieldData 0x8000") ++cpp_quote("#define DXVA2_VideoProcess_Mask 0xFFFF") ++ ++cpp_quote("/* SampleData */") ++enum ++{ ++ DXVA2_SampleData_RFF = 1, ++ DXVA2_SampleData_TFF = 2, ++ DXVA2_SampleData_RFF_TFF_Present = 4, ++ DXVA2_SampleData_Mask = 0xFFFF ++}; ++ ++#ifdef _D3D9_H_ ++typedef struct _DXVA2_VideoSample { ++ REFERENCE_TIME Start; ++ REFERENCE_TIME End; ++ DXVA2_ExtendedFormat SampleFormat; ++ IDirect3DSurface9* SrcSurface; ++ RECT SrcRect; ++ RECT DstRect; ++ DXVA2_AYUVSample8 Pal[16]; ++ DXVA2_Fixed32 PlanarAlpha; ++ DWORD SampleData; ++} DXVA2_VideoSample; ++#endif ++ + cpp_quote("/* Constants */") + cpp_quote("") + cpp_quote("#define DXVA2_VideoDecoderRenderTarget 0") +@@ -385,13 +426,13 @@ cpp_quote("#define DXVA2_BitStreamDateBu + cpp_quote("#define DXVA2_MotionVectorBuffer 7") + cpp_quote("#define DXVA2_FilmGrainBuffer 8") + cpp_quote("") +-cpp_quote("__forceinline const DXVA2_Fixed32 DXVA2_Fixed32OpaqueAlpha (void) {") ++cpp_quote("__forceinline DXVA2_Fixed32 DXVA2_Fixed32OpaqueAlpha (void) {") + cpp_quote(" DXVA2_Fixed32 f32;") + cpp_quote(" f32.ll = 0 + (1 << 16);") + cpp_quote(" return f32;") + cpp_quote("}") + cpp_quote("") +-cpp_quote("__forceinline const DXVA2_Fixed32 DXVA2_Fixed32TransparentAlpha (void) {") ++cpp_quote("__forceinline DXVA2_Fixed32 DXVA2_Fixed32TransparentAlpha (void) {") + cpp_quote(" DXVA2_Fixed32 f32;") + cpp_quote(" f32.ll = 0;") + cpp_quote(" return f32;") +@@ -481,4 +522,84 @@ interface IDirectXVideoDecoderService : + [in] UINT NumRenderTargets, [out] IDirectXVideoDecoder **ppDecode); + } + ++[ ++ object, ++ uuid(8c3a39f0-916e-4690-804f-4c8001355d25), ++ local ++] ++interface IDirectXVideoProcessor : IUnknown ++{ ++ HRESULT GetVideoProcessorService([out] IDirectXVideoProcessorService** ppService); ++ ++ HRESULT GetCreationParameters( ++ [out] GUID* pDeviceGuid, ++ [out] DXVA2_VideoDesc* pVideoDesc, ++ [out] D3DFORMAT* pRenderTargetFormat, ++ [out] UINT* pMaxNumSubStreams); ++ HRESULT GetVideoProcessorCaps([out] DXVA2_VideoProcessorCaps* pCaps); ++ HRESULT GetProcAmpRange( ++ [in] UINT ProcAmpCap, ++ [out] DXVA2_ValueRange* pRange); ++ HRESULT GetFilterPropertyRange( ++ [in] UINT FilterSetting, ++ [out] DXVA2_ValueRange* pRange); ++ HRESULT VideoProcessBlt( ++ [in] IDirect3DSurface9* pRenderTarget, ++ [in] const DXVA2_VideoProcessBltParams* pBltParams, ++ [in] const DXVA2_VideoSample* pSamples, ++ [in] UINT NumSamples, ++ [out] HANDLE* pHandleComplete); ++}; ++ ++[ ++ object, ++ uuid(fc51a552-d5e7-11d9-af55-00054e43ff02), ++ local ++] ++interface IDirectXVideoProcessorService : IDirectXVideoAccelerationService ++{ ++ HRESULT RegisterVideoProcessorSoftwareDevice([in] void* pCallbacks); ++ ++ HRESULT GetVideoProcessorDeviceGuids( ++ [in] const DXVA2_VideoDesc* pVideoDesc, ++ [out] UINT* pCount, ++ [out] GUID** pGuids); ++ HRESULT GetVideoProcessorRenderTargets( ++ [in] REFGUID VideoProcDeviceGuid, ++ [in] const DXVA2_VideoDesc* pVideoDesc, ++ [out] UINT* pCount, ++ [out] D3DFORMAT** pFormats); ++ HRESULT GetVideoProcessorSubStreamFormats( ++ [in] REFGUID VideoProcDeviceGuid, ++ [in] const DXVA2_VideoDesc* pVideoDesc, ++ [in] D3DFORMAT RenderTargetFormat, ++ [out] UINT* pCount, ++ [out] D3DFORMAT** pFormats); ++ HRESULT GetVideoProcessorCaps( ++ [in] REFGUID VideoProcDeviceGuid, ++ [in] const DXVA2_VideoDesc* pVideoDesc, ++ [in] D3DFORMAT RenderTargetFormat, ++ [out] DXVA2_VideoProcessorCaps* pCaps); ++ HRESULT GetProcAmpRange( ++ [in] REFGUID VideoProcDeviceGuid, ++ [in] const DXVA2_VideoDesc* pVideoDesc, ++ [in] D3DFORMAT RenderTargetFormat, ++ [in] UINT ProcAmpCap, ++ [out] DXVA2_ValueRange* pRange); ++ HRESULT GetFilterPropertyRange( ++ [in] REFGUID VideoProcDeviceGuid, ++ [in] const DXVA2_VideoDesc* pVideoDesc, ++ [in] D3DFORMAT RenderTargetFormat, ++ [in] UINT FilterSetting, ++ [out] DXVA2_ValueRange* pRange); ++ HRESULT CreateVideoProcessor( ++ [in] REFGUID VideoProcDeviceGuid, ++ [in] const DXVA2_VideoDesc* pVideoDesc, ++ [in] D3DFORMAT RenderTargetFormat, ++ [in] UINT MaxNumSubStreams, ++ [out] IDirectXVideoProcessor** ppVidProcess); ++} ++ + cpp_quote("#endif /* _D3D9_H_ */") ++ ++cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */") +-- +2.14.1 + diff --git a/mingw-w64-crt-git/0003-DirectX-11-fixes-for-VLC.patch b/mingw-w64-crt-git/0003-DirectX-11-fixes-for-VLC.patch new file mode 100644 index 0000000000..5ee22ed411 --- /dev/null +++ b/mingw-w64-crt-git/0003-DirectX-11-fixes-for-VLC.patch @@ -0,0 +1,4818 @@ +From 36ca5cc53511a3da352759b613b0bc988ba97cd2 Mon Sep 17 00:00:00 2001 +From: Alexey Pavlov +Date: Thu, 14 Sep 2017 11:21:16 +0300 +Subject: [PATCH 3/3] DirectX 11 fixes for VLC + +--- + mingw-w64-headers/Makefile.am | 4 + + mingw-w64-headers/Makefile.in | 4 + + mingw-w64-headers/direct-x/include/d3d11.h | 5 + + mingw-w64-headers/direct-x/include/d3d11.idl | 5 + + mingw-w64-headers/direct-x/include/d3d11_1.h | 5 + + mingw-w64-headers/direct-x/include/d3d11_1.idl | 6 + + mingw-w64-headers/direct-x/include/dxgi1_2.h | 744 ++++++++ + mingw-w64-headers/direct-x/include/dxgi1_2.idl | 151 ++ + mingw-w64-headers/direct-x/include/dxgi1_3.h | 2131 ++++++++++++++++++++++ + mingw-w64-headers/direct-x/include/dxgi1_3.idl | 242 +++ + mingw-w64-headers/direct-x/include/dxgi1_4.h | 525 ++++++ + mingw-w64-headers/direct-x/include/dxgi1_4.idl | 76 + + mingw-w64-headers/direct-x/include/dxgi1_5.h | 485 +++++ + mingw-w64-headers/direct-x/include/dxgi1_5.idl | 51 + + mingw-w64-headers/direct-x/include/dxgidebug.h | 139 ++ + mingw-w64-headers/direct-x/include/dxgidebug.idl | 43 + + 16 files changed, 4616 insertions(+) + create mode 100644 mingw-w64-headers/direct-x/include/dxgi1_3.h + create mode 100644 mingw-w64-headers/direct-x/include/dxgi1_3.idl + create mode 100644 mingw-w64-headers/direct-x/include/dxgi1_4.h + create mode 100644 mingw-w64-headers/direct-x/include/dxgi1_4.idl + create mode 100644 mingw-w64-headers/direct-x/include/dxgi1_5.h + create mode 100644 mingw-w64-headers/direct-x/include/dxgi1_5.idl + create mode 100644 mingw-w64-headers/direct-x/include/dxgidebug.h + create mode 100644 mingw-w64-headers/direct-x/include/dxgidebug.idl + +diff --git a/mingw-w64-headers/Makefile.am b/mingw-w64-headers/Makefile.am +index dae83478..00f32ac5 100644 +--- a/mingw-w64-headers/Makefile.am ++++ b/mingw-w64-headers/Makefile.am +@@ -213,6 +213,10 @@ IDL_SRCS = \ + direct-x/include/dmodshow.idl \ + direct-x/include/dxgi.idl \ + direct-x/include/dxgi1_2.idl \ ++ direct-x/include/dxgi1_3.idl \ ++ direct-x/include/dxgi1_4.idl \ ++ direct-x/include/dxgi1_5.idl \ ++ direct-x/include/dxgidebug.idl \ + direct-x/include/mediaobj.idl \ + direct-x/include/medparam.idl \ + direct-x/include/mmstream.idl \ +diff --git a/mingw-w64-headers/Makefile.in b/mingw-w64-headers/Makefile.in +index 3282b088..d938283a 100644 +--- a/mingw-w64-headers/Makefile.in ++++ b/mingw-w64-headers/Makefile.in +@@ -512,6 +512,10 @@ EXTRA_HEADERS = \ + @HAVE_WIDL_TRUE@ direct-x/include/dmodshow.idl \ + @HAVE_WIDL_TRUE@ direct-x/include/dxgi.idl \ + @HAVE_WIDL_TRUE@ direct-x/include/dxgi1_2.idl \ ++@HAVE_WIDL_TRUE@ direct-x/include/dxgi1_3.idl \ ++@HAVE_WIDL_TRUE@ direct-x/include/dxgi1_4.idl \ ++@HAVE_WIDL_TRUE@ direct-x/include/dxgi1_5.idl \ ++@HAVE_WIDL_TRUE@ direct-x/include/dxgidebug.idl \ + @HAVE_WIDL_TRUE@ direct-x/include/mediaobj.idl \ + @HAVE_WIDL_TRUE@ direct-x/include/medparam.idl \ + @HAVE_WIDL_TRUE@ direct-x/include/mmstream.idl \ +diff --git a/mingw-w64-headers/direct-x/include/d3d11.h b/mingw-w64-headers/direct-x/include/d3d11.h +index 52c7248f..548a11a8 100644 +--- a/mingw-w64-headers/direct-x/include/d3d11.h ++++ b/mingw-w64-headers/direct-x/include/d3d11.h +@@ -13018,6 +13018,11 @@ typedef enum D3D11_CREATE_DEVICE_FLAG { + D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT = 0x100, + D3D11_CREATE_DEVICE_VIDEO_SUPPORT = 0x800 + } D3D11_CREATE_DEVICE_FLAG; ++typedef enum D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT { ++ D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT_INPUT = 0x00000001, ++ D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT_OUTPUT = 0x00000002, ++} D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT; ++ + #define D3D11_SDK_VERSION (7) + + #include +diff --git a/mingw-w64-headers/direct-x/include/d3d11.idl b/mingw-w64-headers/direct-x/include/d3d11.idl +index 244020a8..2efb8f20 100644 +--- a/mingw-w64-headers/direct-x/include/d3d11.idl ++++ b/mingw-w64-headers/direct-x/include/d3d11.idl +@@ -3363,6 +3363,11 @@ typedef enum D3D11_CREATE_DEVICE_FLAG { + D3D11_CREATE_DEVICE_VIDEO_SUPPORT = 0x0800 + } D3D11_CREATE_DEVICE_FLAG; + ++typedef enum D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT { ++ D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT_INPUT = 0x00000001, ++ D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT_OUTPUT = 0x00000002, ++} D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT; ++ + const UINT D3D11_SDK_VERSION = 7; + + cpp_quote("#include ") +diff --git a/mingw-w64-headers/direct-x/include/d3d11_1.h b/mingw-w64-headers/direct-x/include/d3d11_1.h +index 51ca735c..2460b3d8 100644 +--- a/mingw-w64-headers/direct-x/include/d3d11_1.h ++++ b/mingw-w64-headers/direct-x/include/d3d11_1.h +@@ -59,6 +59,11 @@ typedef interface ID3D11Device1 ID3D11Device1; + extern "C" { + #endif + ++typedef enum D3D11_COPY_FLAGS { ++ D3D11_COPY_NO_OVERWRITE = 0x1, ++ D3D11_COPY_DISCARD = 0x2 ++} D3D11_COPY_FLAGS; ++ + typedef enum D3D11_LOGIC_OP { + D3D11_LOGIC_OP_CLEAR = 0, + D3D11_LOGIC_OP_SET = 1, +diff --git a/mingw-w64-headers/direct-x/include/d3d11_1.idl b/mingw-w64-headers/direct-x/include/d3d11_1.idl +index 1a46abf1..319d522e 100644 +--- a/mingw-w64-headers/direct-x/include/d3d11_1.idl ++++ b/mingw-w64-headers/direct-x/include/d3d11_1.idl +@@ -22,6 +22,12 @@ import "dxgi1_2.idl"; + import "d3dcommon.idl"; + import "d3d11.idl"; + ++typedef enum D3D11_COPY_FLAGS ++{ ++ D3D11_COPY_NO_OVERWRITE = 0x1, ++ D3D11_COPY_DISCARD = 0x2, ++} D3D11_COPY_FLAGS; ++ + typedef enum D3D11_LOGIC_OP { + D3D11_LOGIC_OP_CLEAR = 0, + D3D11_LOGIC_OP_SET, +diff --git a/mingw-w64-headers/direct-x/include/dxgi1_2.h b/mingw-w64-headers/direct-x/include/dxgi1_2.h +index de3f3599..3af09c7b 100644 +--- a/mingw-w64-headers/direct-x/include/dxgi1_2.h ++++ b/mingw-w64-headers/direct-x/include/dxgi1_2.h +@@ -17,6 +17,16 @@ + + /* Forward declarations */ + ++#ifndef __IDXGIDisplayControl_FWD_DEFINED__ ++#define __IDXGIDisplayControl_FWD_DEFINED__ ++typedef interface IDXGIDisplayControl IDXGIDisplayControl; ++#endif ++ ++#ifndef __IDXGIOutputDuplication_FWD_DEFINED__ ++#define __IDXGIOutputDuplication_FWD_DEFINED__ ++typedef interface IDXGIOutputDuplication IDXGIOutputDuplication; ++#endif ++ + #ifndef __IDXGIDevice2_FWD_DEFINED__ + #define __IDXGIDevice2_FWD_DEFINED__ + typedef interface IDXGIDevice2 IDXGIDevice2; +@@ -37,6 +47,11 @@ typedef interface IDXGIFactory2 IDXGIFactory2; + typedef interface IDXGIAdapter2 IDXGIAdapter2; + #endif + ++#ifndef __IDXGIOutput1_FWD_DEFINED__ ++#define __IDXGIOutput1_FWD_DEFINED__ ++typedef interface IDXGIOutput1 IDXGIOutput1; ++#endif ++ + /* Headers for imported files */ + + #include +@@ -45,6 +60,423 @@ typedef interface IDXGIAdapter2 IDXGIAdapter2; + extern "C" { + #endif + ++/***************************************************************************** ++ * IDXGIDisplayControl interface ++ */ ++#ifndef __IDXGIDisplayControl_INTERFACE_DEFINED__ ++#define __IDXGIDisplayControl_INTERFACE_DEFINED__ ++ ++DEFINE_GUID(IID_IDXGIDisplayControl, 0xea9dbf1a, 0xc88e, 0x4486, 0x85,0x4a, 0x98,0xaa,0x01,0x38,0xf3,0x0c); ++#if defined(__cplusplus) && !defined(CINTERFACE) ++MIDL_INTERFACE("ea9dbf1a-c88e-4486-854a-98aa0138f30c") ++IDXGIDisplayControl : public IUnknown ++{ ++ virtual WINBOOL STDMETHODCALLTYPE IsStereoEnabled( ++ ) = 0; ++ ++ virtual void STDMETHODCALLTYPE SetStereoEnabled( ++ WINBOOL enabled) = 0; ++ ++}; ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(IDXGIDisplayControl, 0xea9dbf1a, 0xc88e, 0x4486, 0x85,0x4a, 0x98,0xaa,0x01,0x38,0xf3,0x0c) ++#endif ++#else ++typedef struct IDXGIDisplayControlVtbl { ++ BEGIN_INTERFACE ++ ++ /*** IUnknown methods ***/ ++ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ++ IDXGIDisplayControl* This, ++ REFIID riid, ++ void **ppvObject); ++ ++ ULONG (STDMETHODCALLTYPE *AddRef)( ++ IDXGIDisplayControl* This); ++ ++ ULONG (STDMETHODCALLTYPE *Release)( ++ IDXGIDisplayControl* This); ++ ++ /*** IDXGIDisplayControl methods ***/ ++ WINBOOL (STDMETHODCALLTYPE *IsStereoEnabled)( ++ IDXGIDisplayControl* This); ++ ++ void (STDMETHODCALLTYPE *SetStereoEnabled)( ++ IDXGIDisplayControl* This, ++ WINBOOL enabled); ++ ++ END_INTERFACE ++} IDXGIDisplayControlVtbl; ++interface IDXGIDisplayControl { ++ CONST_VTBL IDXGIDisplayControlVtbl* lpVtbl; ++}; ++ ++#ifdef COBJMACROS ++#ifndef WIDL_C_INLINE_WRAPPERS ++/*** IUnknown methods ***/ ++#define IDXGIDisplayControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) ++#define IDXGIDisplayControl_AddRef(This) (This)->lpVtbl->AddRef(This) ++#define IDXGIDisplayControl_Release(This) (This)->lpVtbl->Release(This) ++/*** IDXGIDisplayControl methods ***/ ++#define IDXGIDisplayControl_IsStereoEnabled(This) (This)->lpVtbl->IsStereoEnabled(This) ++#define IDXGIDisplayControl_SetStereoEnabled(This,enabled) (This)->lpVtbl->SetStereoEnabled(This,enabled) ++#else ++/*** IUnknown methods ***/ ++static FORCEINLINE HRESULT IDXGIDisplayControl_QueryInterface(IDXGIDisplayControl* This,REFIID riid,void **ppvObject) { ++ return This->lpVtbl->QueryInterface(This,riid,ppvObject); ++} ++static FORCEINLINE ULONG IDXGIDisplayControl_AddRef(IDXGIDisplayControl* This) { ++ return This->lpVtbl->AddRef(This); ++} ++static FORCEINLINE ULONG IDXGIDisplayControl_Release(IDXGIDisplayControl* This) { ++ return This->lpVtbl->Release(This); ++} ++/*** IDXGIDisplayControl methods ***/ ++static FORCEINLINE WINBOOL IDXGIDisplayControl_IsStereoEnabled(IDXGIDisplayControl* This) { ++ return This->lpVtbl->IsStereoEnabled(This); ++} ++static FORCEINLINE void IDXGIDisplayControl_SetStereoEnabled(IDXGIDisplayControl* This,WINBOOL enabled) { ++ This->lpVtbl->SetStereoEnabled(This,enabled); ++} ++#endif ++#endif ++ ++#endif ++ ++WINBOOL STDMETHODCALLTYPE IDXGIDisplayControl_IsStereoEnabled_Proxy( ++ IDXGIDisplayControl* This); ++void __RPC_STUB IDXGIDisplayControl_IsStereoEnabled_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++void STDMETHODCALLTYPE IDXGIDisplayControl_SetStereoEnabled_Proxy( ++ IDXGIDisplayControl* This, ++ WINBOOL enabled); ++void __RPC_STUB IDXGIDisplayControl_SetStereoEnabled_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ ++#endif /* __IDXGIDisplayControl_INTERFACE_DEFINED__ */ ++ ++typedef struct DXGI_OUTDUPL_MOVE_RECT { ++ POINT SourcePoint; ++ RECT DestinationRect; ++} DXGI_OUTDUPL_MOVE_RECT; ++typedef struct DXGI_OUTDUPL_DESC { ++ DXGI_MODE_DESC ModeDesc; ++ DXGI_MODE_ROTATION Rotation; ++ WINBOOL DesktopImageInSystemMemory; ++} DXGI_OUTDUPL_DESC; ++typedef struct DXGI_OUTDUPL_POINTER_POSITION { ++ POINT Position; ++ WINBOOL Visible; ++} DXGI_OUTDUPL_POINTER_POSITION; ++typedef enum DXGI_OUTDUPL_POINTER_SHAPE_TYPE { ++ DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MONOCHROME = 0x1, ++ DXGI_OUTDUPL_POINTER_SHAPE_TYPE_COLOR = 0x2, ++ DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MASKED_COLOR = 0x4 ++} DXGI_OUTDUPL_POINTER_SHAPE_TYPE; ++typedef struct DXGI_OUTDUPL_POINTER_SHAPE_INFO { ++ UINT Type; ++ UINT Width; ++ UINT Height; ++ UINT Pitch; ++ POINT HotSpot; ++} DXGI_OUTDUPL_POINTER_SHAPE_INFO; ++typedef struct DXGI_OUTDUPL_FRAME_INFO { ++ LARGE_INTEGER LastPresentTime; ++ LARGE_INTEGER LastMouseUpdateTime; ++ UINT AccumulatedFrames; ++ WINBOOL RectsCoalesced; ++ WINBOOL ProtectedContentMaskedOut; ++ DXGI_OUTDUPL_POINTER_POSITION PointerPosition; ++ UINT TotalMetadataBufferSize; ++ UINT PointerShapeBufferSize; ++} DXGI_OUTDUPL_FRAME_INFO; ++/***************************************************************************** ++ * IDXGIOutputDuplication interface ++ */ ++#ifndef __IDXGIOutputDuplication_INTERFACE_DEFINED__ ++#define __IDXGIOutputDuplication_INTERFACE_DEFINED__ ++ ++DEFINE_GUID(IID_IDXGIOutputDuplication, 0x191cfac3, 0xa341, 0x470d, 0xb2,0x6e, 0xa8,0x64,0xf4,0x28,0x31,0x9c); ++#if defined(__cplusplus) && !defined(CINTERFACE) ++MIDL_INTERFACE("191cfac3-a341-470d-b26e-a864f428319c") ++IDXGIOutputDuplication : public IDXGIObject ++{ ++ virtual void STDMETHODCALLTYPE GetDesc( ++ DXGI_OUTDUPL_DESC *desc) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE AcquireNextFrame( ++ UINT timeout, ++ DXGI_OUTDUPL_FRAME_INFO *frame_info, ++ IDXGIResource **resource) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetFrameDirtyRects( ++ UINT dirty_size, ++ RECT *buffer, ++ UINT *buffer_size) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetFrameMoveRects( ++ UINT move_size, ++ DXGI_OUTDUPL_MOVE_RECT *rect, ++ UINT *rect_size) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetFramePointerShape( ++ UINT shape_size, ++ void *buffer, ++ UINT *buffer_size, ++ DXGI_OUTDUPL_POINTER_SHAPE_INFO *shape_info) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE MapDesktopSurface( ++ DXGI_MAPPED_RECT *rect) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE UnMapDesktopSurface( ++ ) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE ReleaseFrame( ++ ) = 0; ++ ++}; ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(IDXGIOutputDuplication, 0x191cfac3, 0xa341, 0x470d, 0xb2,0x6e, 0xa8,0x64,0xf4,0x28,0x31,0x9c) ++#endif ++#else ++typedef struct IDXGIOutputDuplicationVtbl { ++ BEGIN_INTERFACE ++ ++ /*** IUnknown methods ***/ ++ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ++ IDXGIOutputDuplication* This, ++ REFIID riid, ++ void **ppvObject); ++ ++ ULONG (STDMETHODCALLTYPE *AddRef)( ++ IDXGIOutputDuplication* This); ++ ++ ULONG (STDMETHODCALLTYPE *Release)( ++ IDXGIOutputDuplication* This); ++ ++ /*** IDXGIObject methods ***/ ++ HRESULT (STDMETHODCALLTYPE *SetPrivateData)( ++ IDXGIOutputDuplication* This, ++ REFGUID guid, ++ UINT data_size, ++ const void *data); ++ ++ HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( ++ IDXGIOutputDuplication* This, ++ REFGUID guid, ++ const IUnknown *object); ++ ++ HRESULT (STDMETHODCALLTYPE *GetPrivateData)( ++ IDXGIOutputDuplication* This, ++ REFGUID guid, ++ UINT *data_size, ++ void *data); ++ ++ HRESULT (STDMETHODCALLTYPE *GetParent)( ++ IDXGIOutputDuplication* This, ++ REFIID riid, ++ void **parent); ++ ++ /*** IDXGIOutputDuplication methods ***/ ++ void (STDMETHODCALLTYPE *GetDesc)( ++ IDXGIOutputDuplication* This, ++ DXGI_OUTDUPL_DESC *desc); ++ ++ HRESULT (STDMETHODCALLTYPE *AcquireNextFrame)( ++ IDXGIOutputDuplication* This, ++ UINT timeout, ++ DXGI_OUTDUPL_FRAME_INFO *frame_info, ++ IDXGIResource **resource); ++ ++ HRESULT (STDMETHODCALLTYPE *GetFrameDirtyRects)( ++ IDXGIOutputDuplication* This, ++ UINT dirty_size, ++ RECT *buffer, ++ UINT *buffer_size); ++ ++ HRESULT (STDMETHODCALLTYPE *GetFrameMoveRects)( ++ IDXGIOutputDuplication* This, ++ UINT move_size, ++ DXGI_OUTDUPL_MOVE_RECT *rect, ++ UINT *rect_size); ++ ++ HRESULT (STDMETHODCALLTYPE *GetFramePointerShape)( ++ IDXGIOutputDuplication* This, ++ UINT shape_size, ++ void *buffer, ++ UINT *buffer_size, ++ DXGI_OUTDUPL_POINTER_SHAPE_INFO *shape_info); ++ ++ HRESULT (STDMETHODCALLTYPE *MapDesktopSurface)( ++ IDXGIOutputDuplication* This, ++ DXGI_MAPPED_RECT *rect); ++ ++ HRESULT (STDMETHODCALLTYPE *UnMapDesktopSurface)( ++ IDXGIOutputDuplication* This); ++ ++ HRESULT (STDMETHODCALLTYPE *ReleaseFrame)( ++ IDXGIOutputDuplication* This); ++ ++ END_INTERFACE ++} IDXGIOutputDuplicationVtbl; ++interface IDXGIOutputDuplication { ++ CONST_VTBL IDXGIOutputDuplicationVtbl* lpVtbl; ++}; ++ ++#ifdef COBJMACROS ++#ifndef WIDL_C_INLINE_WRAPPERS ++/*** IUnknown methods ***/ ++#define IDXGIOutputDuplication_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) ++#define IDXGIOutputDuplication_AddRef(This) (This)->lpVtbl->AddRef(This) ++#define IDXGIOutputDuplication_Release(This) (This)->lpVtbl->Release(This) ++/*** IDXGIObject methods ***/ ++#define IDXGIOutputDuplication_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) ++#define IDXGIOutputDuplication_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) ++#define IDXGIOutputDuplication_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) ++#define IDXGIOutputDuplication_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) ++/*** IDXGIOutputDuplication methods ***/ ++#define IDXGIOutputDuplication_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) ++#define IDXGIOutputDuplication_AcquireNextFrame(This,timeout,frame_info,resource) (This)->lpVtbl->AcquireNextFrame(This,timeout,frame_info,resource) ++#define IDXGIOutputDuplication_GetFrameDirtyRects(This,dirty_size,buffer,buffer_size) (This)->lpVtbl->GetFrameDirtyRects(This,dirty_size,buffer,buffer_size) ++#define IDXGIOutputDuplication_GetFrameMoveRects(This,move_size,rect,rect_size) (This)->lpVtbl->GetFrameMoveRects(This,move_size,rect,rect_size) ++#define IDXGIOutputDuplication_GetFramePointerShape(This,shape_size,buffer,buffer_size,shape_info) (This)->lpVtbl->GetFramePointerShape(This,shape_size,buffer,buffer_size,shape_info) ++#define IDXGIOutputDuplication_MapDesktopSurface(This,rect) (This)->lpVtbl->MapDesktopSurface(This,rect) ++#define IDXGIOutputDuplication_UnMapDesktopSurface(This) (This)->lpVtbl->UnMapDesktopSurface(This) ++#define IDXGIOutputDuplication_ReleaseFrame(This) (This)->lpVtbl->ReleaseFrame(This) ++#else ++/*** IUnknown methods ***/ ++static FORCEINLINE HRESULT IDXGIOutputDuplication_QueryInterface(IDXGIOutputDuplication* This,REFIID riid,void **ppvObject) { ++ return This->lpVtbl->QueryInterface(This,riid,ppvObject); ++} ++static FORCEINLINE ULONG IDXGIOutputDuplication_AddRef(IDXGIOutputDuplication* This) { ++ return This->lpVtbl->AddRef(This); ++} ++static FORCEINLINE ULONG IDXGIOutputDuplication_Release(IDXGIOutputDuplication* This) { ++ return This->lpVtbl->Release(This); ++} ++/*** IDXGIObject methods ***/ ++static FORCEINLINE HRESULT IDXGIOutputDuplication_SetPrivateData(IDXGIOutputDuplication* This,REFGUID guid,UINT data_size,const void *data) { ++ return This->lpVtbl->SetPrivateData(This,guid,data_size,data); ++} ++static FORCEINLINE HRESULT IDXGIOutputDuplication_SetPrivateDataInterface(IDXGIOutputDuplication* This,REFGUID guid,const IUnknown *object) { ++ return This->lpVtbl->SetPrivateDataInterface(This,guid,object); ++} ++static FORCEINLINE HRESULT IDXGIOutputDuplication_GetPrivateData(IDXGIOutputDuplication* This,REFGUID guid,UINT *data_size,void *data) { ++ return This->lpVtbl->GetPrivateData(This,guid,data_size,data); ++} ++static FORCEINLINE HRESULT IDXGIOutputDuplication_GetParent(IDXGIOutputDuplication* This,REFIID riid,void **parent) { ++ return This->lpVtbl->GetParent(This,riid,parent); ++} ++/*** IDXGIOutputDuplication methods ***/ ++static FORCEINLINE void IDXGIOutputDuplication_GetDesc(IDXGIOutputDuplication* This,DXGI_OUTDUPL_DESC *desc) { ++ This->lpVtbl->GetDesc(This,desc); ++} ++static FORCEINLINE HRESULT IDXGIOutputDuplication_AcquireNextFrame(IDXGIOutputDuplication* This,UINT timeout,DXGI_OUTDUPL_FRAME_INFO *frame_info,IDXGIResource **resource) { ++ return This->lpVtbl->AcquireNextFrame(This,timeout,frame_info,resource); ++} ++static FORCEINLINE HRESULT IDXGIOutputDuplication_GetFrameDirtyRects(IDXGIOutputDuplication* This,UINT dirty_size,RECT *buffer,UINT *buffer_size) { ++ return This->lpVtbl->GetFrameDirtyRects(This,dirty_size,buffer,buffer_size); ++} ++static FORCEINLINE HRESULT IDXGIOutputDuplication_GetFrameMoveRects(IDXGIOutputDuplication* This,UINT move_size,DXGI_OUTDUPL_MOVE_RECT *rect,UINT *rect_size) { ++ return This->lpVtbl->GetFrameMoveRects(This,move_size,rect,rect_size); ++} ++static FORCEINLINE HRESULT IDXGIOutputDuplication_GetFramePointerShape(IDXGIOutputDuplication* This,UINT shape_size,void *buffer,UINT *buffer_size,DXGI_OUTDUPL_POINTER_SHAPE_INFO *shape_info) { ++ return This->lpVtbl->GetFramePointerShape(This,shape_size,buffer,buffer_size,shape_info); ++} ++static FORCEINLINE HRESULT IDXGIOutputDuplication_MapDesktopSurface(IDXGIOutputDuplication* This,DXGI_MAPPED_RECT *rect) { ++ return This->lpVtbl->MapDesktopSurface(This,rect); ++} ++static FORCEINLINE HRESULT IDXGIOutputDuplication_UnMapDesktopSurface(IDXGIOutputDuplication* This) { ++ return This->lpVtbl->UnMapDesktopSurface(This); ++} ++static FORCEINLINE HRESULT IDXGIOutputDuplication_ReleaseFrame(IDXGIOutputDuplication* This) { ++ return This->lpVtbl->ReleaseFrame(This); ++} ++#endif ++#endif ++ ++#endif ++ ++void STDMETHODCALLTYPE IDXGIOutputDuplication_GetDesc_Proxy( ++ IDXGIOutputDuplication* This, ++ DXGI_OUTDUPL_DESC *desc); ++void __RPC_STUB IDXGIOutputDuplication_GetDesc_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGIOutputDuplication_AcquireNextFrame_Proxy( ++ IDXGIOutputDuplication* This, ++ UINT timeout, ++ DXGI_OUTDUPL_FRAME_INFO *frame_info, ++ IDXGIResource **resource); ++void __RPC_STUB IDXGIOutputDuplication_AcquireNextFrame_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGIOutputDuplication_GetFrameDirtyRects_Proxy( ++ IDXGIOutputDuplication* This, ++ UINT dirty_size, ++ RECT *buffer, ++ UINT *buffer_size); ++void __RPC_STUB IDXGIOutputDuplication_GetFrameDirtyRects_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGIOutputDuplication_GetFrameMoveRects_Proxy( ++ IDXGIOutputDuplication* This, ++ UINT move_size, ++ DXGI_OUTDUPL_MOVE_RECT *rect, ++ UINT *rect_size); ++void __RPC_STUB IDXGIOutputDuplication_GetFrameMoveRects_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGIOutputDuplication_GetFramePointerShape_Proxy( ++ IDXGIOutputDuplication* This, ++ UINT shape_size, ++ void *buffer, ++ UINT *buffer_size, ++ DXGI_OUTDUPL_POINTER_SHAPE_INFO *shape_info); ++void __RPC_STUB IDXGIOutputDuplication_GetFramePointerShape_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGIOutputDuplication_MapDesktopSurface_Proxy( ++ IDXGIOutputDuplication* This, ++ DXGI_MAPPED_RECT *rect); ++void __RPC_STUB IDXGIOutputDuplication_MapDesktopSurface_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGIOutputDuplication_UnMapDesktopSurface_Proxy( ++ IDXGIOutputDuplication* This); ++void __RPC_STUB IDXGIOutputDuplication_UnMapDesktopSurface_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGIOutputDuplication_ReleaseFrame_Proxy( ++ IDXGIOutputDuplication* This); ++void __RPC_STUB IDXGIOutputDuplication_ReleaseFrame_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ ++#endif /* __IDXGIOutputDuplication_INTERFACE_DEFINED__ */ ++ + typedef enum _DXGI_OFFER_RESOURCE_PRIORITY { + DXGI_OFFER_RESOURCE_PRIORITY_LOW = 1, + DXGI_OFFER_RESOURCE_PRIORITY_NORMAL = 2, +@@ -1385,6 +1817,318 @@ void __RPC_STUB IDXGIAdapter2_GetDesc2_Stub( + + #endif /* __IDXGIAdapter2_INTERFACE_DEFINED__ */ + ++typedef struct DXGI_MODE_DESC1 { ++ UINT Width; ++ UINT Height; ++ DXGI_RATIONAL RefreshRate; ++ DXGI_FORMAT Format; ++ DXGI_MODE_SCANLINE_ORDER ScanlineOrdering; ++ DXGI_MODE_SCALING Scaling; ++ WINBOOL Stereo; ++} DXGI_MODE_DESC1; ++/***************************************************************************** ++ * IDXGIOutput1 interface ++ */ ++#ifndef __IDXGIOutput1_INTERFACE_DEFINED__ ++#define __IDXGIOutput1_INTERFACE_DEFINED__ ++ ++DEFINE_GUID(IID_IDXGIOutput1, 0x00cddea8, 0x939b, 0x4b83, 0xa3,0x40, 0xa6,0x85,0x22,0x66,0x66,0xcc); ++#if defined(__cplusplus) && !defined(CINTERFACE) ++MIDL_INTERFACE("00cddea8-939b-4b83-a340-a685226666cc") ++IDXGIOutput1 : public IDXGIOutput ++{ ++ virtual HRESULT STDMETHODCALLTYPE GetDisplayModeList1( ++ DXGI_FORMAT format, ++ UINT flags, ++ UINT *mode_count, ++ DXGI_MODE_DESC1 *desc) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE FindClosestMatchingMode1( ++ const DXGI_MODE_DESC1 *mode, ++ DXGI_MODE_DESC1 *closest_match, ++ IUnknown *device) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetDisplaySurfaceData1( ++ IDXGIResource *resource) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE DuplicateOutput( ++ IUnknown *device, ++ IDXGIOutputDuplication **output) = 0; ++ ++}; ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(IDXGIOutput1, 0x00cddea8, 0x939b, 0x4b83, 0xa3,0x40, 0xa6,0x85,0x22,0x66,0x66,0xcc) ++#endif ++#else ++typedef struct IDXGIOutput1Vtbl { ++ BEGIN_INTERFACE ++ ++ /*** IUnknown methods ***/ ++ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ++ IDXGIOutput1* This, ++ REFIID riid, ++ void **ppvObject); ++ ++ ULONG (STDMETHODCALLTYPE *AddRef)( ++ IDXGIOutput1* This); ++ ++ ULONG (STDMETHODCALLTYPE *Release)( ++ IDXGIOutput1* This); ++ ++ /*** IDXGIObject methods ***/ ++ HRESULT (STDMETHODCALLTYPE *SetPrivateData)( ++ IDXGIOutput1* This, ++ REFGUID guid, ++ UINT data_size, ++ const void *data); ++ ++ HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( ++ IDXGIOutput1* This, ++ REFGUID guid, ++ const IUnknown *object); ++ ++ HRESULT (STDMETHODCALLTYPE *GetPrivateData)( ++ IDXGIOutput1* This, ++ REFGUID guid, ++ UINT *data_size, ++ void *data); ++ ++ HRESULT (STDMETHODCALLTYPE *GetParent)( ++ IDXGIOutput1* This, ++ REFIID riid, ++ void **parent); ++ ++ /*** IDXGIOutput methods ***/ ++ HRESULT (STDMETHODCALLTYPE *GetDesc)( ++ IDXGIOutput1* This, ++ DXGI_OUTPUT_DESC *desc); ++ ++ HRESULT (STDMETHODCALLTYPE *GetDisplayModeList)( ++ IDXGIOutput1* This, ++ DXGI_FORMAT format, ++ UINT flags, ++ UINT *mode_count, ++ DXGI_MODE_DESC *desc); ++ ++ HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode)( ++ IDXGIOutput1* This, ++ const DXGI_MODE_DESC *mode, ++ DXGI_MODE_DESC *closest_match, ++ IUnknown *device); ++ ++ HRESULT (STDMETHODCALLTYPE *WaitForVBlank)( ++ IDXGIOutput1* This); ++ ++ HRESULT (STDMETHODCALLTYPE *TakeOwnership)( ++ IDXGIOutput1* This, ++ IUnknown *device, ++ WINBOOL exclusive); ++ ++ void (STDMETHODCALLTYPE *ReleaseOwnership)( ++ IDXGIOutput1* This); ++ ++ HRESULT (STDMETHODCALLTYPE *GetGammaControlCapabilities)( ++ IDXGIOutput1* This, ++ DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps); ++ ++ HRESULT (STDMETHODCALLTYPE *SetGammaControl)( ++ IDXGIOutput1* This, ++ const DXGI_GAMMA_CONTROL *gamma_control); ++ ++ HRESULT (STDMETHODCALLTYPE *GetGammaControl)( ++ IDXGIOutput1* This, ++ DXGI_GAMMA_CONTROL *gamma_control); ++ ++ HRESULT (STDMETHODCALLTYPE *SetDisplaySurface)( ++ IDXGIOutput1* This, ++ IDXGISurface *surface); ++ ++ HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData)( ++ IDXGIOutput1* This, ++ IDXGISurface *surface); ++ ++ HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)( ++ IDXGIOutput1* This, ++ DXGI_FRAME_STATISTICS *stats); ++ ++ /*** IDXGIOutput1 methods ***/ ++ HRESULT (STDMETHODCALLTYPE *GetDisplayModeList1)( ++ IDXGIOutput1* This, ++ DXGI_FORMAT format, ++ UINT flags, ++ UINT *mode_count, ++ DXGI_MODE_DESC1 *desc); ++ ++ HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode1)( ++ IDXGIOutput1* This, ++ const DXGI_MODE_DESC1 *mode, ++ DXGI_MODE_DESC1 *closest_match, ++ IUnknown *device); ++ ++ HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData1)( ++ IDXGIOutput1* This, ++ IDXGIResource *resource); ++ ++ HRESULT (STDMETHODCALLTYPE *DuplicateOutput)( ++ IDXGIOutput1* This, ++ IUnknown *device, ++ IDXGIOutputDuplication **output); ++ ++ END_INTERFACE ++} IDXGIOutput1Vtbl; ++interface IDXGIOutput1 { ++ CONST_VTBL IDXGIOutput1Vtbl* lpVtbl; ++}; ++ ++#ifdef COBJMACROS ++#ifndef WIDL_C_INLINE_WRAPPERS ++/*** IUnknown methods ***/ ++#define IDXGIOutput1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) ++#define IDXGIOutput1_AddRef(This) (This)->lpVtbl->AddRef(This) ++#define IDXGIOutput1_Release(This) (This)->lpVtbl->Release(This) ++/*** IDXGIObject methods ***/ ++#define IDXGIOutput1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) ++#define IDXGIOutput1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) ++#define IDXGIOutput1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) ++#define IDXGIOutput1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) ++/*** IDXGIOutput methods ***/ ++#define IDXGIOutput1_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) ++#define IDXGIOutput1_GetDisplayModeList(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc) ++#define IDXGIOutput1_FindClosestMatchingMode(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device) ++#define IDXGIOutput1_WaitForVBlank(This) (This)->lpVtbl->WaitForVBlank(This) ++#define IDXGIOutput1_TakeOwnership(This,device,exclusive) (This)->lpVtbl->TakeOwnership(This,device,exclusive) ++#define IDXGIOutput1_ReleaseOwnership(This) (This)->lpVtbl->ReleaseOwnership(This) ++#define IDXGIOutput1_GetGammaControlCapabilities(This,gamma_caps) (This)->lpVtbl->GetGammaControlCapabilities(This,gamma_caps) ++#define IDXGIOutput1_SetGammaControl(This,gamma_control) (This)->lpVtbl->SetGammaControl(This,gamma_control) ++#define IDXGIOutput1_GetGammaControl(This,gamma_control) (This)->lpVtbl->GetGammaControl(This,gamma_control) ++#define IDXGIOutput1_SetDisplaySurface(This,surface) (This)->lpVtbl->SetDisplaySurface(This,surface) ++#define IDXGIOutput1_GetDisplaySurfaceData(This,surface) (This)->lpVtbl->GetDisplaySurfaceData(This,surface) ++#define IDXGIOutput1_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats) ++/*** IDXGIOutput1 methods ***/ ++#define IDXGIOutput1_GetDisplayModeList1(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList1(This,format,flags,mode_count,desc) ++#define IDXGIOutput1_FindClosestMatchingMode1(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode1(This,mode,closest_match,device) ++#define IDXGIOutput1_GetDisplaySurfaceData1(This,resource) (This)->lpVtbl->GetDisplaySurfaceData1(This,resource) ++#define IDXGIOutput1_DuplicateOutput(This,device,output) (This)->lpVtbl->DuplicateOutput(This,device,output) ++#else ++/*** IUnknown methods ***/ ++static FORCEINLINE HRESULT IDXGIOutput1_QueryInterface(IDXGIOutput1* This,REFIID riid,void **ppvObject) { ++ return This->lpVtbl->QueryInterface(This,riid,ppvObject); ++} ++static FORCEINLINE ULONG IDXGIOutput1_AddRef(IDXGIOutput1* This) { ++ return This->lpVtbl->AddRef(This); ++} ++static FORCEINLINE ULONG IDXGIOutput1_Release(IDXGIOutput1* This) { ++ return This->lpVtbl->Release(This); ++} ++/*** IDXGIObject methods ***/ ++static FORCEINLINE HRESULT IDXGIOutput1_SetPrivateData(IDXGIOutput1* This,REFGUID guid,UINT data_size,const void *data) { ++ return This->lpVtbl->SetPrivateData(This,guid,data_size,data); ++} ++static FORCEINLINE HRESULT IDXGIOutput1_SetPrivateDataInterface(IDXGIOutput1* This,REFGUID guid,const IUnknown *object) { ++ return This->lpVtbl->SetPrivateDataInterface(This,guid,object); ++} ++static FORCEINLINE HRESULT IDXGIOutput1_GetPrivateData(IDXGIOutput1* This,REFGUID guid,UINT *data_size,void *data) { ++ return This->lpVtbl->GetPrivateData(This,guid,data_size,data); ++} ++static FORCEINLINE HRESULT IDXGIOutput1_GetParent(IDXGIOutput1* This,REFIID riid,void **parent) { ++ return This->lpVtbl->GetParent(This,riid,parent); ++} ++/*** IDXGIOutput methods ***/ ++static FORCEINLINE HRESULT IDXGIOutput1_GetDesc(IDXGIOutput1* This,DXGI_OUTPUT_DESC *desc) { ++ return This->lpVtbl->GetDesc(This,desc); ++} ++static FORCEINLINE HRESULT IDXGIOutput1_GetDisplayModeList(IDXGIOutput1* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC *desc) { ++ return This->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc); ++} ++static FORCEINLINE HRESULT IDXGIOutput1_FindClosestMatchingMode(IDXGIOutput1* This,const DXGI_MODE_DESC *mode,DXGI_MODE_DESC *closest_match,IUnknown *device) { ++ return This->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device); ++} ++static FORCEINLINE HRESULT IDXGIOutput1_WaitForVBlank(IDXGIOutput1* This) { ++ return This->lpVtbl->WaitForVBlank(This); ++} ++static FORCEINLINE HRESULT IDXGIOutput1_TakeOwnership(IDXGIOutput1* This,IUnknown *device,WINBOOL exclusive) { ++ return This->lpVtbl->TakeOwnership(This,device,exclusive); ++} ++static FORCEINLINE void IDXGIOutput1_ReleaseOwnership(IDXGIOutput1* This) { ++ This->lpVtbl->ReleaseOwnership(This); ++} ++static FORCEINLINE HRESULT IDXGIOutput1_GetGammaControlCapabilities(IDXGIOutput1* This,DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) { ++ return This->lpVtbl->GetGammaControlCapabilities(This,gamma_caps); ++} ++static FORCEINLINE HRESULT IDXGIOutput1_SetGammaControl(IDXGIOutput1* This,const DXGI_GAMMA_CONTROL *gamma_control) { ++ return This->lpVtbl->SetGammaControl(This,gamma_control); ++} ++static FORCEINLINE HRESULT IDXGIOutput1_GetGammaControl(IDXGIOutput1* This,DXGI_GAMMA_CONTROL *gamma_control) { ++ return This->lpVtbl->GetGammaControl(This,gamma_control); ++} ++static FORCEINLINE HRESULT IDXGIOutput1_SetDisplaySurface(IDXGIOutput1* This,IDXGISurface *surface) { ++ return This->lpVtbl->SetDisplaySurface(This,surface); ++} ++static FORCEINLINE HRESULT IDXGIOutput1_GetDisplaySurfaceData(IDXGIOutput1* This,IDXGISurface *surface) { ++ return This->lpVtbl->GetDisplaySurfaceData(This,surface); ++} ++static FORCEINLINE HRESULT IDXGIOutput1_GetFrameStatistics(IDXGIOutput1* This,DXGI_FRAME_STATISTICS *stats) { ++ return This->lpVtbl->GetFrameStatistics(This,stats); ++} ++/*** IDXGIOutput1 methods ***/ ++static FORCEINLINE HRESULT IDXGIOutput1_GetDisplayModeList1(IDXGIOutput1* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC1 *desc) { ++ return This->lpVtbl->GetDisplayModeList1(This,format,flags,mode_count,desc); ++} ++static FORCEINLINE HRESULT IDXGIOutput1_FindClosestMatchingMode1(IDXGIOutput1* This,const DXGI_MODE_DESC1 *mode,DXGI_MODE_DESC1 *closest_match,IUnknown *device) { ++ return This->lpVtbl->FindClosestMatchingMode1(This,mode,closest_match,device); ++} ++static FORCEINLINE HRESULT IDXGIOutput1_GetDisplaySurfaceData1(IDXGIOutput1* This,IDXGIResource *resource) { ++ return This->lpVtbl->GetDisplaySurfaceData1(This,resource); ++} ++static FORCEINLINE HRESULT IDXGIOutput1_DuplicateOutput(IDXGIOutput1* This,IUnknown *device,IDXGIOutputDuplication **output) { ++ return This->lpVtbl->DuplicateOutput(This,device,output); ++} ++#endif ++#endif ++ ++#endif ++ ++HRESULT STDMETHODCALLTYPE IDXGIOutput1_GetDisplayModeList1_Proxy( ++ IDXGIOutput1* This, ++ DXGI_FORMAT format, ++ UINT flags, ++ UINT *mode_count, ++ DXGI_MODE_DESC1 *desc); ++void __RPC_STUB IDXGIOutput1_GetDisplayModeList1_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGIOutput1_FindClosestMatchingMode1_Proxy( ++ IDXGIOutput1* This, ++ const DXGI_MODE_DESC1 *mode, ++ DXGI_MODE_DESC1 *closest_match, ++ IUnknown *device); ++void __RPC_STUB IDXGIOutput1_FindClosestMatchingMode1_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGIOutput1_GetDisplaySurfaceData1_Proxy( ++ IDXGIOutput1* This, ++ IDXGIResource *resource); ++void __RPC_STUB IDXGIOutput1_GetDisplaySurfaceData1_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGIOutput1_DuplicateOutput_Proxy( ++ IDXGIOutput1* This, ++ IUnknown *device, ++ IDXGIOutputDuplication **output); ++void __RPC_STUB IDXGIOutput1_DuplicateOutput_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ ++#endif /* __IDXGIOutput1_INTERFACE_DEFINED__ */ ++ + /* Begin additional prototypes for all interfaces */ + + +diff --git a/mingw-w64-headers/direct-x/include/dxgi1_2.idl b/mingw-w64-headers/direct-x/include/dxgi1_2.idl +index 92f9c0e2..838521ea 100644 +--- a/mingw-w64-headers/direct-x/include/dxgi1_2.idl ++++ b/mingw-w64-headers/direct-x/include/dxgi1_2.idl +@@ -1,5 +1,6 @@ + /* + * Copyright 2014 Jacek Caban for CodeWeavers ++ * Copyright 2015 Martell Malone + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public +@@ -18,6 +19,114 @@ + + import "dxgi.idl"; + ++[ ++ object, ++ uuid(ea9dbf1a-c88e-4486-854a-98aa0138f30c), ++ local, ++ pointer_default(unique) ++] ++interface IDXGIDisplayControl : IUnknown ++{ ++ BOOL IsStereoEnabled(); ++ ++ void SetStereoEnabled( ++ BOOL enabled ++ ); ++} ++ ++typedef struct DXGI_OUTDUPL_MOVE_RECT ++{ ++ POINT SourcePoint; ++ RECT DestinationRect; ++} DXGI_OUTDUPL_MOVE_RECT; ++ ++typedef struct DXGI_OUTDUPL_DESC ++{ ++ DXGI_MODE_DESC ModeDesc; ++ DXGI_MODE_ROTATION Rotation; ++ BOOL DesktopImageInSystemMemory; ++} DXGI_OUTDUPL_DESC; ++ ++typedef struct DXGI_OUTDUPL_POINTER_POSITION ++{ ++ POINT Position; ++ BOOL Visible; ++} DXGI_OUTDUPL_POINTER_POSITION; ++ ++typedef enum DXGI_OUTDUPL_POINTER_SHAPE_TYPE ++{ ++ DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MONOCHROME = 0x1, ++ DXGI_OUTDUPL_POINTER_SHAPE_TYPE_COLOR = 0x2, ++ DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MASKED_COLOR = 0x4 ++} DXGI_OUTDUPL_POINTER_SHAPE_TYPE; ++ ++typedef struct DXGI_OUTDUPL_POINTER_SHAPE_INFO ++{ ++ UINT Type; ++ UINT Width; ++ UINT Height; ++ UINT Pitch; ++ POINT HotSpot; ++} DXGI_OUTDUPL_POINTER_SHAPE_INFO; ++ ++typedef struct DXGI_OUTDUPL_FRAME_INFO ++{ ++ LARGE_INTEGER LastPresentTime; ++ LARGE_INTEGER LastMouseUpdateTime; ++ UINT AccumulatedFrames; ++ BOOL RectsCoalesced; ++ BOOL ProtectedContentMaskedOut; ++ DXGI_OUTDUPL_POINTER_POSITION PointerPosition; ++ UINT TotalMetadataBufferSize; ++ UINT PointerShapeBufferSize; ++} DXGI_OUTDUPL_FRAME_INFO; ++ ++[ ++ object, ++ uuid(191cfac3-a341-470d-b26e-a864f428319c), ++ local, ++ pointer_default(unique) ++] ++interface IDXGIOutputDuplication : IDXGIObject ++{ ++ void GetDesc( ++ [out] DXGI_OUTDUPL_DESC *desc ++ ); ++ ++ HRESULT AcquireNextFrame( ++ [in] UINT timeout, ++ [out] DXGI_OUTDUPL_FRAME_INFO *frame_info, ++ [out] IDXGIResource **resource ++ ); ++ ++ HRESULT GetFrameDirtyRects( ++ [in] UINT dirty_size, ++ [out] RECT *buffer, ++ [out] UINT *buffer_size ++ ); ++ ++ HRESULT GetFrameMoveRects( ++ [in] UINT move_size, ++ [out] DXGI_OUTDUPL_MOVE_RECT *rect, ++ [out] UINT *rect_size ++ ); ++ ++ HRESULT GetFramePointerShape( ++ [in] UINT shape_size, ++ [out] void *buffer, ++ [out] UINT *buffer_size, ++ [out] DXGI_OUTDUPL_POINTER_SHAPE_INFO *shape_info ++ ); ++ ++ HRESULT MapDesktopSurface( ++ [out] DXGI_MAPPED_RECT *rect ++ ); ++ ++ HRESULT UnMapDesktopSurface(); ++ ++ HRESULT ReleaseFrame(); ++} ++ + typedef enum _DXGI_OFFER_RESOURCE_PRIORITY { + DXGI_OFFER_RESOURCE_PRIORITY_LOW = 1, + DXGI_OFFER_RESOURCE_PRIORITY_NORMAL, +@@ -232,3 +341,45 @@ interface IDXGIAdapter2 : IDXGIAdapter1 + { + HRESULT GetDesc2([out] DXGI_ADAPTER_DESC2 *pDesc); + } ++ ++typedef struct DXGI_MODE_DESC1 ++{ ++ UINT Width; ++ UINT Height; ++ DXGI_RATIONAL RefreshRate; ++ DXGI_FORMAT Format; ++ DXGI_MODE_SCANLINE_ORDER ScanlineOrdering; ++ DXGI_MODE_SCALING Scaling; ++ BOOL Stereo; ++} DXGI_MODE_DESC1; ++ ++[ ++ object, ++ uuid(00cddea8-939b-4b83-a340-a685226666cc), ++ local, ++ pointer_default(unique) ++] ++interface IDXGIOutput1 : IDXGIOutput ++{ ++ HRESULT GetDisplayModeList1( ++ [in] DXGI_FORMAT format, ++ [in] UINT flags, ++ [in, out] UINT *mode_count, ++ [out] DXGI_MODE_DESC1 *desc ++ ); ++ ++ HRESULT FindClosestMatchingMode1( ++ [in] const DXGI_MODE_DESC1 *mode, ++ [out] DXGI_MODE_DESC1 *closest_match, ++ [in] IUnknown *device ++ ); ++ ++ HRESULT GetDisplaySurfaceData1( ++ [in] IDXGIResource *resource ++ ); ++ ++ HRESULT DuplicateOutput( ++ [in] IUnknown *device, ++ [out] IDXGIOutputDuplication **output ++ ); ++} +diff --git a/mingw-w64-headers/direct-x/include/dxgi1_3.h b/mingw-w64-headers/direct-x/include/dxgi1_3.h +new file mode 100644 +index 00000000..b6042124 +--- /dev/null ++++ b/mingw-w64-headers/direct-x/include/dxgi1_3.h +@@ -0,0 +1,2131 @@ ++/*** Autogenerated by WIDL 1.6 from dxgi1_3.idl - Do not edit ***/ ++ ++#ifndef __REQUIRED_RPCNDR_H_VERSION__ ++#define __REQUIRED_RPCNDR_H_VERSION__ 475 ++#endif ++ ++#include ++#include ++ ++#ifndef COM_NO_WINDOWS_H ++#include ++#include ++#endif ++ ++#ifndef __dxgi1_3_h__ ++#define __dxgi1_3_h__ ++ ++/* Forward declarations */ ++ ++#ifndef __IDXGIDecodeSwapChain_FWD_DEFINED__ ++#define __IDXGIDecodeSwapChain_FWD_DEFINED__ ++typedef interface IDXGIDecodeSwapChain IDXGIDecodeSwapChain; ++#endif ++ ++#ifndef __IDXGIFactoryMedia_FWD_DEFINED__ ++#define __IDXGIFactoryMedia_FWD_DEFINED__ ++typedef interface IDXGIFactoryMedia IDXGIFactoryMedia; ++#endif ++ ++#ifndef __IDXGISwapChainMedia_FWD_DEFINED__ ++#define __IDXGISwapChainMedia_FWD_DEFINED__ ++typedef interface IDXGISwapChainMedia IDXGISwapChainMedia; ++#endif ++ ++#ifndef __IDXGIDevice3_FWD_DEFINED__ ++#define __IDXGIDevice3_FWD_DEFINED__ ++typedef interface IDXGIDevice3 IDXGIDevice3; ++#endif ++ ++#ifndef __IDXGIOutput2_FWD_DEFINED__ ++#define __IDXGIOutput2_FWD_DEFINED__ ++typedef interface IDXGIOutput2 IDXGIOutput2; ++#endif ++ ++#ifndef __IDXGIOutput3_FWD_DEFINED__ ++#define __IDXGIOutput3_FWD_DEFINED__ ++typedef interface IDXGIOutput3 IDXGIOutput3; ++#endif ++ ++#ifndef __IDXGISwapChain2_FWD_DEFINED__ ++#define __IDXGISwapChain2_FWD_DEFINED__ ++typedef interface IDXGISwapChain2 IDXGISwapChain2; ++#endif ++ ++#ifndef __IDXGIFactory3_FWD_DEFINED__ ++#define __IDXGIFactory3_FWD_DEFINED__ ++typedef interface IDXGIFactory3 IDXGIFactory3; ++#endif ++ ++/* Headers for imported files */ ++ ++#include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++#define DXGI_CREATE_FACTORY_DEBUG 0x1 ++typedef struct DXGI_DECODE_SWAP_CHAIN_DESC { ++ UINT Flags; ++} DXGI_DECODE_SWAP_CHAIN_DESC; ++typedef enum DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS { ++ DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_NOMINAL_RANGE = 0x1, ++ DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_BT709 = 0x2, ++ DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_xvYCC = 0x4 ++} DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS; ++/***************************************************************************** ++ * IDXGIDecodeSwapChain interface ++ */ ++#ifndef __IDXGIDecodeSwapChain_INTERFACE_DEFINED__ ++#define __IDXGIDecodeSwapChain_INTERFACE_DEFINED__ ++ ++DEFINE_GUID(IID_IDXGIDecodeSwapChain, 0x2633066b, 0x4514, 0x4c7a, 0x8f,0xd8, 0x12,0xea,0x98,0x05,0x9d,0x18); ++#if defined(__cplusplus) && !defined(CINTERFACE) ++MIDL_INTERFACE("2633066b-4514-4c7a-8fd8-12ea98059d18") ++IDXGIDecodeSwapChain : public IUnknown ++{ ++ virtual HRESULT STDMETHODCALLTYPE PresentBuffer( ++ UINT buffer, ++ UINT sync, ++ UINT flags) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE SetSourceRect( ++ const RECT *rect) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE SetTargetRect( ++ const RECT *rect) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE SetDestSize( ++ UINT width, ++ UINT height) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetSourceRect( ++ RECT *rect) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetTargetRect( ++ RECT *rect) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetDestSize( ++ UINT *width, ++ UINT *height) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE SetColorSpace( ++ DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS colorSpace) = 0; ++ ++ virtual DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS STDMETHODCALLTYPE GetColorSpace( ++ ) = 0; ++ ++}; ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(IDXGIDecodeSwapChain, 0x2633066b, 0x4514, 0x4c7a, 0x8f,0xd8, 0x12,0xea,0x98,0x05,0x9d,0x18) ++#endif ++#else ++typedef struct IDXGIDecodeSwapChainVtbl { ++ BEGIN_INTERFACE ++ ++ /*** IUnknown methods ***/ ++ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ++ IDXGIDecodeSwapChain* This, ++ REFIID riid, ++ void **ppvObject); ++ ++ ULONG (STDMETHODCALLTYPE *AddRef)( ++ IDXGIDecodeSwapChain* This); ++ ++ ULONG (STDMETHODCALLTYPE *Release)( ++ IDXGIDecodeSwapChain* This); ++ ++ /*** IDXGIDecodeSwapChain methods ***/ ++ HRESULT (STDMETHODCALLTYPE *PresentBuffer)( ++ IDXGIDecodeSwapChain* This, ++ UINT buffer, ++ UINT sync, ++ UINT flags); ++ ++ HRESULT (STDMETHODCALLTYPE *SetSourceRect)( ++ IDXGIDecodeSwapChain* This, ++ const RECT *rect); ++ ++ HRESULT (STDMETHODCALLTYPE *SetTargetRect)( ++ IDXGIDecodeSwapChain* This, ++ const RECT *rect); ++ ++ HRESULT (STDMETHODCALLTYPE *SetDestSize)( ++ IDXGIDecodeSwapChain* This, ++ UINT width, ++ UINT height); ++ ++ HRESULT (STDMETHODCALLTYPE *GetSourceRect)( ++ IDXGIDecodeSwapChain* This, ++ RECT *rect); ++ ++ HRESULT (STDMETHODCALLTYPE *GetTargetRect)( ++ IDXGIDecodeSwapChain* This, ++ RECT *rect); ++ ++ HRESULT (STDMETHODCALLTYPE *GetDestSize)( ++ IDXGIDecodeSwapChain* This, ++ UINT *width, ++ UINT *height); ++ ++ HRESULT (STDMETHODCALLTYPE *SetColorSpace)( ++ IDXGIDecodeSwapChain* This, ++ DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS colorSpace); ++ ++ DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS (STDMETHODCALLTYPE *GetColorSpace)( ++ IDXGIDecodeSwapChain* This); ++ ++ END_INTERFACE ++} IDXGIDecodeSwapChainVtbl; ++interface IDXGIDecodeSwapChain { ++ CONST_VTBL IDXGIDecodeSwapChainVtbl* lpVtbl; ++}; ++ ++#ifdef COBJMACROS ++#ifndef WIDL_C_INLINE_WRAPPERS ++/*** IUnknown methods ***/ ++#define IDXGIDecodeSwapChain_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) ++#define IDXGIDecodeSwapChain_AddRef(This) (This)->lpVtbl->AddRef(This) ++#define IDXGIDecodeSwapChain_Release(This) (This)->lpVtbl->Release(This) ++/*** IDXGIDecodeSwapChain methods ***/ ++#define IDXGIDecodeSwapChain_PresentBuffer(This,buffer,sync,flags) (This)->lpVtbl->PresentBuffer(This,buffer,sync,flags) ++#define IDXGIDecodeSwapChain_SetSourceRect(This,rect) (This)->lpVtbl->SetSourceRect(This,rect) ++#define IDXGIDecodeSwapChain_SetTargetRect(This,rect) (This)->lpVtbl->SetTargetRect(This,rect) ++#define IDXGIDecodeSwapChain_SetDestSize(This,width,height) (This)->lpVtbl->SetDestSize(This,width,height) ++#define IDXGIDecodeSwapChain_GetSourceRect(This,rect) (This)->lpVtbl->GetSourceRect(This,rect) ++#define IDXGIDecodeSwapChain_GetTargetRect(This,rect) (This)->lpVtbl->GetTargetRect(This,rect) ++#define IDXGIDecodeSwapChain_GetDestSize(This,width,height) (This)->lpVtbl->GetDestSize(This,width,height) ++#define IDXGIDecodeSwapChain_SetColorSpace(This,colorSpace) (This)->lpVtbl->SetColorSpace(This,colorSpace) ++#define IDXGIDecodeSwapChain_GetColorSpace(This) (This)->lpVtbl->GetColorSpace(This) ++#else ++/*** IUnknown methods ***/ ++static FORCEINLINE HRESULT IDXGIDecodeSwapChain_QueryInterface(IDXGIDecodeSwapChain* This,REFIID riid,void **ppvObject) { ++ return This->lpVtbl->QueryInterface(This,riid,ppvObject); ++} ++static FORCEINLINE ULONG IDXGIDecodeSwapChain_AddRef(IDXGIDecodeSwapChain* This) { ++ return This->lpVtbl->AddRef(This); ++} ++static FORCEINLINE ULONG IDXGIDecodeSwapChain_Release(IDXGIDecodeSwapChain* This) { ++ return This->lpVtbl->Release(This); ++} ++/*** IDXGIDecodeSwapChain methods ***/ ++static FORCEINLINE HRESULT IDXGIDecodeSwapChain_PresentBuffer(IDXGIDecodeSwapChain* This,UINT buffer,UINT sync,UINT flags) { ++ return This->lpVtbl->PresentBuffer(This,buffer,sync,flags); ++} ++static FORCEINLINE HRESULT IDXGIDecodeSwapChain_SetSourceRect(IDXGIDecodeSwapChain* This,const RECT *rect) { ++ return This->lpVtbl->SetSourceRect(This,rect); ++} ++static FORCEINLINE HRESULT IDXGIDecodeSwapChain_SetTargetRect(IDXGIDecodeSwapChain* This,const RECT *rect) { ++ return This->lpVtbl->SetTargetRect(This,rect); ++} ++static FORCEINLINE HRESULT IDXGIDecodeSwapChain_SetDestSize(IDXGIDecodeSwapChain* This,UINT width,UINT height) { ++ return This->lpVtbl->SetDestSize(This,width,height); ++} ++static FORCEINLINE HRESULT IDXGIDecodeSwapChain_GetSourceRect(IDXGIDecodeSwapChain* This,RECT *rect) { ++ return This->lpVtbl->GetSourceRect(This,rect); ++} ++static FORCEINLINE HRESULT IDXGIDecodeSwapChain_GetTargetRect(IDXGIDecodeSwapChain* This,RECT *rect) { ++ return This->lpVtbl->GetTargetRect(This,rect); ++} ++static FORCEINLINE HRESULT IDXGIDecodeSwapChain_GetDestSize(IDXGIDecodeSwapChain* This,UINT *width,UINT *height) { ++ return This->lpVtbl->GetDestSize(This,width,height); ++} ++static FORCEINLINE HRESULT IDXGIDecodeSwapChain_SetColorSpace(IDXGIDecodeSwapChain* This,DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS colorSpace) { ++ return This->lpVtbl->SetColorSpace(This,colorSpace); ++} ++static FORCEINLINE DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS IDXGIDecodeSwapChain_GetColorSpace(IDXGIDecodeSwapChain* This) { ++ return This->lpVtbl->GetColorSpace(This); ++} ++#endif ++#endif ++ ++#endif ++ ++HRESULT STDMETHODCALLTYPE IDXGIDecodeSwapChain_PresentBuffer_Proxy( ++ IDXGIDecodeSwapChain* This, ++ UINT buffer, ++ UINT sync, ++ UINT flags); ++void __RPC_STUB IDXGIDecodeSwapChain_PresentBuffer_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGIDecodeSwapChain_SetSourceRect_Proxy( ++ IDXGIDecodeSwapChain* This, ++ const RECT *rect); ++void __RPC_STUB IDXGIDecodeSwapChain_SetSourceRect_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGIDecodeSwapChain_SetTargetRect_Proxy( ++ IDXGIDecodeSwapChain* This, ++ const RECT *rect); ++void __RPC_STUB IDXGIDecodeSwapChain_SetTargetRect_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGIDecodeSwapChain_SetDestSize_Proxy( ++ IDXGIDecodeSwapChain* This, ++ UINT width, ++ UINT height); ++void __RPC_STUB IDXGIDecodeSwapChain_SetDestSize_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGIDecodeSwapChain_GetSourceRect_Proxy( ++ IDXGIDecodeSwapChain* This, ++ RECT *rect); ++void __RPC_STUB IDXGIDecodeSwapChain_GetSourceRect_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGIDecodeSwapChain_GetTargetRect_Proxy( ++ IDXGIDecodeSwapChain* This, ++ RECT *rect); ++void __RPC_STUB IDXGIDecodeSwapChain_GetTargetRect_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGIDecodeSwapChain_GetDestSize_Proxy( ++ IDXGIDecodeSwapChain* This, ++ UINT *width, ++ UINT *height); ++void __RPC_STUB IDXGIDecodeSwapChain_GetDestSize_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGIDecodeSwapChain_SetColorSpace_Proxy( ++ IDXGIDecodeSwapChain* This, ++ DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS colorSpace); ++void __RPC_STUB IDXGIDecodeSwapChain_SetColorSpace_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS STDMETHODCALLTYPE IDXGIDecodeSwapChain_GetColorSpace_Proxy( ++ IDXGIDecodeSwapChain* This); ++void __RPC_STUB IDXGIDecodeSwapChain_GetColorSpace_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ ++#endif /* __IDXGIDecodeSwapChain_INTERFACE_DEFINED__ */ ++ ++/***************************************************************************** ++ * IDXGIFactoryMedia interface ++ */ ++#ifndef __IDXGIFactoryMedia_INTERFACE_DEFINED__ ++#define __IDXGIFactoryMedia_INTERFACE_DEFINED__ ++ ++DEFINE_GUID(IID_IDXGIFactoryMedia, 0x41e7d1f2, 0xa591, 0x4f7b, 0xa2,0xe5, 0xfa,0x9c,0x84,0x3e,0x1c,0x12); ++#if defined(__cplusplus) && !defined(CINTERFACE) ++MIDL_INTERFACE("41e7d1f2-a591-4f7b-a2e5-fa9c843e1c12") ++IDXGIFactoryMedia : public IUnknown ++{ ++ virtual HRESULT STDMETHODCALLTYPE CreateSwapChainForCompositionSurfaceHandle( ++ IUnknown *device, ++ HANDLE surface, ++ const DXGI_SWAP_CHAIN_DESC1 *desc, ++ IDXGIOutput *output, ++ IDXGISwapChain1 **swapchain) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE CreateDecodeSwapChainForCompositionSurfaceHandle( ++ IUnknown *device, ++ HANDLE surface, ++ DXGI_DECODE_SWAP_CHAIN_DESC *desc, ++ IDXGIResource *buffer, ++ IDXGIOutput *output, ++ IDXGIDecodeSwapChain **swapchain) = 0; ++ ++}; ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(IDXGIFactoryMedia, 0x41e7d1f2, 0xa591, 0x4f7b, 0xa2,0xe5, 0xfa,0x9c,0x84,0x3e,0x1c,0x12) ++#endif ++#else ++typedef struct IDXGIFactoryMediaVtbl { ++ BEGIN_INTERFACE ++ ++ /*** IUnknown methods ***/ ++ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ++ IDXGIFactoryMedia* This, ++ REFIID riid, ++ void **ppvObject); ++ ++ ULONG (STDMETHODCALLTYPE *AddRef)( ++ IDXGIFactoryMedia* This); ++ ++ ULONG (STDMETHODCALLTYPE *Release)( ++ IDXGIFactoryMedia* This); ++ ++ /*** IDXGIFactoryMedia methods ***/ ++ HRESULT (STDMETHODCALLTYPE *CreateSwapChainForCompositionSurfaceHandle)( ++ IDXGIFactoryMedia* This, ++ IUnknown *device, ++ HANDLE surface, ++ const DXGI_SWAP_CHAIN_DESC1 *desc, ++ IDXGIOutput *output, ++ IDXGISwapChain1 **swapchain); ++ ++ HRESULT (STDMETHODCALLTYPE *CreateDecodeSwapChainForCompositionSurfaceHandle)( ++ IDXGIFactoryMedia* This, ++ IUnknown *device, ++ HANDLE surface, ++ DXGI_DECODE_SWAP_CHAIN_DESC *desc, ++ IDXGIResource *buffer, ++ IDXGIOutput *output, ++ IDXGIDecodeSwapChain **swapchain); ++ ++ END_INTERFACE ++} IDXGIFactoryMediaVtbl; ++interface IDXGIFactoryMedia { ++ CONST_VTBL IDXGIFactoryMediaVtbl* lpVtbl; ++}; ++ ++#ifdef COBJMACROS ++#ifndef WIDL_C_INLINE_WRAPPERS ++/*** IUnknown methods ***/ ++#define IDXGIFactoryMedia_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) ++#define IDXGIFactoryMedia_AddRef(This) (This)->lpVtbl->AddRef(This) ++#define IDXGIFactoryMedia_Release(This) (This)->lpVtbl->Release(This) ++/*** IDXGIFactoryMedia methods ***/ ++#define IDXGIFactoryMedia_CreateSwapChainForCompositionSurfaceHandle(This,device,surface,desc,output,swapchain) (This)->lpVtbl->CreateSwapChainForCompositionSurfaceHandle(This,device,surface,desc,output,swapchain) ++#define IDXGIFactoryMedia_CreateDecodeSwapChainForCompositionSurfaceHandle(This,device,surface,desc,buffer,output,swapchain) (This)->lpVtbl->CreateDecodeSwapChainForCompositionSurfaceHandle(This,device,surface,desc,buffer,output,swapchain) ++#else ++/*** IUnknown methods ***/ ++static FORCEINLINE HRESULT IDXGIFactoryMedia_QueryInterface(IDXGIFactoryMedia* This,REFIID riid,void **ppvObject) { ++ return This->lpVtbl->QueryInterface(This,riid,ppvObject); ++} ++static FORCEINLINE ULONG IDXGIFactoryMedia_AddRef(IDXGIFactoryMedia* This) { ++ return This->lpVtbl->AddRef(This); ++} ++static FORCEINLINE ULONG IDXGIFactoryMedia_Release(IDXGIFactoryMedia* This) { ++ return This->lpVtbl->Release(This); ++} ++/*** IDXGIFactoryMedia methods ***/ ++static FORCEINLINE HRESULT IDXGIFactoryMedia_CreateSwapChainForCompositionSurfaceHandle(IDXGIFactoryMedia* This,IUnknown *device,HANDLE surface,const DXGI_SWAP_CHAIN_DESC1 *desc,IDXGIOutput *output,IDXGISwapChain1 **swapchain) { ++ return This->lpVtbl->CreateSwapChainForCompositionSurfaceHandle(This,device,surface,desc,output,swapchain); ++} ++static FORCEINLINE HRESULT IDXGIFactoryMedia_CreateDecodeSwapChainForCompositionSurfaceHandle(IDXGIFactoryMedia* This,IUnknown *device,HANDLE surface,DXGI_DECODE_SWAP_CHAIN_DESC *desc,IDXGIResource *buffer,IDXGIOutput *output,IDXGIDecodeSwapChain **swapchain) { ++ return This->lpVtbl->CreateDecodeSwapChainForCompositionSurfaceHandle(This,device,surface,desc,buffer,output,swapchain); ++} ++#endif ++#endif ++ ++#endif ++ ++HRESULT STDMETHODCALLTYPE IDXGIFactoryMedia_CreateSwapChainForCompositionSurfaceHandle_Proxy( ++ IDXGIFactoryMedia* This, ++ IUnknown *device, ++ HANDLE surface, ++ const DXGI_SWAP_CHAIN_DESC1 *desc, ++ IDXGIOutput *output, ++ IDXGISwapChain1 **swapchain); ++void __RPC_STUB IDXGIFactoryMedia_CreateSwapChainForCompositionSurfaceHandle_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGIFactoryMedia_CreateDecodeSwapChainForCompositionSurfaceHandle_Proxy( ++ IDXGIFactoryMedia* This, ++ IUnknown *device, ++ HANDLE surface, ++ DXGI_DECODE_SWAP_CHAIN_DESC *desc, ++ IDXGIResource *buffer, ++ IDXGIOutput *output, ++ IDXGIDecodeSwapChain **swapchain); ++void __RPC_STUB IDXGIFactoryMedia_CreateDecodeSwapChainForCompositionSurfaceHandle_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ ++#endif /* __IDXGIFactoryMedia_INTERFACE_DEFINED__ */ ++ ++typedef enum DXGI_FRAME_PRESENTATION_MODE { ++ DXGI_FRAME_PRESENTATION_MODE_COMPOSED = 0, ++ DXGI_FRAME_PRESENTATION_MODE_OVERLAY = 1, ++ DXGI_FRAME_PRESENTATION_MODE_NONE = 2 ++} DXGI_FRAME_PRESENTATION_MODE; ++typedef struct DXGI_FRAME_STATISTICS_MEDIA { ++ UINT PresentCount; ++ UINT PresentRefreshCount; ++ UINT SyncRefreshCount; ++ LARGE_INTEGER SyncQPCTime; ++ LARGE_INTEGER SyncGPUTime; ++ DXGI_FRAME_PRESENTATION_MODE CompositionMode; ++ UINT ApprovedPresentDuration; ++} DXGI_FRAME_STATISTICS_MEDIA; ++/***************************************************************************** ++ * IDXGISwapChainMedia interface ++ */ ++#ifndef __IDXGISwapChainMedia_INTERFACE_DEFINED__ ++#define __IDXGISwapChainMedia_INTERFACE_DEFINED__ ++ ++DEFINE_GUID(IID_IDXGISwapChainMedia, 0xdd95b90b, 0xf05f, 0x4f6a, 0xbd,0x65, 0x25,0xbf,0xb2,0x64,0xbd,0x84); ++#if defined(__cplusplus) && !defined(CINTERFACE) ++MIDL_INTERFACE("dd95b90b-f05f-4f6a-bd65-25bfb264bd84") ++IDXGISwapChainMedia : public IUnknown ++{ ++ virtual HRESULT STDMETHODCALLTYPE GetFrameStatisticsMedia( ++ DXGI_FRAME_STATISTICS_MEDIA *pStats) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE SetPresentDuration( ++ UINT duration) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE CheckPresentDurationSupport( ++ UINT duration, ++ UINT *smallerduration, ++ UINT *largerduration) = 0; ++ ++}; ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(IDXGISwapChainMedia, 0xdd95b90b, 0xf05f, 0x4f6a, 0xbd,0x65, 0x25,0xbf,0xb2,0x64,0xbd,0x84) ++#endif ++#else ++typedef struct IDXGISwapChainMediaVtbl { ++ BEGIN_INTERFACE ++ ++ /*** IUnknown methods ***/ ++ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ++ IDXGISwapChainMedia* This, ++ REFIID riid, ++ void **ppvObject); ++ ++ ULONG (STDMETHODCALLTYPE *AddRef)( ++ IDXGISwapChainMedia* This); ++ ++ ULONG (STDMETHODCALLTYPE *Release)( ++ IDXGISwapChainMedia* This); ++ ++ /*** IDXGISwapChainMedia methods ***/ ++ HRESULT (STDMETHODCALLTYPE *GetFrameStatisticsMedia)( ++ IDXGISwapChainMedia* This, ++ DXGI_FRAME_STATISTICS_MEDIA *pStats); ++ ++ HRESULT (STDMETHODCALLTYPE *SetPresentDuration)( ++ IDXGISwapChainMedia* This, ++ UINT duration); ++ ++ HRESULT (STDMETHODCALLTYPE *CheckPresentDurationSupport)( ++ IDXGISwapChainMedia* This, ++ UINT duration, ++ UINT *smallerduration, ++ UINT *largerduration); ++ ++ END_INTERFACE ++} IDXGISwapChainMediaVtbl; ++interface IDXGISwapChainMedia { ++ CONST_VTBL IDXGISwapChainMediaVtbl* lpVtbl; ++}; ++ ++#ifdef COBJMACROS ++#ifndef WIDL_C_INLINE_WRAPPERS ++/*** IUnknown methods ***/ ++#define IDXGISwapChainMedia_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) ++#define IDXGISwapChainMedia_AddRef(This) (This)->lpVtbl->AddRef(This) ++#define IDXGISwapChainMedia_Release(This) (This)->lpVtbl->Release(This) ++/*** IDXGISwapChainMedia methods ***/ ++#define IDXGISwapChainMedia_GetFrameStatisticsMedia(This,pStats) (This)->lpVtbl->GetFrameStatisticsMedia(This,pStats) ++#define IDXGISwapChainMedia_SetPresentDuration(This,duration) (This)->lpVtbl->SetPresentDuration(This,duration) ++#define IDXGISwapChainMedia_CheckPresentDurationSupport(This,duration,smallerduration,largerduration) (This)->lpVtbl->CheckPresentDurationSupport(This,duration,smallerduration,largerduration) ++#else ++/*** IUnknown methods ***/ ++static FORCEINLINE HRESULT IDXGISwapChainMedia_QueryInterface(IDXGISwapChainMedia* This,REFIID riid,void **ppvObject) { ++ return This->lpVtbl->QueryInterface(This,riid,ppvObject); ++} ++static FORCEINLINE ULONG IDXGISwapChainMedia_AddRef(IDXGISwapChainMedia* This) { ++ return This->lpVtbl->AddRef(This); ++} ++static FORCEINLINE ULONG IDXGISwapChainMedia_Release(IDXGISwapChainMedia* This) { ++ return This->lpVtbl->Release(This); ++} ++/*** IDXGISwapChainMedia methods ***/ ++static FORCEINLINE HRESULT IDXGISwapChainMedia_GetFrameStatisticsMedia(IDXGISwapChainMedia* This,DXGI_FRAME_STATISTICS_MEDIA *pStats) { ++ return This->lpVtbl->GetFrameStatisticsMedia(This,pStats); ++} ++static FORCEINLINE HRESULT IDXGISwapChainMedia_SetPresentDuration(IDXGISwapChainMedia* This,UINT duration) { ++ return This->lpVtbl->SetPresentDuration(This,duration); ++} ++static FORCEINLINE HRESULT IDXGISwapChainMedia_CheckPresentDurationSupport(IDXGISwapChainMedia* This,UINT duration,UINT *smallerduration,UINT *largerduration) { ++ return This->lpVtbl->CheckPresentDurationSupport(This,duration,smallerduration,largerduration); ++} ++#endif ++#endif ++ ++#endif ++ ++HRESULT STDMETHODCALLTYPE IDXGISwapChainMedia_GetFrameStatisticsMedia_Proxy( ++ IDXGISwapChainMedia* This, ++ DXGI_FRAME_STATISTICS_MEDIA *pStats); ++void __RPC_STUB IDXGISwapChainMedia_GetFrameStatisticsMedia_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGISwapChainMedia_SetPresentDuration_Proxy( ++ IDXGISwapChainMedia* This, ++ UINT duration); ++void __RPC_STUB IDXGISwapChainMedia_SetPresentDuration_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGISwapChainMedia_CheckPresentDurationSupport_Proxy( ++ IDXGISwapChainMedia* This, ++ UINT duration, ++ UINT *smallerduration, ++ UINT *largerduration); ++void __RPC_STUB IDXGISwapChainMedia_CheckPresentDurationSupport_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ ++#endif /* __IDXGISwapChainMedia_INTERFACE_DEFINED__ */ ++ ++typedef enum DXGI_OVERLAY_SUPPORT_FLAG { ++ DXGI_OVERLAY_SUPPORT_FLAG_DIRECT = 0x1, ++ DXGI_OVERLAY_SUPPORT_FLAG_SCALING = 0x2 ++} DXGI_OVERLAY_SUPPORT_FLAG; ++/***************************************************************************** ++ * IDXGIDevice3 interface ++ */ ++#ifndef __IDXGIDevice3_INTERFACE_DEFINED__ ++#define __IDXGIDevice3_INTERFACE_DEFINED__ ++ ++DEFINE_GUID(IID_IDXGIDevice3, 0x6007896c, 0x3244, 0x4afd, 0xbf,0x18, 0xa6,0xd3,0xbe,0xda,0x50,0x23); ++#if defined(__cplusplus) && !defined(CINTERFACE) ++MIDL_INTERFACE("6007896c-3244-4afd-bf18-a6d3beda5023") ++IDXGIDevice3 : public IDXGIDevice2 ++{ ++ virtual void STDMETHODCALLTYPE Trim( ++ ) = 0; ++ ++}; ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(IDXGIDevice3, 0x6007896c, 0x3244, 0x4afd, 0xbf,0x18, 0xa6,0xd3,0xbe,0xda,0x50,0x23) ++#endif ++#else ++typedef struct IDXGIDevice3Vtbl { ++ BEGIN_INTERFACE ++ ++ /*** IUnknown methods ***/ ++ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ++ IDXGIDevice3* This, ++ REFIID riid, ++ void **ppvObject); ++ ++ ULONG (STDMETHODCALLTYPE *AddRef)( ++ IDXGIDevice3* This); ++ ++ ULONG (STDMETHODCALLTYPE *Release)( ++ IDXGIDevice3* This); ++ ++ /*** IDXGIObject methods ***/ ++ HRESULT (STDMETHODCALLTYPE *SetPrivateData)( ++ IDXGIDevice3* This, ++ REFGUID guid, ++ UINT data_size, ++ const void *data); ++ ++ HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( ++ IDXGIDevice3* This, ++ REFGUID guid, ++ const IUnknown *object); ++ ++ HRESULT (STDMETHODCALLTYPE *GetPrivateData)( ++ IDXGIDevice3* This, ++ REFGUID guid, ++ UINT *data_size, ++ void *data); ++ ++ HRESULT (STDMETHODCALLTYPE *GetParent)( ++ IDXGIDevice3* This, ++ REFIID riid, ++ void **parent); ++ ++ /*** IDXGIDevice methods ***/ ++ HRESULT (STDMETHODCALLTYPE *GetAdapter)( ++ IDXGIDevice3* This, ++ IDXGIAdapter **adapter); ++ ++ HRESULT (STDMETHODCALLTYPE *CreateSurface)( ++ IDXGIDevice3* This, ++ const DXGI_SURFACE_DESC *desc, ++ UINT surface_count, ++ DXGI_USAGE usage, ++ const DXGI_SHARED_RESOURCE *shared_resource, ++ IDXGISurface **surface); ++ ++ HRESULT (STDMETHODCALLTYPE *QueryResourceResidency)( ++ IDXGIDevice3* This, ++ IUnknown *const *resources, ++ DXGI_RESIDENCY *residency, ++ UINT resource_count); ++ ++ HRESULT (STDMETHODCALLTYPE *SetGPUThreadPriority)( ++ IDXGIDevice3* This, ++ INT priority); ++ ++ HRESULT (STDMETHODCALLTYPE *GetGPUThreadPriority)( ++ IDXGIDevice3* This, ++ INT *priority); ++ ++ /*** IDXGIDevice1 methods ***/ ++ HRESULT (STDMETHODCALLTYPE *SetMaximumFrameLatency)( ++ IDXGIDevice3* This, ++ UINT MaxLatency); ++ ++ HRESULT (STDMETHODCALLTYPE *GetMaximumFrameLatency)( ++ IDXGIDevice3* This, ++ UINT *pMaxLatency); ++ ++ /*** IDXGIDevice2 methods ***/ ++ HRESULT (STDMETHODCALLTYPE *OfferResources)( ++ IDXGIDevice3* This, ++ UINT NumResources, ++ IDXGIResource *const *ppResources, ++ DXGI_OFFER_RESOURCE_PRIORITY Priority); ++ ++ HRESULT (STDMETHODCALLTYPE *ReclaimResources)( ++ IDXGIDevice3* This, ++ UINT NumResources, ++ IDXGIResource *const *ppResources, ++ WINBOOL *pDiscarded); ++ ++ HRESULT (STDMETHODCALLTYPE *EnqueueSetEvent)( ++ IDXGIDevice3* This, ++ HANDLE hEvent); ++ ++ /*** IDXGIDevice3 methods ***/ ++ void (STDMETHODCALLTYPE *Trim)( ++ IDXGIDevice3* This); ++ ++ END_INTERFACE ++} IDXGIDevice3Vtbl; ++interface IDXGIDevice3 { ++ CONST_VTBL IDXGIDevice3Vtbl* lpVtbl; ++}; ++ ++#ifdef COBJMACROS ++#ifndef WIDL_C_INLINE_WRAPPERS ++/*** IUnknown methods ***/ ++#define IDXGIDevice3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) ++#define IDXGIDevice3_AddRef(This) (This)->lpVtbl->AddRef(This) ++#define IDXGIDevice3_Release(This) (This)->lpVtbl->Release(This) ++/*** IDXGIObject methods ***/ ++#define IDXGIDevice3_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) ++#define IDXGIDevice3_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) ++#define IDXGIDevice3_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) ++#define IDXGIDevice3_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) ++/*** IDXGIDevice methods ***/ ++#define IDXGIDevice3_GetAdapter(This,adapter) (This)->lpVtbl->GetAdapter(This,adapter) ++#define IDXGIDevice3_CreateSurface(This,desc,surface_count,usage,shared_resource,surface) (This)->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface) ++#define IDXGIDevice3_QueryResourceResidency(This,resources,residency,resource_count) (This)->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count) ++#define IDXGIDevice3_SetGPUThreadPriority(This,priority) (This)->lpVtbl->SetGPUThreadPriority(This,priority) ++#define IDXGIDevice3_GetGPUThreadPriority(This,priority) (This)->lpVtbl->GetGPUThreadPriority(This,priority) ++/*** IDXGIDevice1 methods ***/ ++#define IDXGIDevice3_SetMaximumFrameLatency(This,MaxLatency) (This)->lpVtbl->SetMaximumFrameLatency(This,MaxLatency) ++#define IDXGIDevice3_GetMaximumFrameLatency(This,pMaxLatency) (This)->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency) ++/*** IDXGIDevice2 methods ***/ ++#define IDXGIDevice3_OfferResources(This,NumResources,ppResources,Priority) (This)->lpVtbl->OfferResources(This,NumResources,ppResources,Priority) ++#define IDXGIDevice3_ReclaimResources(This,NumResources,ppResources,pDiscarded) (This)->lpVtbl->ReclaimResources(This,NumResources,ppResources,pDiscarded) ++#define IDXGIDevice3_EnqueueSetEvent(This,hEvent) (This)->lpVtbl->EnqueueSetEvent(This,hEvent) ++/*** IDXGIDevice3 methods ***/ ++#define IDXGIDevice3_Trim(This) (This)->lpVtbl->Trim(This) ++#else ++/*** IUnknown methods ***/ ++static FORCEINLINE HRESULT IDXGIDevice3_QueryInterface(IDXGIDevice3* This,REFIID riid,void **ppvObject) { ++ return This->lpVtbl->QueryInterface(This,riid,ppvObject); ++} ++static FORCEINLINE ULONG IDXGIDevice3_AddRef(IDXGIDevice3* This) { ++ return This->lpVtbl->AddRef(This); ++} ++static FORCEINLINE ULONG IDXGIDevice3_Release(IDXGIDevice3* This) { ++ return This->lpVtbl->Release(This); ++} ++/*** IDXGIObject methods ***/ ++static FORCEINLINE HRESULT IDXGIDevice3_SetPrivateData(IDXGIDevice3* This,REFGUID guid,UINT data_size,const void *data) { ++ return This->lpVtbl->SetPrivateData(This,guid,data_size,data); ++} ++static FORCEINLINE HRESULT IDXGIDevice3_SetPrivateDataInterface(IDXGIDevice3* This,REFGUID guid,const IUnknown *object) { ++ return This->lpVtbl->SetPrivateDataInterface(This,guid,object); ++} ++static FORCEINLINE HRESULT IDXGIDevice3_GetPrivateData(IDXGIDevice3* This,REFGUID guid,UINT *data_size,void *data) { ++ return This->lpVtbl->GetPrivateData(This,guid,data_size,data); ++} ++static FORCEINLINE HRESULT IDXGIDevice3_GetParent(IDXGIDevice3* This,REFIID riid,void **parent) { ++ return This->lpVtbl->GetParent(This,riid,parent); ++} ++/*** IDXGIDevice methods ***/ ++static FORCEINLINE HRESULT IDXGIDevice3_GetAdapter(IDXGIDevice3* This,IDXGIAdapter **adapter) { ++ return This->lpVtbl->GetAdapter(This,adapter); ++} ++static FORCEINLINE HRESULT IDXGIDevice3_CreateSurface(IDXGIDevice3* This,const DXGI_SURFACE_DESC *desc,UINT surface_count,DXGI_USAGE usage,const DXGI_SHARED_RESOURCE *shared_resource,IDXGISurface **surface) { ++ return This->lpVtbl->CreateSurface(This,desc,surface_count,usage,shared_resource,surface); ++} ++static FORCEINLINE HRESULT IDXGIDevice3_QueryResourceResidency(IDXGIDevice3* This,IUnknown *const *resources,DXGI_RESIDENCY *residency,UINT resource_count) { ++ return This->lpVtbl->QueryResourceResidency(This,resources,residency,resource_count); ++} ++static FORCEINLINE HRESULT IDXGIDevice3_SetGPUThreadPriority(IDXGIDevice3* This,INT priority) { ++ return This->lpVtbl->SetGPUThreadPriority(This,priority); ++} ++static FORCEINLINE HRESULT IDXGIDevice3_GetGPUThreadPriority(IDXGIDevice3* This,INT *priority) { ++ return This->lpVtbl->GetGPUThreadPriority(This,priority); ++} ++/*** IDXGIDevice1 methods ***/ ++static FORCEINLINE HRESULT IDXGIDevice3_SetMaximumFrameLatency(IDXGIDevice3* This,UINT MaxLatency) { ++ return This->lpVtbl->SetMaximumFrameLatency(This,MaxLatency); ++} ++static FORCEINLINE HRESULT IDXGIDevice3_GetMaximumFrameLatency(IDXGIDevice3* This,UINT *pMaxLatency) { ++ return This->lpVtbl->GetMaximumFrameLatency(This,pMaxLatency); ++} ++/*** IDXGIDevice2 methods ***/ ++static FORCEINLINE HRESULT IDXGIDevice3_OfferResources(IDXGIDevice3* This,UINT NumResources,IDXGIResource *const *ppResources,DXGI_OFFER_RESOURCE_PRIORITY Priority) { ++ return This->lpVtbl->OfferResources(This,NumResources,ppResources,Priority); ++} ++static FORCEINLINE HRESULT IDXGIDevice3_ReclaimResources(IDXGIDevice3* This,UINT NumResources,IDXGIResource *const *ppResources,WINBOOL *pDiscarded) { ++ return This->lpVtbl->ReclaimResources(This,NumResources,ppResources,pDiscarded); ++} ++static FORCEINLINE HRESULT IDXGIDevice3_EnqueueSetEvent(IDXGIDevice3* This,HANDLE hEvent) { ++ return This->lpVtbl->EnqueueSetEvent(This,hEvent); ++} ++/*** IDXGIDevice3 methods ***/ ++static FORCEINLINE void IDXGIDevice3_Trim(IDXGIDevice3* This) { ++ This->lpVtbl->Trim(This); ++} ++#endif ++#endif ++ ++#endif ++ ++void STDMETHODCALLTYPE IDXGIDevice3_Trim_Proxy( ++ IDXGIDevice3* This); ++void __RPC_STUB IDXGIDevice3_Trim_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ ++#endif /* __IDXGIDevice3_INTERFACE_DEFINED__ */ ++ ++/***************************************************************************** ++ * IDXGIOutput2 interface ++ */ ++#ifndef __IDXGIOutput2_INTERFACE_DEFINED__ ++#define __IDXGIOutput2_INTERFACE_DEFINED__ ++ ++DEFINE_GUID(IID_IDXGIOutput2, 0x595e39d1, 0x2724, 0x4663, 0x99,0xb1, 0xda,0x96,0x9d,0xe2,0x83,0x64); ++#if defined(__cplusplus) && !defined(CINTERFACE) ++MIDL_INTERFACE("595e39d1-2724-4663-99b1-da969de28364") ++IDXGIOutput2 : public IDXGIOutput1 ++{ ++ virtual WINBOOL STDMETHODCALLTYPE SupportsOverlays( ++ ) = 0; ++ ++}; ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(IDXGIOutput2, 0x595e39d1, 0x2724, 0x4663, 0x99,0xb1, 0xda,0x96,0x9d,0xe2,0x83,0x64) ++#endif ++#else ++typedef struct IDXGIOutput2Vtbl { ++ BEGIN_INTERFACE ++ ++ /*** IUnknown methods ***/ ++ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ++ IDXGIOutput2* This, ++ REFIID riid, ++ void **ppvObject); ++ ++ ULONG (STDMETHODCALLTYPE *AddRef)( ++ IDXGIOutput2* This); ++ ++ ULONG (STDMETHODCALLTYPE *Release)( ++ IDXGIOutput2* This); ++ ++ /*** IDXGIObject methods ***/ ++ HRESULT (STDMETHODCALLTYPE *SetPrivateData)( ++ IDXGIOutput2* This, ++ REFGUID guid, ++ UINT data_size, ++ const void *data); ++ ++ HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( ++ IDXGIOutput2* This, ++ REFGUID guid, ++ const IUnknown *object); ++ ++ HRESULT (STDMETHODCALLTYPE *GetPrivateData)( ++ IDXGIOutput2* This, ++ REFGUID guid, ++ UINT *data_size, ++ void *data); ++ ++ HRESULT (STDMETHODCALLTYPE *GetParent)( ++ IDXGIOutput2* This, ++ REFIID riid, ++ void **parent); ++ ++ /*** IDXGIOutput methods ***/ ++ HRESULT (STDMETHODCALLTYPE *GetDesc)( ++ IDXGIOutput2* This, ++ DXGI_OUTPUT_DESC *desc); ++ ++ HRESULT (STDMETHODCALLTYPE *GetDisplayModeList)( ++ IDXGIOutput2* This, ++ DXGI_FORMAT format, ++ UINT flags, ++ UINT *mode_count, ++ DXGI_MODE_DESC *desc); ++ ++ HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode)( ++ IDXGIOutput2* This, ++ const DXGI_MODE_DESC *mode, ++ DXGI_MODE_DESC *closest_match, ++ IUnknown *device); ++ ++ HRESULT (STDMETHODCALLTYPE *WaitForVBlank)( ++ IDXGIOutput2* This); ++ ++ HRESULT (STDMETHODCALLTYPE *TakeOwnership)( ++ IDXGIOutput2* This, ++ IUnknown *device, ++ WINBOOL exclusive); ++ ++ void (STDMETHODCALLTYPE *ReleaseOwnership)( ++ IDXGIOutput2* This); ++ ++ HRESULT (STDMETHODCALLTYPE *GetGammaControlCapabilities)( ++ IDXGIOutput2* This, ++ DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps); ++ ++ HRESULT (STDMETHODCALLTYPE *SetGammaControl)( ++ IDXGIOutput2* This, ++ const DXGI_GAMMA_CONTROL *gamma_control); ++ ++ HRESULT (STDMETHODCALLTYPE *GetGammaControl)( ++ IDXGIOutput2* This, ++ DXGI_GAMMA_CONTROL *gamma_control); ++ ++ HRESULT (STDMETHODCALLTYPE *SetDisplaySurface)( ++ IDXGIOutput2* This, ++ IDXGISurface *surface); ++ ++ HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData)( ++ IDXGIOutput2* This, ++ IDXGISurface *surface); ++ ++ HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)( ++ IDXGIOutput2* This, ++ DXGI_FRAME_STATISTICS *stats); ++ ++ /*** IDXGIOutput1 methods ***/ ++ HRESULT (STDMETHODCALLTYPE *GetDisplayModeList1)( ++ IDXGIOutput2* This, ++ DXGI_FORMAT format, ++ UINT flags, ++ UINT *mode_count, ++ DXGI_MODE_DESC1 *desc); ++ ++ HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode1)( ++ IDXGIOutput2* This, ++ const DXGI_MODE_DESC1 *mode, ++ DXGI_MODE_DESC1 *closest_match, ++ IUnknown *device); ++ ++ HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData1)( ++ IDXGIOutput2* This, ++ IDXGIResource *resource); ++ ++ HRESULT (STDMETHODCALLTYPE *DuplicateOutput)( ++ IDXGIOutput2* This, ++ IUnknown *device, ++ IDXGIOutputDuplication **output); ++ ++ /*** IDXGIOutput2 methods ***/ ++ WINBOOL (STDMETHODCALLTYPE *SupportsOverlays)( ++ IDXGIOutput2* This); ++ ++ END_INTERFACE ++} IDXGIOutput2Vtbl; ++interface IDXGIOutput2 { ++ CONST_VTBL IDXGIOutput2Vtbl* lpVtbl; ++}; ++ ++#ifdef COBJMACROS ++#ifndef WIDL_C_INLINE_WRAPPERS ++/*** IUnknown methods ***/ ++#define IDXGIOutput2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) ++#define IDXGIOutput2_AddRef(This) (This)->lpVtbl->AddRef(This) ++#define IDXGIOutput2_Release(This) (This)->lpVtbl->Release(This) ++/*** IDXGIObject methods ***/ ++#define IDXGIOutput2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) ++#define IDXGIOutput2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) ++#define IDXGIOutput2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) ++#define IDXGIOutput2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) ++/*** IDXGIOutput methods ***/ ++#define IDXGIOutput2_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) ++#define IDXGIOutput2_GetDisplayModeList(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc) ++#define IDXGIOutput2_FindClosestMatchingMode(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device) ++#define IDXGIOutput2_WaitForVBlank(This) (This)->lpVtbl->WaitForVBlank(This) ++#define IDXGIOutput2_TakeOwnership(This,device,exclusive) (This)->lpVtbl->TakeOwnership(This,device,exclusive) ++#define IDXGIOutput2_ReleaseOwnership(This) (This)->lpVtbl->ReleaseOwnership(This) ++#define IDXGIOutput2_GetGammaControlCapabilities(This,gamma_caps) (This)->lpVtbl->GetGammaControlCapabilities(This,gamma_caps) ++#define IDXGIOutput2_SetGammaControl(This,gamma_control) (This)->lpVtbl->SetGammaControl(This,gamma_control) ++#define IDXGIOutput2_GetGammaControl(This,gamma_control) (This)->lpVtbl->GetGammaControl(This,gamma_control) ++#define IDXGIOutput2_SetDisplaySurface(This,surface) (This)->lpVtbl->SetDisplaySurface(This,surface) ++#define IDXGIOutput2_GetDisplaySurfaceData(This,surface) (This)->lpVtbl->GetDisplaySurfaceData(This,surface) ++#define IDXGIOutput2_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats) ++/*** IDXGIOutput1 methods ***/ ++#define IDXGIOutput2_GetDisplayModeList1(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList1(This,format,flags,mode_count,desc) ++#define IDXGIOutput2_FindClosestMatchingMode1(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode1(This,mode,closest_match,device) ++#define IDXGIOutput2_GetDisplaySurfaceData1(This,resource) (This)->lpVtbl->GetDisplaySurfaceData1(This,resource) ++#define IDXGIOutput2_DuplicateOutput(This,device,output) (This)->lpVtbl->DuplicateOutput(This,device,output) ++/*** IDXGIOutput2 methods ***/ ++#define IDXGIOutput2_SupportsOverlays(This) (This)->lpVtbl->SupportsOverlays(This) ++#else ++/*** IUnknown methods ***/ ++static FORCEINLINE HRESULT IDXGIOutput2_QueryInterface(IDXGIOutput2* This,REFIID riid,void **ppvObject) { ++ return This->lpVtbl->QueryInterface(This,riid,ppvObject); ++} ++static FORCEINLINE ULONG IDXGIOutput2_AddRef(IDXGIOutput2* This) { ++ return This->lpVtbl->AddRef(This); ++} ++static FORCEINLINE ULONG IDXGIOutput2_Release(IDXGIOutput2* This) { ++ return This->lpVtbl->Release(This); ++} ++/*** IDXGIObject methods ***/ ++static FORCEINLINE HRESULT IDXGIOutput2_SetPrivateData(IDXGIOutput2* This,REFGUID guid,UINT data_size,const void *data) { ++ return This->lpVtbl->SetPrivateData(This,guid,data_size,data); ++} ++static FORCEINLINE HRESULT IDXGIOutput2_SetPrivateDataInterface(IDXGIOutput2* This,REFGUID guid,const IUnknown *object) { ++ return This->lpVtbl->SetPrivateDataInterface(This,guid,object); ++} ++static FORCEINLINE HRESULT IDXGIOutput2_GetPrivateData(IDXGIOutput2* This,REFGUID guid,UINT *data_size,void *data) { ++ return This->lpVtbl->GetPrivateData(This,guid,data_size,data); ++} ++static FORCEINLINE HRESULT IDXGIOutput2_GetParent(IDXGIOutput2* This,REFIID riid,void **parent) { ++ return This->lpVtbl->GetParent(This,riid,parent); ++} ++/*** IDXGIOutput methods ***/ ++static FORCEINLINE HRESULT IDXGIOutput2_GetDesc(IDXGIOutput2* This,DXGI_OUTPUT_DESC *desc) { ++ return This->lpVtbl->GetDesc(This,desc); ++} ++static FORCEINLINE HRESULT IDXGIOutput2_GetDisplayModeList(IDXGIOutput2* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC *desc) { ++ return This->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc); ++} ++static FORCEINLINE HRESULT IDXGIOutput2_FindClosestMatchingMode(IDXGIOutput2* This,const DXGI_MODE_DESC *mode,DXGI_MODE_DESC *closest_match,IUnknown *device) { ++ return This->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device); ++} ++static FORCEINLINE HRESULT IDXGIOutput2_WaitForVBlank(IDXGIOutput2* This) { ++ return This->lpVtbl->WaitForVBlank(This); ++} ++static FORCEINLINE HRESULT IDXGIOutput2_TakeOwnership(IDXGIOutput2* This,IUnknown *device,WINBOOL exclusive) { ++ return This->lpVtbl->TakeOwnership(This,device,exclusive); ++} ++static FORCEINLINE void IDXGIOutput2_ReleaseOwnership(IDXGIOutput2* This) { ++ This->lpVtbl->ReleaseOwnership(This); ++} ++static FORCEINLINE HRESULT IDXGIOutput2_GetGammaControlCapabilities(IDXGIOutput2* This,DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) { ++ return This->lpVtbl->GetGammaControlCapabilities(This,gamma_caps); ++} ++static FORCEINLINE HRESULT IDXGIOutput2_SetGammaControl(IDXGIOutput2* This,const DXGI_GAMMA_CONTROL *gamma_control) { ++ return This->lpVtbl->SetGammaControl(This,gamma_control); ++} ++static FORCEINLINE HRESULT IDXGIOutput2_GetGammaControl(IDXGIOutput2* This,DXGI_GAMMA_CONTROL *gamma_control) { ++ return This->lpVtbl->GetGammaControl(This,gamma_control); ++} ++static FORCEINLINE HRESULT IDXGIOutput2_SetDisplaySurface(IDXGIOutput2* This,IDXGISurface *surface) { ++ return This->lpVtbl->SetDisplaySurface(This,surface); ++} ++static FORCEINLINE HRESULT IDXGIOutput2_GetDisplaySurfaceData(IDXGIOutput2* This,IDXGISurface *surface) { ++ return This->lpVtbl->GetDisplaySurfaceData(This,surface); ++} ++static FORCEINLINE HRESULT IDXGIOutput2_GetFrameStatistics(IDXGIOutput2* This,DXGI_FRAME_STATISTICS *stats) { ++ return This->lpVtbl->GetFrameStatistics(This,stats); ++} ++/*** IDXGIOutput1 methods ***/ ++static FORCEINLINE HRESULT IDXGIOutput2_GetDisplayModeList1(IDXGIOutput2* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC1 *desc) { ++ return This->lpVtbl->GetDisplayModeList1(This,format,flags,mode_count,desc); ++} ++static FORCEINLINE HRESULT IDXGIOutput2_FindClosestMatchingMode1(IDXGIOutput2* This,const DXGI_MODE_DESC1 *mode,DXGI_MODE_DESC1 *closest_match,IUnknown *device) { ++ return This->lpVtbl->FindClosestMatchingMode1(This,mode,closest_match,device); ++} ++static FORCEINLINE HRESULT IDXGIOutput2_GetDisplaySurfaceData1(IDXGIOutput2* This,IDXGIResource *resource) { ++ return This->lpVtbl->GetDisplaySurfaceData1(This,resource); ++} ++static FORCEINLINE HRESULT IDXGIOutput2_DuplicateOutput(IDXGIOutput2* This,IUnknown *device,IDXGIOutputDuplication **output) { ++ return This->lpVtbl->DuplicateOutput(This,device,output); ++} ++/*** IDXGIOutput2 methods ***/ ++static FORCEINLINE WINBOOL IDXGIOutput2_SupportsOverlays(IDXGIOutput2* This) { ++ return This->lpVtbl->SupportsOverlays(This); ++} ++#endif ++#endif ++ ++#endif ++ ++WINBOOL STDMETHODCALLTYPE IDXGIOutput2_SupportsOverlays_Proxy( ++ IDXGIOutput2* This); ++void __RPC_STUB IDXGIOutput2_SupportsOverlays_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ ++#endif /* __IDXGIOutput2_INTERFACE_DEFINED__ */ ++ ++/***************************************************************************** ++ * IDXGIOutput3 interface ++ */ ++#ifndef __IDXGIOutput3_INTERFACE_DEFINED__ ++#define __IDXGIOutput3_INTERFACE_DEFINED__ ++ ++DEFINE_GUID(IID_IDXGIOutput3, 0x8a6bb301, 0x7e7e, 0x41f4, 0xa8,0xe0, 0x5b,0x32,0xf7,0xf9,0x9b,0x18); ++#if defined(__cplusplus) && !defined(CINTERFACE) ++MIDL_INTERFACE("8a6bb301-7e7e-41f4-a8e0-5b32f7f99b18") ++IDXGIOutput3 : public IDXGIOutput2 ++{ ++ virtual HRESULT STDMETHODCALLTYPE CheckOverlaySupport( ++ DXGI_FORMAT format, ++ IUnknown *device, ++ UINT *flags) = 0; ++ ++}; ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(IDXGIOutput3, 0x8a6bb301, 0x7e7e, 0x41f4, 0xa8,0xe0, 0x5b,0x32,0xf7,0xf9,0x9b,0x18) ++#endif ++#else ++typedef struct IDXGIOutput3Vtbl { ++ BEGIN_INTERFACE ++ ++ /*** IUnknown methods ***/ ++ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ++ IDXGIOutput3* This, ++ REFIID riid, ++ void **ppvObject); ++ ++ ULONG (STDMETHODCALLTYPE *AddRef)( ++ IDXGIOutput3* This); ++ ++ ULONG (STDMETHODCALLTYPE *Release)( ++ IDXGIOutput3* This); ++ ++ /*** IDXGIObject methods ***/ ++ HRESULT (STDMETHODCALLTYPE *SetPrivateData)( ++ IDXGIOutput3* This, ++ REFGUID guid, ++ UINT data_size, ++ const void *data); ++ ++ HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( ++ IDXGIOutput3* This, ++ REFGUID guid, ++ const IUnknown *object); ++ ++ HRESULT (STDMETHODCALLTYPE *GetPrivateData)( ++ IDXGIOutput3* This, ++ REFGUID guid, ++ UINT *data_size, ++ void *data); ++ ++ HRESULT (STDMETHODCALLTYPE *GetParent)( ++ IDXGIOutput3* This, ++ REFIID riid, ++ void **parent); ++ ++ /*** IDXGIOutput methods ***/ ++ HRESULT (STDMETHODCALLTYPE *GetDesc)( ++ IDXGIOutput3* This, ++ DXGI_OUTPUT_DESC *desc); ++ ++ HRESULT (STDMETHODCALLTYPE *GetDisplayModeList)( ++ IDXGIOutput3* This, ++ DXGI_FORMAT format, ++ UINT flags, ++ UINT *mode_count, ++ DXGI_MODE_DESC *desc); ++ ++ HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode)( ++ IDXGIOutput3* This, ++ const DXGI_MODE_DESC *mode, ++ DXGI_MODE_DESC *closest_match, ++ IUnknown *device); ++ ++ HRESULT (STDMETHODCALLTYPE *WaitForVBlank)( ++ IDXGIOutput3* This); ++ ++ HRESULT (STDMETHODCALLTYPE *TakeOwnership)( ++ IDXGIOutput3* This, ++ IUnknown *device, ++ WINBOOL exclusive); ++ ++ void (STDMETHODCALLTYPE *ReleaseOwnership)( ++ IDXGIOutput3* This); ++ ++ HRESULT (STDMETHODCALLTYPE *GetGammaControlCapabilities)( ++ IDXGIOutput3* This, ++ DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps); ++ ++ HRESULT (STDMETHODCALLTYPE *SetGammaControl)( ++ IDXGIOutput3* This, ++ const DXGI_GAMMA_CONTROL *gamma_control); ++ ++ HRESULT (STDMETHODCALLTYPE *GetGammaControl)( ++ IDXGIOutput3* This, ++ DXGI_GAMMA_CONTROL *gamma_control); ++ ++ HRESULT (STDMETHODCALLTYPE *SetDisplaySurface)( ++ IDXGIOutput3* This, ++ IDXGISurface *surface); ++ ++ HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData)( ++ IDXGIOutput3* This, ++ IDXGISurface *surface); ++ ++ HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)( ++ IDXGIOutput3* This, ++ DXGI_FRAME_STATISTICS *stats); ++ ++ /*** IDXGIOutput1 methods ***/ ++ HRESULT (STDMETHODCALLTYPE *GetDisplayModeList1)( ++ IDXGIOutput3* This, ++ DXGI_FORMAT format, ++ UINT flags, ++ UINT *mode_count, ++ DXGI_MODE_DESC1 *desc); ++ ++ HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode1)( ++ IDXGIOutput3* This, ++ const DXGI_MODE_DESC1 *mode, ++ DXGI_MODE_DESC1 *closest_match, ++ IUnknown *device); ++ ++ HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData1)( ++ IDXGIOutput3* This, ++ IDXGIResource *resource); ++ ++ HRESULT (STDMETHODCALLTYPE *DuplicateOutput)( ++ IDXGIOutput3* This, ++ IUnknown *device, ++ IDXGIOutputDuplication **output); ++ ++ /*** IDXGIOutput2 methods ***/ ++ WINBOOL (STDMETHODCALLTYPE *SupportsOverlays)( ++ IDXGIOutput3* This); ++ ++ /*** IDXGIOutput3 methods ***/ ++ HRESULT (STDMETHODCALLTYPE *CheckOverlaySupport)( ++ IDXGIOutput3* This, ++ DXGI_FORMAT format, ++ IUnknown *device, ++ UINT *flags); ++ ++ END_INTERFACE ++} IDXGIOutput3Vtbl; ++interface IDXGIOutput3 { ++ CONST_VTBL IDXGIOutput3Vtbl* lpVtbl; ++}; ++ ++#ifdef COBJMACROS ++#ifndef WIDL_C_INLINE_WRAPPERS ++/*** IUnknown methods ***/ ++#define IDXGIOutput3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) ++#define IDXGIOutput3_AddRef(This) (This)->lpVtbl->AddRef(This) ++#define IDXGIOutput3_Release(This) (This)->lpVtbl->Release(This) ++/*** IDXGIObject methods ***/ ++#define IDXGIOutput3_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) ++#define IDXGIOutput3_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) ++#define IDXGIOutput3_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) ++#define IDXGIOutput3_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) ++/*** IDXGIOutput methods ***/ ++#define IDXGIOutput3_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) ++#define IDXGIOutput3_GetDisplayModeList(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc) ++#define IDXGIOutput3_FindClosestMatchingMode(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device) ++#define IDXGIOutput3_WaitForVBlank(This) (This)->lpVtbl->WaitForVBlank(This) ++#define IDXGIOutput3_TakeOwnership(This,device,exclusive) (This)->lpVtbl->TakeOwnership(This,device,exclusive) ++#define IDXGIOutput3_ReleaseOwnership(This) (This)->lpVtbl->ReleaseOwnership(This) ++#define IDXGIOutput3_GetGammaControlCapabilities(This,gamma_caps) (This)->lpVtbl->GetGammaControlCapabilities(This,gamma_caps) ++#define IDXGIOutput3_SetGammaControl(This,gamma_control) (This)->lpVtbl->SetGammaControl(This,gamma_control) ++#define IDXGIOutput3_GetGammaControl(This,gamma_control) (This)->lpVtbl->GetGammaControl(This,gamma_control) ++#define IDXGIOutput3_SetDisplaySurface(This,surface) (This)->lpVtbl->SetDisplaySurface(This,surface) ++#define IDXGIOutput3_GetDisplaySurfaceData(This,surface) (This)->lpVtbl->GetDisplaySurfaceData(This,surface) ++#define IDXGIOutput3_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats) ++/*** IDXGIOutput1 methods ***/ ++#define IDXGIOutput3_GetDisplayModeList1(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList1(This,format,flags,mode_count,desc) ++#define IDXGIOutput3_FindClosestMatchingMode1(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode1(This,mode,closest_match,device) ++#define IDXGIOutput3_GetDisplaySurfaceData1(This,resource) (This)->lpVtbl->GetDisplaySurfaceData1(This,resource) ++#define IDXGIOutput3_DuplicateOutput(This,device,output) (This)->lpVtbl->DuplicateOutput(This,device,output) ++/*** IDXGIOutput2 methods ***/ ++#define IDXGIOutput3_SupportsOverlays(This) (This)->lpVtbl->SupportsOverlays(This) ++/*** IDXGIOutput3 methods ***/ ++#define IDXGIOutput3_CheckOverlaySupport(This,format,device,flags) (This)->lpVtbl->CheckOverlaySupport(This,format,device,flags) ++#else ++/*** IUnknown methods ***/ ++static FORCEINLINE HRESULT IDXGIOutput3_QueryInterface(IDXGIOutput3* This,REFIID riid,void **ppvObject) { ++ return This->lpVtbl->QueryInterface(This,riid,ppvObject); ++} ++static FORCEINLINE ULONG IDXGIOutput3_AddRef(IDXGIOutput3* This) { ++ return This->lpVtbl->AddRef(This); ++} ++static FORCEINLINE ULONG IDXGIOutput3_Release(IDXGIOutput3* This) { ++ return This->lpVtbl->Release(This); ++} ++/*** IDXGIObject methods ***/ ++static FORCEINLINE HRESULT IDXGIOutput3_SetPrivateData(IDXGIOutput3* This,REFGUID guid,UINT data_size,const void *data) { ++ return This->lpVtbl->SetPrivateData(This,guid,data_size,data); ++} ++static FORCEINLINE HRESULT IDXGIOutput3_SetPrivateDataInterface(IDXGIOutput3* This,REFGUID guid,const IUnknown *object) { ++ return This->lpVtbl->SetPrivateDataInterface(This,guid,object); ++} ++static FORCEINLINE HRESULT IDXGIOutput3_GetPrivateData(IDXGIOutput3* This,REFGUID guid,UINT *data_size,void *data) { ++ return This->lpVtbl->GetPrivateData(This,guid,data_size,data); ++} ++static FORCEINLINE HRESULT IDXGIOutput3_GetParent(IDXGIOutput3* This,REFIID riid,void **parent) { ++ return This->lpVtbl->GetParent(This,riid,parent); ++} ++/*** IDXGIOutput methods ***/ ++static FORCEINLINE HRESULT IDXGIOutput3_GetDesc(IDXGIOutput3* This,DXGI_OUTPUT_DESC *desc) { ++ return This->lpVtbl->GetDesc(This,desc); ++} ++static FORCEINLINE HRESULT IDXGIOutput3_GetDisplayModeList(IDXGIOutput3* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC *desc) { ++ return This->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc); ++} ++static FORCEINLINE HRESULT IDXGIOutput3_FindClosestMatchingMode(IDXGIOutput3* This,const DXGI_MODE_DESC *mode,DXGI_MODE_DESC *closest_match,IUnknown *device) { ++ return This->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device); ++} ++static FORCEINLINE HRESULT IDXGIOutput3_WaitForVBlank(IDXGIOutput3* This) { ++ return This->lpVtbl->WaitForVBlank(This); ++} ++static FORCEINLINE HRESULT IDXGIOutput3_TakeOwnership(IDXGIOutput3* This,IUnknown *device,WINBOOL exclusive) { ++ return This->lpVtbl->TakeOwnership(This,device,exclusive); ++} ++static FORCEINLINE void IDXGIOutput3_ReleaseOwnership(IDXGIOutput3* This) { ++ This->lpVtbl->ReleaseOwnership(This); ++} ++static FORCEINLINE HRESULT IDXGIOutput3_GetGammaControlCapabilities(IDXGIOutput3* This,DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) { ++ return This->lpVtbl->GetGammaControlCapabilities(This,gamma_caps); ++} ++static FORCEINLINE HRESULT IDXGIOutput3_SetGammaControl(IDXGIOutput3* This,const DXGI_GAMMA_CONTROL *gamma_control) { ++ return This->lpVtbl->SetGammaControl(This,gamma_control); ++} ++static FORCEINLINE HRESULT IDXGIOutput3_GetGammaControl(IDXGIOutput3* This,DXGI_GAMMA_CONTROL *gamma_control) { ++ return This->lpVtbl->GetGammaControl(This,gamma_control); ++} ++static FORCEINLINE HRESULT IDXGIOutput3_SetDisplaySurface(IDXGIOutput3* This,IDXGISurface *surface) { ++ return This->lpVtbl->SetDisplaySurface(This,surface); ++} ++static FORCEINLINE HRESULT IDXGIOutput3_GetDisplaySurfaceData(IDXGIOutput3* This,IDXGISurface *surface) { ++ return This->lpVtbl->GetDisplaySurfaceData(This,surface); ++} ++static FORCEINLINE HRESULT IDXGIOutput3_GetFrameStatistics(IDXGIOutput3* This,DXGI_FRAME_STATISTICS *stats) { ++ return This->lpVtbl->GetFrameStatistics(This,stats); ++} ++/*** IDXGIOutput1 methods ***/ ++static FORCEINLINE HRESULT IDXGIOutput3_GetDisplayModeList1(IDXGIOutput3* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC1 *desc) { ++ return This->lpVtbl->GetDisplayModeList1(This,format,flags,mode_count,desc); ++} ++static FORCEINLINE HRESULT IDXGIOutput3_FindClosestMatchingMode1(IDXGIOutput3* This,const DXGI_MODE_DESC1 *mode,DXGI_MODE_DESC1 *closest_match,IUnknown *device) { ++ return This->lpVtbl->FindClosestMatchingMode1(This,mode,closest_match,device); ++} ++static FORCEINLINE HRESULT IDXGIOutput3_GetDisplaySurfaceData1(IDXGIOutput3* This,IDXGIResource *resource) { ++ return This->lpVtbl->GetDisplaySurfaceData1(This,resource); ++} ++static FORCEINLINE HRESULT IDXGIOutput3_DuplicateOutput(IDXGIOutput3* This,IUnknown *device,IDXGIOutputDuplication **output) { ++ return This->lpVtbl->DuplicateOutput(This,device,output); ++} ++/*** IDXGIOutput2 methods ***/ ++static FORCEINLINE WINBOOL IDXGIOutput3_SupportsOverlays(IDXGIOutput3* This) { ++ return This->lpVtbl->SupportsOverlays(This); ++} ++/*** IDXGIOutput3 methods ***/ ++static FORCEINLINE HRESULT IDXGIOutput3_CheckOverlaySupport(IDXGIOutput3* This,DXGI_FORMAT format,IUnknown *device,UINT *flags) { ++ return This->lpVtbl->CheckOverlaySupport(This,format,device,flags); ++} ++#endif ++#endif ++ ++#endif ++ ++HRESULT STDMETHODCALLTYPE IDXGIOutput3_CheckOverlaySupport_Proxy( ++ IDXGIOutput3* This, ++ DXGI_FORMAT format, ++ IUnknown *device, ++ UINT *flags); ++void __RPC_STUB IDXGIOutput3_CheckOverlaySupport_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ ++#endif /* __IDXGIOutput3_INTERFACE_DEFINED__ */ ++ ++HRESULT __stdcall CreateDXGIFactory2(UINT Flags,REFIID riid,void **factory); ++ ++typedef struct DXGI_MATRIX_3X2_F { ++ float _11; ++ float _12; ++ float _21; ++ float _22; ++ float _31; ++ float _32; ++} DXGI_MATRIX_3X2_F; ++/***************************************************************************** ++ * IDXGISwapChain2 interface ++ */ ++#ifndef __IDXGISwapChain2_INTERFACE_DEFINED__ ++#define __IDXGISwapChain2_INTERFACE_DEFINED__ ++ ++DEFINE_GUID(IID_IDXGISwapChain2, 0xa8be2ac4, 0x199f, 0x4946, 0xb3,0x31, 0x79,0x59,0x9f,0xb9,0x8d,0xe7); ++#if defined(__cplusplus) && !defined(CINTERFACE) ++MIDL_INTERFACE("a8be2ac4-199f-4946-b331-79599fb98de7") ++IDXGISwapChain2 : public IDXGISwapChain1 ++{ ++ virtual HRESULT STDMETHODCALLTYPE SetSourceSize( ++ UINT width, ++ UINT height) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetSourceSize( ++ UINT *width, ++ UINT *height) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE SetMaximumFrameLatency( ++ UINT max_latency) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetMaximumFrameLatency( ++ UINT *max_latency) = 0; ++ ++ virtual HANDLE STDMETHODCALLTYPE GetFrameLatencyWaitableObject( ++ ) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE SetMatrixTransform( ++ const DXGI_MATRIX_3X2_F *matrix) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE GetMatrixTransform( ++ DXGI_MATRIX_3X2_F *matrix) = 0; ++ ++}; ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(IDXGISwapChain2, 0xa8be2ac4, 0x199f, 0x4946, 0xb3,0x31, 0x79,0x59,0x9f,0xb9,0x8d,0xe7) ++#endif ++#else ++typedef struct IDXGISwapChain2Vtbl { ++ BEGIN_INTERFACE ++ ++ /*** IUnknown methods ***/ ++ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ++ IDXGISwapChain2* This, ++ REFIID riid, ++ void **ppvObject); ++ ++ ULONG (STDMETHODCALLTYPE *AddRef)( ++ IDXGISwapChain2* This); ++ ++ ULONG (STDMETHODCALLTYPE *Release)( ++ IDXGISwapChain2* This); ++ ++ /*** IDXGIObject methods ***/ ++ HRESULT (STDMETHODCALLTYPE *SetPrivateData)( ++ IDXGISwapChain2* This, ++ REFGUID guid, ++ UINT data_size, ++ const void *data); ++ ++ HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( ++ IDXGISwapChain2* This, ++ REFGUID guid, ++ const IUnknown *object); ++ ++ HRESULT (STDMETHODCALLTYPE *GetPrivateData)( ++ IDXGISwapChain2* This, ++ REFGUID guid, ++ UINT *data_size, ++ void *data); ++ ++ HRESULT (STDMETHODCALLTYPE *GetParent)( ++ IDXGISwapChain2* This, ++ REFIID riid, ++ void **parent); ++ ++ /*** IDXGIDeviceSubObject methods ***/ ++ HRESULT (STDMETHODCALLTYPE *GetDevice)( ++ IDXGISwapChain2* This, ++ REFIID riid, ++ void **device); ++ ++ /*** IDXGISwapChain methods ***/ ++ HRESULT (STDMETHODCALLTYPE *Present)( ++ IDXGISwapChain2* This, ++ UINT sync_interval, ++ UINT flags); ++ ++ HRESULT (STDMETHODCALLTYPE *GetBuffer)( ++ IDXGISwapChain2* This, ++ UINT buffer_idx, ++ REFIID riid, ++ void **surface); ++ ++ HRESULT (STDMETHODCALLTYPE *SetFullscreenState)( ++ IDXGISwapChain2* This, ++ WINBOOL fullscreen, ++ IDXGIOutput *target); ++ ++ HRESULT (STDMETHODCALLTYPE *GetFullscreenState)( ++ IDXGISwapChain2* This, ++ WINBOOL *fullscreen, ++ IDXGIOutput **target); ++ ++ HRESULT (STDMETHODCALLTYPE *GetDesc)( ++ IDXGISwapChain2* This, ++ DXGI_SWAP_CHAIN_DESC *desc); ++ ++ HRESULT (STDMETHODCALLTYPE *ResizeBuffers)( ++ IDXGISwapChain2* This, ++ UINT buffer_count, ++ UINT width, ++ UINT height, ++ DXGI_FORMAT format, ++ UINT flags); ++ ++ HRESULT (STDMETHODCALLTYPE *ResizeTarget)( ++ IDXGISwapChain2* This, ++ const DXGI_MODE_DESC *target_mode_desc); ++ ++ HRESULT (STDMETHODCALLTYPE *GetContainingOutput)( ++ IDXGISwapChain2* This, ++ IDXGIOutput **output); ++ ++ HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)( ++ IDXGISwapChain2* This, ++ DXGI_FRAME_STATISTICS *stats); ++ ++ HRESULT (STDMETHODCALLTYPE *GetLastPresentCount)( ++ IDXGISwapChain2* This, ++ UINT *last_present_count); ++ ++ /*** IDXGISwapChain1 methods ***/ ++ HRESULT (STDMETHODCALLTYPE *GetDesc1)( ++ IDXGISwapChain2* This, ++ DXGI_SWAP_CHAIN_DESC1 *pDesc); ++ ++ HRESULT (STDMETHODCALLTYPE *GetFullscreenDesc)( ++ IDXGISwapChain2* This, ++ DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc); ++ ++ HRESULT (STDMETHODCALLTYPE *GetHwnd)( ++ IDXGISwapChain2* This, ++ HWND *pHwnd); ++ ++ HRESULT (STDMETHODCALLTYPE *GetCoreWindow)( ++ IDXGISwapChain2* This, ++ REFIID refiid, ++ void **ppUnk); ++ ++ HRESULT (STDMETHODCALLTYPE *Present1)( ++ IDXGISwapChain2* This, ++ UINT SyncInterval, ++ UINT PresentFlags, ++ const DXGI_PRESENT_PARAMETERS *pPresentParameters); ++ ++ WINBOOL (STDMETHODCALLTYPE *IsTemporaryMonoSupported)( ++ IDXGISwapChain2* This); ++ ++ HRESULT (STDMETHODCALLTYPE *GetRestrictToOutput)( ++ IDXGISwapChain2* This, ++ IDXGIOutput **ppRestrictToOutput); ++ ++ HRESULT (STDMETHODCALLTYPE *SetBackgroundColor)( ++ IDXGISwapChain2* This, ++ const DXGI_RGBA *pColor); ++ ++ HRESULT (STDMETHODCALLTYPE *GetBackgroundColor)( ++ IDXGISwapChain2* This, ++ DXGI_RGBA *pColor); ++ ++ HRESULT (STDMETHODCALLTYPE *SetRotation)( ++ IDXGISwapChain2* This, ++ DXGI_MODE_ROTATION Rotation); ++ ++ HRESULT (STDMETHODCALLTYPE *GetRotation)( ++ IDXGISwapChain2* This, ++ DXGI_MODE_ROTATION *pRotation); ++ ++ /*** IDXGISwapChain2 methods ***/ ++ HRESULT (STDMETHODCALLTYPE *SetSourceSize)( ++ IDXGISwapChain2* This, ++ UINT width, ++ UINT height); ++ ++ HRESULT (STDMETHODCALLTYPE *GetSourceSize)( ++ IDXGISwapChain2* This, ++ UINT *width, ++ UINT *height); ++ ++ HRESULT (STDMETHODCALLTYPE *SetMaximumFrameLatency)( ++ IDXGISwapChain2* This, ++ UINT max_latency); ++ ++ HRESULT (STDMETHODCALLTYPE *GetMaximumFrameLatency)( ++ IDXGISwapChain2* This, ++ UINT *max_latency); ++ ++ HANDLE (STDMETHODCALLTYPE *GetFrameLatencyWaitableObject)( ++ IDXGISwapChain2* This); ++ ++ HRESULT (STDMETHODCALLTYPE *SetMatrixTransform)( ++ IDXGISwapChain2* This, ++ const DXGI_MATRIX_3X2_F *matrix); ++ ++ HRESULT (STDMETHODCALLTYPE *GetMatrixTransform)( ++ IDXGISwapChain2* This, ++ DXGI_MATRIX_3X2_F *matrix); ++ ++ END_INTERFACE ++} IDXGISwapChain2Vtbl; ++interface IDXGISwapChain2 { ++ CONST_VTBL IDXGISwapChain2Vtbl* lpVtbl; ++}; ++ ++#ifdef COBJMACROS ++#ifndef WIDL_C_INLINE_WRAPPERS ++/*** IUnknown methods ***/ ++#define IDXGISwapChain2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) ++#define IDXGISwapChain2_AddRef(This) (This)->lpVtbl->AddRef(This) ++#define IDXGISwapChain2_Release(This) (This)->lpVtbl->Release(This) ++/*** IDXGIObject methods ***/ ++#define IDXGISwapChain2_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) ++#define IDXGISwapChain2_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) ++#define IDXGISwapChain2_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) ++#define IDXGISwapChain2_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) ++/*** IDXGIDeviceSubObject methods ***/ ++#define IDXGISwapChain2_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device) ++/*** IDXGISwapChain methods ***/ ++#define IDXGISwapChain2_Present(This,sync_interval,flags) (This)->lpVtbl->Present(This,sync_interval,flags) ++#define IDXGISwapChain2_GetBuffer(This,buffer_idx,riid,surface) (This)->lpVtbl->GetBuffer(This,buffer_idx,riid,surface) ++#define IDXGISwapChain2_SetFullscreenState(This,fullscreen,target) (This)->lpVtbl->SetFullscreenState(This,fullscreen,target) ++#define IDXGISwapChain2_GetFullscreenState(This,fullscreen,target) (This)->lpVtbl->GetFullscreenState(This,fullscreen,target) ++#define IDXGISwapChain2_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) ++#define IDXGISwapChain2_ResizeBuffers(This,buffer_count,width,height,format,flags) (This)->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags) ++#define IDXGISwapChain2_ResizeTarget(This,target_mode_desc) (This)->lpVtbl->ResizeTarget(This,target_mode_desc) ++#define IDXGISwapChain2_GetContainingOutput(This,output) (This)->lpVtbl->GetContainingOutput(This,output) ++#define IDXGISwapChain2_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats) ++#define IDXGISwapChain2_GetLastPresentCount(This,last_present_count) (This)->lpVtbl->GetLastPresentCount(This,last_present_count) ++/*** IDXGISwapChain1 methods ***/ ++#define IDXGISwapChain2_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc) ++#define IDXGISwapChain2_GetFullscreenDesc(This,pDesc) (This)->lpVtbl->GetFullscreenDesc(This,pDesc) ++#define IDXGISwapChain2_GetHwnd(This,pHwnd) (This)->lpVtbl->GetHwnd(This,pHwnd) ++#define IDXGISwapChain2_GetCoreWindow(This,refiid,ppUnk) (This)->lpVtbl->GetCoreWindow(This,refiid,ppUnk) ++#define IDXGISwapChain2_Present1(This,SyncInterval,PresentFlags,pPresentParameters) (This)->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters) ++#define IDXGISwapChain2_IsTemporaryMonoSupported(This) (This)->lpVtbl->IsTemporaryMonoSupported(This) ++#define IDXGISwapChain2_GetRestrictToOutput(This,ppRestrictToOutput) (This)->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput) ++#define IDXGISwapChain2_SetBackgroundColor(This,pColor) (This)->lpVtbl->SetBackgroundColor(This,pColor) ++#define IDXGISwapChain2_GetBackgroundColor(This,pColor) (This)->lpVtbl->GetBackgroundColor(This,pColor) ++#define IDXGISwapChain2_SetRotation(This,Rotation) (This)->lpVtbl->SetRotation(This,Rotation) ++#define IDXGISwapChain2_GetRotation(This,pRotation) (This)->lpVtbl->GetRotation(This,pRotation) ++/*** IDXGISwapChain2 methods ***/ ++#define IDXGISwapChain2_SetSourceSize(This,width,height) (This)->lpVtbl->SetSourceSize(This,width,height) ++#define IDXGISwapChain2_GetSourceSize(This,width,height) (This)->lpVtbl->GetSourceSize(This,width,height) ++#define IDXGISwapChain2_SetMaximumFrameLatency(This,max_latency) (This)->lpVtbl->SetMaximumFrameLatency(This,max_latency) ++#define IDXGISwapChain2_GetMaximumFrameLatency(This,max_latency) (This)->lpVtbl->GetMaximumFrameLatency(This,max_latency) ++#define IDXGISwapChain2_GetFrameLatencyWaitableObject(This) (This)->lpVtbl->GetFrameLatencyWaitableObject(This) ++#define IDXGISwapChain2_SetMatrixTransform(This,matrix) (This)->lpVtbl->SetMatrixTransform(This,matrix) ++#define IDXGISwapChain2_GetMatrixTransform(This,matrix) (This)->lpVtbl->GetMatrixTransform(This,matrix) ++#else ++/*** IUnknown methods ***/ ++static FORCEINLINE HRESULT IDXGISwapChain2_QueryInterface(IDXGISwapChain2* This,REFIID riid,void **ppvObject) { ++ return This->lpVtbl->QueryInterface(This,riid,ppvObject); ++} ++static FORCEINLINE ULONG IDXGISwapChain2_AddRef(IDXGISwapChain2* This) { ++ return This->lpVtbl->AddRef(This); ++} ++static FORCEINLINE ULONG IDXGISwapChain2_Release(IDXGISwapChain2* This) { ++ return This->lpVtbl->Release(This); ++} ++/*** IDXGIObject methods ***/ ++static FORCEINLINE HRESULT IDXGISwapChain2_SetPrivateData(IDXGISwapChain2* This,REFGUID guid,UINT data_size,const void *data) { ++ return This->lpVtbl->SetPrivateData(This,guid,data_size,data); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_SetPrivateDataInterface(IDXGISwapChain2* This,REFGUID guid,const IUnknown *object) { ++ return This->lpVtbl->SetPrivateDataInterface(This,guid,object); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_GetPrivateData(IDXGISwapChain2* This,REFGUID guid,UINT *data_size,void *data) { ++ return This->lpVtbl->GetPrivateData(This,guid,data_size,data); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_GetParent(IDXGISwapChain2* This,REFIID riid,void **parent) { ++ return This->lpVtbl->GetParent(This,riid,parent); ++} ++/*** IDXGIDeviceSubObject methods ***/ ++static FORCEINLINE HRESULT IDXGISwapChain2_GetDevice(IDXGISwapChain2* This,REFIID riid,void **device) { ++ return This->lpVtbl->GetDevice(This,riid,device); ++} ++/*** IDXGISwapChain methods ***/ ++static FORCEINLINE HRESULT IDXGISwapChain2_Present(IDXGISwapChain2* This,UINT sync_interval,UINT flags) { ++ return This->lpVtbl->Present(This,sync_interval,flags); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_GetBuffer(IDXGISwapChain2* This,UINT buffer_idx,REFIID riid,void **surface) { ++ return This->lpVtbl->GetBuffer(This,buffer_idx,riid,surface); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_SetFullscreenState(IDXGISwapChain2* This,WINBOOL fullscreen,IDXGIOutput *target) { ++ return This->lpVtbl->SetFullscreenState(This,fullscreen,target); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_GetFullscreenState(IDXGISwapChain2* This,WINBOOL *fullscreen,IDXGIOutput **target) { ++ return This->lpVtbl->GetFullscreenState(This,fullscreen,target); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_GetDesc(IDXGISwapChain2* This,DXGI_SWAP_CHAIN_DESC *desc) { ++ return This->lpVtbl->GetDesc(This,desc); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_ResizeBuffers(IDXGISwapChain2* This,UINT buffer_count,UINT width,UINT height,DXGI_FORMAT format,UINT flags) { ++ return This->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_ResizeTarget(IDXGISwapChain2* This,const DXGI_MODE_DESC *target_mode_desc) { ++ return This->lpVtbl->ResizeTarget(This,target_mode_desc); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_GetContainingOutput(IDXGISwapChain2* This,IDXGIOutput **output) { ++ return This->lpVtbl->GetContainingOutput(This,output); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_GetFrameStatistics(IDXGISwapChain2* This,DXGI_FRAME_STATISTICS *stats) { ++ return This->lpVtbl->GetFrameStatistics(This,stats); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_GetLastPresentCount(IDXGISwapChain2* This,UINT *last_present_count) { ++ return This->lpVtbl->GetLastPresentCount(This,last_present_count); ++} ++/*** IDXGISwapChain1 methods ***/ ++static FORCEINLINE HRESULT IDXGISwapChain2_GetDesc1(IDXGISwapChain2* This,DXGI_SWAP_CHAIN_DESC1 *pDesc) { ++ return This->lpVtbl->GetDesc1(This,pDesc); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_GetFullscreenDesc(IDXGISwapChain2* This,DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc) { ++ return This->lpVtbl->GetFullscreenDesc(This,pDesc); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_GetHwnd(IDXGISwapChain2* This,HWND *pHwnd) { ++ return This->lpVtbl->GetHwnd(This,pHwnd); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_GetCoreWindow(IDXGISwapChain2* This,REFIID refiid,void **ppUnk) { ++ return This->lpVtbl->GetCoreWindow(This,refiid,ppUnk); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_Present1(IDXGISwapChain2* This,UINT SyncInterval,UINT PresentFlags,const DXGI_PRESENT_PARAMETERS *pPresentParameters) { ++ return This->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters); ++} ++static FORCEINLINE WINBOOL IDXGISwapChain2_IsTemporaryMonoSupported(IDXGISwapChain2* This) { ++ return This->lpVtbl->IsTemporaryMonoSupported(This); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_GetRestrictToOutput(IDXGISwapChain2* This,IDXGIOutput **ppRestrictToOutput) { ++ return This->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_SetBackgroundColor(IDXGISwapChain2* This,const DXGI_RGBA *pColor) { ++ return This->lpVtbl->SetBackgroundColor(This,pColor); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_GetBackgroundColor(IDXGISwapChain2* This,DXGI_RGBA *pColor) { ++ return This->lpVtbl->GetBackgroundColor(This,pColor); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_SetRotation(IDXGISwapChain2* This,DXGI_MODE_ROTATION Rotation) { ++ return This->lpVtbl->SetRotation(This,Rotation); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_GetRotation(IDXGISwapChain2* This,DXGI_MODE_ROTATION *pRotation) { ++ return This->lpVtbl->GetRotation(This,pRotation); ++} ++/*** IDXGISwapChain2 methods ***/ ++static FORCEINLINE HRESULT IDXGISwapChain2_SetSourceSize(IDXGISwapChain2* This,UINT width,UINT height) { ++ return This->lpVtbl->SetSourceSize(This,width,height); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_GetSourceSize(IDXGISwapChain2* This,UINT *width,UINT *height) { ++ return This->lpVtbl->GetSourceSize(This,width,height); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_SetMaximumFrameLatency(IDXGISwapChain2* This,UINT max_latency) { ++ return This->lpVtbl->SetMaximumFrameLatency(This,max_latency); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_GetMaximumFrameLatency(IDXGISwapChain2* This,UINT *max_latency) { ++ return This->lpVtbl->GetMaximumFrameLatency(This,max_latency); ++} ++static FORCEINLINE HANDLE IDXGISwapChain2_GetFrameLatencyWaitableObject(IDXGISwapChain2* This) { ++ return This->lpVtbl->GetFrameLatencyWaitableObject(This); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_SetMatrixTransform(IDXGISwapChain2* This,const DXGI_MATRIX_3X2_F *matrix) { ++ return This->lpVtbl->SetMatrixTransform(This,matrix); ++} ++static FORCEINLINE HRESULT IDXGISwapChain2_GetMatrixTransform(IDXGISwapChain2* This,DXGI_MATRIX_3X2_F *matrix) { ++ return This->lpVtbl->GetMatrixTransform(This,matrix); ++} ++#endif ++#endif ++ ++#endif ++ ++HRESULT STDMETHODCALLTYPE IDXGISwapChain2_SetSourceSize_Proxy( ++ IDXGISwapChain2* This, ++ UINT width, ++ UINT height); ++void __RPC_STUB IDXGISwapChain2_SetSourceSize_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGISwapChain2_GetSourceSize_Proxy( ++ IDXGISwapChain2* This, ++ UINT *width, ++ UINT *height); ++void __RPC_STUB IDXGISwapChain2_GetSourceSize_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGISwapChain2_SetMaximumFrameLatency_Proxy( ++ IDXGISwapChain2* This, ++ UINT max_latency); ++void __RPC_STUB IDXGISwapChain2_SetMaximumFrameLatency_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGISwapChain2_GetMaximumFrameLatency_Proxy( ++ IDXGISwapChain2* This, ++ UINT *max_latency); ++void __RPC_STUB IDXGISwapChain2_GetMaximumFrameLatency_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HANDLE STDMETHODCALLTYPE IDXGISwapChain2_GetFrameLatencyWaitableObject_Proxy( ++ IDXGISwapChain2* This); ++void __RPC_STUB IDXGISwapChain2_GetFrameLatencyWaitableObject_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGISwapChain2_SetMatrixTransform_Proxy( ++ IDXGISwapChain2* This, ++ const DXGI_MATRIX_3X2_F *matrix); ++void __RPC_STUB IDXGISwapChain2_SetMatrixTransform_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGISwapChain2_GetMatrixTransform_Proxy( ++ IDXGISwapChain2* This, ++ DXGI_MATRIX_3X2_F *matrix); ++void __RPC_STUB IDXGISwapChain2_GetMatrixTransform_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ ++#endif /* __IDXGISwapChain2_INTERFACE_DEFINED__ */ ++ ++/***************************************************************************** ++ * IDXGIFactory3 interface ++ */ ++#ifndef __IDXGIFactory3_INTERFACE_DEFINED__ ++#define __IDXGIFactory3_INTERFACE_DEFINED__ ++ ++DEFINE_GUID(IID_IDXGIFactory3, 0x25483823, 0xcd46, 0x4c7d, 0x86,0xca, 0x47,0xaa,0x95,0xb8,0x37,0xbd); ++#if defined(__cplusplus) && !defined(CINTERFACE) ++MIDL_INTERFACE("25483823-cd46-4c7d-86ca-47aa95b837bd") ++IDXGIFactory3 : public IDXGIFactory2 ++{ ++ virtual UINT STDMETHODCALLTYPE GetCreationFlags( ++ ) = 0; ++ ++}; ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(IDXGIFactory3, 0x25483823, 0xcd46, 0x4c7d, 0x86,0xca, 0x47,0xaa,0x95,0xb8,0x37,0xbd) ++#endif ++#else ++typedef struct IDXGIFactory3Vtbl { ++ BEGIN_INTERFACE ++ ++ /*** IUnknown methods ***/ ++ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ++ IDXGIFactory3* This, ++ REFIID riid, ++ void **ppvObject); ++ ++ ULONG (STDMETHODCALLTYPE *AddRef)( ++ IDXGIFactory3* This); ++ ++ ULONG (STDMETHODCALLTYPE *Release)( ++ IDXGIFactory3* This); ++ ++ /*** IDXGIObject methods ***/ ++ HRESULT (STDMETHODCALLTYPE *SetPrivateData)( ++ IDXGIFactory3* This, ++ REFGUID guid, ++ UINT data_size, ++ const void *data); ++ ++ HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( ++ IDXGIFactory3* This, ++ REFGUID guid, ++ const IUnknown *object); ++ ++ HRESULT (STDMETHODCALLTYPE *GetPrivateData)( ++ IDXGIFactory3* This, ++ REFGUID guid, ++ UINT *data_size, ++ void *data); ++ ++ HRESULT (STDMETHODCALLTYPE *GetParent)( ++ IDXGIFactory3* This, ++ REFIID riid, ++ void **parent); ++ ++ /*** IDXGIFactory methods ***/ ++ HRESULT (STDMETHODCALLTYPE *EnumAdapters)( ++ IDXGIFactory3* This, ++ UINT adapter_idx, ++ IDXGIAdapter **adapter); ++ ++ HRESULT (STDMETHODCALLTYPE *MakeWindowAssociation)( ++ IDXGIFactory3* This, ++ HWND window, ++ UINT flags); ++ ++ HRESULT (STDMETHODCALLTYPE *GetWindowAssociation)( ++ IDXGIFactory3* This, ++ HWND *window); ++ ++ HRESULT (STDMETHODCALLTYPE *CreateSwapChain)( ++ IDXGIFactory3* This, ++ IUnknown *device, ++ DXGI_SWAP_CHAIN_DESC *desc, ++ IDXGISwapChain **swapchain); ++ ++ HRESULT (STDMETHODCALLTYPE *CreateSoftwareAdapter)( ++ IDXGIFactory3* This, ++ HMODULE swrast, ++ IDXGIAdapter **adapter); ++ ++ /*** IDXGIFactory1 methods ***/ ++ HRESULT (STDMETHODCALLTYPE *EnumAdapters1)( ++ IDXGIFactory3* This, ++ UINT Adapter, ++ IDXGIAdapter1 **ppAdapter); ++ ++ WINBOOL (STDMETHODCALLTYPE *IsCurrent)( ++ IDXGIFactory3* This); ++ ++ /*** IDXGIFactory2 methods ***/ ++ WINBOOL (STDMETHODCALLTYPE *IsWindowedStereoEnabled)( ++ IDXGIFactory3* This); ++ ++ HRESULT (STDMETHODCALLTYPE *CreateSwapChainForHwnd)( ++ IDXGIFactory3* This, ++ IUnknown *pDevice, ++ HWND hWnd, ++ const DXGI_SWAP_CHAIN_DESC1 *pDesc, ++ const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc, ++ IDXGIOutput *pRestrictToOutput, ++ IDXGISwapChain1 **ppSwapChain); ++ ++ HRESULT (STDMETHODCALLTYPE *CreateSwapChainForCoreWindow)( ++ IDXGIFactory3* This, ++ IUnknown *pDevice, ++ IUnknown *pWindow, ++ const DXGI_SWAP_CHAIN_DESC1 *pDesc, ++ IDXGIOutput *pRestrictToOutput, ++ IDXGISwapChain1 **ppSwapChain); ++ ++ HRESULT (STDMETHODCALLTYPE *GetSharedResourceAdapterLuid)( ++ IDXGIFactory3* This, ++ HANDLE hResource, ++ LUID *pLuid); ++ ++ HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusWindow)( ++ IDXGIFactory3* This, ++ HWND WindowHandle, ++ UINT wMsg, ++ DWORD *pdwCookie); ++ ++ HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusEvent)( ++ IDXGIFactory3* This, ++ HANDLE hEvent, ++ DWORD *pdwCookie); ++ ++ void (STDMETHODCALLTYPE *UnregisterStereoStatus)( ++ IDXGIFactory3* This, ++ DWORD dwCookie); ++ ++ HRESULT (STDMETHODCALLTYPE *RegisterStereoStatusWindow)( ++ IDXGIFactory3* This, ++ HWND WindowHandle, ++ UINT wMsg, ++ DWORD *pdwCookie); ++ ++ HRESULT (STDMETHODCALLTYPE *RegisterOcclusionStatusEvent)( ++ IDXGIFactory3* This, ++ HANDLE hEvent, ++ DWORD *pdwCookie); ++ ++ void (STDMETHODCALLTYPE *UnregisterOcclusionStatus)( ++ IDXGIFactory3* This, ++ DWORD dwCookie); ++ ++ HRESULT (STDMETHODCALLTYPE *CreateSwapChainForComposition)( ++ IDXGIFactory3* This, ++ IUnknown *pDevice, ++ const DXGI_SWAP_CHAIN_DESC1 *pDesc, ++ IDXGIOutput *pRestrictToOutput, ++ IDXGISwapChain1 **ppSwapChain); ++ ++ /*** IDXGIFactory3 methods ***/ ++ UINT (STDMETHODCALLTYPE *GetCreationFlags)( ++ IDXGIFactory3* This); ++ ++ END_INTERFACE ++} IDXGIFactory3Vtbl; ++interface IDXGIFactory3 { ++ CONST_VTBL IDXGIFactory3Vtbl* lpVtbl; ++}; ++ ++#ifdef COBJMACROS ++#ifndef WIDL_C_INLINE_WRAPPERS ++/*** IUnknown methods ***/ ++#define IDXGIFactory3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) ++#define IDXGIFactory3_AddRef(This) (This)->lpVtbl->AddRef(This) ++#define IDXGIFactory3_Release(This) (This)->lpVtbl->Release(This) ++/*** IDXGIObject methods ***/ ++#define IDXGIFactory3_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) ++#define IDXGIFactory3_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) ++#define IDXGIFactory3_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) ++#define IDXGIFactory3_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) ++/*** IDXGIFactory methods ***/ ++#define IDXGIFactory3_EnumAdapters(This,adapter_idx,adapter) (This)->lpVtbl->EnumAdapters(This,adapter_idx,adapter) ++#define IDXGIFactory3_MakeWindowAssociation(This,window,flags) (This)->lpVtbl->MakeWindowAssociation(This,window,flags) ++#define IDXGIFactory3_GetWindowAssociation(This,window) (This)->lpVtbl->GetWindowAssociation(This,window) ++#define IDXGIFactory3_CreateSwapChain(This,device,desc,swapchain) (This)->lpVtbl->CreateSwapChain(This,device,desc,swapchain) ++#define IDXGIFactory3_CreateSoftwareAdapter(This,swrast,adapter) (This)->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter) ++/*** IDXGIFactory1 methods ***/ ++#define IDXGIFactory3_EnumAdapters1(This,Adapter,ppAdapter) (This)->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter) ++#define IDXGIFactory3_IsCurrent(This) (This)->lpVtbl->IsCurrent(This) ++/*** IDXGIFactory2 methods ***/ ++#define IDXGIFactory3_IsWindowedStereoEnabled(This) (This)->lpVtbl->IsWindowedStereoEnabled(This) ++#define IDXGIFactory3_CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain) ++#define IDXGIFactory3_CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain) ++#define IDXGIFactory3_GetSharedResourceAdapterLuid(This,hResource,pLuid) (This)->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid) ++#define IDXGIFactory3_RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie) ++#define IDXGIFactory3_RegisterStereoStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie) ++#define IDXGIFactory3_UnregisterStereoStatus(This,dwCookie) (This)->lpVtbl->UnregisterStereoStatus(This,dwCookie) ++#define IDXGIFactory3_RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) (This)->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie) ++#define IDXGIFactory3_RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) (This)->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie) ++#define IDXGIFactory3_UnregisterOcclusionStatus(This,dwCookie) (This)->lpVtbl->UnregisterOcclusionStatus(This,dwCookie) ++#define IDXGIFactory3_CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) (This)->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain) ++/*** IDXGIFactory3 methods ***/ ++#define IDXGIFactory3_GetCreationFlags(This) (This)->lpVtbl->GetCreationFlags(This) ++#else ++/*** IUnknown methods ***/ ++static FORCEINLINE HRESULT IDXGIFactory3_QueryInterface(IDXGIFactory3* This,REFIID riid,void **ppvObject) { ++ return This->lpVtbl->QueryInterface(This,riid,ppvObject); ++} ++static FORCEINLINE ULONG IDXGIFactory3_AddRef(IDXGIFactory3* This) { ++ return This->lpVtbl->AddRef(This); ++} ++static FORCEINLINE ULONG IDXGIFactory3_Release(IDXGIFactory3* This) { ++ return This->lpVtbl->Release(This); ++} ++/*** IDXGIObject methods ***/ ++static FORCEINLINE HRESULT IDXGIFactory3_SetPrivateData(IDXGIFactory3* This,REFGUID guid,UINT data_size,const void *data) { ++ return This->lpVtbl->SetPrivateData(This,guid,data_size,data); ++} ++static FORCEINLINE HRESULT IDXGIFactory3_SetPrivateDataInterface(IDXGIFactory3* This,REFGUID guid,const IUnknown *object) { ++ return This->lpVtbl->SetPrivateDataInterface(This,guid,object); ++} ++static FORCEINLINE HRESULT IDXGIFactory3_GetPrivateData(IDXGIFactory3* This,REFGUID guid,UINT *data_size,void *data) { ++ return This->lpVtbl->GetPrivateData(This,guid,data_size,data); ++} ++static FORCEINLINE HRESULT IDXGIFactory3_GetParent(IDXGIFactory3* This,REFIID riid,void **parent) { ++ return This->lpVtbl->GetParent(This,riid,parent); ++} ++/*** IDXGIFactory methods ***/ ++static FORCEINLINE HRESULT IDXGIFactory3_EnumAdapters(IDXGIFactory3* This,UINT adapter_idx,IDXGIAdapter **adapter) { ++ return This->lpVtbl->EnumAdapters(This,adapter_idx,adapter); ++} ++static FORCEINLINE HRESULT IDXGIFactory3_MakeWindowAssociation(IDXGIFactory3* This,HWND window,UINT flags) { ++ return This->lpVtbl->MakeWindowAssociation(This,window,flags); ++} ++static FORCEINLINE HRESULT IDXGIFactory3_GetWindowAssociation(IDXGIFactory3* This,HWND *window) { ++ return This->lpVtbl->GetWindowAssociation(This,window); ++} ++static FORCEINLINE HRESULT IDXGIFactory3_CreateSwapChain(IDXGIFactory3* This,IUnknown *device,DXGI_SWAP_CHAIN_DESC *desc,IDXGISwapChain **swapchain) { ++ return This->lpVtbl->CreateSwapChain(This,device,desc,swapchain); ++} ++static FORCEINLINE HRESULT IDXGIFactory3_CreateSoftwareAdapter(IDXGIFactory3* This,HMODULE swrast,IDXGIAdapter **adapter) { ++ return This->lpVtbl->CreateSoftwareAdapter(This,swrast,adapter); ++} ++/*** IDXGIFactory1 methods ***/ ++static FORCEINLINE HRESULT IDXGIFactory3_EnumAdapters1(IDXGIFactory3* This,UINT Adapter,IDXGIAdapter1 **ppAdapter) { ++ return This->lpVtbl->EnumAdapters1(This,Adapter,ppAdapter); ++} ++static FORCEINLINE WINBOOL IDXGIFactory3_IsCurrent(IDXGIFactory3* This) { ++ return This->lpVtbl->IsCurrent(This); ++} ++/*** IDXGIFactory2 methods ***/ ++static FORCEINLINE WINBOOL IDXGIFactory3_IsWindowedStereoEnabled(IDXGIFactory3* This) { ++ return This->lpVtbl->IsWindowedStereoEnabled(This); ++} ++static FORCEINLINE HRESULT IDXGIFactory3_CreateSwapChainForHwnd(IDXGIFactory3* This,IUnknown *pDevice,HWND hWnd,const DXGI_SWAP_CHAIN_DESC1 *pDesc,const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pFullscreenDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) { ++ return This->lpVtbl->CreateSwapChainForHwnd(This,pDevice,hWnd,pDesc,pFullscreenDesc,pRestrictToOutput,ppSwapChain); ++} ++static FORCEINLINE HRESULT IDXGIFactory3_CreateSwapChainForCoreWindow(IDXGIFactory3* This,IUnknown *pDevice,IUnknown *pWindow,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) { ++ return This->lpVtbl->CreateSwapChainForCoreWindow(This,pDevice,pWindow,pDesc,pRestrictToOutput,ppSwapChain); ++} ++static FORCEINLINE HRESULT IDXGIFactory3_GetSharedResourceAdapterLuid(IDXGIFactory3* This,HANDLE hResource,LUID *pLuid) { ++ return This->lpVtbl->GetSharedResourceAdapterLuid(This,hResource,pLuid); ++} ++static FORCEINLINE HRESULT IDXGIFactory3_RegisterOcclusionStatusWindow(IDXGIFactory3* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) { ++ return This->lpVtbl->RegisterOcclusionStatusWindow(This,WindowHandle,wMsg,pdwCookie); ++} ++static FORCEINLINE HRESULT IDXGIFactory3_RegisterStereoStatusEvent(IDXGIFactory3* This,HANDLE hEvent,DWORD *pdwCookie) { ++ return This->lpVtbl->RegisterStereoStatusEvent(This,hEvent,pdwCookie); ++} ++static FORCEINLINE void IDXGIFactory3_UnregisterStereoStatus(IDXGIFactory3* This,DWORD dwCookie) { ++ This->lpVtbl->UnregisterStereoStatus(This,dwCookie); ++} ++static FORCEINLINE HRESULT IDXGIFactory3_RegisterStereoStatusWindow(IDXGIFactory3* This,HWND WindowHandle,UINT wMsg,DWORD *pdwCookie) { ++ return This->lpVtbl->RegisterStereoStatusWindow(This,WindowHandle,wMsg,pdwCookie); ++} ++static FORCEINLINE HRESULT IDXGIFactory3_RegisterOcclusionStatusEvent(IDXGIFactory3* This,HANDLE hEvent,DWORD *pdwCookie) { ++ return This->lpVtbl->RegisterOcclusionStatusEvent(This,hEvent,pdwCookie); ++} ++static FORCEINLINE void IDXGIFactory3_UnregisterOcclusionStatus(IDXGIFactory3* This,DWORD dwCookie) { ++ This->lpVtbl->UnregisterOcclusionStatus(This,dwCookie); ++} ++static FORCEINLINE HRESULT IDXGIFactory3_CreateSwapChainForComposition(IDXGIFactory3* This,IUnknown *pDevice,const DXGI_SWAP_CHAIN_DESC1 *pDesc,IDXGIOutput *pRestrictToOutput,IDXGISwapChain1 **ppSwapChain) { ++ return This->lpVtbl->CreateSwapChainForComposition(This,pDevice,pDesc,pRestrictToOutput,ppSwapChain); ++} ++/*** IDXGIFactory3 methods ***/ ++static FORCEINLINE UINT IDXGIFactory3_GetCreationFlags(IDXGIFactory3* This) { ++ return This->lpVtbl->GetCreationFlags(This); ++} ++#endif ++#endif ++ ++#endif ++ ++UINT STDMETHODCALLTYPE IDXGIFactory3_GetCreationFlags_Proxy( ++ IDXGIFactory3* This); ++void __RPC_STUB IDXGIFactory3_GetCreationFlags_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ ++#endif /* __IDXGIFactory3_INTERFACE_DEFINED__ */ ++ ++/* Begin additional prototypes for all interfaces */ ++ ++ ++/* End additional prototypes */ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* __dxgi1_3_h__ */ +diff --git a/mingw-w64-headers/direct-x/include/dxgi1_3.idl b/mingw-w64-headers/direct-x/include/dxgi1_3.idl +new file mode 100644 +index 00000000..da4b5fbc +--- /dev/null ++++ b/mingw-w64-headers/direct-x/include/dxgi1_3.idl +@@ -0,0 +1,242 @@ ++/* ++ * Copyright 2015 Martell Malone ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++import "dxgi1_2.idl"; ++ ++cpp_quote("#define DXGI_CREATE_FACTORY_DEBUG 0x1") ++ ++typedef struct DXGI_DECODE_SWAP_CHAIN_DESC ++{ ++ UINT Flags; ++} DXGI_DECODE_SWAP_CHAIN_DESC; ++ ++typedef enum DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS ++{ ++ DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_NOMINAL_RANGE = 0x1, ++ DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_BT709 = 0x2, ++ DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAG_xvYCC = 0x4, ++} DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS; ++ ++[ ++ object, ++ local, ++ uuid(2633066b-4514-4c7a-8fd8-12ea98059d18) ++] ++interface IDXGIDecodeSwapChain : IUnknown ++{ ++ HRESULT PresentBuffer( ++ UINT buffer, ++ UINT sync, ++ UINT flags ++ ); ++ ++ HRESULT SetSourceRect( ++ const RECT* rect ++ ); ++ ++ HRESULT SetTargetRect( ++ const RECT* rect ++ ); ++ ++ HRESULT SetDestSize( ++ UINT width, ++ UINT height ++ ); ++ ++ HRESULT GetSourceRect( ++ [out] RECT* rect ++ ); ++ ++ HRESULT GetTargetRect( ++ [out] RECT* rect ++ ); ++ ++ HRESULT GetDestSize( ++ [out] UINT* width, ++ [out] UINT* height ++ ); ++ ++ HRESULT SetColorSpace( ++ DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS colorSpace ++ ); ++ ++ DXGI_MULTIPLANE_OVERLAY_YCbCr_FLAGS GetColorSpace(); ++} ++ ++[ ++ object, ++ local, ++ uuid(41e7d1f2-a591-4f7b-a2e5-fa9c843e1c12) ++] ++interface IDXGIFactoryMedia :IUnknown ++{ ++ HRESULT CreateSwapChainForCompositionSurfaceHandle( ++ [in] IUnknown* device, ++ [in] HANDLE surface, ++ [in] const DXGI_SWAP_CHAIN_DESC1* desc, ++ [in] IDXGIOutput* output, ++ [out] IDXGISwapChain1** swapchain ++ ); ++ ++ HRESULT CreateDecodeSwapChainForCompositionSurfaceHandle( ++ [in] IUnknown* device, ++ [in] HANDLE surface, ++ [in] DXGI_DECODE_SWAP_CHAIN_DESC* desc, ++ [in] IDXGIResource* buffer, ++ [in] IDXGIOutput* output, ++ [out] IDXGIDecodeSwapChain** swapchain ++ ); ++} ++ ++typedef enum DXGI_FRAME_PRESENTATION_MODE ++{ ++ DXGI_FRAME_PRESENTATION_MODE_COMPOSED = 0, ++ DXGI_FRAME_PRESENTATION_MODE_OVERLAY = 1, ++ DXGI_FRAME_PRESENTATION_MODE_NONE = 2, ++} DXGI_FRAME_PRESENTATION_MODE; ++ ++typedef struct DXGI_FRAME_STATISTICS_MEDIA ++{ ++ UINT PresentCount; ++ UINT PresentRefreshCount; ++ UINT SyncRefreshCount; ++ LARGE_INTEGER SyncQPCTime; ++ LARGE_INTEGER SyncGPUTime; ++ DXGI_FRAME_PRESENTATION_MODE CompositionMode; ++ UINT ApprovedPresentDuration; ++} DXGI_FRAME_STATISTICS_MEDIA; ++ ++[ ++ object, ++ local, ++ uuid(dd95b90b-f05f-4f6a-bd65-25bfb264bd84) ++] ++interface IDXGISwapChainMedia : IUnknown ++{ ++ HRESULT GetFrameStatisticsMedia( ++ [out] DXGI_FRAME_STATISTICS_MEDIA* pStats ++ ); ++ ++ HRESULT SetPresentDuration( ++ UINT duration ++ ); ++ ++ HRESULT CheckPresentDurationSupport( ++ UINT duration, ++ [out] UINT* smallerduration, ++ [out] UINT* largerduration ++ ); ++}; ++ ++typedef enum DXGI_OVERLAY_SUPPORT_FLAG ++{ ++ DXGI_OVERLAY_SUPPORT_FLAG_DIRECT = 0x1, ++ DXGI_OVERLAY_SUPPORT_FLAG_SCALING = 0x2 ++} DXGI_OVERLAY_SUPPORT_FLAG; ++ ++[ ++ object, ++ local, ++ uuid(6007896c-3244-4afd-bf18-a6d3beda5023) ++] ++interface IDXGIDevice3 : IDXGIDevice2 ++{ ++ void Trim(); ++} ++ ++[ ++ object, ++ local, ++ uuid(595e39d1-2724-4663-99b1-da969de28364) ++] ++interface IDXGIOutput2 : IDXGIOutput1 ++{ ++ BOOL SupportsOverlays(); ++} ++ ++[ ++ object, ++ local, ++ uuid(8a6bb301-7e7e-41F4-a8e0-5b32f7f99b18) ++] ++interface IDXGIOutput3 : IDXGIOutput2 ++{ ++ HRESULT CheckOverlaySupport( ++ [in] DXGI_FORMAT format, ++ [out, in] IUnknown* device, ++ [out] UINT* flags ++ ); ++} ++ ++[local] HRESULT __stdcall CreateDXGIFactory2(UINT Flags, REFIID riid, void **factory); ++ ++typedef struct DXGI_MATRIX_3X2_F ++{ ++ float _11; ++ float _12; ++ float _21; ++ float _22; ++ float _31; ++ float _32; ++} DXGI_MATRIX_3X2_F; ++ ++[ ++ object, ++ local, ++ uuid(a8be2ac4-199f-4946-b331-79599fb98de7) ++] ++interface IDXGISwapChain2 : IDXGISwapChain1 ++{ ++ HRESULT SetSourceSize( ++ UINT width, ++ UINT height ++ ); ++ ++ HRESULT GetSourceSize( ++ [out] UINT* width, ++ [out] UINT* height ++ ); ++ ++ HRESULT SetMaximumFrameLatency( ++ UINT max_latency ++ ); ++ ++ HRESULT GetMaximumFrameLatency( ++ [out] UINT* max_latency ++ ); ++ ++ HANDLE GetFrameLatencyWaitableObject(); ++ ++ HRESULT SetMatrixTransform( ++ const DXGI_MATRIX_3X2_F* matrix ++ ); ++ ++ HRESULT GetMatrixTransform( ++ [out] DXGI_MATRIX_3X2_F* matrix ++ ); ++} ++ ++[ ++ object, ++ local, ++ uuid(25483823-cd46-4c7d-86ca-47aa95b837bd) ++] ++interface IDXGIFactory3 : IDXGIFactory2 ++{ ++ UINT GetCreationFlags(); ++} +diff --git a/mingw-w64-headers/direct-x/include/dxgi1_4.h b/mingw-w64-headers/direct-x/include/dxgi1_4.h +new file mode 100644 +index 00000000..980287ca +--- /dev/null ++++ b/mingw-w64-headers/direct-x/include/dxgi1_4.h +@@ -0,0 +1,525 @@ ++/*** Autogenerated by WIDL 1.6 from dxgi1_4.idl - Do not edit ***/ ++ ++#ifndef __REQUIRED_RPCNDR_H_VERSION__ ++#define __REQUIRED_RPCNDR_H_VERSION__ 475 ++#endif ++ ++#include ++#include ++ ++#ifndef COM_NO_WINDOWS_H ++#include ++#include ++#endif ++ ++#ifndef __dxgi1_4_h__ ++#define __dxgi1_4_h__ ++ ++/* Forward declarations */ ++ ++#ifndef __IDXGISwapChain3_FWD_DEFINED__ ++#define __IDXGISwapChain3_FWD_DEFINED__ ++typedef interface IDXGISwapChain3 IDXGISwapChain3; ++#endif ++ ++/* Headers for imported files */ ++ ++#include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++typedef enum DXGI_COLOR_SPACE_TYPE { ++ DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 = 0, ++ DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709 = 1, ++ DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P709 = 2, ++ DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P2020 = 3, ++ DXGI_COLOR_SPACE_RESERVED = 4, ++ DXGI_COLOR_SPACE_YCBCR_FULL_G22_NONE_P709_X601 = 5, ++ DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P601 = 6, ++ DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P601 = 7, ++ DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P709 = 8, ++ DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P709 = 9, ++ DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P2020 = 10, ++ DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020 = 11, ++ DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 = 12, ++ DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_LEFT_P2020 = 13, ++ DXGI_COLOR_SPACE_RGB_STUDIO_G2084_NONE_P2020 = 14, ++ DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_TOPLEFT_P2020 = 15, ++ DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_TOPLEFT_P2020 = 16, ++ DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P2020 = 17, ++ DXGI_COLOR_SPACE_CUSTOM = 0xffffffff ++} DXGI_COLOR_SPACE_TYPE; ++/***************************************************************************** ++ * IDXGISwapChain3 interface ++ */ ++#ifndef __IDXGISwapChain3_INTERFACE_DEFINED__ ++#define __IDXGISwapChain3_INTERFACE_DEFINED__ ++ ++DEFINE_GUID(IID_IDXGISwapChain3, 0x94d99bdb, 0xf1f8, 0x4ab0, 0xb2,0x36, 0x7d,0xa0,0x17,0x0e,0xda,0xb1); ++#if defined(__cplusplus) && !defined(CINTERFACE) ++MIDL_INTERFACE("94d99bdb-f1f8-4ab0-b236-7da0170edab1") ++IDXGISwapChain3 : public IDXGISwapChain2 ++{ ++ virtual UINT STDMETHODCALLTYPE GetCurrentBackBufferIndex( ++ ) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE CheckColorSpaceSupport( ++ DXGI_COLOR_SPACE_TYPE ColorSpace, ++ UINT *pColorSpaceSupport) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE SetColorSpace1( ++ DXGI_COLOR_SPACE_TYPE ColorSpace) = 0; ++ ++ virtual HRESULT STDMETHODCALLTYPE ResizeBuffers1( ++ UINT BufferCount, ++ UINT Width, ++ UINT Height, ++ DXGI_FORMAT Format, ++ UINT SwapChainFlags, ++ const UINT *pCreationNodeMask, ++ IUnknown *const *ppPresentQueue) = 0; ++ ++}; ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(IDXGISwapChain3, 0x94d99bdb, 0xf1f8, 0x4ab0, 0xb2,0x36, 0x7d,0xa0,0x17,0x0e,0xda,0xb1) ++#endif ++#else ++typedef struct IDXGISwapChain3Vtbl { ++ BEGIN_INTERFACE ++ ++ /*** IUnknown methods ***/ ++ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ++ IDXGISwapChain3* This, ++ REFIID riid, ++ void **ppvObject); ++ ++ ULONG (STDMETHODCALLTYPE *AddRef)( ++ IDXGISwapChain3* This); ++ ++ ULONG (STDMETHODCALLTYPE *Release)( ++ IDXGISwapChain3* This); ++ ++ /*** IDXGIObject methods ***/ ++ HRESULT (STDMETHODCALLTYPE *SetPrivateData)( ++ IDXGISwapChain3* This, ++ REFGUID guid, ++ UINT data_size, ++ const void *data); ++ ++ HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( ++ IDXGISwapChain3* This, ++ REFGUID guid, ++ const IUnknown *object); ++ ++ HRESULT (STDMETHODCALLTYPE *GetPrivateData)( ++ IDXGISwapChain3* This, ++ REFGUID guid, ++ UINT *data_size, ++ void *data); ++ ++ HRESULT (STDMETHODCALLTYPE *GetParent)( ++ IDXGISwapChain3* This, ++ REFIID riid, ++ void **parent); ++ ++ /*** IDXGIDeviceSubObject methods ***/ ++ HRESULT (STDMETHODCALLTYPE *GetDevice)( ++ IDXGISwapChain3* This, ++ REFIID riid, ++ void **device); ++ ++ /*** IDXGISwapChain methods ***/ ++ HRESULT (STDMETHODCALLTYPE *Present)( ++ IDXGISwapChain3* This, ++ UINT sync_interval, ++ UINT flags); ++ ++ HRESULT (STDMETHODCALLTYPE *GetBuffer)( ++ IDXGISwapChain3* This, ++ UINT buffer_idx, ++ REFIID riid, ++ void **surface); ++ ++ HRESULT (STDMETHODCALLTYPE *SetFullscreenState)( ++ IDXGISwapChain3* This, ++ WINBOOL fullscreen, ++ IDXGIOutput *target); ++ ++ HRESULT (STDMETHODCALLTYPE *GetFullscreenState)( ++ IDXGISwapChain3* This, ++ WINBOOL *fullscreen, ++ IDXGIOutput **target); ++ ++ HRESULT (STDMETHODCALLTYPE *GetDesc)( ++ IDXGISwapChain3* This, ++ DXGI_SWAP_CHAIN_DESC *desc); ++ ++ HRESULT (STDMETHODCALLTYPE *ResizeBuffers)( ++ IDXGISwapChain3* This, ++ UINT buffer_count, ++ UINT width, ++ UINT height, ++ DXGI_FORMAT format, ++ UINT flags); ++ ++ HRESULT (STDMETHODCALLTYPE *ResizeTarget)( ++ IDXGISwapChain3* This, ++ const DXGI_MODE_DESC *target_mode_desc); ++ ++ HRESULT (STDMETHODCALLTYPE *GetContainingOutput)( ++ IDXGISwapChain3* This, ++ IDXGIOutput **output); ++ ++ HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)( ++ IDXGISwapChain3* This, ++ DXGI_FRAME_STATISTICS *stats); ++ ++ HRESULT (STDMETHODCALLTYPE *GetLastPresentCount)( ++ IDXGISwapChain3* This, ++ UINT *last_present_count); ++ ++ /*** IDXGISwapChain1 methods ***/ ++ HRESULT (STDMETHODCALLTYPE *GetDesc1)( ++ IDXGISwapChain3* This, ++ DXGI_SWAP_CHAIN_DESC1 *pDesc); ++ ++ HRESULT (STDMETHODCALLTYPE *GetFullscreenDesc)( ++ IDXGISwapChain3* This, ++ DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc); ++ ++ HRESULT (STDMETHODCALLTYPE *GetHwnd)( ++ IDXGISwapChain3* This, ++ HWND *pHwnd); ++ ++ HRESULT (STDMETHODCALLTYPE *GetCoreWindow)( ++ IDXGISwapChain3* This, ++ REFIID refiid, ++ void **ppUnk); ++ ++ HRESULT (STDMETHODCALLTYPE *Present1)( ++ IDXGISwapChain3* This, ++ UINT SyncInterval, ++ UINT PresentFlags, ++ const DXGI_PRESENT_PARAMETERS *pPresentParameters); ++ ++ WINBOOL (STDMETHODCALLTYPE *IsTemporaryMonoSupported)( ++ IDXGISwapChain3* This); ++ ++ HRESULT (STDMETHODCALLTYPE *GetRestrictToOutput)( ++ IDXGISwapChain3* This, ++ IDXGIOutput **ppRestrictToOutput); ++ ++ HRESULT (STDMETHODCALLTYPE *SetBackgroundColor)( ++ IDXGISwapChain3* This, ++ const DXGI_RGBA *pColor); ++ ++ HRESULT (STDMETHODCALLTYPE *GetBackgroundColor)( ++ IDXGISwapChain3* This, ++ DXGI_RGBA *pColor); ++ ++ HRESULT (STDMETHODCALLTYPE *SetRotation)( ++ IDXGISwapChain3* This, ++ DXGI_MODE_ROTATION Rotation); ++ ++ HRESULT (STDMETHODCALLTYPE *GetRotation)( ++ IDXGISwapChain3* This, ++ DXGI_MODE_ROTATION *pRotation); ++ ++ /*** IDXGISwapChain2 methods ***/ ++ HRESULT (STDMETHODCALLTYPE *SetSourceSize)( ++ IDXGISwapChain3* This, ++ UINT width, ++ UINT height); ++ ++ HRESULT (STDMETHODCALLTYPE *GetSourceSize)( ++ IDXGISwapChain3* This, ++ UINT *width, ++ UINT *height); ++ ++ HRESULT (STDMETHODCALLTYPE *SetMaximumFrameLatency)( ++ IDXGISwapChain3* This, ++ UINT max_latency); ++ ++ HRESULT (STDMETHODCALLTYPE *GetMaximumFrameLatency)( ++ IDXGISwapChain3* This, ++ UINT *max_latency); ++ ++ HANDLE (STDMETHODCALLTYPE *GetFrameLatencyWaitableObject)( ++ IDXGISwapChain3* This); ++ ++ HRESULT (STDMETHODCALLTYPE *SetMatrixTransform)( ++ IDXGISwapChain3* This, ++ const DXGI_MATRIX_3X2_F *matrix); ++ ++ HRESULT (STDMETHODCALLTYPE *GetMatrixTransform)( ++ IDXGISwapChain3* This, ++ DXGI_MATRIX_3X2_F *matrix); ++ ++ /*** IDXGISwapChain3 methods ***/ ++ UINT (STDMETHODCALLTYPE *GetCurrentBackBufferIndex)( ++ IDXGISwapChain3* This); ++ ++ HRESULT (STDMETHODCALLTYPE *CheckColorSpaceSupport)( ++ IDXGISwapChain3* This, ++ DXGI_COLOR_SPACE_TYPE ColorSpace, ++ UINT *pColorSpaceSupport); ++ ++ HRESULT (STDMETHODCALLTYPE *SetColorSpace1)( ++ IDXGISwapChain3* This, ++ DXGI_COLOR_SPACE_TYPE ColorSpace); ++ ++ HRESULT (STDMETHODCALLTYPE *ResizeBuffers1)( ++ IDXGISwapChain3* This, ++ UINT BufferCount, ++ UINT Width, ++ UINT Height, ++ DXGI_FORMAT Format, ++ UINT SwapChainFlags, ++ const UINT *pCreationNodeMask, ++ IUnknown *const *ppPresentQueue); ++ ++ END_INTERFACE ++} IDXGISwapChain3Vtbl; ++interface IDXGISwapChain3 { ++ CONST_VTBL IDXGISwapChain3Vtbl* lpVtbl; ++}; ++ ++#ifdef COBJMACROS ++#ifndef WIDL_C_INLINE_WRAPPERS ++/*** IUnknown methods ***/ ++#define IDXGISwapChain3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) ++#define IDXGISwapChain3_AddRef(This) (This)->lpVtbl->AddRef(This) ++#define IDXGISwapChain3_Release(This) (This)->lpVtbl->Release(This) ++/*** IDXGIObject methods ***/ ++#define IDXGISwapChain3_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) ++#define IDXGISwapChain3_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) ++#define IDXGISwapChain3_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) ++#define IDXGISwapChain3_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) ++/*** IDXGIDeviceSubObject methods ***/ ++#define IDXGISwapChain3_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device) ++/*** IDXGISwapChain methods ***/ ++#define IDXGISwapChain3_Present(This,sync_interval,flags) (This)->lpVtbl->Present(This,sync_interval,flags) ++#define IDXGISwapChain3_GetBuffer(This,buffer_idx,riid,surface) (This)->lpVtbl->GetBuffer(This,buffer_idx,riid,surface) ++#define IDXGISwapChain3_SetFullscreenState(This,fullscreen,target) (This)->lpVtbl->SetFullscreenState(This,fullscreen,target) ++#define IDXGISwapChain3_GetFullscreenState(This,fullscreen,target) (This)->lpVtbl->GetFullscreenState(This,fullscreen,target) ++#define IDXGISwapChain3_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) ++#define IDXGISwapChain3_ResizeBuffers(This,buffer_count,width,height,format,flags) (This)->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags) ++#define IDXGISwapChain3_ResizeTarget(This,target_mode_desc) (This)->lpVtbl->ResizeTarget(This,target_mode_desc) ++#define IDXGISwapChain3_GetContainingOutput(This,output) (This)->lpVtbl->GetContainingOutput(This,output) ++#define IDXGISwapChain3_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats) ++#define IDXGISwapChain3_GetLastPresentCount(This,last_present_count) (This)->lpVtbl->GetLastPresentCount(This,last_present_count) ++/*** IDXGISwapChain1 methods ***/ ++#define IDXGISwapChain3_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc) ++#define IDXGISwapChain3_GetFullscreenDesc(This,pDesc) (This)->lpVtbl->GetFullscreenDesc(This,pDesc) ++#define IDXGISwapChain3_GetHwnd(This,pHwnd) (This)->lpVtbl->GetHwnd(This,pHwnd) ++#define IDXGISwapChain3_GetCoreWindow(This,refiid,ppUnk) (This)->lpVtbl->GetCoreWindow(This,refiid,ppUnk) ++#define IDXGISwapChain3_Present1(This,SyncInterval,PresentFlags,pPresentParameters) (This)->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters) ++#define IDXGISwapChain3_IsTemporaryMonoSupported(This) (This)->lpVtbl->IsTemporaryMonoSupported(This) ++#define IDXGISwapChain3_GetRestrictToOutput(This,ppRestrictToOutput) (This)->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput) ++#define IDXGISwapChain3_SetBackgroundColor(This,pColor) (This)->lpVtbl->SetBackgroundColor(This,pColor) ++#define IDXGISwapChain3_GetBackgroundColor(This,pColor) (This)->lpVtbl->GetBackgroundColor(This,pColor) ++#define IDXGISwapChain3_SetRotation(This,Rotation) (This)->lpVtbl->SetRotation(This,Rotation) ++#define IDXGISwapChain3_GetRotation(This,pRotation) (This)->lpVtbl->GetRotation(This,pRotation) ++/*** IDXGISwapChain2 methods ***/ ++#define IDXGISwapChain3_SetSourceSize(This,width,height) (This)->lpVtbl->SetSourceSize(This,width,height) ++#define IDXGISwapChain3_GetSourceSize(This,width,height) (This)->lpVtbl->GetSourceSize(This,width,height) ++#define IDXGISwapChain3_SetMaximumFrameLatency(This,max_latency) (This)->lpVtbl->SetMaximumFrameLatency(This,max_latency) ++#define IDXGISwapChain3_GetMaximumFrameLatency(This,max_latency) (This)->lpVtbl->GetMaximumFrameLatency(This,max_latency) ++#define IDXGISwapChain3_GetFrameLatencyWaitableObject(This) (This)->lpVtbl->GetFrameLatencyWaitableObject(This) ++#define IDXGISwapChain3_SetMatrixTransform(This,matrix) (This)->lpVtbl->SetMatrixTransform(This,matrix) ++#define IDXGISwapChain3_GetMatrixTransform(This,matrix) (This)->lpVtbl->GetMatrixTransform(This,matrix) ++/*** IDXGISwapChain3 methods ***/ ++#define IDXGISwapChain3_GetCurrentBackBufferIndex(This) (This)->lpVtbl->GetCurrentBackBufferIndex(This) ++#define IDXGISwapChain3_CheckColorSpaceSupport(This,ColorSpace,pColorSpaceSupport) (This)->lpVtbl->CheckColorSpaceSupport(This,ColorSpace,pColorSpaceSupport) ++#define IDXGISwapChain3_SetColorSpace1(This,ColorSpace) (This)->lpVtbl->SetColorSpace1(This,ColorSpace) ++#define IDXGISwapChain3_ResizeBuffers1(This,BufferCount,Width,Height,Format,SwapChainFlags,pCreationNodeMask,ppPresentQueue) (This)->lpVtbl->ResizeBuffers1(This,BufferCount,Width,Height,Format,SwapChainFlags,pCreationNodeMask,ppPresentQueue) ++#else ++/*** IUnknown methods ***/ ++static FORCEINLINE HRESULT IDXGISwapChain3_QueryInterface(IDXGISwapChain3* This,REFIID riid,void **ppvObject) { ++ return This->lpVtbl->QueryInterface(This,riid,ppvObject); ++} ++static FORCEINLINE ULONG IDXGISwapChain3_AddRef(IDXGISwapChain3* This) { ++ return This->lpVtbl->AddRef(This); ++} ++static FORCEINLINE ULONG IDXGISwapChain3_Release(IDXGISwapChain3* This) { ++ return This->lpVtbl->Release(This); ++} ++/*** IDXGIObject methods ***/ ++static FORCEINLINE HRESULT IDXGISwapChain3_SetPrivateData(IDXGISwapChain3* This,REFGUID guid,UINT data_size,const void *data) { ++ return This->lpVtbl->SetPrivateData(This,guid,data_size,data); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_SetPrivateDataInterface(IDXGISwapChain3* This,REFGUID guid,const IUnknown *object) { ++ return This->lpVtbl->SetPrivateDataInterface(This,guid,object); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_GetPrivateData(IDXGISwapChain3* This,REFGUID guid,UINT *data_size,void *data) { ++ return This->lpVtbl->GetPrivateData(This,guid,data_size,data); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_GetParent(IDXGISwapChain3* This,REFIID riid,void **parent) { ++ return This->lpVtbl->GetParent(This,riid,parent); ++} ++/*** IDXGIDeviceSubObject methods ***/ ++static FORCEINLINE HRESULT IDXGISwapChain3_GetDevice(IDXGISwapChain3* This,REFIID riid,void **device) { ++ return This->lpVtbl->GetDevice(This,riid,device); ++} ++/*** IDXGISwapChain methods ***/ ++static FORCEINLINE HRESULT IDXGISwapChain3_Present(IDXGISwapChain3* This,UINT sync_interval,UINT flags) { ++ return This->lpVtbl->Present(This,sync_interval,flags); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_GetBuffer(IDXGISwapChain3* This,UINT buffer_idx,REFIID riid,void **surface) { ++ return This->lpVtbl->GetBuffer(This,buffer_idx,riid,surface); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_SetFullscreenState(IDXGISwapChain3* This,WINBOOL fullscreen,IDXGIOutput *target) { ++ return This->lpVtbl->SetFullscreenState(This,fullscreen,target); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_GetFullscreenState(IDXGISwapChain3* This,WINBOOL *fullscreen,IDXGIOutput **target) { ++ return This->lpVtbl->GetFullscreenState(This,fullscreen,target); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_GetDesc(IDXGISwapChain3* This,DXGI_SWAP_CHAIN_DESC *desc) { ++ return This->lpVtbl->GetDesc(This,desc); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_ResizeBuffers(IDXGISwapChain3* This,UINT buffer_count,UINT width,UINT height,DXGI_FORMAT format,UINT flags) { ++ return This->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_ResizeTarget(IDXGISwapChain3* This,const DXGI_MODE_DESC *target_mode_desc) { ++ return This->lpVtbl->ResizeTarget(This,target_mode_desc); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_GetContainingOutput(IDXGISwapChain3* This,IDXGIOutput **output) { ++ return This->lpVtbl->GetContainingOutput(This,output); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_GetFrameStatistics(IDXGISwapChain3* This,DXGI_FRAME_STATISTICS *stats) { ++ return This->lpVtbl->GetFrameStatistics(This,stats); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_GetLastPresentCount(IDXGISwapChain3* This,UINT *last_present_count) { ++ return This->lpVtbl->GetLastPresentCount(This,last_present_count); ++} ++/*** IDXGISwapChain1 methods ***/ ++static FORCEINLINE HRESULT IDXGISwapChain3_GetDesc1(IDXGISwapChain3* This,DXGI_SWAP_CHAIN_DESC1 *pDesc) { ++ return This->lpVtbl->GetDesc1(This,pDesc); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_GetFullscreenDesc(IDXGISwapChain3* This,DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc) { ++ return This->lpVtbl->GetFullscreenDesc(This,pDesc); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_GetHwnd(IDXGISwapChain3* This,HWND *pHwnd) { ++ return This->lpVtbl->GetHwnd(This,pHwnd); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_GetCoreWindow(IDXGISwapChain3* This,REFIID refiid,void **ppUnk) { ++ return This->lpVtbl->GetCoreWindow(This,refiid,ppUnk); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_Present1(IDXGISwapChain3* This,UINT SyncInterval,UINT PresentFlags,const DXGI_PRESENT_PARAMETERS *pPresentParameters) { ++ return This->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters); ++} ++static FORCEINLINE WINBOOL IDXGISwapChain3_IsTemporaryMonoSupported(IDXGISwapChain3* This) { ++ return This->lpVtbl->IsTemporaryMonoSupported(This); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_GetRestrictToOutput(IDXGISwapChain3* This,IDXGIOutput **ppRestrictToOutput) { ++ return This->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_SetBackgroundColor(IDXGISwapChain3* This,const DXGI_RGBA *pColor) { ++ return This->lpVtbl->SetBackgroundColor(This,pColor); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_GetBackgroundColor(IDXGISwapChain3* This,DXGI_RGBA *pColor) { ++ return This->lpVtbl->GetBackgroundColor(This,pColor); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_SetRotation(IDXGISwapChain3* This,DXGI_MODE_ROTATION Rotation) { ++ return This->lpVtbl->SetRotation(This,Rotation); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_GetRotation(IDXGISwapChain3* This,DXGI_MODE_ROTATION *pRotation) { ++ return This->lpVtbl->GetRotation(This,pRotation); ++} ++/*** IDXGISwapChain2 methods ***/ ++static FORCEINLINE HRESULT IDXGISwapChain3_SetSourceSize(IDXGISwapChain3* This,UINT width,UINT height) { ++ return This->lpVtbl->SetSourceSize(This,width,height); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_GetSourceSize(IDXGISwapChain3* This,UINT *width,UINT *height) { ++ return This->lpVtbl->GetSourceSize(This,width,height); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_SetMaximumFrameLatency(IDXGISwapChain3* This,UINT max_latency) { ++ return This->lpVtbl->SetMaximumFrameLatency(This,max_latency); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_GetMaximumFrameLatency(IDXGISwapChain3* This,UINT *max_latency) { ++ return This->lpVtbl->GetMaximumFrameLatency(This,max_latency); ++} ++static FORCEINLINE HANDLE IDXGISwapChain3_GetFrameLatencyWaitableObject(IDXGISwapChain3* This) { ++ return This->lpVtbl->GetFrameLatencyWaitableObject(This); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_SetMatrixTransform(IDXGISwapChain3* This,const DXGI_MATRIX_3X2_F *matrix) { ++ return This->lpVtbl->SetMatrixTransform(This,matrix); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_GetMatrixTransform(IDXGISwapChain3* This,DXGI_MATRIX_3X2_F *matrix) { ++ return This->lpVtbl->GetMatrixTransform(This,matrix); ++} ++/*** IDXGISwapChain3 methods ***/ ++static FORCEINLINE UINT IDXGISwapChain3_GetCurrentBackBufferIndex(IDXGISwapChain3* This) { ++ return This->lpVtbl->GetCurrentBackBufferIndex(This); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_CheckColorSpaceSupport(IDXGISwapChain3* This,DXGI_COLOR_SPACE_TYPE ColorSpace,UINT *pColorSpaceSupport) { ++ return This->lpVtbl->CheckColorSpaceSupport(This,ColorSpace,pColorSpaceSupport); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_SetColorSpace1(IDXGISwapChain3* This,DXGI_COLOR_SPACE_TYPE ColorSpace) { ++ return This->lpVtbl->SetColorSpace1(This,ColorSpace); ++} ++static FORCEINLINE HRESULT IDXGISwapChain3_ResizeBuffers1(IDXGISwapChain3* This,UINT BufferCount,UINT Width,UINT Height,DXGI_FORMAT Format,UINT SwapChainFlags,const UINT *pCreationNodeMask,IUnknown *const *ppPresentQueue) { ++ return This->lpVtbl->ResizeBuffers1(This,BufferCount,Width,Height,Format,SwapChainFlags,pCreationNodeMask,ppPresentQueue); ++} ++#endif ++#endif ++ ++#endif ++ ++UINT STDMETHODCALLTYPE IDXGISwapChain3_GetCurrentBackBufferIndex_Proxy( ++ IDXGISwapChain3* This); ++void __RPC_STUB IDXGISwapChain3_GetCurrentBackBufferIndex_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGISwapChain3_CheckColorSpaceSupport_Proxy( ++ IDXGISwapChain3* This, ++ DXGI_COLOR_SPACE_TYPE ColorSpace, ++ UINT *pColorSpaceSupport); ++void __RPC_STUB IDXGISwapChain3_CheckColorSpaceSupport_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGISwapChain3_SetColorSpace1_Proxy( ++ IDXGISwapChain3* This, ++ DXGI_COLOR_SPACE_TYPE ColorSpace); ++void __RPC_STUB IDXGISwapChain3_SetColorSpace1_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++HRESULT STDMETHODCALLTYPE IDXGISwapChain3_ResizeBuffers1_Proxy( ++ IDXGISwapChain3* This, ++ UINT BufferCount, ++ UINT Width, ++ UINT Height, ++ DXGI_FORMAT Format, ++ UINT SwapChainFlags, ++ const UINT *pCreationNodeMask, ++ IUnknown *const *ppPresentQueue); ++void __RPC_STUB IDXGISwapChain3_ResizeBuffers1_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ ++#endif /* __IDXGISwapChain3_INTERFACE_DEFINED__ */ ++ ++typedef enum DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG { ++ DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG_PRESENT = 0x1, ++ DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG_OVERLAY_PRESENT = 0x2 ++} DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG; ++/* Begin additional prototypes for all interfaces */ ++ ++ ++/* End additional prototypes */ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* __dxgi1_4_h__ */ +diff --git a/mingw-w64-headers/direct-x/include/dxgi1_4.idl b/mingw-w64-headers/direct-x/include/dxgi1_4.idl +new file mode 100644 +index 00000000..1a8e508d +--- /dev/null ++++ b/mingw-w64-headers/direct-x/include/dxgi1_4.idl +@@ -0,0 +1,76 @@ ++/* ++ * Copyright 2016 Steve Lhomme ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++import "dxgi1_3.idl"; ++ ++typedef enum DXGI_COLOR_SPACE_TYPE { ++ DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 = 0, ++ DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709 = 1, ++ DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P709 = 2, ++ DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P2020 = 3, ++ DXGI_COLOR_SPACE_RESERVED = 4, ++ DXGI_COLOR_SPACE_YCBCR_FULL_G22_NONE_P709_X601 = 5, ++ DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P601 = 6, ++ DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P601 = 7, ++ DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P709 = 8, ++ DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P709 = 9, ++ DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P2020 = 10, ++ DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020 = 11, ++ DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 = 12, ++ DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_LEFT_P2020 = 13, ++ DXGI_COLOR_SPACE_RGB_STUDIO_G2084_NONE_P2020 = 14, ++ DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_TOPLEFT_P2020 = 15, ++ DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_TOPLEFT_P2020 = 16, ++ DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P2020 = 17, ++ DXGI_COLOR_SPACE_CUSTOM = 0xFFFFFFFF, ++} DXGI_COLOR_SPACE_TYPE; ++ ++[ ++ object, ++ local, ++ uuid(94d99bdb-f1f8-4ab0-b236-7da0170edab1) ++] ++interface IDXGISwapChain3 : IDXGISwapChain2 ++{ ++ UINT GetCurrentBackBufferIndex(); ++ ++ HRESULT CheckColorSpaceSupport( ++ [in] DXGI_COLOR_SPACE_TYPE ColorSpace, ++ [out] UINT* pColorSpaceSupport ++ ); ++ ++ HRESULT SetColorSpace1( ++ [in] DXGI_COLOR_SPACE_TYPE ColorSpace ++ ); ++ ++ HRESULT ResizeBuffers1( ++ [in] UINT BufferCount, ++ [in] UINT Width, ++ [in] UINT Height, ++ [in] DXGI_FORMAT Format, ++ [in] UINT SwapChainFlags, ++ [in] const UINT* pCreationNodeMask, ++ [in] IUnknown* const* ppPresentQueue ++ ); ++}; ++ ++typedef enum DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG ++{ ++ DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG_PRESENT = 0x01, ++ DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG_OVERLAY_PRESENT = 0x02, ++} DXGI_SWAP_CHAIN_COLOR_SPACE_SUPPORT_FLAG; +diff --git a/mingw-w64-headers/direct-x/include/dxgi1_5.h b/mingw-w64-headers/direct-x/include/dxgi1_5.h +new file mode 100644 +index 00000000..321dea0b +--- /dev/null ++++ b/mingw-w64-headers/direct-x/include/dxgi1_5.h +@@ -0,0 +1,485 @@ ++/*** Autogenerated by WIDL 1.6 from dxgi1_5.idl - Do not edit ***/ ++ ++#ifndef __REQUIRED_RPCNDR_H_VERSION__ ++#define __REQUIRED_RPCNDR_H_VERSION__ 475 ++#endif ++ ++#include ++#include ++ ++#ifndef COM_NO_WINDOWS_H ++#include ++#include ++#endif ++ ++#ifndef __dxgi1_5_h__ ++#define __dxgi1_5_h__ ++ ++/* Forward declarations */ ++ ++#ifndef __IDXGISwapChain4_FWD_DEFINED__ ++#define __IDXGISwapChain4_FWD_DEFINED__ ++typedef interface IDXGISwapChain4 IDXGISwapChain4; ++#endif ++ ++/* Headers for imported files */ ++ ++#include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++typedef enum DXGI_HDR_METADATA_TYPE { ++ DXGI_HDR_METADATA_TYPE_NONE = 0x0, ++ DXGI_HDR_METADATA_TYPE_HDR10 = 0x1 ++} DXGI_HDR_METADATA_TYPE; ++typedef struct DXGI_HDR_METADATA_HDR10 { ++ UINT16 RedPrimary[2]; ++ UINT16 GreenPrimary[2]; ++ UINT16 BluePrimary[2]; ++ UINT16 WhitePoint[2]; ++ UINT MaxMasteringLuminance; ++ UINT MinMasteringLuminance; ++ UINT16 MaxContentLightLevel; ++ UINT16 MaxFrameAverageLightLevel; ++} DXGI_HDR_METADATA_HDR10; ++/***************************************************************************** ++ * IDXGISwapChain4 interface ++ */ ++#ifndef __IDXGISwapChain4_INTERFACE_DEFINED__ ++#define __IDXGISwapChain4_INTERFACE_DEFINED__ ++ ++DEFINE_GUID(IID_IDXGISwapChain4, 0x3d585d5a, 0xbd4a, 0x489e, 0xb1,0xf4, 0x3d,0xbc,0xb6,0x45,0x2f,0xfb); ++#if defined(__cplusplus) && !defined(CINTERFACE) ++MIDL_INTERFACE("3d585d5a-bd4a-489e-b1f4-3dbcb6452ffb") ++IDXGISwapChain4 : public IDXGISwapChain3 ++{ ++ virtual HRESULT STDMETHODCALLTYPE SetHDRMetaData( ++ DXGI_HDR_METADATA_TYPE Type, ++ UINT Size, ++ void *pMetaData) = 0; ++ ++}; ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(IDXGISwapChain4, 0x3d585d5a, 0xbd4a, 0x489e, 0xb1,0xf4, 0x3d,0xbc,0xb6,0x45,0x2f,0xfb) ++#endif ++#else ++typedef struct IDXGISwapChain4Vtbl { ++ BEGIN_INTERFACE ++ ++ /*** IUnknown methods ***/ ++ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ++ IDXGISwapChain4* This, ++ REFIID riid, ++ void **ppvObject); ++ ++ ULONG (STDMETHODCALLTYPE *AddRef)( ++ IDXGISwapChain4* This); ++ ++ ULONG (STDMETHODCALLTYPE *Release)( ++ IDXGISwapChain4* This); ++ ++ /*** IDXGIObject methods ***/ ++ HRESULT (STDMETHODCALLTYPE *SetPrivateData)( ++ IDXGISwapChain4* This, ++ REFGUID guid, ++ UINT data_size, ++ const void *data); ++ ++ HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( ++ IDXGISwapChain4* This, ++ REFGUID guid, ++ const IUnknown *object); ++ ++ HRESULT (STDMETHODCALLTYPE *GetPrivateData)( ++ IDXGISwapChain4* This, ++ REFGUID guid, ++ UINT *data_size, ++ void *data); ++ ++ HRESULT (STDMETHODCALLTYPE *GetParent)( ++ IDXGISwapChain4* This, ++ REFIID riid, ++ void **parent); ++ ++ /*** IDXGIDeviceSubObject methods ***/ ++ HRESULT (STDMETHODCALLTYPE *GetDevice)( ++ IDXGISwapChain4* This, ++ REFIID riid, ++ void **device); ++ ++ /*** IDXGISwapChain methods ***/ ++ HRESULT (STDMETHODCALLTYPE *Present)( ++ IDXGISwapChain4* This, ++ UINT sync_interval, ++ UINT flags); ++ ++ HRESULT (STDMETHODCALLTYPE *GetBuffer)( ++ IDXGISwapChain4* This, ++ UINT buffer_idx, ++ REFIID riid, ++ void **surface); ++ ++ HRESULT (STDMETHODCALLTYPE *SetFullscreenState)( ++ IDXGISwapChain4* This, ++ WINBOOL fullscreen, ++ IDXGIOutput *target); ++ ++ HRESULT (STDMETHODCALLTYPE *GetFullscreenState)( ++ IDXGISwapChain4* This, ++ WINBOOL *fullscreen, ++ IDXGIOutput **target); ++ ++ HRESULT (STDMETHODCALLTYPE *GetDesc)( ++ IDXGISwapChain4* This, ++ DXGI_SWAP_CHAIN_DESC *desc); ++ ++ HRESULT (STDMETHODCALLTYPE *ResizeBuffers)( ++ IDXGISwapChain4* This, ++ UINT buffer_count, ++ UINT width, ++ UINT height, ++ DXGI_FORMAT format, ++ UINT flags); ++ ++ HRESULT (STDMETHODCALLTYPE *ResizeTarget)( ++ IDXGISwapChain4* This, ++ const DXGI_MODE_DESC *target_mode_desc); ++ ++ HRESULT (STDMETHODCALLTYPE *GetContainingOutput)( ++ IDXGISwapChain4* This, ++ IDXGIOutput **output); ++ ++ HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)( ++ IDXGISwapChain4* This, ++ DXGI_FRAME_STATISTICS *stats); ++ ++ HRESULT (STDMETHODCALLTYPE *GetLastPresentCount)( ++ IDXGISwapChain4* This, ++ UINT *last_present_count); ++ ++ /*** IDXGISwapChain1 methods ***/ ++ HRESULT (STDMETHODCALLTYPE *GetDesc1)( ++ IDXGISwapChain4* This, ++ DXGI_SWAP_CHAIN_DESC1 *pDesc); ++ ++ HRESULT (STDMETHODCALLTYPE *GetFullscreenDesc)( ++ IDXGISwapChain4* This, ++ DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc); ++ ++ HRESULT (STDMETHODCALLTYPE *GetHwnd)( ++ IDXGISwapChain4* This, ++ HWND *pHwnd); ++ ++ HRESULT (STDMETHODCALLTYPE *GetCoreWindow)( ++ IDXGISwapChain4* This, ++ REFIID refiid, ++ void **ppUnk); ++ ++ HRESULT (STDMETHODCALLTYPE *Present1)( ++ IDXGISwapChain4* This, ++ UINT SyncInterval, ++ UINT PresentFlags, ++ const DXGI_PRESENT_PARAMETERS *pPresentParameters); ++ ++ WINBOOL (STDMETHODCALLTYPE *IsTemporaryMonoSupported)( ++ IDXGISwapChain4* This); ++ ++ HRESULT (STDMETHODCALLTYPE *GetRestrictToOutput)( ++ IDXGISwapChain4* This, ++ IDXGIOutput **ppRestrictToOutput); ++ ++ HRESULT (STDMETHODCALLTYPE *SetBackgroundColor)( ++ IDXGISwapChain4* This, ++ const DXGI_RGBA *pColor); ++ ++ HRESULT (STDMETHODCALLTYPE *GetBackgroundColor)( ++ IDXGISwapChain4* This, ++ DXGI_RGBA *pColor); ++ ++ HRESULT (STDMETHODCALLTYPE *SetRotation)( ++ IDXGISwapChain4* This, ++ DXGI_MODE_ROTATION Rotation); ++ ++ HRESULT (STDMETHODCALLTYPE *GetRotation)( ++ IDXGISwapChain4* This, ++ DXGI_MODE_ROTATION *pRotation); ++ ++ /*** IDXGISwapChain2 methods ***/ ++ HRESULT (STDMETHODCALLTYPE *SetSourceSize)( ++ IDXGISwapChain4* This, ++ UINT width, ++ UINT height); ++ ++ HRESULT (STDMETHODCALLTYPE *GetSourceSize)( ++ IDXGISwapChain4* This, ++ UINT *width, ++ UINT *height); ++ ++ HRESULT (STDMETHODCALLTYPE *SetMaximumFrameLatency)( ++ IDXGISwapChain4* This, ++ UINT max_latency); ++ ++ HRESULT (STDMETHODCALLTYPE *GetMaximumFrameLatency)( ++ IDXGISwapChain4* This, ++ UINT *max_latency); ++ ++ HANDLE (STDMETHODCALLTYPE *GetFrameLatencyWaitableObject)( ++ IDXGISwapChain4* This); ++ ++ HRESULT (STDMETHODCALLTYPE *SetMatrixTransform)( ++ IDXGISwapChain4* This, ++ const DXGI_MATRIX_3X2_F *matrix); ++ ++ HRESULT (STDMETHODCALLTYPE *GetMatrixTransform)( ++ IDXGISwapChain4* This, ++ DXGI_MATRIX_3X2_F *matrix); ++ ++ /*** IDXGISwapChain3 methods ***/ ++ UINT (STDMETHODCALLTYPE *GetCurrentBackBufferIndex)( ++ IDXGISwapChain4* This); ++ ++ HRESULT (STDMETHODCALLTYPE *CheckColorSpaceSupport)( ++ IDXGISwapChain4* This, ++ DXGI_COLOR_SPACE_TYPE ColorSpace, ++ UINT *pColorSpaceSupport); ++ ++ HRESULT (STDMETHODCALLTYPE *SetColorSpace1)( ++ IDXGISwapChain4* This, ++ DXGI_COLOR_SPACE_TYPE ColorSpace); ++ ++ HRESULT (STDMETHODCALLTYPE *ResizeBuffers1)( ++ IDXGISwapChain4* This, ++ UINT BufferCount, ++ UINT Width, ++ UINT Height, ++ DXGI_FORMAT Format, ++ UINT SwapChainFlags, ++ const UINT *pCreationNodeMask, ++ IUnknown *const *ppPresentQueue); ++ ++ /*** IDXGISwapChain4 methods ***/ ++ HRESULT (STDMETHODCALLTYPE *SetHDRMetaData)( ++ IDXGISwapChain4* This, ++ DXGI_HDR_METADATA_TYPE Type, ++ UINT Size, ++ void *pMetaData); ++ ++ END_INTERFACE ++} IDXGISwapChain4Vtbl; ++interface IDXGISwapChain4 { ++ CONST_VTBL IDXGISwapChain4Vtbl* lpVtbl; ++}; ++ ++#ifdef COBJMACROS ++#ifndef WIDL_C_INLINE_WRAPPERS ++/*** IUnknown methods ***/ ++#define IDXGISwapChain4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) ++#define IDXGISwapChain4_AddRef(This) (This)->lpVtbl->AddRef(This) ++#define IDXGISwapChain4_Release(This) (This)->lpVtbl->Release(This) ++/*** IDXGIObject methods ***/ ++#define IDXGISwapChain4_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) ++#define IDXGISwapChain4_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) ++#define IDXGISwapChain4_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) ++#define IDXGISwapChain4_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) ++/*** IDXGIDeviceSubObject methods ***/ ++#define IDXGISwapChain4_GetDevice(This,riid,device) (This)->lpVtbl->GetDevice(This,riid,device) ++/*** IDXGISwapChain methods ***/ ++#define IDXGISwapChain4_Present(This,sync_interval,flags) (This)->lpVtbl->Present(This,sync_interval,flags) ++#define IDXGISwapChain4_GetBuffer(This,buffer_idx,riid,surface) (This)->lpVtbl->GetBuffer(This,buffer_idx,riid,surface) ++#define IDXGISwapChain4_SetFullscreenState(This,fullscreen,target) (This)->lpVtbl->SetFullscreenState(This,fullscreen,target) ++#define IDXGISwapChain4_GetFullscreenState(This,fullscreen,target) (This)->lpVtbl->GetFullscreenState(This,fullscreen,target) ++#define IDXGISwapChain4_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) ++#define IDXGISwapChain4_ResizeBuffers(This,buffer_count,width,height,format,flags) (This)->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags) ++#define IDXGISwapChain4_ResizeTarget(This,target_mode_desc) (This)->lpVtbl->ResizeTarget(This,target_mode_desc) ++#define IDXGISwapChain4_GetContainingOutput(This,output) (This)->lpVtbl->GetContainingOutput(This,output) ++#define IDXGISwapChain4_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats) ++#define IDXGISwapChain4_GetLastPresentCount(This,last_present_count) (This)->lpVtbl->GetLastPresentCount(This,last_present_count) ++/*** IDXGISwapChain1 methods ***/ ++#define IDXGISwapChain4_GetDesc1(This,pDesc) (This)->lpVtbl->GetDesc1(This,pDesc) ++#define IDXGISwapChain4_GetFullscreenDesc(This,pDesc) (This)->lpVtbl->GetFullscreenDesc(This,pDesc) ++#define IDXGISwapChain4_GetHwnd(This,pHwnd) (This)->lpVtbl->GetHwnd(This,pHwnd) ++#define IDXGISwapChain4_GetCoreWindow(This,refiid,ppUnk) (This)->lpVtbl->GetCoreWindow(This,refiid,ppUnk) ++#define IDXGISwapChain4_Present1(This,SyncInterval,PresentFlags,pPresentParameters) (This)->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters) ++#define IDXGISwapChain4_IsTemporaryMonoSupported(This) (This)->lpVtbl->IsTemporaryMonoSupported(This) ++#define IDXGISwapChain4_GetRestrictToOutput(This,ppRestrictToOutput) (This)->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput) ++#define IDXGISwapChain4_SetBackgroundColor(This,pColor) (This)->lpVtbl->SetBackgroundColor(This,pColor) ++#define IDXGISwapChain4_GetBackgroundColor(This,pColor) (This)->lpVtbl->GetBackgroundColor(This,pColor) ++#define IDXGISwapChain4_SetRotation(This,Rotation) (This)->lpVtbl->SetRotation(This,Rotation) ++#define IDXGISwapChain4_GetRotation(This,pRotation) (This)->lpVtbl->GetRotation(This,pRotation) ++/*** IDXGISwapChain2 methods ***/ ++#define IDXGISwapChain4_SetSourceSize(This,width,height) (This)->lpVtbl->SetSourceSize(This,width,height) ++#define IDXGISwapChain4_GetSourceSize(This,width,height) (This)->lpVtbl->GetSourceSize(This,width,height) ++#define IDXGISwapChain4_SetMaximumFrameLatency(This,max_latency) (This)->lpVtbl->SetMaximumFrameLatency(This,max_latency) ++#define IDXGISwapChain4_GetMaximumFrameLatency(This,max_latency) (This)->lpVtbl->GetMaximumFrameLatency(This,max_latency) ++#define IDXGISwapChain4_GetFrameLatencyWaitableObject(This) (This)->lpVtbl->GetFrameLatencyWaitableObject(This) ++#define IDXGISwapChain4_SetMatrixTransform(This,matrix) (This)->lpVtbl->SetMatrixTransform(This,matrix) ++#define IDXGISwapChain4_GetMatrixTransform(This,matrix) (This)->lpVtbl->GetMatrixTransform(This,matrix) ++/*** IDXGISwapChain3 methods ***/ ++#define IDXGISwapChain4_GetCurrentBackBufferIndex(This) (This)->lpVtbl->GetCurrentBackBufferIndex(This) ++#define IDXGISwapChain4_CheckColorSpaceSupport(This,ColorSpace,pColorSpaceSupport) (This)->lpVtbl->CheckColorSpaceSupport(This,ColorSpace,pColorSpaceSupport) ++#define IDXGISwapChain4_SetColorSpace1(This,ColorSpace) (This)->lpVtbl->SetColorSpace1(This,ColorSpace) ++#define IDXGISwapChain4_ResizeBuffers1(This,BufferCount,Width,Height,Format,SwapChainFlags,pCreationNodeMask,ppPresentQueue) (This)->lpVtbl->ResizeBuffers1(This,BufferCount,Width,Height,Format,SwapChainFlags,pCreationNodeMask,ppPresentQueue) ++/*** IDXGISwapChain4 methods ***/ ++#define IDXGISwapChain4_SetHDRMetaData(This,Type,Size,pMetaData) (This)->lpVtbl->SetHDRMetaData(This,Type,Size,pMetaData) ++#else ++/*** IUnknown methods ***/ ++static FORCEINLINE HRESULT IDXGISwapChain4_QueryInterface(IDXGISwapChain4* This,REFIID riid,void **ppvObject) { ++ return This->lpVtbl->QueryInterface(This,riid,ppvObject); ++} ++static FORCEINLINE ULONG IDXGISwapChain4_AddRef(IDXGISwapChain4* This) { ++ return This->lpVtbl->AddRef(This); ++} ++static FORCEINLINE ULONG IDXGISwapChain4_Release(IDXGISwapChain4* This) { ++ return This->lpVtbl->Release(This); ++} ++/*** IDXGIObject methods ***/ ++static FORCEINLINE HRESULT IDXGISwapChain4_SetPrivateData(IDXGISwapChain4* This,REFGUID guid,UINT data_size,const void *data) { ++ return This->lpVtbl->SetPrivateData(This,guid,data_size,data); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_SetPrivateDataInterface(IDXGISwapChain4* This,REFGUID guid,const IUnknown *object) { ++ return This->lpVtbl->SetPrivateDataInterface(This,guid,object); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_GetPrivateData(IDXGISwapChain4* This,REFGUID guid,UINT *data_size,void *data) { ++ return This->lpVtbl->GetPrivateData(This,guid,data_size,data); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_GetParent(IDXGISwapChain4* This,REFIID riid,void **parent) { ++ return This->lpVtbl->GetParent(This,riid,parent); ++} ++/*** IDXGIDeviceSubObject methods ***/ ++static FORCEINLINE HRESULT IDXGISwapChain4_GetDevice(IDXGISwapChain4* This,REFIID riid,void **device) { ++ return This->lpVtbl->GetDevice(This,riid,device); ++} ++/*** IDXGISwapChain methods ***/ ++static FORCEINLINE HRESULT IDXGISwapChain4_Present(IDXGISwapChain4* This,UINT sync_interval,UINT flags) { ++ return This->lpVtbl->Present(This,sync_interval,flags); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_GetBuffer(IDXGISwapChain4* This,UINT buffer_idx,REFIID riid,void **surface) { ++ return This->lpVtbl->GetBuffer(This,buffer_idx,riid,surface); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_SetFullscreenState(IDXGISwapChain4* This,WINBOOL fullscreen,IDXGIOutput *target) { ++ return This->lpVtbl->SetFullscreenState(This,fullscreen,target); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_GetFullscreenState(IDXGISwapChain4* This,WINBOOL *fullscreen,IDXGIOutput **target) { ++ return This->lpVtbl->GetFullscreenState(This,fullscreen,target); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_GetDesc(IDXGISwapChain4* This,DXGI_SWAP_CHAIN_DESC *desc) { ++ return This->lpVtbl->GetDesc(This,desc); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_ResizeBuffers(IDXGISwapChain4* This,UINT buffer_count,UINT width,UINT height,DXGI_FORMAT format,UINT flags) { ++ return This->lpVtbl->ResizeBuffers(This,buffer_count,width,height,format,flags); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_ResizeTarget(IDXGISwapChain4* This,const DXGI_MODE_DESC *target_mode_desc) { ++ return This->lpVtbl->ResizeTarget(This,target_mode_desc); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_GetContainingOutput(IDXGISwapChain4* This,IDXGIOutput **output) { ++ return This->lpVtbl->GetContainingOutput(This,output); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_GetFrameStatistics(IDXGISwapChain4* This,DXGI_FRAME_STATISTICS *stats) { ++ return This->lpVtbl->GetFrameStatistics(This,stats); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_GetLastPresentCount(IDXGISwapChain4* This,UINT *last_present_count) { ++ return This->lpVtbl->GetLastPresentCount(This,last_present_count); ++} ++/*** IDXGISwapChain1 methods ***/ ++static FORCEINLINE HRESULT IDXGISwapChain4_GetDesc1(IDXGISwapChain4* This,DXGI_SWAP_CHAIN_DESC1 *pDesc) { ++ return This->lpVtbl->GetDesc1(This,pDesc); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_GetFullscreenDesc(IDXGISwapChain4* This,DXGI_SWAP_CHAIN_FULLSCREEN_DESC *pDesc) { ++ return This->lpVtbl->GetFullscreenDesc(This,pDesc); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_GetHwnd(IDXGISwapChain4* This,HWND *pHwnd) { ++ return This->lpVtbl->GetHwnd(This,pHwnd); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_GetCoreWindow(IDXGISwapChain4* This,REFIID refiid,void **ppUnk) { ++ return This->lpVtbl->GetCoreWindow(This,refiid,ppUnk); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_Present1(IDXGISwapChain4* This,UINT SyncInterval,UINT PresentFlags,const DXGI_PRESENT_PARAMETERS *pPresentParameters) { ++ return This->lpVtbl->Present1(This,SyncInterval,PresentFlags,pPresentParameters); ++} ++static FORCEINLINE WINBOOL IDXGISwapChain4_IsTemporaryMonoSupported(IDXGISwapChain4* This) { ++ return This->lpVtbl->IsTemporaryMonoSupported(This); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_GetRestrictToOutput(IDXGISwapChain4* This,IDXGIOutput **ppRestrictToOutput) { ++ return This->lpVtbl->GetRestrictToOutput(This,ppRestrictToOutput); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_SetBackgroundColor(IDXGISwapChain4* This,const DXGI_RGBA *pColor) { ++ return This->lpVtbl->SetBackgroundColor(This,pColor); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_GetBackgroundColor(IDXGISwapChain4* This,DXGI_RGBA *pColor) { ++ return This->lpVtbl->GetBackgroundColor(This,pColor); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_SetRotation(IDXGISwapChain4* This,DXGI_MODE_ROTATION Rotation) { ++ return This->lpVtbl->SetRotation(This,Rotation); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_GetRotation(IDXGISwapChain4* This,DXGI_MODE_ROTATION *pRotation) { ++ return This->lpVtbl->GetRotation(This,pRotation); ++} ++/*** IDXGISwapChain2 methods ***/ ++static FORCEINLINE HRESULT IDXGISwapChain4_SetSourceSize(IDXGISwapChain4* This,UINT width,UINT height) { ++ return This->lpVtbl->SetSourceSize(This,width,height); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_GetSourceSize(IDXGISwapChain4* This,UINT *width,UINT *height) { ++ return This->lpVtbl->GetSourceSize(This,width,height); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_SetMaximumFrameLatency(IDXGISwapChain4* This,UINT max_latency) { ++ return This->lpVtbl->SetMaximumFrameLatency(This,max_latency); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_GetMaximumFrameLatency(IDXGISwapChain4* This,UINT *max_latency) { ++ return This->lpVtbl->GetMaximumFrameLatency(This,max_latency); ++} ++static FORCEINLINE HANDLE IDXGISwapChain4_GetFrameLatencyWaitableObject(IDXGISwapChain4* This) { ++ return This->lpVtbl->GetFrameLatencyWaitableObject(This); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_SetMatrixTransform(IDXGISwapChain4* This,const DXGI_MATRIX_3X2_F *matrix) { ++ return This->lpVtbl->SetMatrixTransform(This,matrix); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_GetMatrixTransform(IDXGISwapChain4* This,DXGI_MATRIX_3X2_F *matrix) { ++ return This->lpVtbl->GetMatrixTransform(This,matrix); ++} ++/*** IDXGISwapChain3 methods ***/ ++static FORCEINLINE UINT IDXGISwapChain4_GetCurrentBackBufferIndex(IDXGISwapChain4* This) { ++ return This->lpVtbl->GetCurrentBackBufferIndex(This); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_CheckColorSpaceSupport(IDXGISwapChain4* This,DXGI_COLOR_SPACE_TYPE ColorSpace,UINT *pColorSpaceSupport) { ++ return This->lpVtbl->CheckColorSpaceSupport(This,ColorSpace,pColorSpaceSupport); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_SetColorSpace1(IDXGISwapChain4* This,DXGI_COLOR_SPACE_TYPE ColorSpace) { ++ return This->lpVtbl->SetColorSpace1(This,ColorSpace); ++} ++static FORCEINLINE HRESULT IDXGISwapChain4_ResizeBuffers1(IDXGISwapChain4* This,UINT BufferCount,UINT Width,UINT Height,DXGI_FORMAT Format,UINT SwapChainFlags,const UINT *pCreationNodeMask,IUnknown *const *ppPresentQueue) { ++ return This->lpVtbl->ResizeBuffers1(This,BufferCount,Width,Height,Format,SwapChainFlags,pCreationNodeMask,ppPresentQueue); ++} ++/*** IDXGISwapChain4 methods ***/ ++static FORCEINLINE HRESULT IDXGISwapChain4_SetHDRMetaData(IDXGISwapChain4* This,DXGI_HDR_METADATA_TYPE Type,UINT Size,void *pMetaData) { ++ return This->lpVtbl->SetHDRMetaData(This,Type,Size,pMetaData); ++} ++#endif ++#endif ++ ++#endif ++ ++HRESULT STDMETHODCALLTYPE IDXGISwapChain4_SetHDRMetaData_Proxy( ++ IDXGISwapChain4* This, ++ DXGI_HDR_METADATA_TYPE Type, ++ UINT Size, ++ void *pMetaData); ++void __RPC_STUB IDXGISwapChain4_SetHDRMetaData_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ ++#endif /* __IDXGISwapChain4_INTERFACE_DEFINED__ */ ++ ++/* Begin additional prototypes for all interfaces */ ++ ++ ++/* End additional prototypes */ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* __dxgi1_5_h__ */ +diff --git a/mingw-w64-headers/direct-x/include/dxgi1_5.idl b/mingw-w64-headers/direct-x/include/dxgi1_5.idl +new file mode 100644 +index 00000000..67a08684 +--- /dev/null ++++ b/mingw-w64-headers/direct-x/include/dxgi1_5.idl +@@ -0,0 +1,51 @@ ++/* ++ * Copyright 2017 Steve Lhomme ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++import "dxgi1_4.idl"; ++ ++typedef enum DXGI_HDR_METADATA_TYPE ++{ ++ DXGI_HDR_METADATA_TYPE_NONE = 0x00, ++ DXGI_HDR_METADATA_TYPE_HDR10 = 0x01, ++} DXGI_HDR_METADATA_TYPE; ++ ++typedef struct DXGI_HDR_METADATA_HDR10 ++{ ++ UINT16 RedPrimary[2]; ++ UINT16 GreenPrimary[2]; ++ UINT16 BluePrimary[2]; ++ UINT16 WhitePoint[2]; ++ UINT MaxMasteringLuminance; ++ UINT MinMasteringLuminance; ++ UINT16 MaxContentLightLevel; ++ UINT16 MaxFrameAverageLightLevel; ++} DXGI_HDR_METADATA_HDR10; ++ ++[ ++ object, ++ local, ++ uuid(3d585d5a-bd4a-489e-b1f4-3dbcb6452ffb) ++] ++interface IDXGISwapChain4 : IDXGISwapChain3 ++{ ++ HRESULT SetHDRMetaData( ++ [in] DXGI_HDR_METADATA_TYPE Type, ++ [in] UINT Size, ++ [in] void* pMetaData ++ ); ++}; +diff --git a/mingw-w64-headers/direct-x/include/dxgidebug.h b/mingw-w64-headers/direct-x/include/dxgidebug.h +new file mode 100644 +index 00000000..d992721f +--- /dev/null ++++ b/mingw-w64-headers/direct-x/include/dxgidebug.h +@@ -0,0 +1,139 @@ ++/*** Autogenerated by WIDL 1.6 from dxgidebug.idl - Do not edit ***/ ++ ++#ifndef __REQUIRED_RPCNDR_H_VERSION__ ++#define __REQUIRED_RPCNDR_H_VERSION__ 475 ++#endif ++ ++#include ++#include ++ ++#ifndef COM_NO_WINDOWS_H ++#include ++#include ++#endif ++ ++#ifndef __dxgidebug_h__ ++#define __dxgidebug_h__ ++ ++/* Forward declarations */ ++ ++#ifndef __IDXGIDebug_FWD_DEFINED__ ++#define __IDXGIDebug_FWD_DEFINED__ ++typedef interface IDXGIDebug IDXGIDebug; ++#endif ++ ++/* Headers for imported files */ ++ ++#include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++DEFINE_GUID(DXGI_DEBUG_ALL, 0xe48ae283, 0xda80, 0x490b,0x87, 0xe6, 0x43, 0xe9, 0xa9, 0xcf, 0xda, 0x08); ++DEFINE_GUID(DXGI_DEBUG_DX, 0x35cdd7fc, 0x13b2, 0x421d,0xa5, 0xd7, 0x7e, 0x44, 0x51, 0x28, 0x7d, 0x64); ++DEFINE_GUID(DXGI_DEBUG_DXGI, 0x25cddaa4, 0xb1c6, 0x47e1,0xac, 0x3e, 0x98, 0x87, 0x5b, 0x5a, 0x2e, 0x2a); ++DEFINE_GUID(DXGI_DEBUG_APP, 0x06cd6e01, 0x4219, 0x4ebd,0x87, 0x90, 0x27, 0xed, 0x23, 0x36, 0x0c, 0x62); ++typedef enum DXGI_DEBUG_RLO_FLAGS { ++ DXGI_DEBUG_RLO_SUMMARY = 0x1, ++ DXGI_DEBUG_RLO_DETAIL = 0x2, ++ DXGI_DEBUG_RLO_IGNORE_INTERNAL = 0x4, ++ DXGI_DEBUG_RLO_ALL = 0x7 ++} DXGI_DEBUG_RLO_FLAGS; ++/***************************************************************************** ++ * IDXGIDebug interface ++ */ ++#ifndef __IDXGIDebug_INTERFACE_DEFINED__ ++#define __IDXGIDebug_INTERFACE_DEFINED__ ++ ++DEFINE_GUID(IID_IDXGIDebug, 0x119e7452, 0xde9e, 0x40fe, 0x88,0x06, 0x88,0xf9,0x0c,0x12,0xb4,0x41); ++#if defined(__cplusplus) && !defined(CINTERFACE) ++MIDL_INTERFACE("119e7452-de9e-40fe-8806-88f90c12b441") ++IDXGIDebug : public IUnknown ++{ ++ virtual HRESULT STDMETHODCALLTYPE ReportLiveObjects( ++ GUID apiid, ++ DXGI_DEBUG_RLO_FLAGS flags) = 0; ++ ++}; ++#ifdef __CRT_UUID_DECL ++__CRT_UUID_DECL(IDXGIDebug, 0x119e7452, 0xde9e, 0x40fe, 0x88,0x06, 0x88,0xf9,0x0c,0x12,0xb4,0x41) ++#endif ++#else ++typedef struct IDXGIDebugVtbl { ++ BEGIN_INTERFACE ++ ++ /*** IUnknown methods ***/ ++ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ++ IDXGIDebug* This, ++ REFIID riid, ++ void **ppvObject); ++ ++ ULONG (STDMETHODCALLTYPE *AddRef)( ++ IDXGIDebug* This); ++ ++ ULONG (STDMETHODCALLTYPE *Release)( ++ IDXGIDebug* This); ++ ++ /*** IDXGIDebug methods ***/ ++ HRESULT (STDMETHODCALLTYPE *ReportLiveObjects)( ++ IDXGIDebug* This, ++ GUID apiid, ++ DXGI_DEBUG_RLO_FLAGS flags); ++ ++ END_INTERFACE ++} IDXGIDebugVtbl; ++interface IDXGIDebug { ++ CONST_VTBL IDXGIDebugVtbl* lpVtbl; ++}; ++ ++#ifdef COBJMACROS ++#ifndef WIDL_C_INLINE_WRAPPERS ++/*** IUnknown methods ***/ ++#define IDXGIDebug_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) ++#define IDXGIDebug_AddRef(This) (This)->lpVtbl->AddRef(This) ++#define IDXGIDebug_Release(This) (This)->lpVtbl->Release(This) ++/*** IDXGIDebug methods ***/ ++#define IDXGIDebug_ReportLiveObjects(This,apiid,flags) (This)->lpVtbl->ReportLiveObjects(This,apiid,flags) ++#else ++/*** IUnknown methods ***/ ++static FORCEINLINE HRESULT IDXGIDebug_QueryInterface(IDXGIDebug* This,REFIID riid,void **ppvObject) { ++ return This->lpVtbl->QueryInterface(This,riid,ppvObject); ++} ++static FORCEINLINE ULONG IDXGIDebug_AddRef(IDXGIDebug* This) { ++ return This->lpVtbl->AddRef(This); ++} ++static FORCEINLINE ULONG IDXGIDebug_Release(IDXGIDebug* This) { ++ return This->lpVtbl->Release(This); ++} ++/*** IDXGIDebug methods ***/ ++static FORCEINLINE HRESULT IDXGIDebug_ReportLiveObjects(IDXGIDebug* This,GUID apiid,DXGI_DEBUG_RLO_FLAGS flags) { ++ return This->lpVtbl->ReportLiveObjects(This,apiid,flags); ++} ++#endif ++#endif ++ ++#endif ++ ++HRESULT STDMETHODCALLTYPE IDXGIDebug_ReportLiveObjects_Proxy( ++ IDXGIDebug* This, ++ GUID apiid, ++ DXGI_DEBUG_RLO_FLAGS flags); ++void __RPC_STUB IDXGIDebug_ReportLiveObjects_Stub( ++ IRpcStubBuffer* This, ++ IRpcChannelBuffer* pRpcChannelBuffer, ++ PRPC_MESSAGE pRpcMessage, ++ DWORD* pdwStubPhase); ++ ++#endif /* __IDXGIDebug_INTERFACE_DEFINED__ */ ++ ++/* Begin additional prototypes for all interfaces */ ++ ++ ++/* End additional prototypes */ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* __dxgidebug_h__ */ +diff --git a/mingw-w64-headers/direct-x/include/dxgidebug.idl b/mingw-w64-headers/direct-x/include/dxgidebug.idl +new file mode 100644 +index 00000000..7ed13940 +--- /dev/null ++++ b/mingw-w64-headers/direct-x/include/dxgidebug.idl +@@ -0,0 +1,43 @@ ++/* ++ * Copyright 2015 Steve Lhomme ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA02110-1301, USA ++ */ ++ ++import "oaidl.idl"; ++ ++cpp_quote("DEFINE_GUID(DXGI_DEBUG_ALL, 0xe48ae283, 0xda80, 0x490b,0x87, 0xe6, 0x43, 0xe9, 0xa9, 0xcf, 0xda, 0x08);") ++cpp_quote("DEFINE_GUID(DXGI_DEBUG_DX, 0x35cdd7fc, 0x13b2, 0x421d,0xa5, 0xd7, 0x7e, 0x44, 0x51, 0x28, 0x7d, 0x64);") ++cpp_quote("DEFINE_GUID(DXGI_DEBUG_DXGI, 0x25cddaa4, 0xb1c6, 0x47e1,0xac, 0x3e, 0x98, 0x87, 0x5b, 0x5a, 0x2e, 0x2a);") ++cpp_quote("DEFINE_GUID(DXGI_DEBUG_APP, 0x06cd6e01, 0x4219, 0x4ebd,0x87, 0x90, 0x27, 0xed, 0x23, 0x36, 0x0c, 0x62);") ++ ++typedef enum DXGI_DEBUG_RLO_FLAGS { ++ DXGI_DEBUG_RLO_SUMMARY = 0x0001, ++ DXGI_DEBUG_RLO_DETAIL = 0x0002, ++ DXGI_DEBUG_RLO_IGNORE_INTERNAL = 0x0004, ++ DXGI_DEBUG_RLO_ALL = 0x0007 ++} DXGI_DEBUG_RLO_FLAGS; ++ ++[ ++ object, ++ local, ++ uuid(119e7452-de9e-40fe-8806-88f90c12b441) ++] ++interface IDXGIDebug : IUnknown ++{ ++ HRESULT ReportLiveObjects( ++ [in] GUID apiid, ++ [in] DXGI_DEBUG_RLO_FLAGS flags); ++} +-- +2.14.1 + diff --git a/mingw-w64-crt-git/0003-dxgi-Add-missing-dxgi-1.2-structs-and-interfaces.patch b/mingw-w64-crt-git/0003-dxgi-Add-missing-dxgi-1.2-structs-and-interfaces.patch deleted file mode 100644 index 4d77b2292e..0000000000 --- a/mingw-w64-crt-git/0003-dxgi-Add-missing-dxgi-1.2-structs-and-interfaces.patch +++ /dev/null @@ -1,961 +0,0 @@ -From 0e266c2461defa50a51bda4eab1b1c08d37f698d Mon Sep 17 00:00:00 2001 -From: Martell Malone -Date: Mon, 16 Feb 2015 23:10:00 +0000 -Subject: [PATCH 3/6] dxgi: Add missing dxgi 1.2 structs and interfaces - ---- - mingw-w64-headers/direct-x/include/dxgi1_2.h | 744 +++++++++++++++++++++++++ - mingw-w64-headers/direct-x/include/dxgi1_2.idl | 151 +++++ - 2 files changed, 895 insertions(+) - -diff --git a/mingw-w64-headers/direct-x/include/dxgi1_2.h b/mingw-w64-headers/direct-x/include/dxgi1_2.h -index de3f359..3af09c7 100644 ---- a/mingw-w64-headers/direct-x/include/dxgi1_2.h -+++ b/mingw-w64-headers/direct-x/include/dxgi1_2.h -@@ -17,6 +17,16 @@ - - /* Forward declarations */ - -+#ifndef __IDXGIDisplayControl_FWD_DEFINED__ -+#define __IDXGIDisplayControl_FWD_DEFINED__ -+typedef interface IDXGIDisplayControl IDXGIDisplayControl; -+#endif -+ -+#ifndef __IDXGIOutputDuplication_FWD_DEFINED__ -+#define __IDXGIOutputDuplication_FWD_DEFINED__ -+typedef interface IDXGIOutputDuplication IDXGIOutputDuplication; -+#endif -+ - #ifndef __IDXGIDevice2_FWD_DEFINED__ - #define __IDXGIDevice2_FWD_DEFINED__ - typedef interface IDXGIDevice2 IDXGIDevice2; -@@ -37,6 +47,11 @@ typedef interface IDXGIFactory2 IDXGIFactory2; - typedef interface IDXGIAdapter2 IDXGIAdapter2; - #endif - -+#ifndef __IDXGIOutput1_FWD_DEFINED__ -+#define __IDXGIOutput1_FWD_DEFINED__ -+typedef interface IDXGIOutput1 IDXGIOutput1; -+#endif -+ - /* Headers for imported files */ - - #include -@@ -45,6 +60,423 @@ typedef interface IDXGIAdapter2 IDXGIAdapter2; - extern "C" { - #endif - -+/***************************************************************************** -+ * IDXGIDisplayControl interface -+ */ -+#ifndef __IDXGIDisplayControl_INTERFACE_DEFINED__ -+#define __IDXGIDisplayControl_INTERFACE_DEFINED__ -+ -+DEFINE_GUID(IID_IDXGIDisplayControl, 0xea9dbf1a, 0xc88e, 0x4486, 0x85,0x4a, 0x98,0xaa,0x01,0x38,0xf3,0x0c); -+#if defined(__cplusplus) && !defined(CINTERFACE) -+MIDL_INTERFACE("ea9dbf1a-c88e-4486-854a-98aa0138f30c") -+IDXGIDisplayControl : public IUnknown -+{ -+ virtual WINBOOL STDMETHODCALLTYPE IsStereoEnabled( -+ ) = 0; -+ -+ virtual void STDMETHODCALLTYPE SetStereoEnabled( -+ WINBOOL enabled) = 0; -+ -+}; -+#ifdef __CRT_UUID_DECL -+__CRT_UUID_DECL(IDXGIDisplayControl, 0xea9dbf1a, 0xc88e, 0x4486, 0x85,0x4a, 0x98,0xaa,0x01,0x38,0xf3,0x0c) -+#endif -+#else -+typedef struct IDXGIDisplayControlVtbl { -+ BEGIN_INTERFACE -+ -+ /*** IUnknown methods ***/ -+ HRESULT (STDMETHODCALLTYPE *QueryInterface)( -+ IDXGIDisplayControl* This, -+ REFIID riid, -+ void **ppvObject); -+ -+ ULONG (STDMETHODCALLTYPE *AddRef)( -+ IDXGIDisplayControl* This); -+ -+ ULONG (STDMETHODCALLTYPE *Release)( -+ IDXGIDisplayControl* This); -+ -+ /*** IDXGIDisplayControl methods ***/ -+ WINBOOL (STDMETHODCALLTYPE *IsStereoEnabled)( -+ IDXGIDisplayControl* This); -+ -+ void (STDMETHODCALLTYPE *SetStereoEnabled)( -+ IDXGIDisplayControl* This, -+ WINBOOL enabled); -+ -+ END_INTERFACE -+} IDXGIDisplayControlVtbl; -+interface IDXGIDisplayControl { -+ CONST_VTBL IDXGIDisplayControlVtbl* lpVtbl; -+}; -+ -+#ifdef COBJMACROS -+#ifndef WIDL_C_INLINE_WRAPPERS -+/*** IUnknown methods ***/ -+#define IDXGIDisplayControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -+#define IDXGIDisplayControl_AddRef(This) (This)->lpVtbl->AddRef(This) -+#define IDXGIDisplayControl_Release(This) (This)->lpVtbl->Release(This) -+/*** IDXGIDisplayControl methods ***/ -+#define IDXGIDisplayControl_IsStereoEnabled(This) (This)->lpVtbl->IsStereoEnabled(This) -+#define IDXGIDisplayControl_SetStereoEnabled(This,enabled) (This)->lpVtbl->SetStereoEnabled(This,enabled) -+#else -+/*** IUnknown methods ***/ -+static FORCEINLINE HRESULT IDXGIDisplayControl_QueryInterface(IDXGIDisplayControl* This,REFIID riid,void **ppvObject) { -+ return This->lpVtbl->QueryInterface(This,riid,ppvObject); -+} -+static FORCEINLINE ULONG IDXGIDisplayControl_AddRef(IDXGIDisplayControl* This) { -+ return This->lpVtbl->AddRef(This); -+} -+static FORCEINLINE ULONG IDXGIDisplayControl_Release(IDXGIDisplayControl* This) { -+ return This->lpVtbl->Release(This); -+} -+/*** IDXGIDisplayControl methods ***/ -+static FORCEINLINE WINBOOL IDXGIDisplayControl_IsStereoEnabled(IDXGIDisplayControl* This) { -+ return This->lpVtbl->IsStereoEnabled(This); -+} -+static FORCEINLINE void IDXGIDisplayControl_SetStereoEnabled(IDXGIDisplayControl* This,WINBOOL enabled) { -+ This->lpVtbl->SetStereoEnabled(This,enabled); -+} -+#endif -+#endif -+ -+#endif -+ -+WINBOOL STDMETHODCALLTYPE IDXGIDisplayControl_IsStereoEnabled_Proxy( -+ IDXGIDisplayControl* This); -+void __RPC_STUB IDXGIDisplayControl_IsStereoEnabled_Stub( -+ IRpcStubBuffer* This, -+ IRpcChannelBuffer* pRpcChannelBuffer, -+ PRPC_MESSAGE pRpcMessage, -+ DWORD* pdwStubPhase); -+void STDMETHODCALLTYPE IDXGIDisplayControl_SetStereoEnabled_Proxy( -+ IDXGIDisplayControl* This, -+ WINBOOL enabled); -+void __RPC_STUB IDXGIDisplayControl_SetStereoEnabled_Stub( -+ IRpcStubBuffer* This, -+ IRpcChannelBuffer* pRpcChannelBuffer, -+ PRPC_MESSAGE pRpcMessage, -+ DWORD* pdwStubPhase); -+ -+#endif /* __IDXGIDisplayControl_INTERFACE_DEFINED__ */ -+ -+typedef struct DXGI_OUTDUPL_MOVE_RECT { -+ POINT SourcePoint; -+ RECT DestinationRect; -+} DXGI_OUTDUPL_MOVE_RECT; -+typedef struct DXGI_OUTDUPL_DESC { -+ DXGI_MODE_DESC ModeDesc; -+ DXGI_MODE_ROTATION Rotation; -+ WINBOOL DesktopImageInSystemMemory; -+} DXGI_OUTDUPL_DESC; -+typedef struct DXGI_OUTDUPL_POINTER_POSITION { -+ POINT Position; -+ WINBOOL Visible; -+} DXGI_OUTDUPL_POINTER_POSITION; -+typedef enum DXGI_OUTDUPL_POINTER_SHAPE_TYPE { -+ DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MONOCHROME = 0x1, -+ DXGI_OUTDUPL_POINTER_SHAPE_TYPE_COLOR = 0x2, -+ DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MASKED_COLOR = 0x4 -+} DXGI_OUTDUPL_POINTER_SHAPE_TYPE; -+typedef struct DXGI_OUTDUPL_POINTER_SHAPE_INFO { -+ UINT Type; -+ UINT Width; -+ UINT Height; -+ UINT Pitch; -+ POINT HotSpot; -+} DXGI_OUTDUPL_POINTER_SHAPE_INFO; -+typedef struct DXGI_OUTDUPL_FRAME_INFO { -+ LARGE_INTEGER LastPresentTime; -+ LARGE_INTEGER LastMouseUpdateTime; -+ UINT AccumulatedFrames; -+ WINBOOL RectsCoalesced; -+ WINBOOL ProtectedContentMaskedOut; -+ DXGI_OUTDUPL_POINTER_POSITION PointerPosition; -+ UINT TotalMetadataBufferSize; -+ UINT PointerShapeBufferSize; -+} DXGI_OUTDUPL_FRAME_INFO; -+/***************************************************************************** -+ * IDXGIOutputDuplication interface -+ */ -+#ifndef __IDXGIOutputDuplication_INTERFACE_DEFINED__ -+#define __IDXGIOutputDuplication_INTERFACE_DEFINED__ -+ -+DEFINE_GUID(IID_IDXGIOutputDuplication, 0x191cfac3, 0xa341, 0x470d, 0xb2,0x6e, 0xa8,0x64,0xf4,0x28,0x31,0x9c); -+#if defined(__cplusplus) && !defined(CINTERFACE) -+MIDL_INTERFACE("191cfac3-a341-470d-b26e-a864f428319c") -+IDXGIOutputDuplication : public IDXGIObject -+{ -+ virtual void STDMETHODCALLTYPE GetDesc( -+ DXGI_OUTDUPL_DESC *desc) = 0; -+ -+ virtual HRESULT STDMETHODCALLTYPE AcquireNextFrame( -+ UINT timeout, -+ DXGI_OUTDUPL_FRAME_INFO *frame_info, -+ IDXGIResource **resource) = 0; -+ -+ virtual HRESULT STDMETHODCALLTYPE GetFrameDirtyRects( -+ UINT dirty_size, -+ RECT *buffer, -+ UINT *buffer_size) = 0; -+ -+ virtual HRESULT STDMETHODCALLTYPE GetFrameMoveRects( -+ UINT move_size, -+ DXGI_OUTDUPL_MOVE_RECT *rect, -+ UINT *rect_size) = 0; -+ -+ virtual HRESULT STDMETHODCALLTYPE GetFramePointerShape( -+ UINT shape_size, -+ void *buffer, -+ UINT *buffer_size, -+ DXGI_OUTDUPL_POINTER_SHAPE_INFO *shape_info) = 0; -+ -+ virtual HRESULT STDMETHODCALLTYPE MapDesktopSurface( -+ DXGI_MAPPED_RECT *rect) = 0; -+ -+ virtual HRESULT STDMETHODCALLTYPE UnMapDesktopSurface( -+ ) = 0; -+ -+ virtual HRESULT STDMETHODCALLTYPE ReleaseFrame( -+ ) = 0; -+ -+}; -+#ifdef __CRT_UUID_DECL -+__CRT_UUID_DECL(IDXGIOutputDuplication, 0x191cfac3, 0xa341, 0x470d, 0xb2,0x6e, 0xa8,0x64,0xf4,0x28,0x31,0x9c) -+#endif -+#else -+typedef struct IDXGIOutputDuplicationVtbl { -+ BEGIN_INTERFACE -+ -+ /*** IUnknown methods ***/ -+ HRESULT (STDMETHODCALLTYPE *QueryInterface)( -+ IDXGIOutputDuplication* This, -+ REFIID riid, -+ void **ppvObject); -+ -+ ULONG (STDMETHODCALLTYPE *AddRef)( -+ IDXGIOutputDuplication* This); -+ -+ ULONG (STDMETHODCALLTYPE *Release)( -+ IDXGIOutputDuplication* This); -+ -+ /*** IDXGIObject methods ***/ -+ HRESULT (STDMETHODCALLTYPE *SetPrivateData)( -+ IDXGIOutputDuplication* This, -+ REFGUID guid, -+ UINT data_size, -+ const void *data); -+ -+ HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( -+ IDXGIOutputDuplication* This, -+ REFGUID guid, -+ const IUnknown *object); -+ -+ HRESULT (STDMETHODCALLTYPE *GetPrivateData)( -+ IDXGIOutputDuplication* This, -+ REFGUID guid, -+ UINT *data_size, -+ void *data); -+ -+ HRESULT (STDMETHODCALLTYPE *GetParent)( -+ IDXGIOutputDuplication* This, -+ REFIID riid, -+ void **parent); -+ -+ /*** IDXGIOutputDuplication methods ***/ -+ void (STDMETHODCALLTYPE *GetDesc)( -+ IDXGIOutputDuplication* This, -+ DXGI_OUTDUPL_DESC *desc); -+ -+ HRESULT (STDMETHODCALLTYPE *AcquireNextFrame)( -+ IDXGIOutputDuplication* This, -+ UINT timeout, -+ DXGI_OUTDUPL_FRAME_INFO *frame_info, -+ IDXGIResource **resource); -+ -+ HRESULT (STDMETHODCALLTYPE *GetFrameDirtyRects)( -+ IDXGIOutputDuplication* This, -+ UINT dirty_size, -+ RECT *buffer, -+ UINT *buffer_size); -+ -+ HRESULT (STDMETHODCALLTYPE *GetFrameMoveRects)( -+ IDXGIOutputDuplication* This, -+ UINT move_size, -+ DXGI_OUTDUPL_MOVE_RECT *rect, -+ UINT *rect_size); -+ -+ HRESULT (STDMETHODCALLTYPE *GetFramePointerShape)( -+ IDXGIOutputDuplication* This, -+ UINT shape_size, -+ void *buffer, -+ UINT *buffer_size, -+ DXGI_OUTDUPL_POINTER_SHAPE_INFO *shape_info); -+ -+ HRESULT (STDMETHODCALLTYPE *MapDesktopSurface)( -+ IDXGIOutputDuplication* This, -+ DXGI_MAPPED_RECT *rect); -+ -+ HRESULT (STDMETHODCALLTYPE *UnMapDesktopSurface)( -+ IDXGIOutputDuplication* This); -+ -+ HRESULT (STDMETHODCALLTYPE *ReleaseFrame)( -+ IDXGIOutputDuplication* This); -+ -+ END_INTERFACE -+} IDXGIOutputDuplicationVtbl; -+interface IDXGIOutputDuplication { -+ CONST_VTBL IDXGIOutputDuplicationVtbl* lpVtbl; -+}; -+ -+#ifdef COBJMACROS -+#ifndef WIDL_C_INLINE_WRAPPERS -+/*** IUnknown methods ***/ -+#define IDXGIOutputDuplication_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -+#define IDXGIOutputDuplication_AddRef(This) (This)->lpVtbl->AddRef(This) -+#define IDXGIOutputDuplication_Release(This) (This)->lpVtbl->Release(This) -+/*** IDXGIObject methods ***/ -+#define IDXGIOutputDuplication_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) -+#define IDXGIOutputDuplication_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) -+#define IDXGIOutputDuplication_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) -+#define IDXGIOutputDuplication_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) -+/*** IDXGIOutputDuplication methods ***/ -+#define IDXGIOutputDuplication_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) -+#define IDXGIOutputDuplication_AcquireNextFrame(This,timeout,frame_info,resource) (This)->lpVtbl->AcquireNextFrame(This,timeout,frame_info,resource) -+#define IDXGIOutputDuplication_GetFrameDirtyRects(This,dirty_size,buffer,buffer_size) (This)->lpVtbl->GetFrameDirtyRects(This,dirty_size,buffer,buffer_size) -+#define IDXGIOutputDuplication_GetFrameMoveRects(This,move_size,rect,rect_size) (This)->lpVtbl->GetFrameMoveRects(This,move_size,rect,rect_size) -+#define IDXGIOutputDuplication_GetFramePointerShape(This,shape_size,buffer,buffer_size,shape_info) (This)->lpVtbl->GetFramePointerShape(This,shape_size,buffer,buffer_size,shape_info) -+#define IDXGIOutputDuplication_MapDesktopSurface(This,rect) (This)->lpVtbl->MapDesktopSurface(This,rect) -+#define IDXGIOutputDuplication_UnMapDesktopSurface(This) (This)->lpVtbl->UnMapDesktopSurface(This) -+#define IDXGIOutputDuplication_ReleaseFrame(This) (This)->lpVtbl->ReleaseFrame(This) -+#else -+/*** IUnknown methods ***/ -+static FORCEINLINE HRESULT IDXGIOutputDuplication_QueryInterface(IDXGIOutputDuplication* This,REFIID riid,void **ppvObject) { -+ return This->lpVtbl->QueryInterface(This,riid,ppvObject); -+} -+static FORCEINLINE ULONG IDXGIOutputDuplication_AddRef(IDXGIOutputDuplication* This) { -+ return This->lpVtbl->AddRef(This); -+} -+static FORCEINLINE ULONG IDXGIOutputDuplication_Release(IDXGIOutputDuplication* This) { -+ return This->lpVtbl->Release(This); -+} -+/*** IDXGIObject methods ***/ -+static FORCEINLINE HRESULT IDXGIOutputDuplication_SetPrivateData(IDXGIOutputDuplication* This,REFGUID guid,UINT data_size,const void *data) { -+ return This->lpVtbl->SetPrivateData(This,guid,data_size,data); -+} -+static FORCEINLINE HRESULT IDXGIOutputDuplication_SetPrivateDataInterface(IDXGIOutputDuplication* This,REFGUID guid,const IUnknown *object) { -+ return This->lpVtbl->SetPrivateDataInterface(This,guid,object); -+} -+static FORCEINLINE HRESULT IDXGIOutputDuplication_GetPrivateData(IDXGIOutputDuplication* This,REFGUID guid,UINT *data_size,void *data) { -+ return This->lpVtbl->GetPrivateData(This,guid,data_size,data); -+} -+static FORCEINLINE HRESULT IDXGIOutputDuplication_GetParent(IDXGIOutputDuplication* This,REFIID riid,void **parent) { -+ return This->lpVtbl->GetParent(This,riid,parent); -+} -+/*** IDXGIOutputDuplication methods ***/ -+static FORCEINLINE void IDXGIOutputDuplication_GetDesc(IDXGIOutputDuplication* This,DXGI_OUTDUPL_DESC *desc) { -+ This->lpVtbl->GetDesc(This,desc); -+} -+static FORCEINLINE HRESULT IDXGIOutputDuplication_AcquireNextFrame(IDXGIOutputDuplication* This,UINT timeout,DXGI_OUTDUPL_FRAME_INFO *frame_info,IDXGIResource **resource) { -+ return This->lpVtbl->AcquireNextFrame(This,timeout,frame_info,resource); -+} -+static FORCEINLINE HRESULT IDXGIOutputDuplication_GetFrameDirtyRects(IDXGIOutputDuplication* This,UINT dirty_size,RECT *buffer,UINT *buffer_size) { -+ return This->lpVtbl->GetFrameDirtyRects(This,dirty_size,buffer,buffer_size); -+} -+static FORCEINLINE HRESULT IDXGIOutputDuplication_GetFrameMoveRects(IDXGIOutputDuplication* This,UINT move_size,DXGI_OUTDUPL_MOVE_RECT *rect,UINT *rect_size) { -+ return This->lpVtbl->GetFrameMoveRects(This,move_size,rect,rect_size); -+} -+static FORCEINLINE HRESULT IDXGIOutputDuplication_GetFramePointerShape(IDXGIOutputDuplication* This,UINT shape_size,void *buffer,UINT *buffer_size,DXGI_OUTDUPL_POINTER_SHAPE_INFO *shape_info) { -+ return This->lpVtbl->GetFramePointerShape(This,shape_size,buffer,buffer_size,shape_info); -+} -+static FORCEINLINE HRESULT IDXGIOutputDuplication_MapDesktopSurface(IDXGIOutputDuplication* This,DXGI_MAPPED_RECT *rect) { -+ return This->lpVtbl->MapDesktopSurface(This,rect); -+} -+static FORCEINLINE HRESULT IDXGIOutputDuplication_UnMapDesktopSurface(IDXGIOutputDuplication* This) { -+ return This->lpVtbl->UnMapDesktopSurface(This); -+} -+static FORCEINLINE HRESULT IDXGIOutputDuplication_ReleaseFrame(IDXGIOutputDuplication* This) { -+ return This->lpVtbl->ReleaseFrame(This); -+} -+#endif -+#endif -+ -+#endif -+ -+void STDMETHODCALLTYPE IDXGIOutputDuplication_GetDesc_Proxy( -+ IDXGIOutputDuplication* This, -+ DXGI_OUTDUPL_DESC *desc); -+void __RPC_STUB IDXGIOutputDuplication_GetDesc_Stub( -+ IRpcStubBuffer* This, -+ IRpcChannelBuffer* pRpcChannelBuffer, -+ PRPC_MESSAGE pRpcMessage, -+ DWORD* pdwStubPhase); -+HRESULT STDMETHODCALLTYPE IDXGIOutputDuplication_AcquireNextFrame_Proxy( -+ IDXGIOutputDuplication* This, -+ UINT timeout, -+ DXGI_OUTDUPL_FRAME_INFO *frame_info, -+ IDXGIResource **resource); -+void __RPC_STUB IDXGIOutputDuplication_AcquireNextFrame_Stub( -+ IRpcStubBuffer* This, -+ IRpcChannelBuffer* pRpcChannelBuffer, -+ PRPC_MESSAGE pRpcMessage, -+ DWORD* pdwStubPhase); -+HRESULT STDMETHODCALLTYPE IDXGIOutputDuplication_GetFrameDirtyRects_Proxy( -+ IDXGIOutputDuplication* This, -+ UINT dirty_size, -+ RECT *buffer, -+ UINT *buffer_size); -+void __RPC_STUB IDXGIOutputDuplication_GetFrameDirtyRects_Stub( -+ IRpcStubBuffer* This, -+ IRpcChannelBuffer* pRpcChannelBuffer, -+ PRPC_MESSAGE pRpcMessage, -+ DWORD* pdwStubPhase); -+HRESULT STDMETHODCALLTYPE IDXGIOutputDuplication_GetFrameMoveRects_Proxy( -+ IDXGIOutputDuplication* This, -+ UINT move_size, -+ DXGI_OUTDUPL_MOVE_RECT *rect, -+ UINT *rect_size); -+void __RPC_STUB IDXGIOutputDuplication_GetFrameMoveRects_Stub( -+ IRpcStubBuffer* This, -+ IRpcChannelBuffer* pRpcChannelBuffer, -+ PRPC_MESSAGE pRpcMessage, -+ DWORD* pdwStubPhase); -+HRESULT STDMETHODCALLTYPE IDXGIOutputDuplication_GetFramePointerShape_Proxy( -+ IDXGIOutputDuplication* This, -+ UINT shape_size, -+ void *buffer, -+ UINT *buffer_size, -+ DXGI_OUTDUPL_POINTER_SHAPE_INFO *shape_info); -+void __RPC_STUB IDXGIOutputDuplication_GetFramePointerShape_Stub( -+ IRpcStubBuffer* This, -+ IRpcChannelBuffer* pRpcChannelBuffer, -+ PRPC_MESSAGE pRpcMessage, -+ DWORD* pdwStubPhase); -+HRESULT STDMETHODCALLTYPE IDXGIOutputDuplication_MapDesktopSurface_Proxy( -+ IDXGIOutputDuplication* This, -+ DXGI_MAPPED_RECT *rect); -+void __RPC_STUB IDXGIOutputDuplication_MapDesktopSurface_Stub( -+ IRpcStubBuffer* This, -+ IRpcChannelBuffer* pRpcChannelBuffer, -+ PRPC_MESSAGE pRpcMessage, -+ DWORD* pdwStubPhase); -+HRESULT STDMETHODCALLTYPE IDXGIOutputDuplication_UnMapDesktopSurface_Proxy( -+ IDXGIOutputDuplication* This); -+void __RPC_STUB IDXGIOutputDuplication_UnMapDesktopSurface_Stub( -+ IRpcStubBuffer* This, -+ IRpcChannelBuffer* pRpcChannelBuffer, -+ PRPC_MESSAGE pRpcMessage, -+ DWORD* pdwStubPhase); -+HRESULT STDMETHODCALLTYPE IDXGIOutputDuplication_ReleaseFrame_Proxy( -+ IDXGIOutputDuplication* This); -+void __RPC_STUB IDXGIOutputDuplication_ReleaseFrame_Stub( -+ IRpcStubBuffer* This, -+ IRpcChannelBuffer* pRpcChannelBuffer, -+ PRPC_MESSAGE pRpcMessage, -+ DWORD* pdwStubPhase); -+ -+#endif /* __IDXGIOutputDuplication_INTERFACE_DEFINED__ */ -+ - typedef enum _DXGI_OFFER_RESOURCE_PRIORITY { - DXGI_OFFER_RESOURCE_PRIORITY_LOW = 1, - DXGI_OFFER_RESOURCE_PRIORITY_NORMAL = 2, -@@ -1385,6 +1817,318 @@ void __RPC_STUB IDXGIAdapter2_GetDesc2_Stub( - - #endif /* __IDXGIAdapter2_INTERFACE_DEFINED__ */ - -+typedef struct DXGI_MODE_DESC1 { -+ UINT Width; -+ UINT Height; -+ DXGI_RATIONAL RefreshRate; -+ DXGI_FORMAT Format; -+ DXGI_MODE_SCANLINE_ORDER ScanlineOrdering; -+ DXGI_MODE_SCALING Scaling; -+ WINBOOL Stereo; -+} DXGI_MODE_DESC1; -+/***************************************************************************** -+ * IDXGIOutput1 interface -+ */ -+#ifndef __IDXGIOutput1_INTERFACE_DEFINED__ -+#define __IDXGIOutput1_INTERFACE_DEFINED__ -+ -+DEFINE_GUID(IID_IDXGIOutput1, 0x00cddea8, 0x939b, 0x4b83, 0xa3,0x40, 0xa6,0x85,0x22,0x66,0x66,0xcc); -+#if defined(__cplusplus) && !defined(CINTERFACE) -+MIDL_INTERFACE("00cddea8-939b-4b83-a340-a685226666cc") -+IDXGIOutput1 : public IDXGIOutput -+{ -+ virtual HRESULT STDMETHODCALLTYPE GetDisplayModeList1( -+ DXGI_FORMAT format, -+ UINT flags, -+ UINT *mode_count, -+ DXGI_MODE_DESC1 *desc) = 0; -+ -+ virtual HRESULT STDMETHODCALLTYPE FindClosestMatchingMode1( -+ const DXGI_MODE_DESC1 *mode, -+ DXGI_MODE_DESC1 *closest_match, -+ IUnknown *device) = 0; -+ -+ virtual HRESULT STDMETHODCALLTYPE GetDisplaySurfaceData1( -+ IDXGIResource *resource) = 0; -+ -+ virtual HRESULT STDMETHODCALLTYPE DuplicateOutput( -+ IUnknown *device, -+ IDXGIOutputDuplication **output) = 0; -+ -+}; -+#ifdef __CRT_UUID_DECL -+__CRT_UUID_DECL(IDXGIOutput1, 0x00cddea8, 0x939b, 0x4b83, 0xa3,0x40, 0xa6,0x85,0x22,0x66,0x66,0xcc) -+#endif -+#else -+typedef struct IDXGIOutput1Vtbl { -+ BEGIN_INTERFACE -+ -+ /*** IUnknown methods ***/ -+ HRESULT (STDMETHODCALLTYPE *QueryInterface)( -+ IDXGIOutput1* This, -+ REFIID riid, -+ void **ppvObject); -+ -+ ULONG (STDMETHODCALLTYPE *AddRef)( -+ IDXGIOutput1* This); -+ -+ ULONG (STDMETHODCALLTYPE *Release)( -+ IDXGIOutput1* This); -+ -+ /*** IDXGIObject methods ***/ -+ HRESULT (STDMETHODCALLTYPE *SetPrivateData)( -+ IDXGIOutput1* This, -+ REFGUID guid, -+ UINT data_size, -+ const void *data); -+ -+ HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)( -+ IDXGIOutput1* This, -+ REFGUID guid, -+ const IUnknown *object); -+ -+ HRESULT (STDMETHODCALLTYPE *GetPrivateData)( -+ IDXGIOutput1* This, -+ REFGUID guid, -+ UINT *data_size, -+ void *data); -+ -+ HRESULT (STDMETHODCALLTYPE *GetParent)( -+ IDXGIOutput1* This, -+ REFIID riid, -+ void **parent); -+ -+ /*** IDXGIOutput methods ***/ -+ HRESULT (STDMETHODCALLTYPE *GetDesc)( -+ IDXGIOutput1* This, -+ DXGI_OUTPUT_DESC *desc); -+ -+ HRESULT (STDMETHODCALLTYPE *GetDisplayModeList)( -+ IDXGIOutput1* This, -+ DXGI_FORMAT format, -+ UINT flags, -+ UINT *mode_count, -+ DXGI_MODE_DESC *desc); -+ -+ HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode)( -+ IDXGIOutput1* This, -+ const DXGI_MODE_DESC *mode, -+ DXGI_MODE_DESC *closest_match, -+ IUnknown *device); -+ -+ HRESULT (STDMETHODCALLTYPE *WaitForVBlank)( -+ IDXGIOutput1* This); -+ -+ HRESULT (STDMETHODCALLTYPE *TakeOwnership)( -+ IDXGIOutput1* This, -+ IUnknown *device, -+ WINBOOL exclusive); -+ -+ void (STDMETHODCALLTYPE *ReleaseOwnership)( -+ IDXGIOutput1* This); -+ -+ HRESULT (STDMETHODCALLTYPE *GetGammaControlCapabilities)( -+ IDXGIOutput1* This, -+ DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps); -+ -+ HRESULT (STDMETHODCALLTYPE *SetGammaControl)( -+ IDXGIOutput1* This, -+ const DXGI_GAMMA_CONTROL *gamma_control); -+ -+ HRESULT (STDMETHODCALLTYPE *GetGammaControl)( -+ IDXGIOutput1* This, -+ DXGI_GAMMA_CONTROL *gamma_control); -+ -+ HRESULT (STDMETHODCALLTYPE *SetDisplaySurface)( -+ IDXGIOutput1* This, -+ IDXGISurface *surface); -+ -+ HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData)( -+ IDXGIOutput1* This, -+ IDXGISurface *surface); -+ -+ HRESULT (STDMETHODCALLTYPE *GetFrameStatistics)( -+ IDXGIOutput1* This, -+ DXGI_FRAME_STATISTICS *stats); -+ -+ /*** IDXGIOutput1 methods ***/ -+ HRESULT (STDMETHODCALLTYPE *GetDisplayModeList1)( -+ IDXGIOutput1* This, -+ DXGI_FORMAT format, -+ UINT flags, -+ UINT *mode_count, -+ DXGI_MODE_DESC1 *desc); -+ -+ HRESULT (STDMETHODCALLTYPE *FindClosestMatchingMode1)( -+ IDXGIOutput1* This, -+ const DXGI_MODE_DESC1 *mode, -+ DXGI_MODE_DESC1 *closest_match, -+ IUnknown *device); -+ -+ HRESULT (STDMETHODCALLTYPE *GetDisplaySurfaceData1)( -+ IDXGIOutput1* This, -+ IDXGIResource *resource); -+ -+ HRESULT (STDMETHODCALLTYPE *DuplicateOutput)( -+ IDXGIOutput1* This, -+ IUnknown *device, -+ IDXGIOutputDuplication **output); -+ -+ END_INTERFACE -+} IDXGIOutput1Vtbl; -+interface IDXGIOutput1 { -+ CONST_VTBL IDXGIOutput1Vtbl* lpVtbl; -+}; -+ -+#ifdef COBJMACROS -+#ifndef WIDL_C_INLINE_WRAPPERS -+/*** IUnknown methods ***/ -+#define IDXGIOutput1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) -+#define IDXGIOutput1_AddRef(This) (This)->lpVtbl->AddRef(This) -+#define IDXGIOutput1_Release(This) (This)->lpVtbl->Release(This) -+/*** IDXGIObject methods ***/ -+#define IDXGIOutput1_SetPrivateData(This,guid,data_size,data) (This)->lpVtbl->SetPrivateData(This,guid,data_size,data) -+#define IDXGIOutput1_SetPrivateDataInterface(This,guid,object) (This)->lpVtbl->SetPrivateDataInterface(This,guid,object) -+#define IDXGIOutput1_GetPrivateData(This,guid,data_size,data) (This)->lpVtbl->GetPrivateData(This,guid,data_size,data) -+#define IDXGIOutput1_GetParent(This,riid,parent) (This)->lpVtbl->GetParent(This,riid,parent) -+/*** IDXGIOutput methods ***/ -+#define IDXGIOutput1_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc) -+#define IDXGIOutput1_GetDisplayModeList(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc) -+#define IDXGIOutput1_FindClosestMatchingMode(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device) -+#define IDXGIOutput1_WaitForVBlank(This) (This)->lpVtbl->WaitForVBlank(This) -+#define IDXGIOutput1_TakeOwnership(This,device,exclusive) (This)->lpVtbl->TakeOwnership(This,device,exclusive) -+#define IDXGIOutput1_ReleaseOwnership(This) (This)->lpVtbl->ReleaseOwnership(This) -+#define IDXGIOutput1_GetGammaControlCapabilities(This,gamma_caps) (This)->lpVtbl->GetGammaControlCapabilities(This,gamma_caps) -+#define IDXGIOutput1_SetGammaControl(This,gamma_control) (This)->lpVtbl->SetGammaControl(This,gamma_control) -+#define IDXGIOutput1_GetGammaControl(This,gamma_control) (This)->lpVtbl->GetGammaControl(This,gamma_control) -+#define IDXGIOutput1_SetDisplaySurface(This,surface) (This)->lpVtbl->SetDisplaySurface(This,surface) -+#define IDXGIOutput1_GetDisplaySurfaceData(This,surface) (This)->lpVtbl->GetDisplaySurfaceData(This,surface) -+#define IDXGIOutput1_GetFrameStatistics(This,stats) (This)->lpVtbl->GetFrameStatistics(This,stats) -+/*** IDXGIOutput1 methods ***/ -+#define IDXGIOutput1_GetDisplayModeList1(This,format,flags,mode_count,desc) (This)->lpVtbl->GetDisplayModeList1(This,format,flags,mode_count,desc) -+#define IDXGIOutput1_FindClosestMatchingMode1(This,mode,closest_match,device) (This)->lpVtbl->FindClosestMatchingMode1(This,mode,closest_match,device) -+#define IDXGIOutput1_GetDisplaySurfaceData1(This,resource) (This)->lpVtbl->GetDisplaySurfaceData1(This,resource) -+#define IDXGIOutput1_DuplicateOutput(This,device,output) (This)->lpVtbl->DuplicateOutput(This,device,output) -+#else -+/*** IUnknown methods ***/ -+static FORCEINLINE HRESULT IDXGIOutput1_QueryInterface(IDXGIOutput1* This,REFIID riid,void **ppvObject) { -+ return This->lpVtbl->QueryInterface(This,riid,ppvObject); -+} -+static FORCEINLINE ULONG IDXGIOutput1_AddRef(IDXGIOutput1* This) { -+ return This->lpVtbl->AddRef(This); -+} -+static FORCEINLINE ULONG IDXGIOutput1_Release(IDXGIOutput1* This) { -+ return This->lpVtbl->Release(This); -+} -+/*** IDXGIObject methods ***/ -+static FORCEINLINE HRESULT IDXGIOutput1_SetPrivateData(IDXGIOutput1* This,REFGUID guid,UINT data_size,const void *data) { -+ return This->lpVtbl->SetPrivateData(This,guid,data_size,data); -+} -+static FORCEINLINE HRESULT IDXGIOutput1_SetPrivateDataInterface(IDXGIOutput1* This,REFGUID guid,const IUnknown *object) { -+ return This->lpVtbl->SetPrivateDataInterface(This,guid,object); -+} -+static FORCEINLINE HRESULT IDXGIOutput1_GetPrivateData(IDXGIOutput1* This,REFGUID guid,UINT *data_size,void *data) { -+ return This->lpVtbl->GetPrivateData(This,guid,data_size,data); -+} -+static FORCEINLINE HRESULT IDXGIOutput1_GetParent(IDXGIOutput1* This,REFIID riid,void **parent) { -+ return This->lpVtbl->GetParent(This,riid,parent); -+} -+/*** IDXGIOutput methods ***/ -+static FORCEINLINE HRESULT IDXGIOutput1_GetDesc(IDXGIOutput1* This,DXGI_OUTPUT_DESC *desc) { -+ return This->lpVtbl->GetDesc(This,desc); -+} -+static FORCEINLINE HRESULT IDXGIOutput1_GetDisplayModeList(IDXGIOutput1* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC *desc) { -+ return This->lpVtbl->GetDisplayModeList(This,format,flags,mode_count,desc); -+} -+static FORCEINLINE HRESULT IDXGIOutput1_FindClosestMatchingMode(IDXGIOutput1* This,const DXGI_MODE_DESC *mode,DXGI_MODE_DESC *closest_match,IUnknown *device) { -+ return This->lpVtbl->FindClosestMatchingMode(This,mode,closest_match,device); -+} -+static FORCEINLINE HRESULT IDXGIOutput1_WaitForVBlank(IDXGIOutput1* This) { -+ return This->lpVtbl->WaitForVBlank(This); -+} -+static FORCEINLINE HRESULT IDXGIOutput1_TakeOwnership(IDXGIOutput1* This,IUnknown *device,WINBOOL exclusive) { -+ return This->lpVtbl->TakeOwnership(This,device,exclusive); -+} -+static FORCEINLINE void IDXGIOutput1_ReleaseOwnership(IDXGIOutput1* This) { -+ This->lpVtbl->ReleaseOwnership(This); -+} -+static FORCEINLINE HRESULT IDXGIOutput1_GetGammaControlCapabilities(IDXGIOutput1* This,DXGI_GAMMA_CONTROL_CAPABILITIES *gamma_caps) { -+ return This->lpVtbl->GetGammaControlCapabilities(This,gamma_caps); -+} -+static FORCEINLINE HRESULT IDXGIOutput1_SetGammaControl(IDXGIOutput1* This,const DXGI_GAMMA_CONTROL *gamma_control) { -+ return This->lpVtbl->SetGammaControl(This,gamma_control); -+} -+static FORCEINLINE HRESULT IDXGIOutput1_GetGammaControl(IDXGIOutput1* This,DXGI_GAMMA_CONTROL *gamma_control) { -+ return This->lpVtbl->GetGammaControl(This,gamma_control); -+} -+static FORCEINLINE HRESULT IDXGIOutput1_SetDisplaySurface(IDXGIOutput1* This,IDXGISurface *surface) { -+ return This->lpVtbl->SetDisplaySurface(This,surface); -+} -+static FORCEINLINE HRESULT IDXGIOutput1_GetDisplaySurfaceData(IDXGIOutput1* This,IDXGISurface *surface) { -+ return This->lpVtbl->GetDisplaySurfaceData(This,surface); -+} -+static FORCEINLINE HRESULT IDXGIOutput1_GetFrameStatistics(IDXGIOutput1* This,DXGI_FRAME_STATISTICS *stats) { -+ return This->lpVtbl->GetFrameStatistics(This,stats); -+} -+/*** IDXGIOutput1 methods ***/ -+static FORCEINLINE HRESULT IDXGIOutput1_GetDisplayModeList1(IDXGIOutput1* This,DXGI_FORMAT format,UINT flags,UINT *mode_count,DXGI_MODE_DESC1 *desc) { -+ return This->lpVtbl->GetDisplayModeList1(This,format,flags,mode_count,desc); -+} -+static FORCEINLINE HRESULT IDXGIOutput1_FindClosestMatchingMode1(IDXGIOutput1* This,const DXGI_MODE_DESC1 *mode,DXGI_MODE_DESC1 *closest_match,IUnknown *device) { -+ return This->lpVtbl->FindClosestMatchingMode1(This,mode,closest_match,device); -+} -+static FORCEINLINE HRESULT IDXGIOutput1_GetDisplaySurfaceData1(IDXGIOutput1* This,IDXGIResource *resource) { -+ return This->lpVtbl->GetDisplaySurfaceData1(This,resource); -+} -+static FORCEINLINE HRESULT IDXGIOutput1_DuplicateOutput(IDXGIOutput1* This,IUnknown *device,IDXGIOutputDuplication **output) { -+ return This->lpVtbl->DuplicateOutput(This,device,output); -+} -+#endif -+#endif -+ -+#endif -+ -+HRESULT STDMETHODCALLTYPE IDXGIOutput1_GetDisplayModeList1_Proxy( -+ IDXGIOutput1* This, -+ DXGI_FORMAT format, -+ UINT flags, -+ UINT *mode_count, -+ DXGI_MODE_DESC1 *desc); -+void __RPC_STUB IDXGIOutput1_GetDisplayModeList1_Stub( -+ IRpcStubBuffer* This, -+ IRpcChannelBuffer* pRpcChannelBuffer, -+ PRPC_MESSAGE pRpcMessage, -+ DWORD* pdwStubPhase); -+HRESULT STDMETHODCALLTYPE IDXGIOutput1_FindClosestMatchingMode1_Proxy( -+ IDXGIOutput1* This, -+ const DXGI_MODE_DESC1 *mode, -+ DXGI_MODE_DESC1 *closest_match, -+ IUnknown *device); -+void __RPC_STUB IDXGIOutput1_FindClosestMatchingMode1_Stub( -+ IRpcStubBuffer* This, -+ IRpcChannelBuffer* pRpcChannelBuffer, -+ PRPC_MESSAGE pRpcMessage, -+ DWORD* pdwStubPhase); -+HRESULT STDMETHODCALLTYPE IDXGIOutput1_GetDisplaySurfaceData1_Proxy( -+ IDXGIOutput1* This, -+ IDXGIResource *resource); -+void __RPC_STUB IDXGIOutput1_GetDisplaySurfaceData1_Stub( -+ IRpcStubBuffer* This, -+ IRpcChannelBuffer* pRpcChannelBuffer, -+ PRPC_MESSAGE pRpcMessage, -+ DWORD* pdwStubPhase); -+HRESULT STDMETHODCALLTYPE IDXGIOutput1_DuplicateOutput_Proxy( -+ IDXGIOutput1* This, -+ IUnknown *device, -+ IDXGIOutputDuplication **output); -+void __RPC_STUB IDXGIOutput1_DuplicateOutput_Stub( -+ IRpcStubBuffer* This, -+ IRpcChannelBuffer* pRpcChannelBuffer, -+ PRPC_MESSAGE pRpcMessage, -+ DWORD* pdwStubPhase); -+ -+#endif /* __IDXGIOutput1_INTERFACE_DEFINED__ */ -+ - /* Begin additional prototypes for all interfaces */ - - -diff --git a/mingw-w64-headers/direct-x/include/dxgi1_2.idl b/mingw-w64-headers/direct-x/include/dxgi1_2.idl -index 92f9c0e..838521e 100644 ---- a/mingw-w64-headers/direct-x/include/dxgi1_2.idl -+++ b/mingw-w64-headers/direct-x/include/dxgi1_2.idl -@@ -1,5 +1,6 @@ - /* - * Copyright 2014 Jacek Caban for CodeWeavers -+ * Copyright 2015 Martell Malone - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public -@@ -18,6 +19,114 @@ - - import "dxgi.idl"; - -+[ -+ object, -+ uuid(ea9dbf1a-c88e-4486-854a-98aa0138f30c), -+ local, -+ pointer_default(unique) -+] -+interface IDXGIDisplayControl : IUnknown -+{ -+ BOOL IsStereoEnabled(); -+ -+ void SetStereoEnabled( -+ BOOL enabled -+ ); -+} -+ -+typedef struct DXGI_OUTDUPL_MOVE_RECT -+{ -+ POINT SourcePoint; -+ RECT DestinationRect; -+} DXGI_OUTDUPL_MOVE_RECT; -+ -+typedef struct DXGI_OUTDUPL_DESC -+{ -+ DXGI_MODE_DESC ModeDesc; -+ DXGI_MODE_ROTATION Rotation; -+ BOOL DesktopImageInSystemMemory; -+} DXGI_OUTDUPL_DESC; -+ -+typedef struct DXGI_OUTDUPL_POINTER_POSITION -+{ -+ POINT Position; -+ BOOL Visible; -+} DXGI_OUTDUPL_POINTER_POSITION; -+ -+typedef enum DXGI_OUTDUPL_POINTER_SHAPE_TYPE -+{ -+ DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MONOCHROME = 0x1, -+ DXGI_OUTDUPL_POINTER_SHAPE_TYPE_COLOR = 0x2, -+ DXGI_OUTDUPL_POINTER_SHAPE_TYPE_MASKED_COLOR = 0x4 -+} DXGI_OUTDUPL_POINTER_SHAPE_TYPE; -+ -+typedef struct DXGI_OUTDUPL_POINTER_SHAPE_INFO -+{ -+ UINT Type; -+ UINT Width; -+ UINT Height; -+ UINT Pitch; -+ POINT HotSpot; -+} DXGI_OUTDUPL_POINTER_SHAPE_INFO; -+ -+typedef struct DXGI_OUTDUPL_FRAME_INFO -+{ -+ LARGE_INTEGER LastPresentTime; -+ LARGE_INTEGER LastMouseUpdateTime; -+ UINT AccumulatedFrames; -+ BOOL RectsCoalesced; -+ BOOL ProtectedContentMaskedOut; -+ DXGI_OUTDUPL_POINTER_POSITION PointerPosition; -+ UINT TotalMetadataBufferSize; -+ UINT PointerShapeBufferSize; -+} DXGI_OUTDUPL_FRAME_INFO; -+ -+[ -+ object, -+ uuid(191cfac3-a341-470d-b26e-a864f428319c), -+ local, -+ pointer_default(unique) -+] -+interface IDXGIOutputDuplication : IDXGIObject -+{ -+ void GetDesc( -+ [out] DXGI_OUTDUPL_DESC *desc -+ ); -+ -+ HRESULT AcquireNextFrame( -+ [in] UINT timeout, -+ [out] DXGI_OUTDUPL_FRAME_INFO *frame_info, -+ [out] IDXGIResource **resource -+ ); -+ -+ HRESULT GetFrameDirtyRects( -+ [in] UINT dirty_size, -+ [out] RECT *buffer, -+ [out] UINT *buffer_size -+ ); -+ -+ HRESULT GetFrameMoveRects( -+ [in] UINT move_size, -+ [out] DXGI_OUTDUPL_MOVE_RECT *rect, -+ [out] UINT *rect_size -+ ); -+ -+ HRESULT GetFramePointerShape( -+ [in] UINT shape_size, -+ [out] void *buffer, -+ [out] UINT *buffer_size, -+ [out] DXGI_OUTDUPL_POINTER_SHAPE_INFO *shape_info -+ ); -+ -+ HRESULT MapDesktopSurface( -+ [out] DXGI_MAPPED_RECT *rect -+ ); -+ -+ HRESULT UnMapDesktopSurface(); -+ -+ HRESULT ReleaseFrame(); -+} -+ - typedef enum _DXGI_OFFER_RESOURCE_PRIORITY { - DXGI_OFFER_RESOURCE_PRIORITY_LOW = 1, - DXGI_OFFER_RESOURCE_PRIORITY_NORMAL, -@@ -232,3 +341,45 @@ interface IDXGIAdapter2 : IDXGIAdapter1 - { - HRESULT GetDesc2([out] DXGI_ADAPTER_DESC2 *pDesc); - } -+ -+typedef struct DXGI_MODE_DESC1 -+{ -+ UINT Width; -+ UINT Height; -+ DXGI_RATIONAL RefreshRate; -+ DXGI_FORMAT Format; -+ DXGI_MODE_SCANLINE_ORDER ScanlineOrdering; -+ DXGI_MODE_SCALING Scaling; -+ BOOL Stereo; -+} DXGI_MODE_DESC1; -+ -+[ -+ object, -+ uuid(00cddea8-939b-4b83-a340-a685226666cc), -+ local, -+ pointer_default(unique) -+] -+interface IDXGIOutput1 : IDXGIOutput -+{ -+ HRESULT GetDisplayModeList1( -+ [in] DXGI_FORMAT format, -+ [in] UINT flags, -+ [in, out] UINT *mode_count, -+ [out] DXGI_MODE_DESC1 *desc -+ ); -+ -+ HRESULT FindClosestMatchingMode1( -+ [in] const DXGI_MODE_DESC1 *mode, -+ [out] DXGI_MODE_DESC1 *closest_match, -+ [in] IUnknown *device -+ ); -+ -+ HRESULT GetDisplaySurfaceData1( -+ [in] IDXGIResource *resource -+ ); -+ -+ HRESULT DuplicateOutput( -+ [in] IUnknown *device, -+ [out] IDXGIOutputDuplication **output -+ ); -+} --- -2.4.5 - diff --git a/mingw-w64-crt-git/0004-d3d11-Add-missing-d3d11-1.1-structs-and-interfaces.patch b/mingw-w64-crt-git/0004-d3d11-Add-missing-d3d11-1.1-structs-and-interfaces.patch deleted file mode 100644 index 4967bbbc4f..0000000000 --- a/mingw-w64-crt-git/0004-d3d11-Add-missing-d3d11-1.1-structs-and-interfaces.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 72fea0e0d302849b000e89dd9884661aa80f27dd Mon Sep 17 00:00:00 2001 -From: Martell Malone -Date: Mon, 16 Feb 2015 23:40:12 +0000 -Subject: [PATCH 4/6] d3d11: Add missing d3d11 1.1 structs and interfaces - ---- - mingw-w64-headers/direct-x/include/d3d11_1.h | 5 +++++ - mingw-w64-headers/direct-x/include/d3d11_1.idl | 6 ++++++ - 2 files changed, 11 insertions(+) - -diff --git a/mingw-w64-headers/direct-x/include/d3d11_1.h b/mingw-w64-headers/direct-x/include/d3d11_1.h -index 51ca735..2460b3d 100644 ---- a/mingw-w64-headers/direct-x/include/d3d11_1.h -+++ b/mingw-w64-headers/direct-x/include/d3d11_1.h -@@ -59,6 +59,11 @@ typedef interface ID3D11Device1 ID3D11Device1; - extern "C" { - #endif - -+typedef enum D3D11_COPY_FLAGS { -+ D3D11_COPY_NO_OVERWRITE = 0x1, -+ D3D11_COPY_DISCARD = 0x2 -+} D3D11_COPY_FLAGS; -+ - typedef enum D3D11_LOGIC_OP { - D3D11_LOGIC_OP_CLEAR = 0, - D3D11_LOGIC_OP_SET = 1, -diff --git a/mingw-w64-headers/direct-x/include/d3d11_1.idl b/mingw-w64-headers/direct-x/include/d3d11_1.idl -index 1a46abf..319d522 100644 ---- a/mingw-w64-headers/direct-x/include/d3d11_1.idl -+++ b/mingw-w64-headers/direct-x/include/d3d11_1.idl -@@ -22,6 +22,12 @@ import "dxgi1_2.idl"; - import "d3dcommon.idl"; - import "d3d11.idl"; - -+typedef enum D3D11_COPY_FLAGS -+{ -+ D3D11_COPY_NO_OVERWRITE = 0x1, -+ D3D11_COPY_DISCARD = 0x2, -+} D3D11_COPY_FLAGS; -+ - typedef enum D3D11_LOGIC_OP { - D3D11_LOGIC_OP_CLEAR = 0, - D3D11_LOGIC_OP_SET, --- -2.4.5 - diff --git a/mingw-w64-crt-git/0005-handle-ctor_list-internally.patch b/mingw-w64-crt-git/0005-handle-ctor_list-internally.patch deleted file mode 100644 index 5356e68cb7..0000000000 --- a/mingw-w64-crt-git/0005-handle-ctor_list-internally.patch +++ /dev/null @@ -1,61 +0,0 @@ -From ca451a7a45d4876065edc6755f8aab8095914b04 Mon Sep 17 00:00:00 2001 -From: Martell Malone -Date: Sat, 21 Nov 2015 18:43:46 -0800 -Subject: [PATCH] Handle __CTOR_LIST__ internally within mingw-w64 - ---- - mingw-w64-crt/crt/gccmain.c | 19 +++++++++++++------ - 1 file changed, 13 insertions(+), 6 deletions(-) - -diff --git a/mingw-w64-crt/crt/gccmain.c b/mingw-w64-crt/crt/gccmain.c -index fc0e350..ba50691 100644 ---- a/mingw-w64-crt/crt/gccmain.c -+++ b/mingw-w64-crt/crt/gccmain.c -@@ -9,8 +9,15 @@ - #include - - typedef void (*func_ptr) (void); --extern func_ptr __CTOR_LIST__[]; --extern func_ptr __DTOR_LIST__[]; -+#define STATIC static -+ -+STATIC func_ptr __MINGW_CTOR_LIST__[1] -+ __attribute__ ((__used__, section(".ctors"), aligned(sizeof(func_ptr)))) -+ = { (func_ptr) (-1) }; -+ -+STATIC func_ptr __MINGW_DTOR_LIST__[1] -+ __attribute__((section(".dtors"), aligned(sizeof(func_ptr)))) -+ = { (func_ptr) (-1) }; - - void __do_global_dtors (void); - void __do_global_ctors (void); -@@ -19,7 +26,7 @@ void __main (void); - void - __do_global_dtors (void) - { -- static func_ptr *p = __DTOR_LIST__ + 1; -+ static func_ptr *p = __MINGW_DTOR_LIST__ + 1; - - while (*p) - { -@@ -31,17 +38,17 @@ __do_global_dtors (void) - void - __do_global_ctors (void) - { -- unsigned long nptrs = (unsigned long) (ptrdiff_t) __CTOR_LIST__[0]; -+ unsigned long nptrs = (unsigned long) (ptrdiff_t) __MINGW_CTOR_LIST__[0]; - unsigned long i; - - if (nptrs == (unsigned long) -1) - { -- for (nptrs = 0; __CTOR_LIST__[nptrs + 1] != 0; nptrs++); -+ for (nptrs = 0; __MINGW_CTOR_LIST__[nptrs + 1] != 0; nptrs++); - } - - for (i = nptrs; i >= 1; i--) - { -- __CTOR_LIST__[i] (); -+ __MINGW_CTOR_LIST__[i] (); - } - - atexit (__do_global_dtors); diff --git a/mingw-w64-crt-git/PKGBUILD b/mingw-w64-crt-git/PKGBUILD index dca2e4e3e3..2cf7fd322f 100644 --- a/mingw-w64-crt-git/PKGBUILD +++ b/mingw-w64-crt-git/PKGBUILD @@ -4,7 +4,7 @@ _realname=crt pkgbase=mingw-w64-${_realname}-git pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}-git" replaces=("${MINGW_PACKAGE_PREFIX}-${_realname}-svn") -pkgver=5.0.0.4963.b912d5d1 +pkgver=5.0.0.4966.1eee2140 pkgrel=1 pkgdesc='MinGW-w64 CRT for Windows' arch=('any') @@ -19,13 +19,13 @@ provides=("${MINGW_PACKAGE_PREFIX}-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}") options=('!strip' 'staticlibs' '!buildflags' '!emptydirs') source=("mingw-w64"::"git+https://git.code.sf.net/p/mingw-w64/mingw-w64" - "0003-dxgi-Add-missing-dxgi-1.2-structs-and-interfaces.patch" - "0004-d3d11-Add-missing-d3d11-1.1-structs-and-interfaces.patch" - "0005-handle-ctor_list-internally.patch") + 0001-Allow-to-use-bessel-and-complex-functions-without-un.patch + 0002-DirectX-9-fixes-for-VLC.patch + 0003-DirectX-11-fixes-for-VLC.patch) sha256sums=('SKIP' - '677642bbb0df3f1e0467f075f24c720657e9ed912a6e69cbf189352271fc09c1' - 'c6c996b273ee049a2c0b9570f007d2d76a95ff56abb3b147f156e6a221a561ef' - '0eabe00375d4e26fd7e9afa56f6a9da02845fe2c0f900f5e1f829842bff8624a') + 'd641257f7e1469aff89adc33e57702b75fe9667ca035978f890eae1020b6814c' + '2574be1f008e54a435b0c761f887f71e6b56bea3de924150f29f1a981332439a' + '24fb10f42df9c26c01561a72e0518592b07c1e6f5ffcdbb46ceb8b1a7e204df9') pkgver() { cd "${srcdir}/mingw-w64" @@ -37,8 +37,10 @@ pkgver() { prepare() { cd ${srcdir}/mingw-w64 - git am --committer-date-is-author-date "${srcdir}"/0003-dxgi-Add-missing-dxgi-1.2-structs-and-interfaces.patch - git am --committer-date-is-author-date "${srcdir}"/0004-d3d11-Add-missing-d3d11-1.1-structs-and-interfaces.patch + + git am --committer-date-is-author-date "${srcdir}/0001-Allow-to-use-bessel-and-complex-functions-without-un.patch" + git am --committer-date-is-author-date "${srcdir}/0002-DirectX-9-fixes-for-VLC.patch" + git am --committer-date-is-author-date "${srcdir}/0003-DirectX-11-fixes-for-VLC.patch" } build() { diff --git a/mingw-w64-headers-git/PKGBUILD b/mingw-w64-headers-git/PKGBUILD index d2e7720739..5b817ce4d3 100644 --- a/mingw-w64-headers-git/PKGBUILD +++ b/mingw-w64-headers-git/PKGBUILD @@ -5,7 +5,7 @@ pkgbase=mingw-w64-${_realname}-git pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}-git" replaces=("${MINGW_PACKAGE_PREFIX}-${_realname}-svn") pkgdesc="MinGW-w64 headers for Windows" -pkgver=5.0.0.4965.a1047045 +pkgver=5.0.0.4966.1eee2140 pkgrel=1 arch=('any') url="https://mingw-w64.sourceforge.io/"