From 5d491cdb9766a22944f34efdd79f1bd7d6be5471 Mon Sep 17 00:00:00 2001
From: Steve Lhomme <robux4@ycbcr.xyz>
Date: Mon, 7 Apr 2025 14:25:17 +0200
Subject: [PATCH 1/7] contrib: vulkan-loader: remove bogus pkg_static call

The build folder is no longer build but vlc_build.
The proper pkg_static call is done during unpaking.
---
 contrib/src/vulkan-loader/rules.mak | 2 --
 1 file changed, 2 deletions(-)

diff --git a/contrib/src/vulkan-loader/rules.mak b/contrib/src/vulkan-loader/rules.mak
index f922db99429d..5852f006f738 100644
--- a/contrib/src/vulkan-loader/rules.mak
+++ b/contrib/src/vulkan-loader/rules.mak
@@ -65,8 +65,6 @@ ifdef HAVE_WIN32
 # CMake will generate a .pc file with -lvulkan even if the static library
 # generated is libvulkan.dll.a. It also forget to link with libcfgmgr32.
 	sed -i.orig -e "s,-lvulkan,-lvulkan.dll -lcfgmgr32," $(BUILD_DIR)/loader/vulkan.pc
-else
-	$(call pkg_static,"build/loader/vulkan.pc")
 endif
 
 	+$(CMAKEBUILD)
-- 
GitLab


From 98211b484f7e9cd48c08bdc2987889a2d679ee02 Mon Sep 17 00:00:00 2001
From: Steve Lhomme <robux4@ycbcr.xyz>
Date: Mon, 7 Apr 2025 12:05:14 +0200
Subject: [PATCH 2/7] contrib: vulkan-headers/loader: update to 1.3.275

To match the Android NDK27.
---
 contrib/src/vulkan-headers/SHA512SUMS         |  2 +-
 contrib/src/vulkan-headers/rules.mak          |  2 +-
 ...-libunwind-usage-when-static-linking.patch | 38 ++++++---
 .../002-proper-def-files-for-32bit.patch      | 85 +++----------------
 .../004-disable-suffix-in-static-lib.patch    | 25 ------
 contrib/src/vulkan-loader/SHA512SUMS          |  2 +-
 contrib/src/vulkan-loader/libvulkan-32.def    | 37 ++++++++
 contrib/src/vulkan-loader/rules.mak           |  7 +-
 8 files changed, 82 insertions(+), 116 deletions(-)
 delete mode 100644 contrib/src/vulkan-loader/004-disable-suffix-in-static-lib.patch

diff --git a/contrib/src/vulkan-headers/SHA512SUMS b/contrib/src/vulkan-headers/SHA512SUMS
index 63b20b498e5c..efaa157ea762 100644
--- a/contrib/src/vulkan-headers/SHA512SUMS
+++ b/contrib/src/vulkan-headers/SHA512SUMS
@@ -1 +1 @@
-b6f4459a55a7a0f83a17f9155cf201f4e832bde45a127efbfb0e1e5805fb813249e8ccb00b81285ff26fffed1fe0f33b14cdf41515c2b649204de54284e7bc60  Vulkan-Headers-1.3.219.tar.gz
+adebfc61501e67367d366a8b17833d064f925ada6480641ef3c128bbda3852087e02d67a09e90b2c188a47494b7e47a87db0d039465858e765e89dc6c2b370d7  Vulkan-Headers-1.3.275.tar.gz
diff --git a/contrib/src/vulkan-headers/rules.mak b/contrib/src/vulkan-headers/rules.mak
index 3ae593c28ad0..d39b867846ab 100644
--- a/contrib/src/vulkan-headers/rules.mak
+++ b/contrib/src/vulkan-headers/rules.mak
@@ -1,4 +1,4 @@
-VULKAN_HEADERS_VERSION := 1.3.219
+VULKAN_HEADERS_VERSION := 1.3.275
 VULKAN_HEADERS_URL := $(GITHUB)/KhronosGroup/Vulkan-Headers/archive/v$(VULKAN_HEADERS_VERSION).tar.gz
 
 DEPS_vulkan-headers =
diff --git a/contrib/src/vulkan-loader/0003-fix-libunwind-usage-when-static-linking.patch b/contrib/src/vulkan-loader/0003-fix-libunwind-usage-when-static-linking.patch
index 6dcc4a0c808d..8a4d6daeeda6 100644
--- a/contrib/src/vulkan-loader/0003-fix-libunwind-usage-when-static-linking.patch
+++ b/contrib/src/vulkan-loader/0003-fix-libunwind-usage-when-static-linking.patch
@@ -1,24 +1,25 @@
-From c2b51b82c5dc3e62dc6bc9778261555a2ebdd67d Mon Sep 17 00:00:00 2001
+From ab6edca6a93be813f52108489a4a690e44bb8dab Mon Sep 17 00:00:00 2001
 From: Steve Lhomme <robux4@ycbcr.xyz>
 Date: Thu, 17 Oct 2024 11:56:18 +0200
