[vlc-commits] [Git][videolan/vlc][3.0.x] 9 commits: contrib: build postproc as part of ffmpeg

Steve Lhomme (@robUx4) gitlab at videolan.org
Thu Apr 17 08:08:39 UTC 2025



Steve Lhomme pushed to branch 3.0.x at VideoLAN / VLC


Commits:
8a397800 by Marvin Scholz at 2025-04-16T08:58:27+02:00
contrib: build postproc as part of ffmpeg

If GPL is enabled, build postproc together with ffmpeg
instead of building an ffmpeg-less ancient version with
numerous bugs.

Should fix crashes on macOS and possibly other OSes when
postproc is used.

(cherry picked from commit 599191d3a4063d9d69b29f3a9bbd99fbfa636455) (edited)
- 3.0 didn't have the ranlib patch

- - - - -
82cf6615 by Steve Lhomme at 2025-04-16T09:02:06+02:00
contrib: d3d11: use working headers directly

We don't need to go through widl if we get all the dependent headers.

The headers found in the videolan tarball cache are outdated.

- - - - -
bfad92c8 by Steve Lhomme at 2025-04-16T09:02:06+02:00
contrib: d3d11: consider the headers are OK starting with mingw-w64 v8

- - - - -
e5acf58a by Steve Lhomme at 2025-04-16T09:02:06+02:00
d3d11: allow creating shared D3D11 textures

- - - - -
eeb0578d by Steve Lhomme at 2025-04-16T09:02:06+02:00
direct3d11: use a function to create the staging texture

- - - - -
833b0255 by Steve Lhomme at 2025-04-16T09:02:06+02:00
direct3d11: use a shared staging texture for sources from another D3D11

This can happen with a clone video output. The decoder D3D11 device
is tied to the first display pool or its own. We can copy from GPU to GPU.

- - - - -
d652d58f by Steve Lhomme at 2025-04-16T09:46:53+02:00
contrib: d3d9: download already patched dxva2api.h

No need a widl an old and patched version.

- - - - -
9e48d6e3 by Steve Lhomme at 2025-04-16T09:46:53+02:00
contrib: d3d9: download already patched d3d9caps.h

The headers found in the videolan tarball cache are outdated.

- - - - -
3e1083e7 by Steve Lhomme at 2025-04-16T09:46:53+02:00
contrib: d3d9: consider mingw-w64 v8 has recent enough headers

All mentioned hashes as part of the v8 release.

- - - - -


20 changed files:

- contrib/src/d3d11/SHA512SUMS
- − contrib/src/d3d11/dxgi12.patch
- − contrib/src/d3d11/dxgi1_3.idl
- − contrib/src/d3d11/dxgi1_4.idl
- − contrib/src/d3d11/dxgi1_5.idl
- − contrib/src/d3d11/dxgi1_6.idl
- − contrib/src/d3d11/dxgidebug.patch
- − contrib/src/d3d11/processor_format.patch
- contrib/src/d3d11/rules.mak
- contrib/src/d3d9/SHA512SUMS
- − contrib/src/d3d9/d3d9caps.patch
- − contrib/src/d3d9/dxva2api.patch
- contrib/src/d3d9/rules.mak
- contrib/src/ffmpeg/rules.mak
- − contrib/src/postproc/rules.mak
- − contrib/src/postproc/win-pic.patch
- modules/hw/d3d11/d3d11_deinterlace.c
- modules/video_chroma/d3d11_fmt.c
- modules/video_chroma/d3d11_fmt.h
- modules/video_output/win32/direct3d11.c


Changes:

=====================================
contrib/src/d3d11/SHA512SUMS
=====================================
@@ -1,10 +1,15 @@
-0d97a004acd9d99d685aef6ae3c41b9951b41170d197173838ad2dbad4db309debcc2dd6ab2cfaa849ab9ca9841ae80232739b113b3e72c35ec8a481066acff5  d3d11.idl
+47f35cd2cc5429f50bcc468af8fb5282e59840f1faca29b90fa2b12e2224e8b9631523d2555d15936fc7722d6adf7285bd10e80d359f38d3bedfd1a809b6df00  d3d11.h
 d309fc35b655213673ca2e79776a41088009cca845a7fe1968f0683093587de771039a3f2acd59f778e382ddb558309f728bbebbc4ffd1cfacc08bf57a223a89  d3d11_1.h
 9cd0805fb4ede1b6269455ac44f309b1f3e60a64c401e157f9866ce41427324c05717f3dc166aef12bd865ffca0c96696de8a9e4b549836a47c322aeae955f4e  d3d11_2.h
 5c9b2d3ca071d555f61d45c839b3a474a8e3a440cb386c65303f0e9c95da74565ac7bdc6430582bdd506c192fc259707f10fd2b111ca0374e487e6bbd5ffc3ee  d3d11_3.h
 f87eadc5c9a16a2e38d6a5615bd4e6d338df6a8b35879f315bcec39c876ebe9be47b0ce4174a5c259e6166895352a2403e503ae852218702fd7ed97b7aa3b142  d3d11_4.h
-04b208ddf9c91f923d262ae68a5fb0588a3ef1a39ea450eaac9031e021bd5efdc7b30e3fb3e589b07bc88e41f8861caeb56934a2fa6cbf2efb7404f5f3453b70  dxgidebug.idl
-1bee79fcaf5db6e53510f49fb40009fe6291ffafe47e1aea46ae0068afd001b405b0d970a55af63e475fbb18108e1ca0f91d86a18b6598b922c454ed082e8941  dxgi1_2.idl
-3f24632a71c96498f3432ed55ebdbe0a90e00c86ff88e4a41d1d04fdda14532aeff7799401803a03c6f69b3a07930d3f190211accef4ca199a21b3671acdcc45  dxgitype.h
-bba687b7cd4fd321f99d70a8137b1aa01851d8fd72a007cf5f8e5bce55fe06e15c27fe82de6493291b7c9932ceb43642234ed07d9a6bcb6140229cdbeb4a49bd  dxgiformat.h
-40eec2c5a96aeafb18ed9936c6ca9fc05303a08572efe6a3483e316b8af4e392eba863af86cdbb1342ac3ccb039be1b962688b05610e07f426bab6474073bfa3  dxgi.idl
+baa4e380e41467c7d53191756376e8a60b9a2173ab3db08d5736416d89b6ca0b2b9d8eccce24e88731fdfbb9711ac36782a7fac03733de1342684a8557d2efbf  dxgidebug.h
+3d1fa12e80b8ce7d54568439b1229b08356ba07b8d35a73971b9ba9fe8efe2b3e05e05bf343663fc921d421a0deb4b2355af49a6dbf20d30e7fafdc898537510  dxgi1_2.h
+b843e74266fdfdf4b6fdb121d75db441c48ab09282e20b1b9b81d816e9f2130b1404e9e4065bae69868e32b687c58a13d83f057a882b8cb4f897944b6330a22a  dxgi1_3.h
+22c658dc1a9c1a047f429cc27b46b81c42f0d44e35b5936dcfb74ed3d1dcd5aae53beb0a9e3f1285493e2f03ac85544b5bc3d0a91d37ef537a430cbbe89c1173  dxgi1_4.h
+bcbb0b2929a512137b1298b160e265141b8405e336dd347e6131a938edc62f2906e19f1451fef07ecae328824533445a90c8dffe10d3eab1ef5c93219b61a082  dxgi1_5.h
+5ab157d2c41e9fc070a7eeb31479ffd0d3a259a4cd60b747077fe0e4fcd67aa79da9232058127158316332b0d672e6c78ef224d3c17fdda1307074e4f4f09902  dxgi1_6.h
+7887819e18867f793448e21e5a2a73305d4685ad2b80a4499b5a5710f2c7d0dc9079184e7e82aa5f1837c7a1b2d621ca392a9b8a903f0d135b29969be51d508a  dxgitype.h
+6c4929f4a4b262d901aa0b1a7b47ffc739ee8e1ecd82f20627c43ad0ee5367aa7c8b6f374a25273b6928d5d1e3c735fbb84404107e6e4d2f2965252a6d91c0c3  dxgicommon.h
+3b1ccecaca5223a870a6195d4924908cfbc874d00e4dcb1e6415ec29323a15d36fae410049e86f25462dba996cc033f8ab716d9554c34f01ce061282b93c6f6e  dxgiformat.h
+cb0120badd7671f0cda1055971554950fc39c77e92c1acc2ab98f8c9e0398456799d2fb49a3c73e4d4452deaffd551d8754ad0665803feb3cf0711841e297c1c  dxgi.h


