Update dependencies

This commit is contained in:
BtbN
2021-10-28 20:47:11 +02:00
parent b77d839e60
commit 6a3324e258
38 changed files with 131 additions and 128 deletions

View File

@ -1,19 +1,19 @@
From 4037e82a4a6e46bd1133755683ad62f32e5af76e Mon Sep 17 00:00:00 2001
From 45fd7a314a2dc4b39bacbd91369128e04adc0699 Mon Sep 17 00:00:00 2001
From: Syoyo Fujita <syoyo@lighttransport.com>
Date: Thu, 28 May 2020 21:38:16 +0900
Subject: [PATCH 1/4] Fix build on MinGW cross compiling environment.
---
loader/CMakeLists.txt | 4 +++-
loader/loader.c | 13 +++++++++++++
loader/loader.rc | 4 ++++
3 files changed, 20 insertions(+), 1 deletion(-)
loader/CMakeLists.txt | 4 +++-
loader/loader.rc | 4 ++++
loader/loader_windows.c | 12 ++++++++++++
3 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt
index 4f54c3298..50cced309 100644
index 56aece671..6e7971845 100644
--- a/loader/CMakeLists.txt
+++ b/loader/CMakeLists.txt
@@ -160,7 +160,7 @@ if(WIN32)
@@ -187,7 +187,7 @@ if(WIN32)
if (USE_MASM)
enable_language(ASM_MASM)
endif ()
@ -22,7 +22,7 @@ index 4f54c3298..50cced309 100644
if(MINGW)
set(CMAKE_ASM_MASM_FLAGS ${CMAKE_ASM_MASM_FLAGS} ${JWASM_FLAGS})
elseif(NOT CMAKE_CL_64 AND NOT JWASM_FOUND)
@@ -180,6 +180,8 @@ if(WIN32)
@@ -207,6 +207,8 @@ if(WIN32)
add_library(loader-unknown-chain OBJECT unknown_ext_chain.c)
set_target_properties(loader-unknown-chain PROPERTIES CMAKE_C_FLAGS_DEBUG "${MODIFIED_C_FLAGS_DEBUG}")
target_compile_options(loader-unknown-chain PUBLIC ${MSVC_LOADER_COMPILE_OPTIONS})
@ -31,15 +31,30 @@ index 4f54c3298..50cced309 100644
endif()
elseif(APPLE)
# For MacOS, use the C code and force the compiler's tail-call optimization instead of using assembly code.
diff --git a/loader/loader.c b/loader/loader.c
index 6db4e9245..d76f7dbe7 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -83,6 +83,19 @@
diff --git a/loader/loader.rc b/loader/loader.rc
index 44193ea33..456ac70a2 100644
--- a/loader/loader.rc
+++ b/loader/loader.rc
@@ -19,7 +19,11 @@
// Author: Charles Giessen <charles@lunarg.com>
//
+#if defined(__MINGW32__)
+#include <winresrc.h>
+#else
#include "winres.h"
+#endif
// All set through CMake
#define VER_FILE_VERSION 1, 0, 1111, 2222
diff --git a/loader/loader_windows.c b/loader/loader_windows.c
index aff3b276e..e1579bf3a 100644
--- a/loader/loader_windows.c
+++ b/loader/loader_windows.c
@@ -58,6 +58,18 @@
typedef HRESULT(APIENTRY *PFN_CreateDXGIFactory1)(REFIID riid, void **ppFactory);
static PFN_CreateDXGIFactory1 fpCreateDXGIFactory1;
+
+#if defined(__MINGW32__)
+// MinGW header may not have some definitions(cfgmgr32.h).
+#if !defined(CM_GETIDLIST_FILTER_CLASS)
@ -52,25 +67,9 @@ index 6db4e9245..d76f7dbe7 100644
+
+#endif // __MINGW32__
+
#endif
// This is a CMake generated file with #defines for any functions/includes
diff --git a/loader/loader.rc b/loader/loader.rc
index a29c507de..6ed444bfe 100755
--- a/loader/loader.rc
+++ b/loader/loader.rc
@@ -43,7 +43,11 @@
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
+#if defined(__MINGW32__)
+#include <winresrc.h>
+#else
#include "winres.h"
+#endif
#define VER_FILE_VERSION VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH, VERSION_BUILDNO
void windows_initialization(void) {
char dll_location[MAX_PATH];
HMODULE module_handle = NULL;
--
2.25.1

View File

@ -1,20 +1,20 @@
From f712c42a36bf39592abb2c7f8d2d891287f14c3f Mon Sep 17 00:00:00 2001
From 8f83fc25f149a53566e0367d185c2a10d2b5b50e Mon Sep 17 00:00:00 2001
From: BtbN <btbn@btbn.de>
Date: Mon, 7 Sep 2020 20:07:39 +0200
Subject: [PATCH 2/4] Fixes for MinGW build
Adapted from https://github.com/msys2/MINGW-packages/blob/348f1d46d9d273a2cc928deadf9d9114f7a69c2f/mingw-w64-vulkan-loader/002-proper-def-files-for-32bit.patch
---
loader/CMakeLists.txt | 2 +-
loader/loader.h | 4 +++-
tests/layers/vk_format_utils.h | 4 +++-
loader/CMakeLists.txt | 2 +-
loader/vk_loader_platform.h | 4 +++-
tests/framework/layer/wrap_objects.cpp | 4 +++-
3 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt
index 50cced309..d35d37220 100644
index 6e7971845..b5bc0a98a 100644
--- a/loader/CMakeLists.txt
+++ b/loader/CMakeLists.txt
@@ -326,11 +326,11 @@ else()
@@ -364,11 +364,11 @@ else()
)
# cmake-format: on
endif()
@ -27,11 +27,11 @@ index 50cced309..d35d37220 100644
# Generate pkg-config file.
include(FindPkgConfig QUIET)
diff --git a/loader/loader.h b/loader/loader.h
index 6cc0f8388..fc26fcde6 100644
--- a/loader/loader.h
+++ b/loader/loader.h
@@ -38,7 +38,9 @@
diff --git a/loader/vk_loader_platform.h b/loader/vk_loader_platform.h
index ecb8e1006..2e138aeaa 100644
--- a/loader/vk_loader_platform.h
+++ b/loader/vk_loader_platform.h
@@ -76,7 +76,9 @@
#include "vk_layer_dispatch_table.h"
#include "vk_loader_extensions.h"
@ -42,12 +42,12 @@ index 6cc0f8388..fc26fcde6 100644
#define LOADER_EXPORT __attribute__((visibility("default")))
#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
#define LOADER_EXPORT __attribute__((visibility("default")))
diff --git a/tests/layers/vk_format_utils.h b/tests/layers/vk_format_utils.h
index e76f9ec2f..ef06e12af 100644
--- a/tests/layers/vk_format_utils.h
+++ b/tests/layers/vk_format_utils.h
@@ -25,7 +25,9 @@
#include "vulkan/vulkan.h"
diff --git a/tests/framework/layer/wrap_objects.cpp b/tests/framework/layer/wrap_objects.cpp
index 8f617a6d3..e7b1996f6 100644
--- a/tests/framework/layer/wrap_objects.cpp
+++ b/tests/framework/layer/wrap_objects.cpp
@@ -29,7 +29,9 @@
#include "loader/vk_loader_layer.h"
#if !defined(VK_LAYER_EXPORT)
-#if defined(__GNUC__) && __GNUC__ >= 4