-Subject: [PATCH 3/3] fix libunwind usage when static linking
+Subject: [PATCH 2/2] fix libunwind usage when static linking
 
 It ends up with
 - set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "atomic;m;-l:libunwind.a;dl;c;-l:libunwind.a;dl")
 - set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "windowsapp;windowsapp;ucrt;windowsapp;ucrtapp;c++;mingw32;-l:libunwind.a;moldname;mingwex;mingw32;-l:libunwind.a;moldname;mingwex")
 ---
- loader/CMakeLists.txt | 13 ++++++++++++-
- 1 file changed, 12 insertions(+), 1 deletion(-)
+ loader/CMakeLists.txt | 14 ++++++++++++++
+ loader/vulkan.pc.in   |  1 +
+ 2 files changed, 15 insertions(+)
 
 diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt
-index b29c81a8d..cd5a6a441 100644
+index 3d8aa6c62..14ddcf326 100644
 --- a/loader/CMakeLists.txt
 +++ b/loader/CMakeLists.txt
-@@ -335,7 +335,18 @@ include(FindPkgConfig QUIET)
- if(PKG_CONFIG_FOUND)
-     set(VK_API_VERSION "${LOADER_GENERATED_HEADER_VERSION}")
-     foreach(LIB ${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES} ${PLATFORM_LIBS})
--        set(PRIVATE_LIBS "${PRIVATE_LIBS} -l${LIB}")
+@@ -498,6 +498,20 @@ install(FILES "${version_config}" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Vulk
+ # https://gitlab.kitware.com/cmake/cmake/-/issues/22621
+ find_package(PkgConfig)
+ if (PKG_CONFIG_FOUND)
++    foreach(LIB ${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES} ${PLATFORM_LIBS})
 +        if(IS_ABSOLUTE ${LIB} AND EXISTS ${LIB})
 +            set(PRIVATE_LIBS "${PRIVATE_LIBS} ${LIB}")
 +        elseif(${LIB} MATCHES "-l:lib.*.a")
@@ -31,9 +32,20 @@ index b29c81a8d..cd5a6a441 100644
 +        else()
 +            set(PRIVATE_LIBS "${PRIVATE_LIBS} -l${LIB}")
 +        endif()
-     endforeach()
-     if(MSVC)
-         set(VULKAN_LIB_SUFFIX "-1")
++    endforeach()
+     if(WIN32)
+         if(MINGW)
+             set(VULKAN_LIB_SUFFIX "-1.dll")
+diff --git a/loader/vulkan.pc.in b/loader/vulkan.pc.in
+index 6a285f267..ab35414ba 100644
+--- a/loader/vulkan.pc.in
++++ b/loader/vulkan.pc.in
+@@ -7,4 +7,5 @@ Name: Vulkan-Loader
+ Description: Vulkan Loader
+ Version: @VULKAN_LOADER_VERSION@
+ Libs: -L${libdir} -lvulkan@VULKAN_LIB_SUFFIX@
++Libs.private: @PRIVATE_LIBS@
+ Cflags: -I${includedir}
 -- 
 2.45.0.windows.1
 
diff --git a/contrib/src/vulkan-loader/002-proper-def-files-for-32bit.patch b/contrib/src/vulkan-loader/002-proper-def-files-for-32bit.patch
index 5651199dee7b..2cdeea4a262a 100644
--- a/contrib/src/vulkan-loader/002-proper-def-files-for-32bit.patch
+++ b/contrib/src/vulkan-loader/002-proper-def-files-for-32bit.patch
@@ -1,67 +1,29 @@
-From 56ce783d2cad375cb29f19be43b5dda7061ded3c Mon Sep 17 00:00:00 2001
+From 51146078613bf27b7427b1558220ae99204a9692 Mon Sep 17 00:00:00 2001
 From: Alexey Pavlov <alexpux@gmail.com>
 Date: Fri, 8 Nov 2019 07:40:41 +0100
-Subject: [PATCH 1/3] proper def files for 32bit
+Subject: [PATCH 1/2] proper def files for 32bit
 
 ---
- loader/CMakeLists.txt       | 15 +++++++++++++--
- loader/vk_loader_platform.h |  8 +++++++-
- loader/vulkan-1.def         |  2 +-
- 3 files changed, 21 insertions(+), 4 deletions(-)
+ loader/CMakeLists.txt | 8 ++++++++
+ loader/vulkan-1.def   | 2 +-
+ 2 files changed, 9 insertions(+), 1 deletion(-)
 
 diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt
-index d1606f549..0552c5bdd 100644
+index 622937b2a..b4f91db9b 100644
 --- a/loader/CMakeLists.txt
 +++ b/loader/CMakeLists.txt
-@@ -127,7 +127,7 @@ set(ASM_FAILURE_MSG "${ASM_FAILURE_MSG}Note that this may be unsafe, as the C co
- set(ASM_FAILURE_MSG "${ASM_FAILURE_MSG} the stack frame for certain calls. If the compiler does not do this, then unknown device")
- set(ASM_FAILURE_MSG "${ASM_FAILURE_MSG} extensions will suffer from a corrupted stack.")
- if(WIN32)
--    if(MINGW)
-+    if(NOT MINGW)
-         find_program(JWASM_FOUND jwasm)
-         if (JWASM_FOUND)
-             set(CMAKE_ASM_MASM_COMPILER ${JWASM_FOUND})
-@@ -145,7 +145,7 @@ if(WIN32)
-     if (USE_MASM)
-       enable_language(ASM_MASM)
-     endif ()
--    if(CMAKE_ASM_MASM_COMPILER_WORKS OR JWASM_FOUND)
-+    if(MSVC AND CMAKE_ASM_MASM_COMPILER_WORKS OR JWASM_FOUND)
-         if(MINGW)
-             set(CMAKE_ASM_MASM_FLAGS ${CMAKE_ASM_MASM_FLAGS} ${JWASM_FLAGS})
-         elseif(NOT CMAKE_CL_64 AND NOT JWASM_FOUND)
-@@ -161,12 +161,14 @@ if(WIN32)
-         target_link_libraries(loader-unknown-chain Vulkan::Headers)
-         target_include_directories(loader-unknown-chain PUBLIC $<TARGET_PROPERTY:loader_asm_gen_files,BINARY_DIR>)
-         add_dependencies(loader-unknown-chain loader_asm_gen_files)
-+        set_target_properties(loader-unknown-chain PROPERTIES DEFINE_SYMBOL "VK_BUILDING_DLL")
-     else()
-         message(WARNING "Could not find working MASM assebler\n${ASM_FAILURE_MSG}")
-         add_custom_target(loader_asm_gen_files)
-         add_library(loader-unknown-chain OBJECT unknown_ext_chain.c)
-         target_link_libraries(loader-unknown-chain loader_specific_options)
-         set_target_properties(loader-unknown-chain PROPERTIES CMAKE_C_FLAGS_DEBUG "${MODIFIED_C_FLAGS_DEBUG}")
-+        set_target_properties(loader-unknown-chain PROPERTIES DEFINE_SYMBOL "VK_BUILDING_DLL")
-     endif()
- elseif(APPLE)
-     # For MacOS, use the C code and force the compiler's tail-call optimization instead of using assembly code.
-@@ -217,6 +219,7 @@ endif()
- 
- if(WIN32)
-     add_library(loader-opt STATIC ${OPT_LOADER_SRCS})
-+    set_target_properties(loader-opt PROPERTIES DEFINE_SYMBOL "VK_BUILDING_DLL")
-     target_link_libraries(loader-opt PUBLIC loader_specific_options)
-     add_dependencies(loader-opt loader_asm_gen_files)
-     set_target_properties(loader-opt PROPERTIES CMAKE_C_FLAGS_DEBUG "${MODIFIED_C_FLAGS_DEBUG}")
-@@ -237,9 +240,17 @@ if(WIN32)
+@@ -337,6 +337,7 @@ if(WIN32)
      # when adding the suffix the import and runtime library names must be consistent
-     # mingw: libvulkan-1.dll.a / libvulkan-1.dll
+     # mingw: libvulkan-1.dll.a / vulkan-1.dll
      # msvc: vulkan-1.lib / vulkan-1.dll
 +    if(MSVC)
      set_target_properties(vulkan
                            PROPERTIES
-                           OUTPUT_NAME vulkan-1)
+                           OUTPUT_NAME ${API_TYPE}-1)
+@@ -346,6 +347,13 @@ if(WIN32)
+                               PROPERTIES
+                               PREFIX "")
+     endif()
 +    else()
 +    set_target_properties(vulkan
 +                          PROPERTIES
@@ -71,26 +33,7 @@ index d1606f549..0552c5bdd 100644
 +    endif()
  
      if(MSVC AND ENABLE_WIN10_ONECORE)
-         target_link_libraries(vulkan OneCoreUAP.lib LIBCMT.LIB LIBCMTD.LIB LIBVCRUNTIME.LIB LIBUCRT.LIB)
-diff --git a/loader/vk_loader_platform.h b/loader/vk_loader_platform.h
-index 594a24986..6bbe6798b 100644
---- a/loader/vk_loader_platform.h
-+++ b/loader/vk_loader_platform.h
-@@ -77,7 +77,13 @@
- #include "vk_layer_dispatch_table.h"
- #include "vk_loader_extensions.h"
- 
--#if defined(__GNUC__) && __GNUC__ >= 4
-+#if defined(_WIN32)
-+#  if defined (VK_BUILDING_DLL)
-+#    define LOADER_EXPORT __declspec(dllexport)
-+#  else
-+#    define LOADER_EXPORT
-+#  endif
-+#elif defined(__GNUC__) && __GNUC__ >= 4
- #define LOADER_EXPORT __attribute__((visibility("default")))
- #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
- #define LOADER_EXPORT __attribute__((visibility("default")))
+         target_link_libraries(vulkan PRIVATE OneCoreUAP.lib LIBCMT.LIB LIBCMTD.LIB LIBVCRUNTIME.LIB LIBUCRT.LIB)
 diff --git a/loader/vulkan-1.def b/loader/vulkan-1.def
 index f1aab7880..0b8a68ff8 100644
 --- a/loader/vulkan-1.def
diff --git a/contrib/src/vulkan-loader/004-disable-suffix-in-static-lib.patch b/contrib/src/vulkan-loader/004-disable-suffix-in-static-lib.patch
deleted file mode 100644
index 2737bf45de99..000000000000
--- a/contrib/src/vulkan-loader/004-disable-suffix-in-static-lib.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From e9e54996189115fd4868cc7be55e2390419e0c57 Mon Sep 17 00:00:00 2001
-From: Biswapriyo Nath <nathbappai@gmail.com>
-Date: Sat, 22 Jan 2022 09:51:26 +0100
-Subject: [PATCH 2/3] disable suffix in static lib
-
----
- loader/CMakeLists.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt
-index 0552c5bdd..98da79ab8 100644
---- a/loader/CMakeLists.txt
-+++ b/loader/CMakeLists.txt
-@@ -337,7 +337,7 @@ if(PKG_CONFIG_FOUND)
-     foreach(LIB ${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES} ${PLATFORM_LIBS})
-         set(PRIVATE_LIBS "${PRIVATE_LIBS} -l${LIB}")
-     endforeach()
--    if(WIN32)
-+    if(MSVC)
-         set(VULKAN_LIB_SUFFIX "-1")
-         # Set libdir path as in cmake's FindVulkan.cmake
-         # https://github.com/KhronosGroup/Vulkan-Loader/issues/668
--- 
-2.45.0.windows.1
-
diff --git a/contrib/src/vulkan-loader/SHA512SUMS b/contrib/src/vulkan-loader/SHA512SUMS
index 4d0d4e41a722..7a4cc4cdd82f 100644
--- a/contrib/src/vulkan-loader/SHA512SUMS
+++ b/contrib/src/vulkan-loader/SHA512SUMS
@@ -1 +1 @@
-b4c9716a0cb3d6748f69b91735e43a5fe51599f44c21f9c4d90e69daa05bddcfd354978e53e95d64cb6a6bcca640c48974d61893590ab443b230294d4668f245  Vulkan-Loader-1.3.211.tar.gz
+6345b57c37b9fcb2c1dd10c8184bf4121fbee660adc7b7c58d3f4bf5c07ba08ed006ac4eaecc7ce6e87ed27804b7970b04ee3ec8c841e9f0de81d0bd7fc53327  Vulkan-Loader-1.3.275.tar.gz
diff --git a/contrib/src/vulkan-loader/libvulkan-32.def b/contrib/src/vulkan-loader/libvulkan-32.def
index eb82ac53ebed..0451f6a01cc3 100644
--- a/contrib/src/vulkan-loader/libvulkan-32.def
+++ b/contrib/src/vulkan-loader/libvulkan-32.def
@@ -18,17 +18,24 @@ vkBindImageMemory@28
 vkCmdBeginQuery@20
 vkCmdBeginRenderPass2@12
 vkCmdBeginRenderPass@12
+vkCmdBeginRendering@8
 vkCmdBindDescriptorSets@36
 vkCmdBindIndexBuffer@24
 vkCmdBindPipeline@16
+vkCmdBindVertexBuffers2@28
 vkCmdBindVertexBuffers@20
+vkCmdBlitImage2@8
 vkCmdBlitImage@40
 vkCmdClearAttachments@20
 vkCmdClearColorImage@28
 vkCmdClearDepthStencilImage@28
+vkCmdCopyBuffer2@8
 vkCmdCopyBuffer@28
+vkCmdCopyBufferToImage2@8
 vkCmdCopyBufferToImage@32
+vkCmdCopyImage2@8
 vkCmdCopyImage@36
+vkCmdCopyImageToBuffer2@8
 vkCmdCopyImageToBuffer@32
 vkCmdCopyQueryPoolResults@48
 vkCmdDispatch@16
@@ -43,28 +50,49 @@ vkCmdDrawIndirectCount@44
 vkCmdEndQuery@16
 vkCmdEndRenderPass2@8
 vkCmdEndRenderPass@4
+vkCmdEndRendering@4
 vkCmdExecuteCommands@12
 vkCmdFillBuffer@32
 vkCmdNextSubpass2@12
 vkCmdNextSubpass@8
+vkCmdPipelineBarrier2@8
 vkCmdPipelineBarrier@40
 vkCmdPushConstants@28
+vkCmdResetEvent2@20
 vkCmdResetEvent@16
 vkCmdResetQueryPool@20
+vkCmdResolveImage2@8
 vkCmdResolveImage@36
 vkCmdSetBlendConstants@8
+vkCmdSetCullMode@8
 vkCmdSetDepthBias@16
+vkCmdSetDepthBiasEnable@8
 vkCmdSetDepthBounds@12
+vkCmdSetDepthBoundsTestEnable@8
+vkCmdSetDepthCompareOp@8
+vkCmdSetDepthTestEnable@8
+vkCmdSetDepthWriteEnable@8
 vkCmdSetDeviceMask@8
+vkCmdSetEvent2@16
 vkCmdSetEvent@16
+vkCmdSetFrontFace@8
 vkCmdSetLineWidth@8
+vkCmdSetPrimitiveRestartEnable@8
+vkCmdSetPrimitiveTopology@8
+vkCmdSetRasterizerDiscardEnable@8
 vkCmdSetScissor@16
+vkCmdSetScissorWithCount@12
 vkCmdSetStencilCompareMask@12
+vkCmdSetStencilOp@24
 vkCmdSetStencilReference@12
+vkCmdSetStencilTestEnable@8
 vkCmdSetStencilWriteMask@12
 vkCmdSetViewport@16
+vkCmdSetViewportWithCount@12
 vkCmdUpdateBuffer@32
+vkCmdWaitEvents2@16
 vkCmdWaitEvents@44
+vkCmdWriteTimestamp2@24
 vkCmdWriteTimestamp@20
 vkCreateBuffer@16
 vkCreateBufferView@16
@@ -86,6 +114,7 @@ vkCreateImageView@16
 vkCreateInstance@12
 vkCreatePipelineCache@16
 vkCreatePipelineLayout@16
+vkCreatePrivateDataSlot@16
 vkCreateQueryPool@16
 vkCreateRenderPass2@16
 vkCreateRenderPass@16
@@ -112,6 +141,7 @@ vkDestroyInstance@8
 vkDestroyPipeline@16
 vkDestroyPipelineCache@16
 vkDestroyPipelineLayout@16
+vkDestroyPrivateDataSlot@16
 vkDestroyQueryPool@16
 vkDestroyRenderPass@16
 vkDestroySampler@16
@@ -138,9 +168,12 @@ vkGetBufferMemoryRequirements2@12
 vkGetBufferMemoryRequirements@16
 vkGetBufferOpaqueCaptureAddress@8
 vkGetDescriptorSetLayoutSupport@12
+vkGetDeviceBufferMemoryRequirements@12
 vkGetDeviceGroupPeerMemoryFeatures@20
 vkGetDeviceGroupPresentCapabilitiesKHR@8
 vkGetDeviceGroupSurfacePresentModesKHR@16
+vkGetDeviceImageMemoryRequirements@12
+vkGetDeviceImageSparseMemoryRequirements@16
 vkGetDeviceMemoryCommitment@16
 vkGetDeviceMemoryOpaqueCaptureAddress@8
 vkGetDeviceProcAddr@8
@@ -187,8 +220,10 @@ vkGetPhysicalDeviceSurfaceFormats2KHR@16
 vkGetPhysicalDeviceSurfaceFormatsKHR@20
 vkGetPhysicalDeviceSurfacePresentModesKHR@20
 vkGetPhysicalDeviceSurfaceSupportKHR@20
+vkGetPhysicalDeviceToolProperties@12
 vkGetPhysicalDeviceWin32PresentationSupportKHR@8
 vkGetPipelineCacheData@20
+vkGetPrivateData@28
 vkGetQueryPoolResults@40
 vkGetRenderAreaGranularity@16
 vkGetSemaphoreCounterValue@16
@@ -198,6 +233,7 @@ vkMapMemory@36
 vkMergePipelineCaches@20
 vkQueueBindSparse@20
 vkQueuePresentKHR@8
+vkQueueSubmit2@20
 vkQueueSubmit@20
 vkQueueWaitIdle@4
 vkResetCommandBuffer@8
@@ -207,6 +243,7 @@ vkResetEvent@12
 vkResetFences@12
 vkResetQueryPool@20
 vkSetEvent@12
+vkSetPrivateData@32
 vkSignalSemaphore@8
 vkTrimCommandPool@16
 vkUnmapMemory@12
diff --git a/contrib/src/vulkan-loader/rules.mak b/contrib/src/vulkan-loader/rules.mak
index 5852f006f738..261048ed8bd6 100644
--- a/contrib/src/vulkan-loader/rules.mak
+++ b/contrib/src/vulkan-loader/rules.mak
@@ -1,4 +1,4 @@
-VULKAN_LOADER_VERSION := 1.3.211
+VULKAN_LOADER_VERSION := 1.3.275
 VULKAN_LOADER_URL := $(GITHUB)/KhronosGroup/Vulkan-Loader/archive/v$(VULKAN_LOADER_VERSION).tar.gz
 
 DEPS_vulkan-loader = vulkan-headers $(DEPS_vulkan-headers)
@@ -44,7 +44,6 @@ vulkan-loader: Vulkan-Loader-$(VULKAN_LOADER_VERSION).tar.gz .sum-vulkan-loader
 # Patches are from msys2 package system
 # https://github.com/msys2/MINGW-packages/tree/master/mingw-w64-vulkan-loader
 	$(APPLY) $(SRC)/vulkan-loader/002-proper-def-files-for-32bit.patch
-	$(APPLY) $(SRC)/vulkan-loader/004-disable-suffix-in-static-lib.patch
 	$(APPLY) $(SRC)/vulkan-loader/0003-fix-libunwind-usage-when-static-linking.patch
 ifeq ($(HOST),i686-w64-mingw32)
 	cp -v $(SRC)/vulkan-loader/libvulkan-32.def $(UNPACK_DIR)/loader/vulkan-1.def
@@ -63,8 +62,8 @@ VULKAN_LOADER_ENV_CONF = \
 
 ifdef HAVE_WIN32
 # CMake will generate a .pc file with -lvulkan even if the static library
-# generated is libvulkan.dll.a. It also forget to link with libcfgmgr32.
-	sed -i.orig -e "s,-lvulkan,-lvulkan.dll -lcfgmgr32," $(BUILD_DIR)/loader/vulkan.pc
+# generated is libvulkan.dll.a.
+	sed -i.orig -e "s,-lvulkan-1.dll,-lvulkan.dll," $(BUILD_DIR)/loader/vulkan.pc
 endif
 
 	+$(CMAKEBUILD)
-- 
GitLab


From 9ff424aaa4722d8c3ff48f5a90bc4f73338ea9b0 Mon Sep 17 00:00:00 2001
From: Steve Lhomme <robux4@ycbcr.xyz>
Date: Mon, 7 Apr 2025 11:35:00 +0200
Subject: [PATCH 3/7] contrib: vulkan-headers: assume the NDK doesn't provide
 vk.xml on Android

With NDK27 vk.xml is not found anymore.
We can install our own headers instead.

NDK27c comes with Vulkan 1.3.275 headers.
---
 contrib/src/vulkan-headers/rules.mak | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/contrib/src/vulkan-headers/rules.mak b/contrib/src/vulkan-headers/rules.mak
index d39b867846ab..49383c2cb05d 100644
--- a/contrib/src/vulkan-headers/rules.mak
+++ b/contrib/src/vulkan-headers/rules.mak
@@ -22,9 +22,11 @@ define VULKAN_HEADERS_CHECK :=
 endef
 
 PKGS += vulkan-headers
+ifndef HAVE_ANDROID # in NDK27 vk.xml is not available anymore, we need to install our own
 ifneq ($(call cppcheck, VULKAN_HEADERS_OK, $(VULKAN_HEADERS_CHECK)),)
 PKGS_FOUND += vulkan-headers
 endif
+endif
 
 $(TARBALLS)/Vulkan-Headers-$(VULKAN_HEADERS_VERSION).tar.gz:
 	$(call download_pkg,$(VULKAN_HEADERS_URL),vulkan-headers)
-- 
GitLab


From 5bdace5f481844e3da5fd2fdb93575e338eeaa4f Mon Sep 17 00:00:00 2001
From: Steve Lhomme <robux4@ycbcr.xyz>
Date: Mon, 7 Apr 2025 11:47:14 +0200
Subject: [PATCH 4/7] contrib: libplacebo: remove unneeded Android patch

We assume the Vulkan headers are not found so they are found in contribs.
This reverts b0d6f9ad54792fef90ae14d72ad2f95dd8cb9a25
---
 ...-try-to-locate-the-vulkan-registry-i.patch | 25 -------------------
 contrib/src/libplacebo/rules.mak              |  1 -
 2 files changed, 26 deletions(-)
 delete mode 100644 contrib/src/libplacebo/0004-vulkan-utils_gen-try-to-locate-the-vulkan-registry-i.patch

diff --git a/contrib/src/libplacebo/0004-vulkan-utils_gen-try-to-locate-the-vulkan-registry-i.patch b/contrib/src/libplacebo/0004-vulkan-utils_gen-try-to-locate-the-vulkan-registry-i.patch
deleted file mode 100644
index 50a18152064c..000000000000
--- a/contrib/src/libplacebo/0004-vulkan-utils_gen-try-to-locate-the-vulkan-registry-i.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 5acce05c63c7b0f4a952d1258153da283b95bf8a Mon Sep 17 00:00:00 2001
-From: Steve Lhomme <robux4@ycbcr.xyz>
-Date: Fri, 12 Apr 2024 08:12:45 +0200
-Subject: [PATCH 4/4] vulkan/utils_gen: try to locate the vulkan registry in
- the Android NDK
-
----
- src/vulkan/utils_gen.py | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/vulkan/utils_gen.py b/src/vulkan/utils_gen.py
-index 4bbe185b..4fe4a2d6 100644
---- a/src/vulkan/utils_gen.py
-+++ b/src/vulkan/utils_gen.py
-@@ -215,6 +215,7 @@ def find_registry_xml(datadir):
-         '$MINGW_PREFIX/share/vulkan/registry/vk.xml',
-         '%VULKAN_SDK%/share/vulkan/registry/vk.xml',
-         '$VULKAN_SDK/share/vulkan/registry/vk.xml',
-+        '$ANDROID_NDK/sources/third_party/vulkan/src/registry/vk.xml',
-         '/usr/share/vulkan/registry/vk.xml',
-     ]
- 
--- 
-2.37.3.windows.1
-
diff --git a/contrib/src/libplacebo/rules.mak b/contrib/src/libplacebo/rules.mak
index 435fd6852ac8..ed0b376f3775 100644
--- a/contrib/src/libplacebo/rules.mak
+++ b/contrib/src/libplacebo/rules.mak
@@ -40,7 +40,6 @@ libplacebo: $(PLACEBO_ARCHIVE) .sum-libplacebo
 	$(APPLY) $(SRC)/libplacebo/0001-vulkan-meson-add-the-clang-gcc-C-runtime.patch
 	$(APPLY) $(SRC)/libplacebo/0001-meson-allow-overriding-python3-path.patch
 	$(APPLY) $(SRC)/libplacebo/0001-meson-allow-forcing-the-path-to-look-for-libraries.patch