=====================================
contrib/src/d3d11/dxgi12.patch deleted
=====================================
@@ -1,109 +0,0 @@
---- tarballs/dxgi1_2.idl.orig	2016-03-02 16:01:30.243405100 +0100
-+++ tarballs/dxgi1_2.idl	2016-03-02 16:19:58.006959300 +0100
-@@ -232,3 +232,106 @@ interface IDXGIAdapter2 : IDXGIAdapter1
- {
-     HRESULT GetDesc2([out] DXGI_ADAPTER_DESC2 *pDesc);
- }
-+
-+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 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;
-+
-+typedef struct DXGI_OUTDUPL_MOVE_RECT {
-+    POINT SourcePoint;
-+    RECT  DestinationRect;
-+} DXGI_OUTDUPL_MOVE_RECT;
-+
-+typedef struct DXGI_OUTDUPL_POINTER_SHAPE_INFO {
-+    UINT Type;
-+    UINT Width;
-+    UINT Height;
-+    UINT Pitch;
-+    POINT HotSpot;
-+} DXGI_OUTDUPL_POINTER_SHAPE_INFO;
-+[
-+    object,
-+    uuid(191cfac3-a341-470d-b26e-a864f428319c),
-+    local,
-+    pointer_default(unique)
-+]
-+interface IDXGIOutputDuplication :
-+    IDXGIObject
-+{
-+    void GetDesc(
-+            [out] DXGI_OUTDUPL_DESC* pDesc);
-+    HRESULT AcquireNextFrame(
-+            [in] UINT TimeoutInMilliseconds,
-+            [out] DXGI_OUTDUPL_FRAME_INFO* pFrameInfo,
-+            [out] IDXGIResource** ppDesktopResource);
-+    HRESULT GetFrameDirtyRects(
-+            [in] UINT DirtyRectsBufferSize,
-+            [out] RECT* pDirtyRectsBuffer,
-+            [out] UINT* pDirtyRectsBufferSizeRequired);
-+    HRESULT GetFrameMoveRects(
-+            [in] UINT MoveRectsBufferSize,
-+            [out] DXGI_OUTDUPL_MOVE_RECT* pMoveRectBuffer,
-+            [out] UINT* pMoveRectsBufferSizeRequired);
-+    HRESULT GetFramePointerShape(
-+            [in] UINT PointerShapeBufferSize,
-+            [out] void* pPointerShapeBuffer,
-+            [out] UINT* pPointerShapeBufferSizeRequired,
-+            [out] DXGI_OUTDUPL_POINTER_SHAPE_INFO* pPointerShapeInfo);
-+    HRESULT MapDesktopSurface(
-+            [out] DXGI_MAPPED_RECT* pLockedRect);
-+    HRESULT UnMapDesktopSurface();
-+    HRESULT ReleaseFrame();
-+};
-+
-+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 EnumFormat,
-+            [in] UINT Flags,
-+            [in, out] UINT * pNumModes,
-+            [out] DXGI_MODE_DESC1 *pDesc);
-+    HRESULT FindClosestMatchingMode1(
-+            [in] const DXGI_MODE_DESC1 *pModeToMatch,
-+            [out] DXGI_MODE_DESC1 *pClosestMatch,
-+            [in] IUnknown * pConcernedDevice);
-+    HRESULT GetDisplaySurfaceData1(
-+            [in] IDXGIResource *pDestination);
-+    HRESULT DuplicateOutput(
-+            [in] IUnknown    *pDevice,
-+            [out] IDXGIOutputDuplication **ppOutputDuplication);
-+};


=====================================
contrib/src/d3d11/dxgi1_3.idl deleted
=====================================
@@ -1,242 +0,0 @@
-/*
- * 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();
-}


=====================================
contrib/src/d3d11/dxgi1_4.idl deleted
=====================================
@@ -1,109 +0,0 @@
-/*
- * 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;
-
-[
-    object,
-    local,
-    uuid(1bc6ea02-ef36-464f-bf0c-21ca39e5168a)
-]
-interface IDXGIFactory4 : IDXGIFactory3
-{
-    HRESULT EnumAdapterByLuid(
-        [in]  LUID     AdapterLuid,
-        [in]  REFIID   riid,
-        [out] void     **ppvAdapter
-    );
-    HRESULT EnumWarpAdapter(
-        [in]  REFIID   riid,
-        [out] void     **ppvAdapter
-    );
-}
-
-[
-    object,
-    local,
-    uuid(dc7dca35-2196-414d-9F53-617884032a60)
-]
-interface IDXGIOutput4 : IDXGIOutput3
-{
-    HRESULT CheckOverlayColorSpaceSupport(
-        [in]  DXGI_FORMAT           Format,
-        [in]  DXGI_COLOR_SPACE_TYPE ColorSpace,
-        [in]  IUnknown              *pConcernedDevice,
-        [out] UINT                  *pFlags
-    );
-}


=====================================
contrib/src/d3d11/dxgi1_5.idl deleted
=====================================
@@ -1,67 +0,0 @@
-/*
- * 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
-    );
-};
-
-[
-    object,
-    local,
-    uuid(80A07424-AB52-42EB-833C-0C42FD282D98)
-]
-interface IDXGIOutput5 : IDXGIOutput4
-{
-    HRESULT DuplicateOutput1(
-        [in]        IUnknown               *pDevice,
-                    UINT                   Flags,
-        [in]        UINT                   SupportedFormatsCount,
-        [in]  const DXGI_FORMAT            *pSupportedFormats,
-        [out]       IDXGIOutputDuplication **ppOutputDuplication
-    );
-}


=====================================
contrib/src/d3d11/dxgi1_6.idl deleted
=====================================
@@ -1,72 +0,0 @@
-/*
- * 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";
-
-cpp_quote("/* HACK as widl segfaults with too many imports */")
-cpp_quote("#include <dxgi1_5.h>")
-cpp_quote("#ifndef __dxgi1_5_h__")
-
-[
-    object,
-    local,
-    uuid(80A07424-AB52-42EB-833C-0C42FD282D98)
-]
-interface IDXGIOutput5 : IDXGIOutput4
-{
-    HRESULT DuplicateOutput1(
-        [in]        IUnknown               *pDevice,
-                    UINT                   Flags,
-        [in]        UINT                   SupportedFormatsCount,
-        [in]  const DXGI_FORMAT            *pSupportedFormats,
-        [out]       IDXGIOutputDuplication **ppOutputDuplication
-    );
-}
-
-cpp_quote("#endif /* __dxgi1_5_h__ */")
-
-typedef struct DXGI_OUTPUT_DESC1
-{
-    WCHAR                 DeviceName[32];
-    RECT                  DesktopCoordinates;
-    BOOL                  AttachedToDesktop;
-    DXGI_MODE_ROTATION    Rotation;
-    HMONITOR              Monitor;
-    UINT                  BitsPerColor;
-    DXGI_COLOR_SPACE_TYPE ColorSpace;
-    FLOAT                 RedPrimary[2];
-    FLOAT                 GreenPrimary[2];
-    FLOAT                 BluePrimary[2];
-    FLOAT                 WhitePoint[2];
-    FLOAT                 MinLuminance;
-    FLOAT                 MaxLuminance;
-    FLOAT                 MaxFullFrameLuminance;
-    BOOL                  InternalOutput;
-} DXGI_OUTPUT_DESC1;
-
-[
-    object,
-    local,
-    uuid(068346e8-aaec-4b84-add7-137f513f77a1)
-]
-interface IDXGIOutput6 : IDXGIOutput5
-{
-    HRESULT GetDesc1(
-        [out] DXGI_OUTPUT_DESC1 *pDesc
-    );
-}