View File

@ -1,4 +1,4 @@
From 9ed35d2d8395553d90e65867946c4df9c7bfaf63 Mon Sep 17 00:00:00 2001
From 6c963fb60da75e53214579507d7717acadb08c0f Mon Sep 17 00:00:00 2001
From: BtbN <btbn@btbn.de>
Date: Mon, 7 Sep 2020 20:33:23 +0200
Subject: [PATCH 3/4] Define appropiate minimum Windows-Version
@ -8,11 +8,11 @@ Subject: [PATCH 3/4] Define appropiate minimum Windows-Version
1 file changed, 5 insertions(+)
diff --git a/loader/vk_loader_platform.h b/loader/vk_loader_platform.h
index d9381c239..c1e47e4c3 100644
index 2e138aeaa..d956e803a 100644
--- a/loader/vk_loader_platform.h
+++ b/loader/vk_loader_platform.h
@@ -24,6 +24,11 @@
#pragma once
@@ -30,6 +30,11 @@
#endif
#if defined(_WIN32)
+

View File

@ -1,4 +1,4 @@
From b6b9abf90b6f71abf9d5405745748dd991099247 Mon Sep 17 00:00:00 2001
From 73d8fb89c6897648ef9e0340793cb2487695488f Mon Sep 17 00:00:00 2001
From: BtbN <btbn@btbn.de>
Date: Sun, 4 Apr 2021 23:29:53 +0200
Subject: [PATCH 4/4] Unlock building static loader on any OS
@ -7,16 +7,16 @@ Based in parts on https://github.com/shinchiro/mpv-winbuild-cmake/blob/master/pa
---
CMakeLists.txt | 2 --
loader/CMakeLists.txt | 23 ++++++++++++++++++++++-
loader/loader.c | 2 +-
loader/loader.h | 3 +++
loader/loader_windows.c | 2 ++
loader/vk_loader_platform.h | 16 ++++++++++++++++
5 files changed, 42 insertions(+), 4 deletions(-)
5 files changed, 43 insertions(+), 3 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index bd01fa016..91e5652f3 100644
index 703bcb1ba..43a25d8aa 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -40,9 +40,7 @@ if(BUILD_TESTS)
@@ -95,9 +95,7 @@ if(BUILD_TESTS)
enable_testing()
endif()
@ -24,13 +24,13 @@ index bd01fa016..91e5652f3 100644
option(BUILD_STATIC_LOADER "Build a loader that can be statically linked" OFF)
-endif()
if(BUILD_STATIC_LOADER)
message(WARNING "The BUILD_STATIC_LOADER option has been set. Note that this will only work on MacOS and is not supported "
if(WIN32)
# Optional: Allow specify the exact version used in the loader dll
diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt
index d35d37220..cf6c57b5e 100644
index b5bc0a98a..f74079954 100644
--- a/loader/CMakeLists.txt
+++ b/loader/CMakeLists.txt
@@ -224,6 +224,22 @@ if(WIN32)
@@ -251,6 +251,22 @@ if(WIN32)
target_compile_options(loader-opt PUBLIC ${MSVC_LOADER_COMPILE_OPTIONS})
target_include_directories(loader-opt PRIVATE "$<TARGET_PROPERTY:Vulkan::Headers,INTERFACE_INCLUDE_DIRECTORIES>")
@ -53,7 +53,7 @@ index d35d37220..cf6c57b5e 100644
add_library(vulkan
SHARED
$<TARGET_OBJECTS:loader-opt>
@@ -238,6 +254,8 @@ if(WIN32)
@@ -269,6 +285,8 @@ if(WIN32)
set_target_properties(vulkan
PROPERTIES
OUTPUT_NAME vulkan-1)
@ -62,7 +62,7 @@ index d35d37220..cf6c57b5e 100644
target_link_libraries(vulkan Vulkan::Headers)
@@ -260,14 +278,16 @@ else()
@@ -291,16 +309,18 @@ else()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-typedef-redefinition")
endif()
@ -74,52 +74,61 @@ index d35d37220..cf6c57b5e 100644
endif()
add_dependencies(vulkan loader_asm_gen_files)
+ if (NOT BUILD_STATIC_LOADER)
# set version based on VK_HEADER_VERSION used to generate the code
include(generated/loader_generated_header_version.cmake)
# set version based on LOADER_GENERATED_HEADER_VERSION used to generate the code
set_target_properties(vulkan
PROPERTIES SOVERSION "1"
VERSION ${LOADER_GENERATED_HEADER_VERSION})
+ endif()
target_link_libraries(vulkan ${CMAKE_DL_LIBS} m)
if (NOT ANDROID)
target_link_libraries(vulkan pthread)
@@ -339,6 +359,7 @@ if(PKG_CONFIG_FOUND)
@@ -377,6 +397,7 @@ if(PKG_CONFIG_FOUND)
foreach(LIB ${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES} ${PLATFORM_LIBS})
set(PRIVATE_LIBS "${PRIVATE_LIBS} -l${LIB}")
endforeach()
+ set(PRIVATE_LIBS "${PRIVATE_LIBS} -lshlwapi -lcfgmgr32")
if(WIN32)
set(VULKAN_LIB_SUFFIX "-1")
endif ()
diff --git a/loader/loader.c b/loader/loader.c
index d76f7dbe7..73e93fff1 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -7889,7 +7889,7 @@ out:
return result;
}
-#if defined(_WIN32)
+#if defined(_WIN32) && defined(LOADER_DYNAMIC_LIB)
BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved) {
switch (reason) {
case DLL_PROCESS_ATTACH:
# Set libdir path as in cmake's FindVulkan.cmake
diff --git a/loader/loader.h b/loader/loader.h
index fc26fcde6..43fa875e5 100644
index cfebfba67..62dcaeb81 100644
--- a/loader/loader.h
+++ b/loader/loader.h
@@ -449,6 +449,9 @@ static inline void loader_init_dispatch(void *obj, const void *data) {
@@ -66,6 +66,9 @@ static inline void loader_init_dispatch(void *obj, const void *data) {
// Global variables used across files
extern struct loader_struct loader;
extern THREAD_LOCAL_DECL struct loader_instance *tls_instance;
+#if defined(_WIN32) && !defined(LOADER_DYNAMIC_LIB)
+extern LOADER_PLATFORM_THREAD_ONCE_DEFINITION(once_init);
+#endif
extern loader_platform_thread_mutex loader_lock;
extern loader_platform_thread_mutex loader_json_lock;
extern loader_platform_thread_mutex loader_preload_icd_lock;
diff --git a/loader/loader_windows.c b/loader/loader_windows.c
index e1579bf3a..8a7daef04 100644
--- a/loader/loader_windows.c
+++ b/loader/loader_windows.c
@@ -98,6 +98,7 @@ void windows_initialization(void) {
#endif
}
+#if defined(LOADER_DYNAMIC_LIB)
BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved) {
switch (reason) {
case DLL_PROCESS_ATTACH:
@@ -114,6 +115,7 @@ BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved) {
}
return TRUE;
}
+#endif
bool windows_add_json_entry(const struct loader_instance *inst,
char **reg_data, // list of JSON files
diff --git a/loader/vk_loader_platform.h b/loader/vk_loader_platform.h
index c1e47e4c3..2cc1d2e7c 100644
index d956e803a..fab7b44f5 100644
--- a/loader/vk_loader_platform.h
+++ b/loader/vk_loader_platform.h
@@ -421,9 +421,25 @@ typedef HANDLE loader_platform_thread;
@@ -456,9 +456,25 @@ typedef HANDLE loader_platform_thread;
// The once init functionality is not used when building a DLL on Windows. This is because there is no way to clean up the
// resources allocated by anything allocated by once init. This isn't a problem for static libraries, but it is for dynamic
// ones. When building a DLL, we use DllMain() instead to allow properly cleaning up resources.