-	$(APPLY) $(SRC)/libplacebo/0004-vulkan-utils_gen-try-to-locate-the-vulkan-registry-i.patch
 	$(MOVE)
 
 .libplacebo: libplacebo crossfile.meson .python-venv
-- 
GitLab


From a43d051a2f59d43557991d64e72c91786318aa15 Mon Sep 17 00:00:00 2001
From: Steve Lhomme <robux4@ycbcr.xyz>
Date: Fri, 4 Apr 2025 06:53:29 +0200
Subject: [PATCH 5/7] CI: update the Android docker image with NDK 27c

It can supports 16KB aligned page sizes with a flag in the NDK build package. [^1]

It is not on by default so we can test things without being stuck with this image.

The relevant change will need to be done on the libvlcjni side, including switching to this image as well. This is done in [^2].

[^1]: https://developer.android.com/guide/practices/page-sizes#compile-r27
[^2]: https://code.videolan.org/videolan/libvlcjni/-/merge_requests/112
---
 extras/ci/gitlab-ci.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/extras/ci/gitlab-ci.yml b/extras/ci/gitlab-ci.yml
index 16e825f49a1f..91b979193776 100644
--- a/extras/ci/gitlab-ci.yml
+++ b/extras/ci/gitlab-ci.yml
@@ -24,7 +24,7 @@ variables:
     VLC_WIN_LLVM_MSVCRT_IMAGE: registry.videolan.org/vlc-debian-llvm-msvcrt:20241118101328
     VLC_WIN_LLVM_UCRT_IMAGE: registry.videolan.org/vlc-debian-llvm-ucrt:20241118101328
     VLC_DEBIAN_IMAGE: registry.videolan.org/vlc-debian-unstable:20241112155431