=====================================
contrib/src/d3d11/dxgidebug.patch deleted
=====================================
@@ -1,51 +0,0 @@
-diff --git a/dxgidebug.idl b/dxgidebug.idl
---- /dev/null
-+++ b/dxgidebug.idl
-@@ -0,0 +1,44 @@
-+/*
-+ * 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);
-+}
-+
---
-1.9.5.msysgit.0
-


=====================================
contrib/src/d3d11/processor_format.patch deleted
=====================================
@@ -1,21 +0,0 @@
---- a/d3d11.idl	2016-02-26 09:21:48.019575300 +0100
-+++ b/d3d11.idl	2016-02-26 10:41:58.461027900 +0100
-@@ -3199,6 +3199,18 @@ 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;
-+
-+typedef struct D3D11_FEATURE_DATA_THREADING
-+{
-+    BOOL DriverConcurrentCreates;
-+    BOOL DriverCommandLists;
-+} D3D11_FEATURE_DATA_THREADING;
-+
- const UINT D3D11_SDK_VERSION = 7;
- 
- cpp_quote("#include <d3d10_1.h>")


=====================================
contrib/src/d3d11/rules.mak
=====================================
@@ -1,161 +1,88 @@
 # generate Direct3D11 temporary include
 
-ifdef HAVE_CROSS_COMPILE
-IDL_INCLUDES = -I/usr/include/wine/windows/ -I/usr/include/wine/wine/windows/
-else
-#ugly way to get the default location of standard idl files
-IDL_INCLUDES = -I/`echo $(MSYSTEM) | tr A-Z a-z`/$(BUILD)/include
-endif
-IDL_INCLUDES += -Ipthreads/mingw-w64-headers/include
-
-D3D11_COMMIT_ID := a0cd5afeb60be3be0860e9a203314c10485bb9b8
+D3D11_COMMIT_ID := f701c4c8cc9a881e660904f8c0047908a7b2ed04
 D3D11_1_COMMIT_ID := aa6ab47929a9cac6897f38e630ce0bb88458e288
 D3D11_4_COMMIT_ID := 6a1e782bb60bb1a93b5ab20fe895394d9c0904c2
-DXGI12_COMMIT_ID := 790a6544347b53c314b9c6f1ea757a2d5504c67e
-DXGITYPE_COMMIT_ID := f4aba520d014ecfe3563e33860de001caf2804e2
-D3D11_IDL_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(D3D11_COMMIT_ID)/tree/mingw-w64-headers/direct-x/include/d3d11.idl?format=raw
+DXGI12_COMMIT_ID := 3419b2d4b2b7e8b378696dc79546e3593f00ade6
+DXGITYPE_COMMIT_ID := 3419b2d4b2b7e8b378696dc79546e3593f00ade6
+DXGIDEBUG_COMMIT_ID := 22333acf22f89b9709c718467e04735157b5d27a
+D3D11_H_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(D3D11_COMMIT_ID)/tree/mingw-w64-headers/include/d3d11.h?format=raw
 D3D11_1_H_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(D3D11_1_COMMIT_ID)/tree/mingw-w64-headers/direct-x/include/d3d11_1.h?format=raw
 D3D11_2_H_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(D3D11_1_COMMIT_ID)/tree/mingw-w64-headers/direct-x/include/d3d11_2.h?format=raw
 D3D11_3_H_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(D3D11_1_COMMIT_ID)/tree/mingw-w64-headers/direct-x/include/d3d11_3.h?format=raw
 D3D11_4_H_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(D3D11_4_COMMIT_ID)/tree/mingw-w64-headers/direct-x/include/d3d11_4.h?format=raw
-DXGI12_IDL_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(DXGI12_COMMIT_ID)/tree/mingw-w64-headers/direct-x/include/dxgi1_2.idl?format=raw
-DXGITYPE_H_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(DXGITYPE_COMMIT_ID)/tree/mingw-w64-headers/direct-x/include/dxgitype.h?format=raw
-DXGIFORMAT_H_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(DXGITYPE_COMMIT_ID)/tree/mingw-w64-headers/direct-x/include/dxgiformat.h?format=raw
-DXGI_IDL_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(DXGITYPE_COMMIT_ID)/tree/mingw-w64-headers/direct-x/include/dxgi.idl?format=raw
-DST_D3D11_H = $(PREFIX)/include/d3d11.h
-DST_D3D11_1_H = $(PREFIX)/include/d3d11_1.h
-DST_D3D11_2_H = $(PREFIX)/include/d3d11_2.h
-DST_D3D11_3_H = $(PREFIX)/include/d3d11_3.h
-DST_D3D11_4_H = $(PREFIX)/include/d3d11_4.h
-DST_DXGIDEBUG_H = $(PREFIX)/include/dxgidebug.h
-DST_DXGITYPE_H = $(PREFIX)/include/dxgitype.h
-DST_DXGIFORMAT_H = $(PREFIX)/include/dxgiformat.h
-DST_DXGI_IDL = $(PREFIX)/include/dxgi.idl
-DST_DXGI12_H = $(PREFIX)/include/dxgi1_2.h
-DST_DXGI13_H = $(PREFIX)/include/dxgi1_3.h
-DST_DXGI14_H = $(PREFIX)/include/dxgi1_4.h
-DST_DXGI15_H = $(PREFIX)/include/dxgi1_5.h
-DST_DXGI16_H = $(PREFIX)/include/dxgi1_6.h
+DXGI12_H_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(DXGI12_COMMIT_ID)/tree/mingw-w64-headers/include/dxgi1_2.h?format=raw
+DXGI13_H_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(DXGI12_COMMIT_ID)/tree/mingw-w64-headers/include/dxgi1_3.h?format=raw
+DXGI14_H_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(DXGI12_COMMIT_ID)/tree/mingw-w64-headers/include/dxgi1_4.h?format=raw
+DXGI15_H_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(DXGI12_COMMIT_ID)/tree/mingw-w64-headers/include/dxgi1_5.h?format=raw
+DXGI16_H_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(DXGI12_COMMIT_ID)/tree/mingw-w64-headers/include/dxgi1_6.h?format=raw
+DXGITYPE_H_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(DXGITYPE_COMMIT_ID)/tree/mingw-w64-headers/include/dxgitype.h?format=raw
+DXGICOMMON_H_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(DXGITYPE_COMMIT_ID)/tree/mingw-w64-headers/include/dxgicommon.h?format=raw
+DXGIDEBUG_H_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(DXGIDEBUG_COMMIT_ID)/tree/mingw-w64-headers/include/dxgidebug.h?format=raw
+DXGIFORMAT_H_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(DXGITYPE_COMMIT_ID)/tree/mingw-w64-headers/include/dxgiformat.h?format=raw
+DXGI_H_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(DXGITYPE_COMMIT_ID)/tree/mingw-w64-headers/include/dxgi.h?format=raw
 
 
 ifdef HAVE_WIN32
 PKGS += d3d11
 endif
-DEPS_d3d11 = pthreads $(DEPS_pthreads)
+ifeq ($(call mingw_at_least, 8), true)
+PKGS_FOUND += d3d11
+endif # MINGW 8
 
-$(TARBALLS)/d3d11.idl:
-	$(call download_pkg,$(D3D11_IDL_URL),d3d11)
+$(TARBALLS)/d3d11.h:
+	$(call download,$(D3D11_H_URL))
 
 $(TARBALLS)/d3d11_1.h:
-	$(call download_pkg,$(D3D11_1_H_URL),d3d11)
+	$(call download,$(D3D11_1_H_URL))
 
 $(TARBALLS)/d3d11_2.h:
-	$(call download_pkg,$(D3D11_2_H_URL),d3d11)
+	$(call download,$(D3D11_2_H_URL))
 
 $(TARBALLS)/d3d11_3.h:
-	$(call download_pkg,$(D3D11_3_H_URL),d3d11)
+	$(call download,$(D3D11_3_H_URL))
 
 $(TARBALLS)/d3d11_4.h:
-	$(call download_pkg,$(D3D11_4_H_URL),d3d11)
-
-$(TARBALLS)/dxgidebug.idl:
-	(cd $(TARBALLS) && patch -fp1) < $(SRC)/d3d11/dxgidebug.patch
-
-$(TARBALLS)/dxgi1_2.idl:
-	$(call download_pkg,$(DXGI12_IDL_URL),d3d11)
-
-$(TARBALLS)/dxgitype.h:
-	$(call download_pkg,$(DXGITYPE_H_URL),d3d11)
-
-$(TARBALLS)/dxgiformat.h:
-	$(call download_pkg,$(DXGIFORMAT_H_URL),d3d11)
-
-$(TARBALLS)/dxgi.idl:
-	$(call download_pkg,$(DXGI_IDL_URL),d3d11)
-
-.sum-d3d11: $(TARBALLS)/d3d11.idl $(TARBALLS)/d3d11_1.h $(TARBALLS)/d3d11_2.h $(TARBALLS)/d3d11_3.h $(TARBALLS)/d3d11_4.h $(TARBALLS)/dxgidebug.idl $(TARBALLS)/dxgi1_2.idl $(TARBALLS)/dxgitype.h $(TARBALLS)/dxgiformat.h $(TARBALLS)/dxgi.idl
-
-d3d11: .sum-d3d11
-	mkdir -p $@
-	cp $(TARBALLS)/d3d11.idl $@ && cd $@ && patch -fp1 < ../$(SRC)/d3d11/processor_format.patch
-
-dxgi12: .sum-d3d11
-	mkdir -p $@
-	cp $(TARBALLS)/dxgi1_2.idl $@ && cd $@ && patch -fp1 < ../$(SRC)/d3d11/dxgi12.patch
-
-$(DST_D3D11_H): d3d11
-	mkdir -p -- "$(PREFIX)/include/"
-	$(WIDL) -DBOOL=WINBOOL -I$(PREFIX)/include $(IDL_INCLUDES) -h -o $@ $</d3d11.idl
-
-$(DST_D3D11_1_H): $(TARBALLS)/d3d11_1.h
-	mkdir -p -- "$(PREFIX)/include/"
-	cp $(TARBALLS)/d3d11_1.h $@
+	$(call download,$(D3D11_4_H_URL))
 
-$(DST_D3D11_2_H): $(TARBALLS)/d3d11_2.h
-	mkdir -p -- "$(PREFIX)/include/"
-	cp $(TARBALLS)/d3d11_2.h $@
+$(TARBALLS)/dxgi1_2.h:
+	$(call download,$(DXGI12_H_URL))
 
-$(DST_D3D11_3_H): $(TARBALLS)/d3d11_3.h
-	mkdir -p -- "$(PREFIX)/include/"
-	cp $(TARBALLS)/d3d11_3.h $@
+$(TARBALLS)/dxgi1_3.h:
+	$(call download,$(DXGI13_H_URL))
 
-$(DST_D3D11_4_H): $(TARBALLS)/d3d11_4.h
-	mkdir -p -- "$(PREFIX)/include/"
-	cp $(TARBALLS)/d3d11_4.h $@
+$(TARBALLS)/dxgi1_4.h:
+	$(call download,$(DXGI14_H_URL))
 
-$(DST_DXGIDEBUG_H): $(TARBALLS)/dxgidebug.idl
-	mkdir -p -- "$(PREFIX)/include/"
-	$(WIDL) -DBOOL=WINBOOL -I$(PREFIX)/include $(IDL_INCLUDES) -h -o $@ $<
+$(TARBALLS)/dxgi1_5.h:
+	$(call download,$(DXGI15_H_URL))
 
-$(DST_DXGITYPE_H): $(TARBALLS)/dxgitype.h
-	mkdir -p -- "$(PREFIX)/include/"
-	cp $(TARBALLS)/dxgitype.h $@
+$(TARBALLS)/dxgi1_6.h:
+	$(call download,$(DXGI16_H_URL))
 
-$(DST_DXGIFORMAT_H): $(TARBALLS)/dxgiformat.h
-	mkdir -p -- "$(PREFIX)/include/"
-	cp $(TARBALLS)/dxgiformat.h $@
-
-$(DST_DXGI_IDL): $(TARBALLS)/dxgi.idl
-	mkdir -p -- "$(PREFIX)/include/"
-	cp $(TARBALLS)/dxgi.idl $@
-
-$(DST_DXGI12_H): dxgi12
-	mkdir -p -- "$(PREFIX)/include/"
-	$(WIDL) -DBOOL=WINBOOL -I$(PREFIX)/include $(IDL_INCLUDES) -h -o $@ $</dxgi1_2.idl
-
-$(DST_DXGI13_H): $(SRC)/d3d11/dxgi1_3.idl $(DST_DXGI12_H)
-	mkdir -p -- "$(PREFIX)/include/"
-	$(WIDL) -DBOOL=WINBOOL -Idxgi12 -I$(PREFIX)/include $(IDL_INCLUDES) -h -o $@ $<
-
-$(DST_DXGI14_H): $(SRC)/d3d11/dxgi1_4.idl $(DST_DXGI13_H)
-	mkdir -p -- "$(PREFIX)/include/"
-	$(WIDL) -DBOOL=WINBOOL -Idxgi12 -I$(PREFIX)/include $(IDL_INCLUDES) -h -o $@ $<
-
-$(DST_DXGI15_H): $(SRC)/d3d11/dxgi1_5.idl $(DST_DXGI14_H)
-	mkdir -p -- "$(PREFIX)/include/"
-	$(WIDL) -DBOOL=WINBOOL -Idxgi12 -I$(PREFIX)/include $(IDL_INCLUDES) -h -o $@ $<
-
-$(DST_DXGI16_H): $(SRC)/d3d11/dxgi1_6.idl $(DST_DXGI15_H)
-	mkdir -p -- "$(PREFIX)/include/"
-	$(WIDL) -DBOOL=WINBOOL -Idxgi12 -I$(PREFIX)/include $(IDL_INCLUDES) -h -o $@ $<
+$(TARBALLS)/dxgitype.h:
+	$(call download,$(DXGITYPE_H_URL))
 
-.dxgitype: $(DST_DXGITYPE_H) $(DST_DXGIFORMAT_H) $(DST_DXGI_IDL)
-	touch $@
+$(TARBALLS)/dxgicommon.h:
+	$(call download,$(DXGICOMMON_H_URL))
 
-.dxgi12: .dxgitype $(DST_DXGI12_H)
-	touch $@
+$(TARBALLS)/dxgidebug.h:
+	$(call download,$(DXGIDEBUG_H_URL))
 
-.dxgi13: .dxgi12 $(DST_DXGI13_H)
-	touch $@
+$(TARBALLS)/dxgiformat.h:
+	$(call download,$(DXGIFORMAT_H_URL))
 
-.dxgi14: .dxgi13 $(DST_DXGI14_H)
-	touch $@
+$(TARBALLS)/dxgi.h:
+	$(call download,$(DXGI_H_URL))
 
-.dxgi15: .dxgi14 $(DST_DXGI15_H)
-	touch $@
+.sum-d3d11: $(TARBALLS)/d3d11.h $(TARBALLS)/d3d11_1.h $(TARBALLS)/d3d11_2.h $(TARBALLS)/d3d11_3.h $(TARBALLS)/d3d11_4.h $(TARBALLS)/dxgi1_2.h $(TARBALLS)/dxgi1_3.h $(TARBALLS)/dxgi1_4.h $(TARBALLS)/dxgi1_5.h $(TARBALLS)/dxgi1_6.h $(TARBALLS)/dxgitype.h $(TARBALLS)/dxgicommon.h $(TARBALLS)/dxgidebug.h $(TARBALLS)/dxgiformat.h $(TARBALLS)/dxgi.h
 
-.dxgi16: .dxgi15 $(DST_DXGI16_H)
+d3d11: .sum-d3d11
+	mkdir -p $@
+	cp $(TARBALLS)/d3d11.h $(TARBALLS)/d3d11_1.h $(TARBALLS)/d3d11_2.h $(TARBALLS)/d3d11_3.h $(TARBALLS)/d3d11_4.h $(TARBALLS)/dxgi1_2.h $(TARBALLS)/dxgi1_3.h $(TARBALLS)/dxgi1_4.h $(TARBALLS)/dxgi1_5.h $(TARBALLS)/dxgi1_6.h $(TARBALLS)/dxgitype.h $(TARBALLS)/dxgicommon.h $(TARBALLS)/dxgidebug.h $(TARBALLS)/dxgiformat.h $(TARBALLS)/dxgi.h $@
 	touch $@
 
-.d3d11: $(DST_D3D11_H) $(DST_D3D11_1_H) $(DST_D3D11_2_H) $(DST_D3D11_3_H) $(DST_D3D11_4_H) $(DST_DXGIDEBUG_H) .dxgi16
+.d3d11: d3d11
+	mkdir -p -- "$(PREFIX)/include/"
+	cp $(TARBALLS)/d3d11.h $(TARBALLS)/d3d11_1.h $(TARBALLS)/d3d11_2.h $(TARBALLS)/d3d11_3.h $(TARBALLS)/d3d11_4.h $(TARBALLS)/dxgi1_2.h $(TARBALLS)/dxgi1_3.h $(TARBALLS)/dxgi1_4.h $(TARBALLS)/dxgi1_5.h $(TARBALLS)/dxgi1_6.h $(TARBALLS)/dxgitype.h $(TARBALLS)/dxgicommon.h $(TARBALLS)/dxgidebug.h $(TARBALLS)/dxgiformat.h $(TARBALLS)/dxgi.h "$(PREFIX)/include/"
 	touch $@


=====================================
contrib/src/d3d9/SHA512SUMS
=====================================
@@ -1,3 +1,3 @@
-81ee35501f7657dee19bc24f94af15a34a61b84fd0855a4ff91ab95b0e16ec163594e64accde1acdd289a07b8cd9c0cd640cbcbc87b11bebd92e4db841da80aa  d3d9caps.h
-42cfe1b2234065e4ce712f806370d0acbdf9bb4e4dd74859f21fd7e7428eabca9b5607c03aba57d3994d0946722d1837a454891a2e7f8242d353f29bb6a80d55  d3d9.h
-dda26118ad53e99cd8533b773fa2a38f7a184af8b68c797d0efa3256abc80f0d3c304b12601933eff79ed6c67f6f2fce40e31eadfb7ccf27ca2a297f465c113b  dxva2api.idl
+8acaaa8d62e5844e5fe42fc71a4337b6b8133ff13bfb2db0402474c9241cd70a50c942f0348d167ef6890fea593186f5505bd03ddc10a3fbbd8f34a8858d7a65  d3d9caps.h
+8f13fea86872a8736e0802ac5900a39e2c93c2811de8dd6bcf26edac5daad2d8d137bd255f44c36ef11b0ea5bc241676aac8fda060b5f6fd737dd9697e4f7857  d3d9.h
+fc601b4279fcc24ff1f0da8a0f451139b00b4c7945d5e7a83e896f6132380cea632a035c150525f36292e2cd7ae31aad56ecad8b1647e1576ae45103fc7cb598  dxva2api.h


=====================================
contrib/src/d3d9/d3d9caps.patch deleted
=====================================
@@ -1,17 +0,0 @@
---- include/d3d9caps.h	2016-04-17 11:41:20.681535900 +0300
-+++ include/d3d9caps.h.old	2016-04-17 11:49:14.065736000 +0300
-@@ -399,6 +399,14 @@ typedef struct _D3DCAPS9 {
- 
- } D3DCAPS9;
- 
-+typedef struct _D3DOVERLAYCAPS {
-+  UINT                Caps;
-+  UINT                MaxOverlayDisplayWidth;
-+  UINT                MaxOverlayDisplayHeight;
-+
-+} D3DOVERLAYCAPS;
-+
-+
- #ifdef __i386__
- #include <poppack.h>
- #endif


=====================================
contrib/src/d3d9/dxva2api.patch deleted
=====================================
@@ -1,379 +0,0 @@
---- a/dxva2api/dxva2api.idl	2017-06-13 14:45:14.598269100 +0200
-+++ b/dxva2api/dxva2api.idl	2017-06-26 10:08:58.732675300 +0200
-@@ -6,6 +6,8 @@
- 
- import "unknwn.idl";
- 
-+cpp_quote("#include <winapifamily.h>")
-+
- /* 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) */")


