diff --git a/patches/11-DXVA2/0001-dxva2-Added-stub-dll.patch b/patches/11-DXVA2/0001-dxva2-Added-stub-dll.patch deleted file mode 100644 index 843cd53c..00000000 --- a/patches/11-DXVA2/0001-dxva2-Added-stub-dll.patch +++ /dev/null @@ -1,129 +0,0 @@ -From 6a0540157019fee86dab35dd5e5f8891aa93c3e0 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20M=C3=BCller?= -Date: Mon, 24 Mar 2014 00:05:38 +0100 -Subject: dxva2: Added stub dll. - ---- - configure.ac | 1 + - dlls/dxva2/Makefile.in | 4 ++++ - dlls/dxva2/dxva2.spec | 37 +++++++++++++++++++++++++++++++++++++ - dlls/dxva2/main.c | 40 ++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 82 insertions(+) - create mode 100644 dlls/dxva2/Makefile.in - create mode 100644 dlls/dxva2/dxva2.spec - create mode 100644 dlls/dxva2/main.c - -diff --git a/configure.ac b/configure.ac -index fc425c6..34d2aa2 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -2889,6 +2889,7 @@ WINE_CONFIG_LIB(dxerr9) - WINE_CONFIG_DLL(dxgi,,[implib]) - WINE_CONFIG_TEST(dlls/dxgi/tests) - WINE_CONFIG_LIB(dxguid) -+WINE_CONFIG_DLL(dxva2) - WINE_CONFIG_DLL(explorerframe,,[clean]) - WINE_CONFIG_TEST(dlls/explorerframe/tests) - WINE_CONFIG_DLL(ext-ms-win-gdi-devcaps-l1-1-0) -diff --git a/dlls/dxva2/Makefile.in b/dlls/dxva2/Makefile.in -new file mode 100644 -index 0000000..7b9ef6f ---- /dev/null -+++ b/dlls/dxva2/Makefile.in -@@ -0,0 +1,4 @@ -+MODULE = dxva2.dll -+ -+C_SRCS = \ -+ main.c -diff --git a/dlls/dxva2/dxva2.spec b/dlls/dxva2/dxva2.spec -new file mode 100644 -index 0000000..da94df3 ---- /dev/null -+++ b/dlls/dxva2/dxva2.spec -@@ -0,0 +1,37 @@ -+@ stub CapabilitiesRequestAndCapabilitiesReply -+@ stub DXVA2CreateDirect3DDeviceManager9 -+@ stub DXVA2CreateVideoService -+@ stub DegaussMonitor -+@ stub DestroyPhysicalMonitor -+@ stub DestroyPhysicalMonitors -+@ stub GetCapabilitiesStringLength -+@ stub GetMonitorBrightness -+@ stub GetMonitorCapabilities -+@ stub GetMonitorColorTemperature -+@ stub GetMonitorContrast -+@ stub GetMonitorDisplayAreaPosition -+@ stub GetMonitorDisplayAreaSize -+@ stub GetMonitorRedGreenOrBlueDrive -+@ stub GetMonitorRedGreenOrBlueGain -+@ stub GetMonitorTechnologyType -+@ stub GetNumberOfPhysicalMonitorsFromHMONITOR -+@ stub GetNumberOfPhysicalMonitorsFromIDirect3DDevice9 -+@ stub GetPhysicalMonitorsFromHMONITOR -+@ stub GetPhysicalMonitorsFromIDirect3DDevice9 -+@ stub GetTimingReport -+@ stub GetVCPFeatureAndVCPFeatureReply -+@ stub OPMGetVideoOutputsFromHMONITOR -+@ stub OPMGetVideoOutputsFromIDirect3DDevice9Object -+@ stub RestoreMonitorFactoryColorDefaults -+@ stub RestoreMonitorFactoryDefaults -+@ stub SaveCurrentMonitorSettings -+@ stub SaveCurrentSettings -+@ stub SetMonitorBrightness -+@ stub SetMonitorColorTemperature -+@ stub SetMonitorContrast -+@ stub SetMonitorDisplayAreaPosition -+@ stub SetMonitorDisplayAreaSize -+@ stub SetMonitorRedGreenOrBlueDrive -+@ stub SetMonitorRedGreenOrBlueGain -+@ stub SetVCPFeature -+@ stub UABGetCertificate -diff --git a/dlls/dxva2/main.c b/dlls/dxva2/main.c -new file mode 100644 -index 0000000..d16320f ---- /dev/null -+++ b/dlls/dxva2/main.c -@@ -0,0 +1,40 @@ -+/* -+ * Copyright 2014 Michael Müller for Pipelight -+ * -+ * 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 -+ */ -+ -+#include -+#include "windef.h" -+#include "winbase.h" -+ -+#include "wine/debug.h" -+ -+WINE_DEFAULT_DEBUG_CHANNEL(dxva2); -+ -+BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) -+{ -+ TRACE("%p,%x,%p\n", hinstDLL, fdwReason, lpvReserved); -+ -+ switch (fdwReason) { -+ case DLL_WINE_PREATTACH: -+ return FALSE; /* prefer native version */ -+ case DLL_PROCESS_ATTACH: -+ DisableThreadLibraryCalls(hinstDLL); -+ break; -+ } -+ -+ return TRUE; -+} --- -1.8.3.2 - diff --git a/patches/11-DXVA2/0001-include-Add-dxva2api.idl.patch b/patches/11-DXVA2/0001-include-Add-dxva2api.idl.patch new file mode 100644 index 00000000..19f53d51 --- /dev/null +++ b/patches/11-DXVA2/0001-include-Add-dxva2api.idl.patch @@ -0,0 +1,493 @@ +From fea79238dba89c6233b58cbb86b3702f91f5be24 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Wed, 26 Mar 2014 21:09:24 +0100 +Subject: include: Add dxva2api.idl + +--- + include/Makefile.in | 1 + + include/dxva2api.idl | 461 ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 462 insertions(+) + create mode 100644 include/dxva2api.idl + +diff --git a/include/Makefile.in b/include/Makefile.in +index ebdc96b..d6997db 100644 +--- a/include/Makefile.in ++++ b/include/Makefile.in +@@ -40,6 +40,7 @@ PUBLIC_IDL_H_SRCS = \ + dwrite_1.idl \ + dxgi.idl \ + dxgi1_2.idl \ ++ dxva2api.idl \ + endpointvolume.idl \ + exdisp.idl \ + fusion.idl \ +diff --git a/include/dxva2api.idl b/include/dxva2api.idl +new file mode 100644 +index 0000000..274cccf +--- /dev/null ++++ b/include/dxva2api.idl +@@ -0,0 +1,461 @@ ++/* ++ * Copyright Michael Müller for Pipelight ++ * ++ * 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 ++ */ ++ ++cpp_quote("#include ") ++import "unknwn.idl"; ++ ++cpp_quote("#if 0") ++typedef DWORD IDirect3DDevice9; ++typedef DWORD IDirect3DSurface9; ++ ++typedef DWORD D3DFORMAT; ++typedef DWORD D3DPOOL; ++cpp_quote("#endif") ++ ++typedef LONGLONG REFERENCE_TIME; ++ ++enum ++{ ++ DXVA2_VideoDecoderRenderTarget = 0, ++ DXVA2_VideoProcessorRenderTarget = 1, ++ DXVA2_VideoSoftwareRenderTarget = 2 ++}; ++ ++typedef struct _DXVA2_ExtendedFormat ++{ ++ union ++ { ++ struct ++ { ++ UINT SampleFormat :8; ++ UINT VideoChromaSubsampling :4; ++ UINT NominalRange :3; ++ UINT VideoTransferMatrix :3; ++ UINT VideoLighting :4; ++ UINT VideoPrimaries :5; ++ UINT VideoTransferFunction :5; ++ }; ++ UINT value; ++ }; ++} DXVA2_ExtendedFormat; ++ ++typedef struct _DXVA2_Frequency ++{ ++ UINT Numerator; ++ UINT Denominator; ++} DXVA2_Frequency; ++ ++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; ++ UINT ConfigMinRenderTargetBuffCount; ++ USHORT ConfigDecoderSpecific; ++} DXVA2_ConfigPictureDecode; ++ ++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; ++ ++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_VideoProcessorCaps ++{ ++ UINT DeviceCaps; ++ D3DPOOL InputPool; ++ UINT NumForwardRefSamples; ++ UINT NumBackwardRefSamples; ++ UINT Reserved; ++ UINT DeinterlaceTechnology; ++ UINT ProcAmpControlCaps; ++ UINT VideoProcessorOperations; ++ UINT NoiseFilterTechnology; ++ UINT DetailFilterTechnology; ++} DXVA2_VideoProcessorCaps; ++ ++typedef struct _DXVA2_Fixed32 ++{ ++ union ++ { ++ struct ++ { ++ USHORT Fraction; ++ SHORT Value; ++ }; ++ LONG ll; ++ }; ++} DXVA2_Fixed32; ++ ++typedef struct _DXVA2_ValueRange ++{ ++ DXVA2_Fixed32 MinValue; ++ DXVA2_Fixed32 MaxValue; ++ DXVA2_Fixed32 DefaultValue; ++ DXVA2_Fixed32 StepSize; ++} DXVA2_ValueRange; ++ ++typedef struct _DXVA2_AYUVSample8 ++{ ++ UCHAR Cr; ++ UCHAR Cb; ++ UCHAR Y; ++ UCHAR Alpha; ++} DXVA2_AYUVSample8; ++ ++typedef struct _DXVA2_AYUVSample16 ++{ ++ USHORT Cr; ++ USHORT Cb; ++ USHORT Y; ++ USHORT Alpha; ++} DXVA2_AYUVSample16; ++ ++typedef struct _DXVA2_ProcAmpValues ++{ ++ DXVA2_Fixed32 Brightness; ++ DXVA2_Fixed32 Contrast; ++ DXVA2_Fixed32 Hue; ++ DXVA2_Fixed32 Saturation; ++} DXVA2_ProcAmpValues; ++ ++typedef struct _DXVA2_FilterValues ++{ ++ DXVA2_Fixed32 Level; ++ DXVA2_Fixed32 Threshold; ++ DXVA2_Fixed32 Radius; ++} DXVA2_FilterValues; ++ ++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_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; ++ ++interface IDirectXVideoDecoder; ++interface IDirectXVideoProcessor; ++ ++/***************************************************************************** ++ * IDirect3DDeviceManager9 interface ++ */ ++[ ++ object, ++ uuid(a0cade0f-06d5-4cf4-a1c7-f3cdd725aa75), ++ helpstring("IDirect3DDeviceManager9 Interface"), ++ local ++] ++interface IDirect3DDeviceManager9 : IUnknown ++{ ++ HRESULT ResetDevice( ++ [in] IDirect3DDevice9* pDevice, ++ [in] UINT resetToken); ++ ++ HRESULT OpenDeviceHandle( ++ [out] HANDLE* phDevice); ++ ++ HRESULT CloseDeviceHandle( ++ [in] HANDLE hDevice); ++ ++ HRESULT TestDevice( ++ [in] HANDLE hDevice); ++ ++ HRESULT LockDevice( ++ [in] HANDLE hDevice, ++ [out] IDirect3DDevice9** ppDevice, ++ [in] BOOL fBlock); ++ ++ HRESULT UnlockDevice( ++ [in] HANDLE hDevice, ++ [in] BOOL fSaveState); ++ ++ HRESULT GetVideoService( ++ [in] HANDLE hDevice, ++ [in] REFIID riid, ++ [out] void** ppService); ++}; ++ ++/***************************************************************************** ++ * IDirectXVideoAccelerationService interface ++ */ ++[ ++ object, ++ uuid(fc51a550-d5e7-11d9-af55-00054e43ff02), ++ helpstring("IDirectXVideoAccelerationService Interface"), ++ local ++] ++interface IDirectXVideoAccelerationService : IUnknown ++{ ++ HRESULT CreateSurface( ++ [in] UINT width, ++ [in] UINT height, ++ [in] UINT backBuffers, ++ [in] D3DFORMAT format, ++ [in] D3DPOOL pool, ++ [in] DWORD usage, ++ [in] DWORD dxvaType, ++ [out] IDirect3DSurface9 **ppSurface, ++ [in, out] HANDLE *pSharedHandle); ++}; ++ ++/***************************************************************************** ++ * IDirectXVideoDecoderService interface ++ */ ++[ ++ object, ++ uuid(fc51a551-d5e7-11d9-af55-00054e43ff02), ++ helpstring("IDirectXVideoDecoderService Interface"), ++ local ++] ++interface IDirectXVideoDecoderService : IDirectXVideoAccelerationService ++{ ++ HRESULT CreateVideoDecoder( ++ [in] REFGUID guid, ++ [in] const DXVA2_VideoDesc *pVideoDesc, ++ [in] DXVA2_ConfigPictureDecode *pConfig, ++ [in] IDirect3DSurface9 **ppDecoderRenderTargets, ++ [in] UINT NumSurfaces, ++ [out] IDirectXVideoDecoder **ppDecode); ++ ++ HRESULT GetDecoderConfigurations( ++ [in] REFGUID guid, ++ [in] const DXVA2_VideoDesc *pVideoDesc, ++ [in] IUnknown *pReserved, ++ [out] UINT *pCount, ++ [out] DXVA2_ConfigPictureDecode **ppConfigs); ++ ++ HRESULT GetDecoderDeviceGuids( ++ [out] UINT *count, ++ [out] GUID **pGuids); ++ ++ HRESULT GetDecoderRenderTargets( ++ [in] REFGUID guid, ++ [out] UINT *pCount, ++ [out] D3DFORMAT **pFormats); ++}; ++ ++/***************************************************************************** ++ * IDirectXVideoDecoder interface ++ */ ++[ ++ object, ++ uuid(f2b0810a-fd00-43c9-918c-df94e2d8ef7d), ++ helpstring("IDirectXVideoDecoder Interface"), ++ local ++] ++interface IDirectXVideoDecoder : IUnknown ++{ ++ HRESULT GetVideoDecoderService( ++ [out] IDirectXVideoDecoderService** ppService); ++ ++ HRESULT GetCreationParameters( ++ [out] GUID* pDeviceGuid, ++ [out] DXVA2_VideoDesc* pVideoDesc, ++ [out] DXVA2_ConfigPictureDecode* pConfig, ++ [out] IDirect3DSurface9*** pDecoderRenderTargets, ++ [out] UINT* pNumSurfaces); ++ ++ HRESULT GetBuffer( ++ [in] UINT BufferType, ++ [out] void** ppBuffer, ++ [out] UINT* pBufferSize); ++ ++ HRESULT ReleaseBuffer( ++ [in] UINT BufferType); ++ ++ HRESULT BeginFrame( ++ [in] IDirect3DSurface9* pRenderTarget, ++ [in] void* pvPVPData); ++ ++ HRESULT EndFrame( ++ [out] HANDLE* pHandleComplete); ++ ++ HRESULT Execute( ++ [in] const DXVA2_DecodeExecuteParams* pExecuteParams); ++}; ++ ++/***************************************************************************** ++ * IDirectXVideoProcessorService interface ++ */ ++[ ++ object, ++ uuid(fc51a551-d5e7-11d9-af55-00054e43ff02), ++ helpstring("IDirectXVideoProcessorService Interface"), ++ 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); ++}; ++ ++/***************************************************************************** ++ * IDirectXVideoProcessor interface ++ */ ++[ ++ object, ++ uuid(8c3a39f0-916e-4690-804f-4c8001355d25), ++ helpstring("IDirectXVideoProcessor Interface"), ++ 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* pHandleCompleteIDirect3DDeviceManager9); ++}; +-- +1.7.9.5 + diff --git a/patches/11-DXVA2/0002-include-Add-PhysicalMonitorEnumerationAPI.h.patch b/patches/11-DXVA2/0002-include-Add-PhysicalMonitorEnumerationAPI.h.patch new file mode 100644 index 00000000..fa697fa0 --- /dev/null +++ b/patches/11-DXVA2/0002-include-Add-PhysicalMonitorEnumerationAPI.h.patch @@ -0,0 +1,60 @@ +From e9681f3d80f1900071d56a5a008424453f39a304 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Wed, 26 Mar 2014 05:20:09 +0100 +Subject: include: Add PhysicalMonitorEnumerationAPI.h + +--- + include/Makefile.in | 1 + + include/PhysicalMonitorEnumerationAPI.h | 27 +++++++++++++++++++++++++++ + 2 files changed, 28 insertions(+) + create mode 100644 include/PhysicalMonitorEnumerationAPI.h + +diff --git a/include/Makefile.in b/include/Makefile.in +index d6997db..fd4f7c1 100644 +--- a/include/Makefile.in ++++ b/include/Makefile.in +@@ -475,6 +475,7 @@ SRCDIR_INCLUDES = \ + patchapi.h \ + pdh.h \ + pdhmsg.h \ ++ PhysicalMonitorEnumerationAPI.h \ + pktdef.h \ + poppack.h \ + powrprof.h \ +diff --git a/include/PhysicalMonitorEnumerationAPI.h b/include/PhysicalMonitorEnumerationAPI.h +new file mode 100644 +index 0000000..33b1c68 +--- /dev/null ++++ b/include/PhysicalMonitorEnumerationAPI.h +@@ -0,0 +1,27 @@ ++/* ++ * Copyright Michael Müller for Pipelight ++ * ++ * 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 ++ */ ++ ++#include ++ ++#define PHYSICAL_MONITOR_DESCRIPTION_SIZE 128 ++ ++typedef struct _PHYSICAL_MONITOR ++{ ++ HANDLE hPhysicalMonitor; ++ WCHAR szPhysicalMonitorDescription[PHYSICAL_MONITOR_DESCRIPTION_SIZE]; ++} PHYSICAL_MONITOR, *LPPHYSICAL_MONITOR; +\ No newline at end of file +-- +1.7.9.5 + diff --git a/patches/11-DXVA2/0003-include-Add-LowLevelMonitorConfigurationAPI.h.patch b/patches/11-DXVA2/0003-include-Add-LowLevelMonitorConfigurationAPI.h.patch new file mode 100644 index 00000000..c45c6411 --- /dev/null +++ b/patches/11-DXVA2/0003-include-Add-LowLevelMonitorConfigurationAPI.h.patch @@ -0,0 +1,62 @@ +From 1e3a30b0fac3c5a9d8283f404334ade4e4f44104 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Wed, 26 Mar 2014 05:24:03 +0100 +Subject: include: Add LowLevelMonitorConfigurationAPI.h + +--- + include/LowLevelMonitorConfigurationAPI.h | 30 +++++++++++++++++++++++++++++ + include/Makefile.in | 1 + + 2 files changed, 31 insertions(+) + create mode 100644 include/LowLevelMonitorConfigurationAPI.h + +diff --git a/include/LowLevelMonitorConfigurationAPI.h b/include/LowLevelMonitorConfigurationAPI.h +new file mode 100644 +index 0000000..dda1174 +--- /dev/null ++++ b/include/LowLevelMonitorConfigurationAPI.h +@@ -0,0 +1,30 @@ ++/* ++ * Copyright Michael Müller for Pipelight ++ * ++ * 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 ++ */ ++ ++typedef struct _MC_TIMING_REPORT ++{ ++ BYTE bTimingStatusByte; ++ DWORD dwHorizontalFrequencyInHZ; ++ DWORD dwVerticalFrequencyInHZ; ++} MC_TIMING_REPORT, *LPMC_TIMING_REPORT; ++ ++typedef enum _MC_VCP_CODE_TYPE ++{ ++ MC_MOMENTARY, ++ MC_SET_PARAMETER ++} MC_VCP_CODE_TYPE, *LPMC_VCP_CODE_TYPE; +diff --git a/include/Makefile.in b/include/Makefile.in +index fd4f7c1..ce30aa6 100644 +--- a/include/Makefile.in ++++ b/include/Makefile.in +@@ -373,6 +373,7 @@ SRCDIR_INCLUDES = \ + lmuseflg.h \ + lmwksta.h \ + loadperf.h \ ++ LowLevelMonitorConfigurationAPI.h \ + lzexpand.h \ + mapi.h \ + mapicode.h \ +-- +1.7.9.5 + diff --git a/patches/11-DXVA2/0004-include-Add-HighLevelMonitorConfigurationAPI.h.patch b/patches/11-DXVA2/0004-include-Add-HighLevelMonitorConfigurationAPI.h.patch new file mode 100644 index 00000000..4e829c39 --- /dev/null +++ b/patches/11-DXVA2/0004-include-Add-HighLevelMonitorConfigurationAPI.h.patch @@ -0,0 +1,101 @@ +From 505fa26a6bf60858f35c45982fefcba41cd27d5a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Wed, 26 Mar 2014 05:26:25 +0100 +Subject: include: Add HighLevelMonitorConfigurationAPI.h + +--- + include/HighLevelMonitorConfigurationAPI.h | 69 ++++++++++++++++++++++++++++ + include/Makefile.in | 1 + + 2 files changed, 70 insertions(+) + create mode 100644 include/HighLevelMonitorConfigurationAPI.h + +diff --git a/include/HighLevelMonitorConfigurationAPI.h b/include/HighLevelMonitorConfigurationAPI.h +new file mode 100644 +index 0000000..edcc1d2 +--- /dev/null ++++ b/include/HighLevelMonitorConfigurationAPI.h +@@ -0,0 +1,69 @@ ++/* ++ * Copyright Michael Müller for Pipelight ++ * ++ * 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 ++ */ ++ ++typedef enum _MC_COLOR_TEMPERATURE ++{ ++ MC_COLOR_TEMPERATURE_UNKNOWN, ++ MC_COLOR_TEMPERATURE_4000K, ++ MC_COLOR_TEMPERATURE_5000K, ++ MC_COLOR_TEMPERATURE_6500K, ++ MC_COLOR_TEMPERATURE_7500K, ++ MC_COLOR_TEMPERATURE_8200K, ++ MC_COLOR_TEMPERATURE_9300K, ++ MC_COLOR_TEMPERATURE_10000K, ++ MC_COLOR_TEMPERATURE_11500K ++} MC_COLOR_TEMPERATURE, *LPMC_COLOR_TEMPERATURE; ++ ++typedef enum _MC_POSITION_TYPE ++{ ++ MC_HORIZONTAL_POSITION = 0, ++ MC_VERTICAL_POSITION = 1 ++} MC_POSITION_TYPE; ++ ++typedef enum _MC_SIZE_TYPE ++{ ++ MC_WIDTH = 0, ++ MC_HEIGHT = 1 ++} MC_SIZE_TYPE; ++ ++typedef enum _MC_DRIVE_TYPE ++{ ++ MC_RED_DRIVE = 0, ++ MC_GREEN_DRIVE = 1, ++ MC_BLUE_DRIVE = 2 ++} MC_DRIVE_TYPE; ++ ++typedef enum _MC_GAIN_TYPE ++{ ++ MC_RED_GAIN = 0, ++ MC_GREEN_GAIN = 1, ++ MC_BLUE_GAIN = 2 ++} MC_GAIN_TYPE; ++ ++typedef enum _MC_DISPLAY_TECHNOLOGY_TYPE ++{ ++ MC_SHADOW_MASK_CATHODE_RAY_TUBE, ++ MC_APERTURE_GRILL_CATHODE_RAY_TUBE, ++ MC_THIN_FILM_TRANSISTOR, ++ MC_LIQUID_CRYSTAL_ON_SILICON, ++ MC_PLASMA, ++ MC_ORGANIC_LIGHT_EMITTING_DIODE, ++ MC_ELECTROLUMINESCENT, ++ MC_MICROELECTROMECHANICAL, ++ MC_FIELD_EMISSION_DEVICE ++} MC_DISPLAY_TECHNOLOGY_TYPE, *LPMC_DISPLAY_TECHNOLOGY_TYPE; +diff --git a/include/Makefile.in b/include/Makefile.in +index ce30aa6..da8e75d 100644 +--- a/include/Makefile.in ++++ b/include/Makefile.in +@@ -330,6 +330,7 @@ SRCDIR_INCLUDES = \ + gdipluspixelformats.h \ + gdiplustypes.h \ + guiddef.h \ ++ HighLevelMonitorConfigurationAPI.h \ + hlguids.h \ + htmlhelp.h \ + http.h \ +-- +1.7.9.5 + diff --git a/patches/11-DXVA2/0005-dxva2-Add-implementation-for-stub-functions.patch b/patches/11-DXVA2/0005-dxva2-Add-implementation-for-stub-functions.patch new file mode 100644 index 00000000..d03c8142 --- /dev/null +++ b/patches/11-DXVA2/0005-dxva2-Add-implementation-for-stub-functions.patch @@ -0,0 +1,400 @@ +From 1c3379da1c8615f03acce7c441b3d511245212eb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Wed, 26 Mar 2014 05:32:36 +0100 +Subject: dxva2: Add implementation for stub functions + +--- + dlls/dxva2/dxva2.spec | 72 ++++++------ + dlls/dxva2/main.c | 295 +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 331 insertions(+), 36 deletions(-) + +diff --git a/dlls/dxva2/dxva2.spec b/dlls/dxva2/dxva2.spec +index da94df3..024a972 100644 +--- a/dlls/dxva2/dxva2.spec ++++ b/dlls/dxva2/dxva2.spec +@@ -1,37 +1,37 @@ +-@ stub CapabilitiesRequestAndCapabilitiesReply +-@ stub DXVA2CreateDirect3DDeviceManager9 +-@ stub DXVA2CreateVideoService +-@ stub DegaussMonitor +-@ stub DestroyPhysicalMonitor +-@ stub DestroyPhysicalMonitors +-@ stub GetCapabilitiesStringLength +-@ stub GetMonitorBrightness +-@ stub GetMonitorCapabilities +-@ stub GetMonitorColorTemperature +-@ stub GetMonitorContrast +-@ stub GetMonitorDisplayAreaPosition +-@ stub GetMonitorDisplayAreaSize +-@ stub GetMonitorRedGreenOrBlueDrive +-@ stub GetMonitorRedGreenOrBlueGain +-@ stub GetMonitorTechnologyType +-@ stub GetNumberOfPhysicalMonitorsFromHMONITOR +-@ stub GetNumberOfPhysicalMonitorsFromIDirect3DDevice9 +-@ stub GetPhysicalMonitorsFromHMONITOR +-@ stub GetPhysicalMonitorsFromIDirect3DDevice9 +-@ stub GetTimingReport +-@ stub GetVCPFeatureAndVCPFeatureReply +-@ stub OPMGetVideoOutputsFromHMONITOR +-@ stub OPMGetVideoOutputsFromIDirect3DDevice9Object +-@ stub RestoreMonitorFactoryColorDefaults +-@ stub RestoreMonitorFactoryDefaults +-@ stub SaveCurrentMonitorSettings +-@ stub SaveCurrentSettings +-@ stub SetMonitorBrightness +-@ stub SetMonitorColorTemperature +-@ stub SetMonitorContrast +-@ stub SetMonitorDisplayAreaPosition +-@ stub SetMonitorDisplayAreaSize +-@ stub SetMonitorRedGreenOrBlueDrive +-@ stub SetMonitorRedGreenOrBlueGain +-@ stub SetVCPFeature ++@ stdcall CapabilitiesRequestAndCapabilitiesReply(ptr ptr long) ++@ stdcall DXVA2CreateDirect3DDeviceManager9(ptr ptr) ++@ stdcall DXVA2CreateVideoService(ptr ptr ptr) ++@ stdcall DegaussMonitor(ptr) ++@ stdcall DestroyPhysicalMonitor(ptr) ++@ stdcall DestroyPhysicalMonitors(long ptr) ++@ stdcall GetCapabilitiesStringLength(ptr ptr) ++@ stdcall GetMonitorBrightness(ptr ptr ptr ptr) ++@ stdcall GetMonitorCapabilities(ptr ptr ptr) ++@ stdcall GetMonitorColorTemperature(ptr ptr) ++@ stdcall GetMonitorContrast(ptr ptr ptr ptr) ++@ stdcall GetMonitorDisplayAreaPosition(ptr long ptr ptr ptr) ++@ stdcall GetMonitorDisplayAreaSize(ptr long ptr ptr ptr) ++@ stdcall GetMonitorRedGreenOrBlueDrive(ptr long ptr ptr ptr) ++@ stdcall GetMonitorRedGreenOrBlueGain(ptr long ptr ptr ptr) ++@ stdcall GetMonitorTechnologyType(ptr ptr) ++@ stdcall GetNumberOfPhysicalMonitorsFromHMONITOR(ptr ptr) ++@ stdcall GetNumberOfPhysicalMonitorsFromIDirect3DDevice9(ptr ptr) ++@ stdcall GetPhysicalMonitorsFromHMONITOR(ptr long ptr) ++@ stdcall GetPhysicalMonitorsFromIDirect3DDevice9(ptr long ptr) ++@ stdcall GetTimingReport(ptr ptr) ++@ stdcall GetVCPFeatureAndVCPFeatureReply(ptr long ptr ptr ptr) ++@ stdcall OPMGetVideoOutputsFromHMONITOR(ptr long ptr ptr) ++@ stdcall OPMGetVideoOutputsFromIDirect3DDevice9Object(ptr long ptr ptr) ++@ stdcall RestoreMonitorFactoryColorDefaults(ptr) ++@ stdcall RestoreMonitorFactoryDefaults(ptr) ++@ stdcall SaveCurrentMonitorSettings(ptr) ++@ stdcall SaveCurrentSettings(ptr) ++@ stdcall SetMonitorBrightness(ptr long) ++@ stdcall SetMonitorColorTemperature(ptr long) ++@ stdcall SetMonitorContrast(ptr long) ++@ stdcall SetMonitorDisplayAreaPosition(ptr long long) ++@ stdcall SetMonitorDisplayAreaSize(ptr long long) ++@ stdcall SetMonitorRedGreenOrBlueDrive(ptr long long) ++@ stdcall SetMonitorRedGreenOrBlueGain(ptr long long) ++@ stdcall SetVCPFeature(ptr long long) + @ stub UABGetCertificate +diff --git a/dlls/dxva2/main.c b/dlls/dxva2/main.c +index d16320f..f22e5d1 100644 +--- a/dlls/dxva2/main.c ++++ b/dlls/dxva2/main.c +@@ -21,9 +21,304 @@ + #include "winbase.h" + + #include "wine/debug.h" ++#include "dxva2api.h" ++#include "PhysicalMonitorEnumerationAPI.h" ++#include "LowLevelMonitorConfigurationAPI.h" ++#include "HighLevelMonitorConfigurationAPI.h" + + WINE_DEFAULT_DEBUG_CHANNEL(dxva2); + ++BOOL WINAPI CapabilitiesRequestAndCapabilitiesReply( HMONITOR monitor, LPSTR buffer, DWORD length ) ++{ ++ FIXME("(%p, %p, %d): stub\n", monitor, buffer, length); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++HRESULT WINAPI DXVA2CreateDirect3DDeviceManager9( UINT *resetToken, IDirect3DDeviceManager9 **dxvManager ) ++{ ++ FIXME("(%p, %p): stub\n", resetToken, dxvManager); ++ ++ return E_NOTIMPL; ++} ++ ++HRESULT WINAPI DXVA2CreateVideoService( IDirect3DDevice9 *device, REFIID riid, void **ppv ) ++{ ++ FIXME("(%p, %s, %p): stub\n", device, debugstr_guid(riid), ppv); ++ ++ return E_NOTIMPL; ++} ++ ++BOOL WINAPI DegaussMonitor( HMONITOR monitor ) ++{ ++ FIXME("(%p): stub\n", monitor); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI DestroyPhysicalMonitor( HMONITOR monitor ) ++{ ++ FIXME("(%p): stub\n", monitor); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI DestroyPhysicalMonitors( DWORD arraySize, LPPHYSICAL_MONITOR array ) ++{ ++ FIXME("(0x%x, %p): stub\n", arraySize, array); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI GetCapabilitiesStringLength( HMONITOR monitor, LPDWORD length ) ++{ ++ FIXME("(%p, %p): stub\n", monitor, length); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI GetMonitorBrightness( HMONITOR monitor, LPDWORD minimum, LPDWORD current, LPDWORD maximum ) ++{ ++ FIXME("(%p, %p, %p, %p): stub\n", monitor, minimum, current, maximum); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI GetMonitorCapabilities( HMONITOR monitor, LPDWORD capabilities, LPDWORD temperatures ) ++{ ++ FIXME("(%p, %p, %p): stub\n", monitor, capabilities, temperatures); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++ ++BOOL WINAPI GetMonitorColorTemperature( HMONITOR monitor, LPMC_COLOR_TEMPERATURE temperature ) ++{ ++ FIXME("(%p, %p): stub\n", monitor, temperature); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI GetMonitorContrast( HMONITOR monitor, LPDWORD minimum, LPDWORD current, LPDWORD maximum ) ++{ ++ FIXME("(%p, %p, %p, %p): stub\n", monitor, minimum, current, maximum); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI GetMonitorDisplayAreaPosition( HMONITOR monitor, MC_POSITION_TYPE type, LPDWORD minimum, ++ LPDWORD current, LPDWORD maximum ) ++{ ++ FIXME("(%p, 0x%x, %p, %p, %p): stub\n", monitor, type, minimum, current, maximum); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI GetMonitorDisplayAreaSize( HMONITOR monitor, MC_SIZE_TYPE type, LPDWORD minimum, ++ LPDWORD current, LPDWORD maximum ) ++{ ++ FIXME("(%p, 0x%x, %p, %p, %p): stub\n", monitor, type, minimum, current, maximum); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI GetMonitorRedGreenOrBlueDrive( HMONITOR monitor, MC_DRIVE_TYPE type, LPDWORD minimum, ++ LPDWORD current, LPDWORD maximum ) ++{ ++ FIXME("(%p, 0x%x, %p, %p, %p): stub\n", monitor, type, minimum, current, maximum); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI GetMonitorRedGreenOrBlueGain( HMONITOR monitor, MC_GAIN_TYPE type, LPDWORD minimum, ++ LPDWORD current, LPDWORD maximum ) ++{ ++ FIXME("(%p, 0x%x, %p, %p, %p): stub\n", monitor, type, minimum, current, maximum); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI GetMonitorTechnologyType( HMONITOR monitor, LPMC_DISPLAY_TECHNOLOGY_TYPE type ) ++{ ++ FIXME("(%p, %p): stub\n", monitor, type); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI GetNumberOfPhysicalMonitorsFromHMONITOR( HMONITOR monitor, LPDWORD number ) ++{ ++ FIXME("(%p, %p): stub\n", monitor, number); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++HRESULT WINAPI GetNumberOfPhysicalMonitorsFromIDirect3DDevice9( IDirect3DDevice9 *device, LPDWORD number ) ++{ ++ FIXME("(%p, %p): stub\n", device, number); ++ ++ return E_NOTIMPL; ++} ++ ++BOOL WINAPI GetPhysicalMonitorsFromHMONITOR( HMONITOR monitor, DWORD arraySize, LPPHYSICAL_MONITOR array ) ++{ ++ FIXME("(%p, 0x%x, %p): stub\n", monitor, arraySize, array); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++HRESULT WINAPI GetPhysicalMonitorsFromIDirect3DDevice9( IDirect3DDevice9 *device, DWORD arraySize, LPPHYSICAL_MONITOR array ) ++{ ++ FIXME("(%p, 0x%x, %p): stub\n", device, arraySize, array); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI GetTimingReport( HMONITOR monitor, LPMC_TIMING_REPORT timingReport ) ++{ ++ FIXME("(%p, %p): stub\n", monitor, timingReport); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI GetVCPFeatureAndVCPFeatureReply( HMONITOR monitor, BYTE vcpCode, LPMC_VCP_CODE_TYPE pvct, ++ LPDWORD current, LPDWORD maximum ) ++{ ++ FIXME("(%p, 0x%02x, %p, %p, %p): stub\n", monitor, vcpCode, pvct, current, maximum); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++HRESULT WINAPI OPMGetVideoOutputsFromHMONITOR( HMONITOR monitor, /* OPM_VIDEO_OUTPUT_SEMANTICS */ int vos, ++ ULONG *numVideoOutputs, /* IOPMVideoOutput */ void ***videoOutputs ) ++{ ++ FIXME("(%p, 0x%x, %p, %p): stub\n", monitor, vos, numVideoOutputs, videoOutputs); ++ ++ return E_NOTIMPL; ++} ++ ++HRESULT WINAPI OPMGetVideoOutputsFromIDirect3DDevice9Object( IDirect3DDevice9 *device, /* OPM_VIDEO_OUTPUT_SEMANTICS */ int vos, ++ ULONG *numVideoOutputs, /* IOPMVideoOutput */ void ***videoOutputs ) ++{ ++ FIXME("(%p, 0x%x, %p, %p): stub\n", device, vos, numVideoOutputs, videoOutputs); ++ ++ return E_NOTIMPL; ++} ++ ++BOOL WINAPI RestoreMonitorFactoryColorDefaults( HMONITOR monitor ) ++{ ++ FIXME("(%p): stub\n", monitor); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI RestoreMonitorFactoryDefaults( HMONITOR monitor ) ++{ ++ FIXME("(%p): stub\n", monitor); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI SaveCurrentMonitorSettings( HMONITOR monitor ) ++{ ++ FIXME("(%p): stub\n", monitor); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI SaveCurrentSettings( HMONITOR monitor ) ++{ ++ FIXME("(%p): stub\n", monitor); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI SetMonitorBrightness( HMONITOR monitor, DWORD brightness ) ++{ ++ FIXME("(%p, 0x%x): stub\n", monitor, brightness); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI SetMonitorColorTemperature( HMONITOR monitor, MC_COLOR_TEMPERATURE temperature ) ++{ ++ FIXME("(%p, 0x%x): stub\n", monitor, temperature); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI SetMonitorContrast( HMONITOR monitor, DWORD contrast ) ++{ ++ FIXME("(%p, 0x%x): stub\n", monitor, contrast); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI SetMonitorDisplayAreaPosition( HMONITOR monitor, MC_POSITION_TYPE type, DWORD position ) ++{ ++ FIXME("(%p, 0x%x, 0x%x): stub\n", monitor, type, position); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI SetMonitorDisplayAreaSize( HMONITOR monitor, MC_SIZE_TYPE type, DWORD size ) ++{ ++ FIXME("(%p, 0x%x, 0x%x): stub\n", monitor, type, size); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI SetMonitorRedGreenOrBlueDrive( HMONITOR monitor, MC_DRIVE_TYPE type, DWORD drive ) ++{ ++ FIXME("(%p, 0x%x, 0x%x): stub\n", monitor, type, drive); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI SetMonitorRedGreenOrBlueGain( HMONITOR monitor, MC_GAIN_TYPE type, DWORD gain ) ++{ ++ FIXME("(%p, 0x%x, 0x%x): stub\n", monitor, type, gain); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++BOOL WINAPI SetVCPFeature( HMONITOR monitor, BYTE vcpCode, DWORD value ) ++{ ++ FIXME("(%p, 0x%02x, 0x%x): stub\n", monitor, vcpCode, value); ++ ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ + BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) + { + TRACE("%p,%x,%p\n", hinstDLL, fdwReason, lpvReserved); +-- +1.7.9.5 + diff --git a/patches/11-DXVA2/0006-dxva2-Implement-stubs-for-IDirectXVideo-Acceleration.patch b/patches/11-DXVA2/0006-dxva2-Implement-stubs-for-IDirectXVideo-Acceleration.patch new file mode 100644 index 00000000..6fe29f98 --- /dev/null +++ b/patches/11-DXVA2/0006-dxva2-Implement-stubs-for-IDirectXVideo-Acceleration.patch @@ -0,0 +1,537 @@ +From a2ecf8ef503fea27bc72a6d0e690d43a5c44be54 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Wed, 26 Mar 2014 22:23:52 +0100 +Subject: dxva2: Implement stubs for IDirectXVideo{Acceleration, Decoder, + Processor}Service interfaces + +--- + dlls/dxva2/Makefile.in | 4 +- + dlls/dxva2/dxva2_private.h | 3 + + dlls/dxva2/main.c | 5 +- + dlls/dxva2/videoservices.c | 467 ++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 476 insertions(+), 3 deletions(-) + create mode 100644 dlls/dxva2/dxva2_private.h + create mode 100644 dlls/dxva2/videoservices.c + +diff --git a/dlls/dxva2/Makefile.in b/dlls/dxva2/Makefile.in +index 7b9ef6f..4b4d24f 100644 +--- a/dlls/dxva2/Makefile.in ++++ b/dlls/dxva2/Makefile.in +@@ -1,4 +1,6 @@ + MODULE = dxva2.dll ++IMPORTS = ole32 + + C_SRCS = \ +- main.c ++ main.c \ ++ videoservices.c +diff --git a/dlls/dxva2/dxva2_private.h b/dlls/dxva2/dxva2_private.h +new file mode 100644 +index 0000000..55e84c2 +--- /dev/null ++++ b/dlls/dxva2/dxva2_private.h +@@ -0,0 +1,3 @@ ++#include "dxva2api.h" ++ ++HRESULT videoservices_create( IDirect3DDevice9 *device, REFIID riid, void **ppv ); +\ No newline at end of file +diff --git a/dlls/dxva2/main.c b/dlls/dxva2/main.c +index f22e5d1..7d23d1f 100644 +--- a/dlls/dxva2/main.c ++++ b/dlls/dxva2/main.c +@@ -22,6 +22,7 @@ + + #include "wine/debug.h" + #include "dxva2api.h" ++#include "dxva2_private.h" + #include "PhysicalMonitorEnumerationAPI.h" + #include "LowLevelMonitorConfigurationAPI.h" + #include "HighLevelMonitorConfigurationAPI.h" +@@ -45,9 +46,9 @@ HRESULT WINAPI DXVA2CreateDirect3DDeviceManager9( UINT *resetToken, IDirect3DDev + + HRESULT WINAPI DXVA2CreateVideoService( IDirect3DDevice9 *device, REFIID riid, void **ppv ) + { +- FIXME("(%p, %s, %p): stub\n", device, debugstr_guid(riid), ppv); ++ TRACE("(%p, %s, %p)\n", device, debugstr_guid(riid), ppv); + +- return E_NOTIMPL; ++ return videoservices_create( device, riid, ppv ); + } + + BOOL WINAPI DegaussMonitor( HMONITOR monitor ) +diff --git a/dlls/dxva2/videoservices.c b/dlls/dxva2/videoservices.c +new file mode 100644 +index 0000000..0374260 +--- /dev/null ++++ b/dlls/dxva2/videoservices.c +@@ -0,0 +1,467 @@ ++/* ++ * Copyright 2014 Michael Müller for Pipelight ++ * ++ * 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 ++ */ ++ ++#define COBJMACROS ++#define INITGUID ++ ++#include ++#include "windef.h" ++#include "winbase.h" ++ ++#include "wine/debug.h" ++#include "dxva2api.h" ++#include "dxva2_private.h" ++#include "PhysicalMonitorEnumerationAPI.h" ++#include "LowLevelMonitorConfigurationAPI.h" ++#include "HighLevelMonitorConfigurationAPI.h" ++ ++WINE_DEFAULT_DEBUG_CHANNEL(dxva2); ++ ++/***************************************************************************** ++ * IDirectXVideoAccelerationService interface ++ */ ++ ++typedef struct ++{ ++ const IDirectXVideoAccelerationServiceVtbl* lpVtbl; ++ LONG refCount; ++} DirectXVideoAccelerationServiceImpl; ++ ++static inline DirectXVideoAccelerationServiceImpl *impl_from_IDirectXVideoAccelerationService( IDirectXVideoAccelerationService *iface ) ++{ ++ return (DirectXVideoAccelerationServiceImpl *)iface; ++} ++ ++static HRESULT WINAPI DirectXVideoAccelerationService_QueryInterface( IDirectXVideoAccelerationService *iface, REFIID riid, LPVOID *ppv ) ++{ ++ DirectXVideoAccelerationServiceImpl *This = impl_from_IDirectXVideoAccelerationService(iface); ++ TRACE("(%p/%p)->(%s, %p)\n", iface, This, debugstr_guid(riid), ppv); ++ ++ *ppv = NULL; ++ ++ if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IDirectXVideoAccelerationService)) ++ *ppv = (LPVOID)iface; ++ ++ if (*ppv) ++ { ++ IUnknown_AddRef((IUnknown *)(*ppv)); ++ return S_OK; ++ } ++ ++ FIXME("No interface for %s\n", debugstr_guid(riid)); ++ return E_NOINTERFACE; ++} ++ ++static ULONG WINAPI DirectXVideoAccelerationService_AddRef( IDirectXVideoAccelerationService *iface ) ++{ ++ DirectXVideoAccelerationServiceImpl *This = impl_from_IDirectXVideoAccelerationService(iface); ++ ULONG refCount = InterlockedIncrement(&This->refCount); ++ ++ TRACE("(%p)->() AddRef from %d\n", This, refCount - 1); ++ ++ return refCount; ++} ++ ++static ULONG WINAPI DirectXVideoAccelerationService_Release( IDirectXVideoAccelerationService *iface ) ++{ ++ DirectXVideoAccelerationServiceImpl *This = impl_from_IDirectXVideoAccelerationService(iface); ++ ULONG refCount = InterlockedDecrement(&This->refCount); ++ ++ TRACE("(%p)->() Release from %d\n", This, refCount + 1); ++ ++ if (!refCount) ++ { ++ TRACE("Destroying\n"); ++ CoTaskMemFree(This); ++ } ++ ++ return refCount; ++} ++ ++static HRESULT WINAPI DirectXVideoAccelerationService_CreateSurface( IDirectXVideoAccelerationService *iface, UINT width, UINT height, ++ UINT backBuffers, D3DFORMAT format, D3DPOOL pool, DWORD usage, ++ DWORD dxvaType, IDirect3DSurface9 **ppSurface, HANDLE *pSharedHandle ) ++{ ++ DirectXVideoAccelerationServiceImpl *This = impl_from_IDirectXVideoAccelerationService(iface); ++ ++ FIXME("(%p)->(%u, %u, %u, %#x, 0x%x, 0x%x, 0x%x, %p, %p): stub\n", ++ This, width, height, backBuffers, format, pool, usage, dxvaType, ppSurface, pSharedHandle); ++ ++ return E_NOTIMPL; ++} ++ ++static const IDirectXVideoAccelerationServiceVtbl DirectXVideoAccelerationService_VTable = ++{ ++ DirectXVideoAccelerationService_QueryInterface, ++ DirectXVideoAccelerationService_AddRef, ++ DirectXVideoAccelerationService_Release, ++ DirectXVideoAccelerationService_CreateSurface ++}; ++ ++ ++/***************************************************************************** ++ * IDirectXVideoDecoderService interface ++ */ ++ ++typedef struct ++{ ++ const IDirectXVideoDecoderServiceVtbl* lpVtbl; ++ LONG refCount; ++} DirectXVideoDecoderServiceImpl; ++ ++static inline DirectXVideoDecoderServiceImpl *impl_from_IDirectXVideoDecoderService( IDirectXVideoDecoderService *iface ) ++{ ++ return (DirectXVideoDecoderServiceImpl *)iface; ++} ++ ++static HRESULT WINAPI DirectXVideoDecoderService_QueryInterface( IDirectXVideoDecoderService *iface, REFIID riid, LPVOID * ppv ) ++{ ++ DirectXVideoDecoderServiceImpl *This = impl_from_IDirectXVideoDecoderService(iface); ++ TRACE("(%p/%p)->(%s, %p)\n", iface, This, debugstr_guid(riid), ppv); ++ ++ *ppv = NULL; ++ ++ if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IDirectXVideoDecoderService)) ++ *ppv = (LPVOID)iface; ++ ++ if (*ppv) ++ { ++ IUnknown_AddRef((IUnknown *)(*ppv)); ++ return S_OK; ++ } ++ ++ FIXME("No interface for %s\n", debugstr_guid(riid)); ++ return E_NOINTERFACE; ++} ++ ++static ULONG WINAPI DirectXVideoDecoderService_AddRef( IDirectXVideoDecoderService *iface ) ++{ ++ DirectXVideoDecoderServiceImpl *This = impl_from_IDirectXVideoDecoderService(iface); ++ ULONG refCount = InterlockedIncrement(&This->refCount); ++ ++ TRACE("(%p)->() AddRef from %d\n", This, refCount - 1); ++ ++ return refCount; ++} ++ ++static ULONG WINAPI DirectXVideoDecoderService_Release( IDirectXVideoDecoderService *iface ) ++{ ++ DirectXVideoDecoderServiceImpl *This = impl_from_IDirectXVideoDecoderService(iface); ++ ULONG refCount = InterlockedDecrement(&This->refCount); ++ ++ TRACE("(%p)->() Release from %d\n", This, refCount + 1); ++ ++ if (!refCount) ++ { ++ TRACE("Destroying\n"); ++ CoTaskMemFree(This); ++ } ++ ++ return refCount; ++} ++ ++static HRESULT WINAPI DirectXVideoDecoderService_CreateSurface( IDirectXVideoDecoderService *iface, UINT width, UINT height, ++ UINT backBuffers, D3DFORMAT format, D3DPOOL pool, DWORD usage, ++ DWORD dxvaType, IDirect3DSurface9 **ppSurface, HANDLE *pSharedHandle ) ++{ ++ DirectXVideoDecoderServiceImpl *This = impl_from_IDirectXVideoDecoderService(iface); ++ ++ FIXME("(%p)->(%u, %u, %u, %#x, 0x%x, 0x%x, 0x%x, %p, %p): stub\n", ++ This, width, height, backBuffers, format, pool, usage, dxvaType, ppSurface, pSharedHandle ); ++ ++ return E_NOTIMPL; ++} ++ ++static HRESULT WINAPI DirectXVideoDecoderService_CreateVideoDecoder( IDirectXVideoDecoderService *iface, REFGUID guid, const DXVA2_VideoDesc *pVideoDesc, ++ DXVA2_ConfigPictureDecode *pConfig, IDirect3DSurface9 **ppDecoderRenderTargets, ++ UINT NumSurfaces, IDirectXVideoDecoder **ppDecode ) ++{ ++ DirectXVideoDecoderServiceImpl *This = impl_from_IDirectXVideoDecoderService(iface); ++ ++ FIXME("(%p)->(%s, %p, %p, %p, %u, %p): stub\n", This, debugstr_guid(guid), pVideoDesc, pConfig, ppDecoderRenderTargets, NumSurfaces, ppDecode); ++ ++ return E_NOTIMPL; ++} ++ ++static HRESULT WINAPI DirectXVideoDecoderService_GetDecoderConfigurations( IDirectXVideoDecoderService *iface, REFGUID guid, const DXVA2_VideoDesc *pVideoDesc, ++ IUnknown *pReserved, UINT *pCount, DXVA2_ConfigPictureDecode **ppConfigs ) ++{ ++ DirectXVideoDecoderServiceImpl *This = impl_from_IDirectXVideoDecoderService(iface); ++ ++ FIXME("(%p)->(%s, %p, %p, %p, %p): stub\n", This, debugstr_guid(guid), pVideoDesc, pReserved, pCount, ppConfigs); ++ ++ return E_NOTIMPL; ++} ++ ++static HRESULT WINAPI DirectXVideoDecoderService_GetDecoderDeviceGuids( IDirectXVideoDecoderService *iface, UINT *count, GUID **pGuids ) ++{ ++ DirectXVideoDecoderServiceImpl *This = impl_from_IDirectXVideoDecoderService(iface); ++ ++ FIXME("(%p)->(%p, %p): stub\n", This, count, pGuids); ++ ++ return E_NOTIMPL; ++} ++ ++static HRESULT WINAPI DirectXVideoDecoderService_GetDecoderRenderTargets( IDirectXVideoDecoderService *iface, REFGUID guid, UINT *pCount, D3DFORMAT **pFormats) ++{ ++ DirectXVideoDecoderServiceImpl *This = impl_from_IDirectXVideoDecoderService(iface); ++ ++ FIXME("(%p)->(%s, %p, %p): stub\n", This, debugstr_guid(guid), pCount, pFormats); ++ ++ return E_NOTIMPL; ++} ++ ++static const IDirectXVideoDecoderServiceVtbl DirectXVideoDecoderService_VTable = ++{ ++ DirectXVideoDecoderService_QueryInterface, ++ DirectXVideoDecoderService_AddRef, ++ DirectXVideoDecoderService_Release, ++ DirectXVideoDecoderService_CreateSurface, ++ DirectXVideoDecoderService_CreateVideoDecoder, ++ DirectXVideoDecoderService_GetDecoderConfigurations, ++ DirectXVideoDecoderService_GetDecoderDeviceGuids, ++ DirectXVideoDecoderService_GetDecoderRenderTargets ++}; ++ ++/***************************************************************************** ++ * IDirectXVideoProcessorService interface ++ */ ++ ++typedef struct ++{ ++ const IDirectXVideoProcessorServiceVtbl* lpVtbl; ++ LONG refCount; ++} DirectXVideoProcessorServiceImpl; ++ ++static inline DirectXVideoProcessorServiceImpl *impl_from_IDirectXVideoProcessorService( IDirectXVideoProcessorService *iface ) ++{ ++ return (DirectXVideoProcessorServiceImpl *)iface; ++} ++ ++static HRESULT WINAPI DirectXVideoProcessorService_QueryInterface( IDirectXVideoProcessorService *iface, REFIID riid, LPVOID * ppv ) ++{ ++ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface); ++ TRACE("(%p/%p)->(%s, %p)\n", iface, This, debugstr_guid(riid), ppv); ++ ++ *ppv = NULL; ++ ++ if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IDirectXVideoProcessorService)) ++ *ppv = (LPVOID)iface; ++ ++ if (*ppv) ++ { ++ IUnknown_AddRef((IUnknown *)(*ppv)); ++ return S_OK; ++ } ++ ++ FIXME("No interface for %s\n", debugstr_guid(riid)); ++ return E_NOINTERFACE; ++} ++ ++static ULONG WINAPI DirectXVideoProcessorService_AddRef( IDirectXVideoProcessorService *iface ) ++{ ++ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface); ++ ULONG refCount = InterlockedIncrement(&This->refCount); ++ ++ TRACE("(%p)->() AddRef from %d\n", This, refCount - 1); ++ ++ return refCount; ++} ++ ++static ULONG WINAPI DirectXVideoProcessorService_Release( IDirectXVideoProcessorService *iface ) ++{ ++ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface); ++ ULONG refCount = InterlockedDecrement(&This->refCount); ++ ++ TRACE("(%p)->() Release from %d\n", This, refCount + 1); ++ ++ if (!refCount) ++ { ++ TRACE("Destroying\n"); ++ CoTaskMemFree(This); ++ } ++ ++ return refCount; ++} ++ ++static HRESULT WINAPI DirectXVideoProcessorService_CreateSurface( IDirectXVideoProcessorService *iface, UINT width, UINT height, ++ UINT backBuffers, D3DFORMAT format, D3DPOOL pool, DWORD usage, ++ DWORD dxvaType, IDirect3DSurface9 **ppSurface, HANDLE *pSharedHandle ) ++{ ++ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface); ++ ++ FIXME("(%p)->(%u, %u, %u, %#x, 0x%x, 0x%x, 0x%x, %p, %p): stub\n", ++ This, width, height, backBuffers, format, pool, usage, dxvaType, ppSurface, pSharedHandle ); ++ ++ return E_NOTIMPL; ++} ++ ++static HRESULT WINAPI DirectXVideoProcessorService_RegisterVideoProcessorSoftwareDevice( IDirectXVideoProcessorService *iface, void* pCallbacks) ++{ ++ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface); ++ ++ FIXME("(%p)->(%p): stub\n", This, pCallbacks ); ++ ++ return E_NOTIMPL; ++} ++ ++static HRESULT WINAPI DirectXVideoProcessorService_GetVideoProcessorDeviceGuids( IDirectXVideoProcessorService *iface, const DXVA2_VideoDesc* pVideoDesc, ++ UINT* pCount, GUID** pGuids ) ++{ ++ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface); ++ ++ FIXME("(%p)->(%p, %p, %p): stub\n", This, pVideoDesc, pCount, pGuids ); ++ ++ return E_NOTIMPL; ++} ++ ++static HRESULT WINAPI DirectXVideoProcessorService_GetVideoProcessorRenderTargets( IDirectXVideoProcessorService *iface, REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc* pVideoDesc, UINT* pCount, D3DFORMAT** pFormats ) ++{ ++ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface); ++ ++ FIXME("(%p)->(%s, %p, %p, %p): stub\n", ++ This, debugstr_guid(VideoProcDeviceGuid), pVideoDesc, pCount, pFormats ); ++ ++ return E_NOTIMPL; ++} ++ ++static HRESULT WINAPI DirectXVideoProcessorService_GetVideoProcessorSubStreamFormats( IDirectXVideoProcessorService *iface, REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc* pVideoDesc, D3DFORMAT RenderTargetFormat, UINT* pCount, ++ D3DFORMAT** pFormats ) ++{ ++ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface); ++ ++ FIXME("(%p)->(%s, %p, %#x, %p, %p): stub\n", This, debugstr_guid(VideoProcDeviceGuid), pVideoDesc, RenderTargetFormat, pCount, pFormats ); ++ ++ return E_NOTIMPL; ++} ++ ++static HRESULT WINAPI DirectXVideoProcessorService_GetVideoProcessorCaps( IDirectXVideoProcessorService *iface, REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc* pVideoDesc, D3DFORMAT RenderTargetFormat, ++ DXVA2_VideoProcessorCaps* pCaps) ++{ ++ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface); ++ ++ FIXME("(%p)->(%s, %p, %#x, %p): stub\n", This, debugstr_guid(VideoProcDeviceGuid), pVideoDesc, RenderTargetFormat, pCaps); ++ ++ return E_NOTIMPL; ++} ++ ++static HRESULT WINAPI DirectXVideoProcessorService_GetProcAmpRange( IDirectXVideoProcessorService *iface, REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc* pVideoDesc, D3DFORMAT RenderTargetFormat, UINT ProcAmpCap, ++ DXVA2_ValueRange* pRange ) ++{ ++ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface); ++ ++ FIXME("(%p)->(%s, %p, %#x, %u, %p): stub\n", This, debugstr_guid(VideoProcDeviceGuid), pVideoDesc, RenderTargetFormat, ProcAmpCap, pRange); ++ ++ return E_NOTIMPL; ++} ++ ++static HRESULT WINAPI DirectXVideoProcessorService_GetFilterPropertyRange( IDirectXVideoProcessorService *iface, REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc* pVideoDesc, D3DFORMAT RenderTargetFormat, UINT FilterSetting, ++ DXVA2_ValueRange* pRange ) ++{ ++ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface); ++ ++ FIXME("(%p)->(%s, %p, %#x, %u, %p): stub\n", This, debugstr_guid(VideoProcDeviceGuid), pVideoDesc, RenderTargetFormat, FilterSetting, pRange); ++ ++ return E_NOTIMPL; ++} ++ ++static HRESULT WINAPI DirectXVideoProcessorService_CreateVideoProcessor( IDirectXVideoProcessorService *iface, REFGUID VideoProcDeviceGuid, ++ const DXVA2_VideoDesc* pVideoDesc, D3DFORMAT RenderTargetFormat, UINT MaxNumSubStreams, ++ IDirectXVideoProcessor** ppVidProcess ) ++{ ++ DirectXVideoProcessorServiceImpl *This = impl_from_IDirectXVideoProcessorService(iface); ++ ++ FIXME("(%p)->(%s, %#x, %u, %p): stub\n", This, debugstr_guid(VideoProcDeviceGuid), RenderTargetFormat, MaxNumSubStreams, ppVidProcess); ++ ++ return E_NOTIMPL; ++} ++ ++static const IDirectXVideoProcessorServiceVtbl DirectXVideoProcessorService_VTable = ++{ ++ DirectXVideoProcessorService_QueryInterface, ++ DirectXVideoProcessorService_AddRef, ++ DirectXVideoProcessorService_Release, ++ DirectXVideoProcessorService_CreateSurface, ++ DirectXVideoProcessorService_RegisterVideoProcessorSoftwareDevice, ++ DirectXVideoProcessorService_GetVideoProcessorDeviceGuids, ++ DirectXVideoProcessorService_GetVideoProcessorRenderTargets, ++ DirectXVideoProcessorService_GetVideoProcessorSubStreamFormats, ++ DirectXVideoProcessorService_GetVideoProcessorCaps, ++ DirectXVideoProcessorService_GetProcAmpRange, ++ DirectXVideoProcessorService_GetFilterPropertyRange, ++ DirectXVideoProcessorService_CreateVideoProcessor ++}; ++ ++ ++HRESULT videoservices_create( IDirect3DDevice9 *device, REFIID riid, void **ppv ) ++{ ++ HRESULT hr = S_OK; ++ ++ if (!riid || !ppv) ++ return E_INVALIDARG; ++ ++ *ppv = NULL; ++ ++ /* IDirectXVideoAccelerationService */ ++ if (IsEqualIID(riid, &IID_IDirectXVideoAccelerationService)) ++ { ++ DirectXVideoAccelerationServiceImpl* accelerator = CoTaskMemAlloc(sizeof(DirectXVideoAccelerationServiceImpl)); ++ if (!accelerator) ++ return E_OUTOFMEMORY; ++ ++ accelerator->lpVtbl = &DirectXVideoAccelerationService_VTable; ++ accelerator->refCount = 1; ++ ++ *ppv = accelerator; ++ } ++ ++ /* IDirectXVideoDecoderService */ ++ else if (IsEqualIID(riid, &IID_IDirectXVideoDecoderService)) ++ { ++ DirectXVideoDecoderServiceImpl* decoder = CoTaskMemAlloc(sizeof(DirectXVideoDecoderServiceImpl)); ++ if (!decoder) ++ return E_OUTOFMEMORY; ++ ++ decoder->lpVtbl = &DirectXVideoDecoderService_VTable; ++ decoder->refCount = 1; ++ *ppv = decoder; ++ } ++ ++ /* IDirectXVideoProcessorService */ ++ else if (IsEqualIID(riid, &IID_IDirectXVideoProcessorService)) ++ { ++ DirectXVideoProcessorServiceImpl* processor = CoTaskMemAlloc(sizeof(DirectXVideoProcessorServiceImpl)); ++ if (!processor) ++ return E_OUTOFMEMORY; ++ ++ processor->lpVtbl = &DirectXVideoProcessorService_VTable; ++ processor->refCount = 1; ++ ++ *ppv = processor; ++ } ++ ++ else ++ hr = E_NOINTERFACE; ++ ++ return hr; ++} +-- +1.7.9.5 + diff --git a/patches/11-DXVA2/39ca2373-65c1-4d01-8ba0-1c2007cbbc59.def b/patches/11-DXVA2/39ca2373-65c1-4d01-8ba0-1c2007cbbc59.def index fd5864fc..368a89b7 100644 --- a/patches/11-DXVA2/39ca2373-65c1-4d01-8ba0-1c2007cbbc59.def +++ b/patches/11-DXVA2/39ca2373-65c1-4d01-8ba0-1c2007cbbc59.def @@ -1,4 +1,3 @@ -Revision: 1 +Revision: 2 Author: Michael Müller -Title: Added DXVA2 stub dll. - +Title: Added DXVA2 stub implementation. diff --git a/patches/patch-list.patch b/patches/patch-list.patch index 187b17cd..6853af42 100644 --- a/patches/patch-list.patch +++ b/patches/patch-list.patch @@ -57,7 +57,7 @@ index a273502..5fa0cd5 100644 + { "4cd13e94-7f2d-11e3-b5eb-0090f5c75ad5:1", "Erich E. Hoover", "Support for junction points/reparse points." }, + { "5fb1f5c8-7f17-11e3-9b62-0090f5c75ad5:1", "Erich E. Hoover", "Implement TransmitFile." }, + { "3d7c4774-9e7f-11e3-9cfc-0090f5c75ad5:1", "Erich E. Hoover", "Implement missing fonts expected by Silverlight." }, -+ { "39ca2373-65c1-4d01-8ba0-1c2007cbbc59:1", "Michael Müller", "Added DXVA2 stub dll." }, ++ { "39ca2373-65c1-4d01-8ba0-1c2007cbbc59:2", "Michael Müller", "Added DXVA2 stub implementation." }, + { "0b21d7ac-0387-4493-aa38-fbafe3e749f5:1", "Michael Müller", "Decrease minimum SetTimer interval from 15 to 5 ms." }, + { "19835498-8d90-4673-867e-2376af4d7c76:1", "Sebastian Lackner", "Allow to set wined3d strictDrawOrdering via environment variable." }, + { "59bd38b7-bbdc-4cfd-9ccd-1c72c4ed84c0:1", "Sebastian Lackner", "Implement X11DRV_FLUSH_GDI_DISPLAY ExtEscape command." },