-    VLC_ANDROID_IMAGE: registry.videolan.org/vlc-debian-android:20241118101328
+    VLC_ANDROID_IMAGE: registry.videolan.org/vlc-debian-android:20250403202200
     VLC_SNAP_IMAGE: registry.videolan.org/vlc-ubuntu-focal:20231013031754
     VLC_RASPBIAN_IMAGE: registry.videolan.org/vlc-ubuntu-raspberry:20240806085528
     VLC_WASM_EMSCRIPTEN: registry.videolan.org/vlc-debian-wasm-emscripten:20250207201514
@@ -617,7 +617,7 @@ xros-arm64:
         name: $VLC_ANDROID_IMAGE
     script: |
         git clone https://code.videolan.org/videolan/libvlcjni.git
-        (cd libvlcjni && git checkout 11413ec511ef618e26b0934e71eed7da110685fe)
+        (cd libvlcjni && git checkout 5e2b2af821d14738bc470414a8d0c72d9955d168)
         if [ -n "$VLC_PREBUILT_CONTRIBS_URL" ]; then
           CONTRIB_FLAGS="--with-prebuilt-contribs"
         elif [ "${CI_COMMIT_BRANCH}" = "${CI_DEFAULT_BRANCH}" -a "${CI_PROJECT_PATH}" = "videolan/vlc" ]; then