=====================================
contrib/src/d3d9/rules.mak
=====================================
@@ -1,17 +1,10 @@
 # generate Direct3D9 temporary include
 
-ifdef HAVE_CROSS_COMPILE
-IDL_INC_PATH = -I/usr/include/wine/windows/ -I/usr/include/wine/wine/windows/
-else
-#ugly way to get the default location of standard idl files
-IDL_INC_PATH = -I/`echo $(MSYSTEM) | tr A-Z a-z`/$(BUILD)/include
-endif
-
-D3D9CAPS_COMMIT_ID := 477108e5706e73421634436c21cb76e1795b3609
-DXVA2API_COMMIT_ID := 67bb96f54d720ca9e5aaa5da7d385348e0bfac31
+D3D9CAPS_COMMIT_ID := 49e9a673b36a1241747bf3ea95d040f127753f81
+DXVA2API_COMMIT_ID := 45def5d7a10885dfb87af3c7996f8de7197183b5
 D3D9CAPS_H_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(D3D9CAPS_COMMIT_ID)/tree/mingw-w64-headers/direct-x/include/d3d9caps.h?format=raw
 D3D9_H_URL := http://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(D3D9CAPS_COMMIT_ID)/tree/mingw-w64-headers/direct-x/include/d3d9.h?format=raw
