Hugo Beauzée-Luyssen pushed to branch 3.0.x at VideoLAN / VLC
Commits: 2e23dacc by Johannes Kauffmann at 2021-10-24T14:08:56+00:00 contrib: mfx: fix linking with x86 DLL on UWP intel_gfx_api-x86.dll exports InitialiseMediaSession and DisposeMediaSession, but libqsv_plugin.dll imports InitialiseMediaSession@12 and DisposeMediaSession@4. The name decorations are caused by the APIENTRY modifier, resulting in libqsv_plugin.dll not being able to load intel_gfx_api-x86.dll. It fails with an Entry Point Not Found error. On debug mode UWP, this will crash the CoreCLR. Should fix https://code.videolan.org/videolan/LibVLCSharp/-/issues/374. Backport from upstream mfx_dispatch, fixed since https://github.com/lu-zero/mfx_dispatch/commit/7e4d221c36c630c1250b23a5dfa15657bc04c10c. (cherry picked from commit 18a7251119c712a0b19a73d197427db8565cdb76) Signed-off-by: Steve Lhomme <[email protected]> - - - - - 3 changed files: - + contrib/src/mfx/0002-Fix-linking-statically-with-intel_gfx_api-x86.dll.patch - + contrib/src/mfx/0003-Don-t-change-the-calling-convention-of-x86-gfx-api.patch - contrib/src/mfx/rules.mak Changes: ===================================== contrib/src/mfx/0002-Fix-linking-statically-with-intel_gfx_api-x86.dll.patch ===================================== @@ -0,0 +1,39 @@ +From d16955c72e423954145fed985ad1fbda0e5ca977 Mon Sep 17 00:00:00 2001 +From: Johannes Kauffmann <[email protected]> +Date: Fri, 15 Oct 2021 21:53:51 +0200 +Subject: [PATCH 2/3] Fix linking statically with intel_gfx_api-x86.dll + +--- + src/intel_api_factory.h | 4 ++-- + src/intel_gfx_api-x86.def | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/intel_api_factory.h b/src/intel_api_factory.h +index 0be5dcb..29e9773 100644 +--- a/src/intel_api_factory.h ++++ b/src/intel_api_factory.h +@@ -25,8 +25,8 @@ extern "C" + { + #endif /* __cplusplus */ + +-HRESULT APIENTRY InitialiseMediaSession(_Out_ HANDLE* handle, _In_ LPVOID lpParam, _Reserved_ LPVOID lpReserved); +-HRESULT APIENTRY DisposeMediaSession(_In_ const HANDLE handle); ++HRESULT InitialiseMediaSession(_Out_ HANDLE* handle, _In_ LPVOID lpParam, _Reserved_ LPVOID lpReserved); ++HRESULT DisposeMediaSession(_In_ const HANDLE handle); + + #ifdef __cplusplus + } +diff --git a/src/intel_gfx_api-x86.def b/src/intel_gfx_api-x86.def +index 19d0727..c9c15e6 100644 +--- a/src/intel_gfx_api-x86.def ++++ b/src/intel_gfx_api-x86.def +@@ -1,4 +1,4 @@ + LIBRARY intel_gfx_api-x86.dll + EXPORTS +-InitialiseMediaSession@12 +-DisposeMediaSession@4 ++InitialiseMediaSession ++DisposeMediaSession +-- +2.27.0.windows.1 + ===================================== contrib/src/mfx/0003-Don-t-change-the-calling-convention-of-x86-gfx-api.patch ===================================== @@ -0,0 +1,35 @@ +From 0d15135fe441acfdbbb840abea53cf696cd21470 Mon Sep 17 00:00:00 2001 +From: Johannes Kauffmann <[email protected]> +Date: Tue, 19 Oct 2021 21:03:39 +0200 +Subject: [PATCH 3/3] Don't change the calling convention of x86 gfx api + +Upstream MediaSDK, since ae85eb2, uses __cdecl, which corresponds to +WINAPIV in mingw64 and MSDK. The removal of APIENTRY (since f45c0c2) +changes the calling convention from __stdcall. + +The removal of the '@' name decorations (also gone since f45c0c2) +remains. + +Co-authored-by: Steve Lhomme <[email protected]> +--- + src/intel_api_factory.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/intel_api_factory.h b/src/intel_api_factory.h +index 29e9773..44ee7eb 100644 +--- a/src/intel_api_factory.h ++++ b/src/intel_api_factory.h +@@ -25,8 +25,8 @@ extern "C" + { + #endif /* __cplusplus */ + +-HRESULT InitialiseMediaSession(_Out_ HANDLE* handle, _In_ LPVOID lpParam, _Reserved_ LPVOID lpReserved); +-HRESULT DisposeMediaSession(_In_ const HANDLE handle); ++HRESULT WINAPIV InitialiseMediaSession(_Out_ HANDLE* handle, _In_ LPVOID lpParam, _Reserved_ LPVOID lpReserved); ++HRESULT WINAPIV DisposeMediaSession(_In_ const HANDLE handle); + + #ifdef __cplusplus + } +-- +2.27.0.windows.1 + ===================================== contrib/src/mfx/rules.mak ===================================== @@ -30,6 +30,8 @@ $(TARBALLS)/mfx-$(MFX_GITHASH).tar.xz: mfx: mfx-$(MFX_GITHASH).tar.xz .sum-mfx $(UNPACK) $(APPLY) $(SRC)/mfx/0001-detect-winstore-builds-with-a-regular-mingw32-toolch.patch + $(APPLY) $(SRC)/mfx/0002-Fix-linking-statically-with-intel_gfx_api-x86.dll.patch + $(APPLY) $(SRC)/mfx/0003-Don-t-change-the-calling-convention-of-x86-gfx-api.patch cd $(UNPACK_DIR) && autoreconf -ivf $(MOVE) View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/2e23dacc89d1e72ed297a1ca98b2a9bc0bc0c5a0 -- View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/2e23dacc89d1e72ed297a1ca98b2a9bc0bc0c5a0 You're receiving this email because of your account on code.videolan.org.
_______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