-- 
GitLab


From 2b5579027b76507d117a32f29522a0ce7d6aa8d2 Mon Sep 17 00:00:00 2001
From: Steve Lhomme <robux4@ycbcr.xyz>
Date: Mon, 7 Apr 2025 15:09:19 +0200
Subject: [PATCH 6/7] contrib: vulkan-loader: use the default DLL name

MINGW is properly handled now, but not the 32-bit version.
According to [^1] 32-bit may not work at all.

[^1]: https://github.com/msys2/MINGW-packages/issues/17029
---
 .../002-proper-def-files-for-32bit.patch      | 52 -------------------
 contrib/src/vulkan-loader/libvulkan-32.def    |  2 +-
 contrib/src/vulkan-loader/rules.mak           |  9 ----
 3 files changed, 1 insertion(+), 62 deletions(-)
 delete mode 100644 contrib/src/vulkan-loader/002-proper-def-files-for-32bit.patch

diff --git a/contrib/src/vulkan-loader/002-proper-def-files-for-32bit.patch b/contrib/src/vulkan-loader/002-proper-def-files-for-32bit.patch
deleted file mode 100644
index 2cdeea4a262a..000000000000
--- a/contrib/src/vulkan-loader/002-proper-def-files-for-32bit.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 51146078613bf27b7427b1558220ae99204a9692 Mon Sep 17 00:00:00 2001
-From: Alexey Pavlov <alexpux@gmail.com>
-Date: Fri, 8 Nov 2019 07:40:41 +0100
-Subject: [PATCH 1/2] proper def files for 32bit
-
----
- loader/CMakeLists.txt | 8 ++++++++
- loader/vulkan-1.def   | 2 +-
- 2 files changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt
-index 622937b2a..b4f91db9b 100644
---- a/loader/CMakeLists.txt
-+++ b/loader/CMakeLists.txt
-@@ -337,6 +337,7 @@ if(WIN32)
-     # when adding the suffix the import and runtime library names must be consistent
-     # mingw: libvulkan-1.dll.a / vulkan-1.dll
-     # msvc: vulkan-1.lib / vulkan-1.dll
-+    if(MSVC)
-     set_target_properties(vulkan
-                           PROPERTIES
-                           OUTPUT_NAME ${API_TYPE}-1)
-@@ -346,6 +347,13 @@ if(WIN32)
-                               PROPERTIES
-                               PREFIX "")
-     endif()
-+    else()
-+    set_target_properties(vulkan
-+                          PROPERTIES
-+                          LIBRARY_OUTPUT_NAME vulkan
-+                          RUNTIME_OUTPUT_NAME vulkan-1
-+                          ARCHIVE_OUTPUT_NAME vulkan)
-+    endif()
- 
-     if(MSVC AND ENABLE_WIN10_ONECORE)
-         target_link_libraries(vulkan PRIVATE OneCoreUAP.lib LIBCMT.LIB LIBCMTD.LIB LIBVCRUNTIME.LIB LIBUCRT.LIB)
-diff --git a/loader/vulkan-1.def b/loader/vulkan-1.def
-index f1aab7880..0b8a68ff8 100644
---- a/loader/vulkan-1.def
-+++ b/loader/vulkan-1.def
-@@ -22,7 +22,7 @@
- ;
- ;;;;  End Copyright Notice ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- 
--LIBRARY vulkan-1.dll
-+LIBRARY libvulkan-1.dll
- EXPORTS
-    vkCreateInstance
-    vkDestroyInstance
--- 
-2.45.0.windows.1
-
diff --git a/contrib/src/vulkan-loader/libvulkan-32.def b/contrib/src/vulkan-loader/libvulkan-32.def
index 0451f6a01cc3..e0dfb67995ff 100644
--- a/contrib/src/vulkan-loader/libvulkan-32.def
+++ b/contrib/src/vulkan-loader/libvulkan-32.def
@@ -3,7 +3,7 @@
 ; Automatic generated by gendef
 ; written by Kai Tietz 2008
 ;