-DXVA2API_IDL_URL := https://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(DXVA2API_COMMIT_ID)/tree/mingw-w64-headers/include/dxva2api.idl?format=raw
+DXVA2API_H_URL := https://sourceforge.net/p/mingw-w64/mingw-w64/ci/$(DXVA2API_COMMIT_ID)/tree/mingw-w64-headers/include/dxva2api.h?format=raw
 DST_D3D9CAPS_H = $(PREFIX)/include/d3d9caps.h
 DST_D3D9_H = $(PREFIX)/include/d3d9.h
 DST_DXVA2API_H = $(PREFIX)/include/dxva2api.h
@@ -21,35 +14,33 @@ ifdef HAVE_WIN32
 ifndef HAVE_VISUALSTUDIO
 PKGS += d3d9
 endif
+ifeq ($(call mingw_at_least, 8), true)
+PKGS_FOUND += d3d9
+endif # MINGW 8
 endif
 
 $(TARBALLS)/d3d9caps.h:
-	$(call download_pkg,$(D3D9CAPS_H_URL),d3d9)
+	$(call download,$(D3D9CAPS_H_URL))
 
 $(TARBALLS)/d3d9.h:
-	$(call download_pkg,$(D3D9_H_URL),d3d9)
+	$(call download,$(D3D9_H_URL))
 
-$(TARBALLS)/dxva2api.idl:
-	$(call download_pkg,$(DXVA2API_IDL_URL),d3d9)
+$(TARBALLS)/dxva2api.h:
+	$(call download_pkg,$(DXVA2API_H_URL),d3d9)
 
-.sum-d3d9: $(TARBALLS)/d3d9caps.h $(TARBALLS)/d3d9.h $(TARBALLS)/dxva2api.idl
+.sum-d3d9: $(TARBALLS)/d3d9caps.h $(TARBALLS)/d3d9.h $(TARBALLS)/dxva2api.h
 
 $(DST_D3D9CAPS_H): $(TARBALLS)/d3d9caps.h .sum-d3d9
 	mkdir -p -- "$(PREFIX)/include/"
-	(cd $(TARBALLS) && patch -fp1 -o $@) < $(SRC)/d3d9/d3d9caps.patch
+	cp $(TARBALLS)/d3d9caps.h $@
 
 $(DST_D3D9_H): $(TARBALLS)/d3d9.h .sum-d3d9
 	mkdir -p -- "$(PREFIX)/include/"
 	(cd $(TARBALLS) && patch -fp1 -o $@) < $(SRC)/d3d9/d3d9.patch
 
-dxva2api/dxva2api.idl: .sum-d3d9
-	mkdir -p dxva2api
-	cp $(TARBALLS)/dxva2api.idl $@
-	patch -fp1 < $(SRC)/d3d9/dxva2api.patch
-
-$(DST_DXVA2API_H): dxva2api/dxva2api.idl
+$(DST_DXVA2API_H): .sum-d3d9
 	mkdir -p -- "$(PREFIX)/include/"
-	$(WIDL) -DBOOL=WINBOOL -D_D3D9_H_ -D__C89_NAMELESS $(IDL_INCLUDES) -h -o $@ $<
+	cp $(TARBALLS)/dxva2api.h $@
 
 .d3d9caps: $(DST_D3D9CAPS_H)
 	touch $@


=====================================
contrib/src/ffmpeg/rules.mak
=====================================
@@ -78,6 +78,13 @@ else
 FFMPEGCONF += --disable-encoders --disable-muxers
 endif
 
+# Postproc
+MAYBE_POSTPROC =
+ifdef GPL
+FFMPEGCONF += --enable-gpl --enable-postproc
+MAYBE_POSTPROC = libpostproc
+endif
+
 # Small size
 ifdef WITH_OPTIMIZATION
 ifdef ENABLE_SMALL
@@ -220,7 +227,7 @@ endif
 
 # Build
 PKGS += ffmpeg
-ifeq ($(call need_pkg,"libavcodec >= $(FFMPEG_LAVC_MIN) libavformat >= 53.21.0 libswscale"),)
+ifeq ($(call need_pkg,"libavcodec >= $(FFMPEG_LAVC_MIN) libavformat >= 53.21.0 libswscale $(MAYBE_POSTPROC)"),)
 PKGS_FOUND += ffmpeg
 endif
 


=====================================
contrib/src/postproc/rules.mak deleted
=====================================
@@ -1,137 +0,0 @@
-# POSTPROC
-
-POSTPROC_URL := http://git.videolan.org/git/libpostproc.git
-POSTPROC_HASH := 3b7053f46dbfe4662063345245cb00b6acbbe969
-POSTPROC_VERSION := $(POSTPROC_HASH)
-
-POSTPROCCONF = \
-	--cc="$(CC)" \
-	--disable-debug \
-	--enable-gpl \
-	--enable-postproc
-
-DEPS_postproc = ffmpeg
-
-ifdef ENABLE_SMALL
-POSTPROCCONF += --enable-small
-endif
-ifdef HAVE_ARMV7A
-POSTPROCCONF += --enable-thumb
-endif
-
-ifdef HAVE_CROSS_COMPILE
-POSTPROCCONF += --enable-cross-compile
-ifndef HAVE_DARWIN_OS
-POSTPROCCONF += --cross-prefix=$(HOST)-
-endif
-endif
-
-# ARM stuff
-ifeq ($(ARCH),arm)
-POSTPROCCONF += --disable-runtime-cpudetect --arch=arm
-ifdef HAVE_ARMV7A
-POSTPROCCONF += --cpu=cortex-a8
-endif
-ifdef HAVE_NEON
-POSTPROCCONF += --enable-neon
-endif
-endif
-
-# ARM64 stuff
-ifeq ($(ARCH),aarch64)
-POSTPROCCONF += --arch=aarch64
-endif
-
-# MIPS stuff
-ifeq ($(ARCH),mipsel)
-POSTPROCCONF += --arch=mips
-endif
-ifeq ($(ARCH),mips64el)
-POSTPROCCONF += --arch=mips64
-endif
-
-# RISC-V stuff
-ifneq ($(findstring $(ARCH),riscv32 riscv64),)
-POSTPROCCONF += --arch=riscv
-endif
-
-# x86 stuff
-ifeq ($(ARCH),i386)
-POSTPROCCONF += --arch=x86
-endif
-
-# x86_64 stuff
-ifeq ($(ARCH),x86_64)
-POSTPROCCONF += --arch=x64_64
-endif
-
-# Darwin
-ifdef HAVE_DARWIN_OS
-POSTPROCCONF += --arch=$(ARCH) --target-os=darwin
-endif
-ifeq ($(ARCH),x86_64)
-POSTPROCCONF += --cpu=core2
-endif
-ifdef HAVE_IOS
-ifeq ($(ARCH),arm)
-POSTPROCCONF += --as="$(AS)"
-endif
-endif
-
-# Linux
-ifdef HAVE_LINUX
-POSTPROCCONF += --target-os=linux --enable-pic
-endif
-
-ifdef HAVE_ANDROID
-ifeq ($(ANDROID_ABI), x86)
-POSTPROCCONF +=  --disable-mmx --disable-mmxext
-endif
-endif
-
-# Windows
-ifdef HAVE_WIN32
-POSTPROCCONF += --target-os=mingw32
-ifeq ($(ARCH),x86_64)
-POSTPROCCONF += --cpu=athlon64 --arch=x86_64
-endif
-ifeq ($(ARCH),i386)
-POSTPROCCONF+= --cpu=i686 --arch=x86
-endif
-else
-POSTPROCCONF += --enable-pthreads
-endif
-
-ifdef HAVE_SOLARIS
-POSTPROCCONF += --enable-pic
-endif
-
-# Build
-
-ifdef GPL
-PKGS += postproc
-endif
-ifeq ($(call need_pkg,"libpostproc"),)
-PKGS_FOUND += postproc
-endif
-
-$(TARBALLS)/postproc-$(POSTPROC_VERSION).tar.xz:
-	$(call download_git,$(POSTPROC_URL),,$(POSTPROC_HASH))
-
-.sum-postproc: $(TARBALLS)/postproc-$(POSTPROC_VERSION).tar.xz
-	$(call check_githash,$(POSTPROC_HASH))
-	touch $@
-
-postproc: postproc-$(POSTPROC_VERSION).tar.xz .sum-postproc
-	$(UNPACK)
-	$(APPLY) $(SRC)/postproc/win-pic.patch
-	$(MOVE)
-
-.postproc: postproc
-	$(REQUIRE_GPL)
-	cd $< && $(HOSTVARS) ./configure \
-		--extra-cflags="$(EXTRA_CFLAGS)"  \
-		--extra-ldflags="$(LDFLAGS)" $(POSTPROCCONF) \
-		--prefix="$(PREFIX)" --enable-static --disable-shared
-	cd $< && $(MAKE) install-libs install-headers
-	touch $@