-LIBRARY "libvulkan-1.dll"
+LIBRARY "vulkan-1.dll"
 EXPORTS
 vkAcquireNextImage2KHR@12
 vkAcquireNextImageKHR@40
diff --git a/contrib/src/vulkan-loader/rules.mak b/contrib/src/vulkan-loader/rules.mak
index 261048ed8bd6..19c7ed8d8e00 100644
--- a/contrib/src/vulkan-loader/rules.mak
+++ b/contrib/src/vulkan-loader/rules.mak
@@ -43,7 +43,6 @@ vulkan-loader: Vulkan-Loader-$(VULKAN_LOADER_VERSION).tar.gz .sum-vulkan-loader
 	$(UNPACK)
 # Patches are from msys2 package system
 # https://github.com/msys2/MINGW-packages/tree/master/mingw-w64-vulkan-loader
-	$(APPLY) $(SRC)/vulkan-loader/002-proper-def-files-for-32bit.patch
 	$(APPLY) $(SRC)/vulkan-loader/0003-fix-libunwind-usage-when-static-linking.patch
 ifeq ($(HOST),i686-w64-mingw32)
 	cp -v $(SRC)/vulkan-loader/libvulkan-32.def $(UNPACK_DIR)/loader/vulkan-1.def
@@ -59,13 +58,5 @@ VULKAN_LOADER_ENV_CONF = \
 	$(CMAKECLEAN)
 	$(VULKAN_LOADER_ENV_CONF) $(HOSTVARS_CMAKE) $(CMAKE) $(VULKAN_LOADER_CONF)
 	+$(CMAKEBUILD)
-
-ifdef HAVE_WIN32
-# CMake will generate a .pc file with -lvulkan even if the static library
-# generated is libvulkan.dll.a.
-	sed -i.orig -e "s,-lvulkan-1.dll,-lvulkan.dll," $(BUILD_DIR)/loader/vulkan.pc
-endif
-
-	+$(CMAKEBUILD)
 	$(CMAKEINSTALL)
 	touch $@
-- 
GitLab


From 113e5a86b8801cb5cde1616d4f4da2eb14cbc1a8 Mon Sep 17 00:00:00 2001
From: Steve Lhomme <robux4@ycbcr.xyz>
Date: Mon, 7 Apr 2025 15:13:23 +0200
Subject: [PATCH 7/7] contrib: vulkan-loader: pass VULKAN_HEADERS_INSTALL_DIR
 as a CMake variable

---
 contrib/src/vulkan-loader/rules.mak | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/contrib/src/vulkan-loader/rules.mak b/contrib/src/vulkan-loader/rules.mak
index 19c7ed8d8e00..e77b11554e55 100644
--- a/contrib/src/vulkan-loader/rules.mak
+++ b/contrib/src/vulkan-loader/rules.mak
@@ -51,12 +51,12 @@ endif
 	$(MOVE)
 
 # Needed for the loader's cmake script to find the registry files
-VULKAN_LOADER_ENV_CONF = \
-	VULKAN_HEADERS_INSTALL_DIR="$(PREFIX)"
+VULKAN_LOADER_CONF += \
+	-DVULKAN_HEADERS_INSTALL_DIR:STRING=$(PREFIX)
 
 .vulkan-loader: vulkan-loader toolchain.cmake
 	$(CMAKECLEAN)
-	$(VULKAN_LOADER_ENV_CONF) $(HOSTVARS_CMAKE) $(CMAKE) $(VULKAN_LOADER_CONF)
+	$(HOSTVARS_CMAKE) $(CMAKE) $(VULKAN_LOADER_CONF)
 	+$(CMAKEBUILD)
 	$(CMAKEINSTALL)
 	touch $@
-- 
GitLab