=====================================
contrib/src/postproc/win-pic.patch deleted
=====================================
@@ -1,20 +0,0 @@
-diff -urN postproc-orig/configure postproc/configure
---- postproc-orig/configure	2012-08-21 23:27:39.000000000 +0300
-+++ postproc/configure	2018-02-26 10:36:48.956225615 +0200
-@@ -2419,8 +2419,14 @@
- enable_pic() {
-     enable pic
-     add_cppflags -DPIC
--    add_cflags   -fPIC
--    add_asflags  -fPIC
-+    case "$target_os" in
-+    mingw*|cygwin*|win*)
-+        ;;
-+    *)
-+        add_cflags   -fPIC
-+        add_asflags  -fPIC
-+        ;;
-+    esac
- }
- 
- enabled pic && enable_pic


=====================================
modules/hw/d3d11/d3d11_deinterlace.c
=====================================
@@ -307,7 +307,7 @@ static picture_t *NewOutputPicture( filter_t *p_filter )
             fmt.i_width  = dstDesc.Width;
             fmt.i_height = dstDesc.Height;
             if (AllocateTextures(p_filter, &p_filter->p_sys->d3d_dev, cfg,
-                                 &fmt, false, 1, pic->p_sys->texture) != VLC_SUCCESS)
+                                 &fmt, false, false, 1, pic->p_sys->texture) != VLC_SUCCESS)
             {
                 free(pic->p_sys);
                 return NULL;


=====================================
modules/video_chroma/d3d11_fmt.c
=====================================
@@ -599,7 +599,8 @@ const d3d_format_t *FindD3D11Format(vlc_object_t *o,
 
 #undef AllocateTextures
 int AllocateTextures( vlc_object_t *obj, d3d11_device_t *d3d_dev,
-                      const d3d_format_t *cfg, const video_format_t *fmt, bool for_decoder,
+                      const d3d_format_t *cfg, const video_format_t *fmt,
+                      bool for_decoder, bool shared,
                       unsigned pool_size, ID3D11Texture2D *textures[] )
 {
     plane_t planes[PICTURE_PLANE_MAX];
@@ -622,6 +623,8 @@ int AllocateTextures( vlc_object_t *obj, d3d11_device_t *d3d_dev,
         texDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
     }
     texDesc.ArraySize = pool_size;
+    if (shared)
+        texDesc.MiscFlags |= D3D11_RESOURCE_MISC_SHARED | D3D11_RESOURCE_MISC_SHARED_NTHANDLE;
 
     const vlc_chroma_description_t *p_chroma_desc = vlc_fourcc_GetChromaDescription( fmt->i_chroma );
     if( !p_chroma_desc )


=====================================
modules/video_chroma/d3d11_fmt.h
=====================================
@@ -159,8 +159,9 @@ static inline const d3d_format_t *D3D11_RenderFormat(DXGI_FORMAT opaque, bool gp
 }
 
 int AllocateTextures(vlc_object_t *, d3d11_device_t *, const d3d_format_t *,
-                     const video_format_t *, bool, unsigned pool_size, ID3D11Texture2D *textures[]);
-#define AllocateTextures(a,b,c,d,e,f,g)  AllocateTextures(VLC_OBJECT(a),b,c,d,e,f,g)
+                     const video_format_t *, bool decoder, bool shared,
+                     unsigned pool_size, ID3D11Texture2D *textures[]);
+#define AllocateTextures(a,b,c,d,e,f,g,h)  AllocateTextures(VLC_OBJECT(a),b,c,d,e,f,g,h)
 
 #ifndef NDEBUG
 void D3D11_LogProcessorSupport(vlc_object_t*, ID3D11VideoProcessorEnumerator*);


=====================================
modules/video_output/win32/direct3d11.c
=====================================
@@ -39,7 +39,7 @@
 
 #define COBJMACROS
 #include <initguid.h>
-#include <d3d11.h>
+#include <d3d11_1.h>
 #ifdef HAVE_DXGI1_6_H
 # include <dxgi1_6.h>
 #else
@@ -155,6 +155,7 @@ struct vout_display_sys_t
 #endif
 
     picture_sys_t            stagingSys;
+    HANDLE                   sharedHandle;
 
     ID3D11RenderTargetView   *d3drenderTargetView;
     ID3D11DepthStencilView   *d3ddepthStencilView;
@@ -360,6 +361,7 @@ static int Open(vlc_object_t *object)
     }
     else
         vd->info.subpicture_chromas = NULL;
+    sys->sharedHandle = INVALID_HANDLE_VALUE;
 
     vd->pool    = Pool;
     vd->prepare = Prepare;
@@ -435,7 +437,7 @@ static picture_pool_t *Pool(vout_display_t *vd, unsigned pool_size)
             /* only provide enough for the filters, we can still do direct rendering */
             slices = __MIN(slices, 6);
 
-        if (AllocateTextures(vd, &sys->d3d_dev, sys->pool_d3dfmt, &sys->pool_fmt, true, slices, textures))
+        if (AllocateTextures(vd, &sys->d3d_dev, sys->pool_d3dfmt, &sys->pool_fmt, true, false, slices, textures))
             goto error;
 
         pictures = calloc(pool_size, sizeof(*pictures));
@@ -1009,6 +1011,51 @@ static void CallUpdateRects(vout_display_t *vd)
     }
 }
 
+static int CreateStaging(vout_display_t *vd, ID3D11DeviceContext *shared_context)
+{
+    vout_display_sys_t *sys = vd->sys;
+    ID3D11Texture2D *textures[D3D11_MAX_SHADER_VIEW] = {0};
+    video_format_t surface_fmt = sys->pool_fmt;
+    surface_fmt.i_width  = sys->picQuad.i_width;
+    surface_fmt.i_height = sys->picQuad.i_height;
+
+    if (AllocateTextures(vd, &sys->d3d_dev, sys->picQuad.formatInfo, &surface_fmt,
+                         false, shared_context != NULL, 1, textures))
+    {
+        msg_Err(vd, "Failed to allocate the staging texture");
+        return VLC_EGENERIC;
+    }
+
+    sys->picQuad.resourceCount = DxgiResourceCount(sys->picQuad.formatInfo);
+    if (D3D11_AllocateShaderView(vd, sys->d3d_dev.d3ddevice, sys->picQuad.formatInfo,
+                                 textures, 0, sys->stagingSys.resourceView))
+    {
+        msg_Err(vd, "Failed to allocate the staging shader view");
+        return VLC_EGENERIC;
+    }
+
+    for (unsigned plane = 0; plane < D3D11_MAX_SHADER_VIEW; plane++)
+        sys->stagingSys.texture[plane] = textures[plane];
+
+
+    if (shared_context)
+    {
+        assert(sys->sharedHandle == INVALID_HANDLE_VALUE);
+        HRESULT hr;
+        IDXGIResource1* sharedResource = NULL;
+        ID3D11Resource_QueryInterface(sys->stagingSys.resource[0], &IID_IDXGIResource1, (void**)&sharedResource);
+        hr = IDXGIResource1_CreateSharedHandle(sharedResource, NULL, DXGI_SHARED_RESOURCE_READ|DXGI_SHARED_RESOURCE_WRITE, NULL, &sys->sharedHandle);
+        IDXGIResource1_Release(sharedResource);
+        if (FAILED(hr))
+        {
+            msg_Err(vd, "Failed to get the shared handle");
+            return VLC_EGENERIC;
+        }
+    }
+
+    return VLC_SUCCESS;
+}
+
 static void Prepare(vout_display_t *vd, picture_t *picture, subpicture_t *subpicture)
 {
     vout_display_sys_t *sys = vd->sys;
@@ -1073,6 +1120,45 @@ static void Prepare(vout_display_t *vd, picture_t *picture, subpicture_t *subpic
         D3D11_TEXTURE2D_DESC srcDesc;
         ID3D11Texture2D_GetDesc(p_sys->texture[KNOWN_DXGI_INDEX], &srcDesc);
 
+        ID3D11DeviceContext* copyContext = sys->d3d_dev.d3dcontext;
+        ID3D11Resource* copyResource = p_sys->resource[KNOWN_DXGI_INDEX];
+
+        if (is_d3d11_opaque(picture->format.i_chroma) && sys->d3d_dev.d3dcontext != p_sys->context)
+        {
+            if (sys->stagingSys.texture[0] == NULL)
+            {
+                sys->legacy_shader = true; // force using staging
+                int ret = CreateStaging(vd, p_sys->context);
+                if (unlikely(ret != VLC_SUCCESS))
+                {
+                    if (is_d3d11_opaque(picture->format.i_chroma))
+                        d3d11_device_unlock( &sys->d3d_dev );
+                    return;
+                }
+            }
+
+            HRESULT hr;
+
+            ID3D11Device *psysDev;
+            ID3D11Device1 *d3d11VLC1;
+            ID3D11DeviceContext_GetDevice(p_sys->context, &psysDev);
+            hr = ID3D11Device_QueryInterface(psysDev, &IID_ID3D11Device1, (void**)&d3d11VLC1);
+            if (SUCCEEDED(hr))
+            {
+                hr = ID3D11Device1_OpenSharedResource1(d3d11VLC1, sys->sharedHandle, &IID_ID3D11Resource, (void**)&copyResource);
+                ID3D11Device1_Release(d3d11VLC1);
+            }
+            ID3D11Device_Release(psysDev);
+            if (FAILED(hr))
+            {
+                if (is_d3d11_opaque(picture->format.i_chroma))
+                    d3d11_device_unlock( &sys->d3d_dev );
+                return;
+            }
+
+            copyContext = p_sys->context;
+        }
+
         if (!is_d3d11_opaque(picture->format.i_chroma) || sys->legacy_shader) {
             D3D11_TEXTURE2D_DESC texDesc;
             if (!is_d3d11_opaque(picture->format.i_chroma))
@@ -1085,8 +1171,8 @@ static void Prepare(vout_display_t *vd, picture_t *picture, subpicture_t *subpic
                 .right = __MIN(srcDesc.Width, texDesc.Width),
                 .back = 1,
             };
-            ID3D11DeviceContext_CopySubresourceRegion(sys->d3d_dev.d3dcontext,
-                                                      sys->stagingSys.resource[KNOWN_DXGI_INDEX],
+            ID3D11DeviceContext_CopySubresourceRegion(copyContext,
+                                                      copyResource,
                                                       0, 0, 0, 0,
                                                       p_sys->resource[KNOWN_DXGI_INDEX],
                                                       p_sys->slice_index, &box);
@@ -1113,6 +1199,10 @@ static void Prepare(vout_display_t *vd, picture_t *picture, subpicture_t *subpic
                 UpdateSize(vd);
             }
         }
+
+        if (copyResource != p_sys->resource[KNOWN_DXGI_INDEX])
+            // shared resource
+            ID3D11Resource_Release(copyResource);
     }
 
     if (subpicture) {
@@ -1915,27 +2005,9 @@ static int Direct3D11CreateFormatResources(vout_display_t *vd, const video_forma
     if (!is_d3d11_opaque(fmt->i_chroma) || sys->legacy_shader)
     {
         /* we need a staging texture */
-        ID3D11Texture2D *textures[D3D11_MAX_SHADER_VIEW] = {0};
-        video_format_t surface_fmt = sys->pool_fmt;
-        surface_fmt.i_width  = sys->picQuad.i_width;
-        surface_fmt.i_height = sys->picQuad.i_height;
-
-        if (AllocateTextures(vd, &sys->d3d_dev, sys->picQuad.formatInfo, &surface_fmt, false, 1, textures))
-        {
-            msg_Err(vd, "Failed to allocate the staging texture");
-            return VLC_EGENERIC;
-        }
-
-        sys->picQuad.resourceCount = DxgiResourceCount(sys->picQuad.formatInfo);
-        if (D3D11_AllocateShaderView(vd, sys->d3d_dev.d3ddevice, sys->picQuad.formatInfo,
-                                     textures, 0, sys->stagingSys.resourceView))
-        {
-            msg_Err(vd, "Failed to allocate the staging shader view");
-            return VLC_EGENERIC;
-        }
-
-        for (unsigned plane = 0; plane < D3D11_MAX_SHADER_VIEW; plane++)
-            sys->stagingSys.texture[plane] = textures[plane];
+        int ret = CreateStaging(vd, NULL);
+        if (ret != VLC_SUCCESS)
+            return ret;
     }
 #endif
 
@@ -2132,6 +2204,8 @@ static void Direct3D11DestroyResources(vout_display_t *vd)
     sys->d3dregion_count = 0;
 
     ReleasePictureSys(&sys->stagingSys);
+    CloseHandle(sys->sharedHandle);
+    sys->sharedHandle = INVALID_HANDLE_VALUE;
 
     if (sys->tonemapProc != NULL)
     {
@@ -2263,7 +2337,7 @@ static int Direct3D11MapSubpicture(vout_display_t *vd, int *subpicture_region_co
             if (unlikely(d3dquad==NULL)) {
                 continue;
             }
-            if (AllocateTextures(vd, &sys->d3d_dev, sys->d3dregion_format, &r->p_picture->format, false, 1, d3dquad->picSys.texture)) {
+            if (AllocateTextures(vd, &sys->d3d_dev, sys->d3dregion_format, &r->p_picture->format, false, false, 1, d3dquad->picSys.texture)) {
                 msg_Err(vd, "Failed to allocate %dx%d texture for OSD",
                         r->fmt.i_visible_width, r->fmt.i_visible_height);
                 for (int j=0; j<D3D11_MAX_SHADER_VIEW; j++)



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/74de0fda0bec6507ba1e305f7943150140f9dc44...3e1083e7b5510aa9ca955793d01e226a673880e0

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/74de0fda0bec6507ba1e305f7943150140f9dc44...3e1083e7b5510aa9ca955793d01e226a673880e0
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance


More information about the vlc-commits mailing list