[vlc-commits] [Git][videolan/vlc][master] 10 commits: ci: update images

Jean-Baptiste Kempf (@jbk) gitlab at videolan.org
Tue Jul 12 05:36:44 UTC 2022



Jean-Baptiste Kempf pushed to branch master at VideoLAN / VLC


Commits:
b6813a0e by Niklas Haas at 2022-07-12T04:57:25+00:00
ci: update images

The newer images include the necessary tools to compile recent versions
of libplacebo.

- - - - -
e9c268a6 by Niklas Haas at 2022-07-12T04:57:25+00:00
contrib: update vulkan-headers to 1.3.219

This is needed (>=1.2.0) to get newer libplacebo to compile. Pick the
latest release version at time of commit.

- - - - -
3df12ce2 by Niklas Haas at 2022-07-12T04:57:25+00:00
contrib: update vulkan-loader to 1.3.211

This is needed as a consequence of the update to vulkan-headers, as the
older loader does not compile against too-new headers. Pick the latest
version supported by the MSYS2 patches at the time of commit, and also
update said patches.

Somehow the static library built changed from libVKstatic.a to
libvulkan.dll.a. I have no idea how this mishmash of extensions comes
about, but I've simply adapted the name to get it to compile.

- - - - -
76e86745 by Niklas Haas at 2022-07-12T04:57:25+00:00
contrib: update libplacebo to 4.192.1

Based on !1374 by Zhao Zhili. We instead update to the newest libplacebo
stable release version.

The new version requires vk.xml, which we need to specify the location
of to have it work on systems in which vulkan-headers are only built
from contribs.

- - - - -
08116743 by Niklas Haas at 2022-07-12T04:57:25+00:00
contrib: fix libplacebo version check

Match this version check to the configure requirement.

- - - - -
3323fce6 by Niklas Haas at 2022-07-12T04:57:25+00:00
contrib: disable libplacebo demos and tests

No reason to build them, if we won't use them. Tests are already off by
default but that's no guarantee.

- - - - -
1891ca20 by Niklas Haas at 2022-07-12T04:57:25+00:00
configure: properly check for pl_scale deps

This requires not just new-enough libplacebo, but also libplacebo GL
support. Move the check inside the branch of the latter.

Otherwise, this currently fails compiling on systems with new-enough
libplacebo but no libepoxy.

- - - - -
bb78bc26 by Niklas Haas at 2022-07-12T04:57:25+00:00
contrib: backport libplacebo macOS compat patch

Needed for the older macOS/iOS versions which VLC targets.

- - - - -
1df15398 by Niklas Haas at 2022-07-12T04:57:25+00:00
contrib: backport glslang back compat patch

Needed for the older glslang version which the contribs currently
install.

- - - - -
79f0b7ea by Niklas Haas at 2022-07-12T04:57:25+00:00
contrib: drop libplacebo vulkan linux exception

This logic is non-functional on recent libplacebo, which always builds
vulkan support as long as vulkan headers are available (which it is on
raspbian).

More importantly, excluding linux also breaks android builds, because
android's built-in copy of the vulkan headers (erroneously) omits
vk.xml. So we need to build vulkan-headers ourselves on this platform.

- - - - -


17 changed files:

- configure.ac
- − contrib/src/libplacebo/0001-meson-fix-glslang-search-path.patch
- + contrib/src/libplacebo/0001-vulkan-blacklist-metal-structs-from-utils_gen.py.patch
- + contrib/src/libplacebo/0002-pl_thread-use-gettimeofday-for-back-compat.patch
- + contrib/src/libplacebo/0003-glsl-glslang-back-compat.patch
- contrib/src/libplacebo/SHA512SUMS
- contrib/src/libplacebo/rules.mak
- contrib/src/vulkan-headers/SHA512SUMS
- contrib/src/vulkan-headers/rules.mak
- − contrib/src/vulkan-loader/001-build-fix.patch
- contrib/src/vulkan-loader/002-proper-def-files-for-32bit.patch
- − contrib/src/vulkan-loader/003-generate-pkgconfig-files.patch
- + contrib/src/vulkan-loader/004-disable-suffix-in-static-lib.patch
- contrib/src/vulkan-loader/SHA512SUMS
- + contrib/src/vulkan-loader/libvulkan-32.def
- contrib/src/vulkan-loader/rules.mak
- extras/ci/gitlab-ci.yml


Changes:

=====================================
configure.ac
=====================================
@@ -3086,6 +3086,7 @@ AC_ARG_ENABLE([libplacebo],
   AS_HELP_STRING([--disable-libplacebo],
       [disable libplacebo support (default auto)]))
 
+have_libplacebo_glscale="no"
 AS_IF([test "$enable_libplacebo" != "no"], [
   PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 2.72], [
     AC_DEFINE([HAVE_LIBPLACEBO], [1], [Define to 1 if libplacebo is enabled.])
@@ -3093,6 +3094,10 @@ AS_IF([test "$enable_libplacebo" != "no"], [
     AC_CHECK_HEADER([libplacebo/opengl.h], [
         VLC_ADD_PLUGIN([placebo_gl])
         VLC_ADD_PLUGIN([placebo_gles2])
+        dnl Minimum version that the OpenGL filter pl_scale is compatible with
+        PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 4.167],
+            [have_libplacebo_glscale="yes"],
+            [have_libplacebo_glscale="no"])
     ])
   ], [
     AS_IF([test -n "${enable_libplacebo}"], [
@@ -3102,11 +3107,7 @@ AS_IF([test "$enable_libplacebo" != "no"], [
   ])
 ])
 AM_CONDITIONAL([HAVE_LIBPLACEBO], [test "$enable_libplacebo" != "no"])
-
-dnl
-dnl  OpenGL filter pl_scale
-dnl
-PKG_HAVE_WITH_MODULES([LIBPLACEBO_SCALE], [libplacebo >= 4.167])
+AM_CONDITIONAL([HAVE_LIBPLACEBO_SCALE], [test "$have_libplacebo_glscale" = "yes"])
 
 dnl
 dnl  OpenGL


=====================================
contrib/src/libplacebo/0001-meson-fix-glslang-search-path.patch deleted
=====================================
@@ -1,70 +0,0 @@
-From da0990bf05e3433aa21c50e6a62f33fe6649b417 Mon Sep 17 00:00:00 2001
-From: Niklas Haas <git at haasn.xyz>
-Date: Fri, 14 Dec 2018 14:16:10 +0100
-Subject: [PATCH] Work-around meson prefix bug
-
-Normally this is inferred from the environment's CFLAGS/LDFLAGS, but old
-meson versions don't do this correctly. So work-around it by explicitly
-including the prefix when searching for glslang.
----
- src/meson.build | 23 +++++++++++++++--------
- 1 file changed, 15 insertions(+), 8 deletions(-)
-
-diff --git a/src/meson.build b/src/meson.build
-index 411ce2c..bc9214a 100644
---- a/src/meson.build
-+++ b/src/meson.build
-@@ -48,6 +48,11 @@ glslang_combined = disabler()
- glslang_min_ver = 2763
- glslang_req = get_option('glslang')
- 
-+# fix build inside contrib dir (cf. meson issue #4597)
-+prefix_option = get_option('prefix')
-+prefix_lib = prefix_option + '/lib'
-+prefix_include = include_directories(prefix_option + '/include')
-+
- if glslang_req.auto() and shaderc.found()
- 
-   # we only need one or the other, and shaderc is preferred
-@@ -58,12 +63,12 @@ if glslang_req.auto() and shaderc.found()
- else
- 
-   glslang_deps = [
--    cxx.find_library('glslang',     required: glslang_req),
--    cxx.find_library('HLSL',        required: glslang_req),
--    cxx.find_library('OGLCompiler', required: glslang_req),
--    cxx.find_library('OSDependent', required: glslang_req),
--    cxx.find_library('SPIRV',       required: glslang_req),
--    cxx.find_library('SPVRemapper', required: glslang_req),
-+    cxx.find_library('glslang',     dirs: prefix_lib, required: glslang_req),
-+    cxx.find_library('HLSL',        dirs: prefix_lib, required: glslang_req),
-+    cxx.find_library('OGLCompiler', dirs: prefix_lib, required: glslang_req),
-+    cxx.find_library('OSDependent', dirs: prefix_lib, required: glslang_req),
-+    cxx.find_library('SPIRV',       dirs: prefix_lib, required: glslang_req),
-+    cxx.find_library('SPVRemapper', dirs: prefix_lib, required: glslang_req),
-   ]
- 
-   glslang_found = true
-@@ -75,7 +80,8 @@ endif
- 
- if glslang_found
-   glslang_ver = cxx.get_define('GLSLANG_PATCH_LEVEL',
--      prefix: '#include <glslang/Include/revision.h>'
-+      prefix: '#include <glslang/Include/revision.h>',
-+      include_directories : prefix_include
-   ).to_int()
- 
-   if glslang_ver >= glslang_min_ver
-@@ -85,7 +91,8 @@ if glslang_found
-     # -pthread) doesn't work. We actually need -lpthreads for the glslang
-     # object files to link, for whatever weird reason.
-     pthread = cxx.find_library('pthread', required: false)
--    glslang_combined = declare_dependency(dependencies: glslang_deps + [pthread])
-+    glslang_combined = declare_dependency(dependencies: glslang_deps + [pthread],
-+        include_directories : prefix_include)
-   else
-     error('glslang revision @0@ too old! Must be at least @1@'
-           .format(glslang_ver, glslang_min_ver))
--- 
-2.19.2
-


=====================================
contrib/src/libplacebo/0001-vulkan-blacklist-metal-structs-from-utils_gen.py.patch
=====================================
@@ -0,0 +1,26 @@
+From db794a2fcc8214624c950752b04f6c23f8fc567d Mon Sep 17 00:00:00 2001
+From: Niklas Haas <git at haasn.dev>
+Date: Thu, 9 Jun 2022 21:32:36 +0200
+Subject: [PATCH] vulkan: blacklist metal structs from utils_gen.py
+
+Fixes https://code.videolan.org/videolan/libplacebo/-/issues/201
+---
+ src/vulkan/utils_gen.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/vulkan/utils_gen.py b/src/vulkan/utils_gen.py
+index da565d45..7c0dad37 100644
+--- a/src/vulkan/utils_gen.py
++++ b/src/vulkan/utils_gen.py
+@@ -158,7 +158,7 @@ def get_vkstructs(registry):
+         # Strings for platform-specific crap we want to blacklist as they will
+         # most likely cause build failures
+         blacklist_strs = [
+-            'ANDROID', 'Surface', 'Win32', 'D3D12', 'GGP', 'FUCHSIA',
++            'ANDROID', 'Surface', 'Win32', 'D3D12', 'GGP', 'FUCHSIA', 'Metal',
+         ]
+ 
+         if any([ str in e.attrib['name'] for str in blacklist_strs ]):
+-- 
+2.36.1
+


=====================================
contrib/src/libplacebo/0002-pl_thread-use-gettimeofday-for-back-compat.patch
=====================================
@@ -0,0 +1,53 @@
+From cce28e17f931c948c37467d9189ed96364691a83 Mon Sep 17 00:00:00 2001
+From: Niklas Haas <git at haasn.dev>
+Date: Mon, 4 Jul 2022 16:46:08 +0200
+Subject: [PATCH] pl_thread: use gettimeofday() for back-compat
+
+Some older platforms (particularly macOS) do not support
+clock_gettime(). Fortunately, this is identical to gettimeofday in the
+case of CLOCK_REALTIME.
+
+These systems also do not have pthread_condattr_setclock, so we can
+re-use this check.
+
+Also add proper error handling to this function.
+---
+ src/pl_thread_pthread.h | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/src/pl_thread_pthread.h b/src/pl_thread_pthread.h
+index e48f50fd..075a8305 100644
+--- a/src/pl_thread_pthread.h
++++ b/src/pl_thread_pthread.h
+@@ -17,7 +17,9 @@
+ 
+ #pragma once
+ 
++#include <errno.h>
+ #include <pthread.h>
++#include <sys/time.h>
+ #include <time.h>
+ 
+ typedef pthread_mutex_t pl_mutex;
+@@ -92,10 +94,16 @@ static inline int pl_cond_timedwait(pl_cond *cond, pl_mutex *mutex, uint64_t tim
+ 
+     struct timespec ts;
+ #ifdef PTHREAD_HAS_SETCLOCK
+-    clock_gettime(CLOCK_MONOTONIC, &ts);
++    if (clock_gettime(CLOCK_MONOTONIC, &ts) < 0)
++        return errno;
+ #else
+-    clock_gettime(CLOCK_REALTIME, &ts);
++    struct timeval tv;
++    if (gettimeofday(&tv, NULL) < 0) // equivalent to CLOCK_REALTIME
++        return errno;
++    ts.tv_sec = tv.tv_sec;
++    ts.tv_nsec = tv.tv_usec * 1000;
+ #endif
++
+     ts.tv_sec  += timeout / 1000000000LLU;
+     ts.tv_nsec += timeout % 1000000000LLU;
+ 
+-- 
+2.36.1
+


=====================================
contrib/src/libplacebo/0003-glsl-glslang-back-compat.patch
=====================================
@@ -0,0 +1,41 @@
+From cac77b6674b479788cd688f1aee62a764cfbbb41 Mon Sep 17 00:00:00 2001
+From: Niklas Haas <git at haasn.dev>
+Date: Fri, 8 Jul 2022 22:41:10 +0200
+Subject: [PATCH] glsl: glslang back compat
+
+This include path randomly changed at some point in time.
+---
+ src/glsl/glslang.cc | 11 ++++++++---
+ 1 file changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/src/glsl/glslang.cc b/src/glsl/glslang.cc
+index ba16458d..a9b34f64 100644
+--- a/src/glsl/glslang.cc
++++ b/src/glsl/glslang.cc
+@@ -26,15 +26,20 @@ extern "C" {
+ 
+ #include <glslang/Include/ResourceLimits.h>
+ #include <glslang/Public/ShaderLang.h>
+-#include <glslang/SPIRV/GlslangToSpv.h>
+-
+-#include "glslang.h"
+ 
+ #define GLSLANG_VERSION_CHECK(major, minor, patch) \
+     (((major) < GLSLANG_VERSION_MAJOR) || ((major) == GLSLANG_VERSION_MAJOR && \
+     (((minor) < GLSLANG_VERSION_MINOR) || ((minor) == GLSLANG_VERSION_MINOR && \
+      ((patch) <= GLSLANG_VERSION_PATCH)))))
+ 
++#if GLSLANG_VERSION_CHECK(0, 0, 3496)
++#include <glslang/SPIRV/GlslangToSpv.h>
++#else
++#include <SPIRV/GlslangToSpv.h>
++#endif
++
++#include "glslang.h"
++
+ using namespace glslang;
+ 
+ static pthread_mutex_t pl_glslang_mutex = PTHREAD_MUTEX_INITIALIZER;
+-- 
+2.36.1
+


=====================================
contrib/src/libplacebo/SHA512SUMS
=====================================
@@ -1 +1 @@
-a2ca4a8b2bf9e5242c39c704e579575ccbfd0a7dadc4f73fe1994abb6e3f132d19f6d95415704a62e285e3f94e7b0ab8aeed14b4fce466df1ba34952f7127686  libplacebo-v1.18.0.tar.gz
+780dff60a31a9c7fff47522385235077cc6b1a38be32bc0276c090d89ce25754dd0b910db5be631d0065337fe4700f68adabee06f48a4935d422f09f2e0e5525  libplacebo-v4.192.1.tar.gz


=====================================
contrib/src/libplacebo/rules.mak
=====================================
@@ -1,15 +1,20 @@
 # libplacebo
 
-PLACEBO_VERSION := 1.18.0
+PLACEBO_VERSION := 4.192.1
 PLACEBO_ARCHIVE = libplacebo-v$(PLACEBO_VERSION).tar.gz
 PLACEBO_URL := https://code.videolan.org/videolan/libplacebo/-/archive/v$(PLACEBO_VERSION)/$(PLACEBO_ARCHIVE)
 
+PLACEBOCONF := -Dglslang=enabled \
+	-Dshaderc=disabled \
+	-Ddemos=false \
+	-Dtests=false
+
 DEPS_libplacebo = glslang
 
 ifndef HAVE_WINSTORE
 PKGS += libplacebo
 endif
-ifeq ($(call need_pkg,"libplacebo >= 1.18"),)
+ifeq ($(call need_pkg,"libplacebo >= 2.72"),)
 PKGS_FOUND += libplacebo
 endif
 
@@ -19,15 +24,9 @@ endif
 
 # We don't want vulkan on darwin for now
 ifndef HAVE_DARWIN_OS
-# This should be enabled on Linux too, but it currently fails picking xcb on
-# cross-compilation setup. Test the raspbian build for instance of this issue.
-ifndef HAVE_LINUX
 DEPS_libplacebo += vulkan-loader $(DEPS_vulkan-loader) vulkan-headers $(DEPS_vulkan-headers)
+PLACEBOCONF += -Dvulkan-registry=${PREFIX}/share/vulkan/registry/vk.xml
 endif
-endif
-
-PLACEBOCONF := -Dglslang=enabled \
-	-Dshaderc=disabled
 
 $(TARBALLS)/$(PLACEBO_ARCHIVE):
 	$(call download_pkg,$(PLACEBO_URL),libplacebo)
@@ -36,7 +35,9 @@ $(TARBALLS)/$(PLACEBO_ARCHIVE):
 
 libplacebo: $(PLACEBO_ARCHIVE) .sum-libplacebo
 	$(UNPACK)
-	$(APPLY) $(SRC)/libplacebo/0001-meson-fix-glslang-search-path.patch
+	$(APPLY) $(SRC)/libplacebo/0001-vulkan-blacklist-metal-structs-from-utils_gen.py.patch
+	$(APPLY) $(SRC)/libplacebo/0002-pl_thread-use-gettimeofday-for-back-compat.patch
+	$(APPLY) $(SRC)/libplacebo/0003-glsl-glslang-back-compat.patch
 	$(MOVE)
 
 .libplacebo: libplacebo crossfile.meson


=====================================
contrib/src/vulkan-headers/SHA512SUMS
=====================================
@@ -1 +1 @@
-7472ec31fe74bc3a98303f668eb0c88bf4e4a93b1e3bcf4df2b20fe731cc2efd754d8b64e6507d8ee470841ee575c3092b2b20c4325a44e2e5cd830b7c7dc8ab  Vulkan-Headers-1.1.127.tar.gz
+b6f4459a55a7a0f83a17f9155cf201f4e832bde45a127efbfb0e1e5805fb813249e8ccb00b81285ff26fffed1fe0f33b14cdf41515c2b649204de54284e7bc60  Vulkan-Headers-1.3.219.tar.gz


=====================================
contrib/src/vulkan-headers/rules.mak
=====================================
@@ -1,4 +1,4 @@
-VULKAN_HEADERS_VERSION := 1.1.127
+VULKAN_HEADERS_VERSION := 1.3.219
 VULKAN_HEADERS_URL := https://github.com/KhronosGroup/Vulkan-Headers/archive/v$(VULKAN_HEADERS_VERSION).tar.gz
 
 DEPS_vulkan-headers =


=====================================
contrib/src/vulkan-loader/001-build-fix.patch deleted
=====================================
@@ -1,43 +0,0 @@
---- a/loader/CMakeLists.txt	2018-05-16 14:05:33.046991100 +0300
-+++ b/loader/CMakeLists.txt	2018-05-16 14:07:39.464013100 +0300
-@@ -86,7 +86,7 @@
- set(ASM_FAILURE_MSG "${ASM_FAILURE_MSG} extensions will suffer from a corrupted stack.")
- if(WIN32)
-     enable_language(ASM_MASM)
--    if(CMAKE_ASM_MASM_COMPILER_WORKS)
-+    if (MSVC AND CMAKE_ASM_MASM_COMPILER_WORKS)
-         if(NOT CMAKE_CL_64)
-             set(CMAKE_ASM_MASM_FLAGS ${CMAKE_ASM_MASM_FLAGS} /safeseh)
-         endif()
---- a/loader/loader.c	2018-05-16 14:03:52.750814700 +0300
-+++ b/loader/loader.c	2018-05-16 14:04:08.631642600 +0300
-@@ -672,6 +672,10 @@
- //
- // *reg_data contains a string list of filenames as pointer.
- // When done using the returned string list, the caller should free the pointer.
-+#ifdef __MINGW32__
-+#define CM_GETIDLIST_FILTER_PRESENT            0x00000100
-+#define CM_GETIDLIST_FILTER_CLASS              0x00000200
-+#endif
- VkResult loaderGetDeviceRegistryFiles(const struct loader_instance *inst, char **reg_data, PDWORD reg_data_size,
-                                       LPCSTR value_name) {
-     static const wchar_t *softwareComponentGUID = L"{5c4c3332-344d-483c-8739-259e934c9cc8}";
---- a/loader/loader.rc
-+++ b/loader/loader.rc
-@@ -43,8 +43,6 @@
- ///////////////////////////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////////////////////////////////
- 
--#include "winres.h"
--
- #define VER_FILE_VERSION            VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH, VERSION_BUILDNO
- 
- #define STRINGIZE2(s) #s
-@@ -77,7 +75,6 @@
- #endif
- 
-  FILEOS 0x00000L
-- FILETYPE VFT_DLL
-  FILESUBTYPE 0x0L
- BEGIN
-     BLOCK "StringFileInfo"


=====================================
contrib/src/vulkan-loader/002-proper-def-files-for-32bit.patch
=====================================
@@ -1,80 +1,91 @@
-diff -Naur Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0-orig/CMakeLists.txt Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0/CMakeLists.txt
---- Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0-orig/CMakeLists.txt	2017-04-05 00:36:39.000000000 +0300
-+++ Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0/CMakeLists.txt	2017-06-29 08:34:52.393725000 +0300
-@@ -153,6 +153,16 @@
+diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt
+index 8bb10fd..fc38ecc 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()
- endif()
- 
-+if (WIN32)
-+  if(${CMAKE_SIZEOF_VOID_P} EQUAL 8)
-+    set(DEFFILE_SUFFIX "")
-+    set(WINBITS Win64)
-+  else()
-+    set(DEFFILE_SUFFIX "-x86")
-+    set(WINBITS Win32)
-+  endif()
-+endif()
-+
- if(MSVC)
-     # /WX: Treat warnings as errors
-     # /GR-: Disable RTTI
-diff -Naur Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0-orig/loader/CMakeLists.txt Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0/loader/CMakeLists.txt
---- Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0-orig/loader/CMakeLists.txt	2017-06-29 08:19:36.448133100 +0300
-+++ Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0/loader/CMakeLists.txt	2017-06-29 08:42:41.322355600 +0300
-@@ -137,6 +137,7 @@
- set_target_properties(loader_gen_files PROPERTIES FOLDER ${LOADER_HELPER_FOLDER})
+ elseif(APPLE)
+     # For MacOS, use the C code and force the compiler's tail-call optimization instead of using assembly code.
+@@ -261,6 +263,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,10 +240,17 @@ if(WIN32)
+     # when adding the suffix the import and runtime library names must be consistent
+     # mingw: libvulkan-1.dll.a / libvulkan-1.dll
+     # msvc: vulkan-1.lib / vulkan-1.dll
 +    if(MSVC)
-     # Use static MSVCRT libraries
-     foreach(configuration
-             in
-@@ -156,6 +157,7 @@
-                            "${${configuration}}")
-         endif()
-     endforeach()
+     set_target_properties(vulkan
+                           PROPERTIES
+                           OUTPUT_NAME vulkan-1)
+-
++    else()
++    set_target_properties(vulkan
++                          PROPERTIES
++                          LIBRARY_OUTPUT_NAME vulkan
++                          RUNTIME_OUTPUT_NAME vulkan-1
++                          ARCHIVE_OUTPUT_NAME vulkan)
 +    endif()
- 
-     if(ENABLE_WIN10_ONECORE)
-         # Note: When linking your app or driver to OneCore.lib, be sure to remove any links to non-umbrella libs (such as
-@@ -190,24 +192,32 @@
-                     $<TARGET_OBJECTS:loader-opt>
-                     $<TARGET_OBJECTS:loader-norm>
-                     $<TARGET_OBJECTS:loader-unknown-chain>
--                    ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-1.def
-+                    ${CMAKE_CURRENT_SOURCE_DIR}/vulkan-1${DEFFILE_SUFFIX}.def
-                     ${CMAKE_CURRENT_SOURCE_DIR}/loader.rc)
-+        if(MSVC)
-         set_target_properties(vulkan
-                               PROPERTIES LINK_FLAGS_DEBUG
-                                          "/ignore:4098"
-                                          OUTPUT_NAME
-                                          vulkan-1)
-+        else()
-+        set_target_properties(vulkan
-+                              PROPERTIES
-+                              LIBRARY_OUTPUT_NAME vulkan
-+                              RUNTIME_OUTPUT_NAME vulkan-1
-+                              ARCHIVE_OUTPUT_NAME vulkan)
-+        endif()
-         target_link_libraries(vulkan Vulkan::Headers)
-     else()
-         add_library(vulkan
-                     STATIC
-                     $<TARGET_OBJECTS:loader-opt>
-                     $<TARGET_OBJECTS:loader-norm>
-                     $<TARGET_OBJECTS:loader-unknown-chain>)
-         set_target_properties(vulkan PROPERTIES OUTPUT_NAME VKstatic.1)
-     endif()
- 
--    if(ENABLE_WIN10_ONECORE)
-+    if(ENABLE_WIN10_ONECORE AND MSVC)
+     if(MSVC AND ENABLE_WIN10_ONECORE)
          target_link_libraries(vulkan OneCoreUAP.lib LIBCMT.LIB LIBCMTD.LIB LIBVCRUNTIME.LIB LIBUCRT.LIB)
          set_target_properties(vulkan PROPERTIES LINK_FLAGS "/NODEFAULTLIB")
-     else()
---- Vulkan-LoaderAndValidationLayers-sdk-1.1.73.0/loader/vulkan-1.def.orig	2018-05-16 11:55:36.673944400 +0300
-+++ Vulkan-LoaderAndValidationLayers-sdk-1.1.73.0/loader/vulkan-1.def	2018-05-16 11:55:41.307152500 +0300
-@@ -21,7 +21,7 @@
+diff --git a/loader/vk_loader_platform.h b/loader/vk_loader_platform.h
+index 507a901..6b8fc48 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")))
+diff --git a/loader/vulkan-1.def b/loader/vulkan-1.def
+index 6a88b55..1d26b1f 100644
+--- a/loader/vulkan-1.def
++++ b/loader/vulkan-1.def
+@@ -22,7 +22,7 @@
  ;
  ;;;;  End Copyright Notice ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
@@ -83,319 +94,3 @@ diff -Naur Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0-orig/loader/CMakeLists.
  EXPORTS
     vkCreateInstance
     vkDestroyInstance
-diff -Naur Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0-orig/loader/vulkan-1-x86.def Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0/loader/vulkan-1-x86.def
---- Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0-orig/loader/vulkan-1-x86.def	1970-01-01 03:00:00.000000000 +0300
-+++ Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0/loader/vulkan-1-x86.def	2017-04-05 00:36:39.000000000 +0300
-@@ -0,0 +1,221 @@
-+
-+;;;; Begin Copyright Notice ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-+;
-+; Copyright (c) 2015-2017 The Khronos Group Inc.
-+; Copyright (c) 2015-2017 Valve Corporation
-+; Copyright (c) 2015-2017 LunarG, Inc.
-+;
-+; Licensed under the Apache License, Version 2.0 (the "License");
-+; you may not use this file except in compliance with the License.
-+; You may obtain a copy of the License at
-+;
-+;     http://www.apache.org/licenses/LICENSE-2.0
-+;
-+; Unless required by applicable law or agreed to in writing, software
-+; distributed under the License is distributed on an "AS IS" BASIS,
-+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+; See the License for the specific language governing permissions and
-+; limitations under the License.
-+;
-+;  Author: Courtney Goeltzenleuchter <courtney at LunarG.com>
-+;
-+;;;;  End Copyright Notice ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-+
-+LIBRARY libvulkan-1.dll
-+EXPORTS
-+   vkCreateInstance at 12
-+   vkDestroyInstance at 8
-+   vkEnumeratePhysicalDevices at 12
-+   vkGetPhysicalDeviceFeatures at 8
-+   vkGetPhysicalDeviceFormatProperties at 12
-+   vkGetPhysicalDeviceImageFormatProperties at 28
-+   vkGetPhysicalDeviceProperties at 8
-+   vkGetPhysicalDeviceQueueFamilyProperties at 12
-+   vkGetPhysicalDeviceMemoryProperties at 8
-+   vkGetInstanceProcAddr at 8
-+   vkGetDeviceProcAddr at 8
-+   vkCreateDevice at 16
-+   vkDestroyDevice at 8
-+   vkEnumerateInstanceExtensionProperties at 12
-+   vkEnumerateDeviceExtensionProperties at 16
-+   vkEnumerateInstanceLayerProperties at 8
-+   vkEnumerateDeviceLayerProperties at 12
-+   vkGetDeviceQueue at 16
-+   vkQueueSubmit at 20
-+   vkQueueWaitIdle at 4
-+   vkDeviceWaitIdle at 4
-+   vkAllocateMemory at 16
-+   vkFreeMemory at 16
-+   vkMapMemory at 36
-+   vkUnmapMemory at 12
-+   vkFlushMappedMemoryRanges at 12
-+   vkInvalidateMappedMemoryRanges at 12
-+   vkGetDeviceMemoryCommitment at 16
-+   vkBindBufferMemory at 28
-+   vkBindImageMemory at 28
-+   vkGetBufferMemoryRequirements at 16
-+   vkGetImageMemoryRequirements at 16
-+   vkGetImageSparseMemoryRequirements at 20
-+   vkGetPhysicalDeviceSparseImageFormatProperties at 32
-+   vkQueueBindSparse at 20
-+   vkCreateFence at 16
-+   vkDestroyFence at 16
-+   vkResetFences at 12
-+   vkGetFenceStatus at 12
-+   vkWaitForFences at 24
-+   vkCreateSemaphore at 16
-+   vkDestroySemaphore at 16
-+   vkCreateEvent at 16
-+   vkDestroyEvent at 16
-+   vkGetEventStatus at 12
-+   vkSetEvent at 12
-+   vkResetEvent at 12
-+   vkCreateQueryPool at 16
-+   vkDestroyQueryPool at 16
-+   vkGetQueryPoolResults at 40
-+   vkCreateBuffer at 16
-+   vkDestroyBuffer at 16
-+   vkCreateBufferView at 16
-+   vkDestroyBufferView at 16
-+   vkCreateImage at 16
-+   vkDestroyImage at 16
-+   vkGetImageSubresourceLayout at 20
-+   vkCreateImageView at 16
-+   vkDestroyImageView at 16
-+   vkCreateShaderModule at 16
-+   vkDestroyShaderModule at 16
-+   vkCreatePipelineCache at 16
-+   vkDestroyPipelineCache at 16
-+   vkGetPipelineCacheData at 20
-+   vkMergePipelineCaches at 20
-+   vkCreateGraphicsPipelines at 28
-+   vkCreateComputePipelines at 28
-+   vkDestroyPipeline at 16
-+   vkCreatePipelineLayout at 16
-+   vkDestroyPipelineLayout at 16
-+   vkCreateSampler at 16
-+   vkDestroySampler at 16
-+   vkCreateDescriptorSetLayout at 16
-+   vkDestroyDescriptorSetLayout at 16
-+   vkCreateDescriptorPool at 16
-+   vkDestroyDescriptorPool at 16
-+   vkResetDescriptorPool at 16
-+   vkAllocateDescriptorSets at 12
-+   vkFreeDescriptorSets at 20
-+   vkUpdateDescriptorSets at 20
-+   vkCreateFramebuffer at 16
-+   vkDestroyFramebuffer at 16
-+   vkCreateRenderPass at 16
-+   vkDestroyRenderPass at 16
-+   vkGetRenderAreaGranularity at 16
-+   vkCreateCommandPool at 16
-+   vkDestroyCommandPool at 16
-+   vkResetCommandPool at 16
-+   vkAllocateCommandBuffers at 12
-+   vkFreeCommandBuffers at 20
-+   vkBeginCommandBuffer at 8
-+   vkEndCommandBuffer at 4
-+   vkResetCommandBuffer at 8
-+   vkCmdBindPipeline at 16
-+   vkCmdSetViewport at 16
-+   vkCmdSetScissor at 16
-+   vkCmdSetLineWidth at 8
-+   vkCmdSetDepthBias at 16
-+   vkCmdSetBlendConstants at 8
-+   vkCmdSetDepthBounds at 12
-+   vkCmdSetStencilCompareMask at 12
-+   vkCmdSetStencilWriteMask at 12
-+   vkCmdSetStencilReference at 12
-+   vkCmdBindDescriptorSets at 36
-+   vkCmdBindIndexBuffer at 24
-+   vkCmdBindVertexBuffers at 20
-+   vkCmdDraw at 20
-+   vkCmdDrawIndexed at 24
-+   vkCmdDrawIndirect at 28
-+   vkCmdDrawIndexedIndirect at 28
-+   vkCmdDispatch at 16
-+   vkCmdDispatchIndirect at 20
-+   vkCmdCopyBuffer at 28
-+   vkCmdCopyImage at 36
-+   vkCmdBlitImage at 40
-+   vkCmdCopyBufferToImage at 32
-+   vkCmdCopyImageToBuffer at 32
-+   vkCmdUpdateBuffer at 32
-+   vkCmdFillBuffer at 32
-+   vkCmdClearColorImage at 28
-+   vkCmdClearDepthStencilImage at 28
-+   vkCmdClearAttachments at 20
-+   vkCmdResolveImage at 36
-+   vkCmdSetEvent at 16
-+   vkCmdResetEvent at 16
-+   vkCmdWaitEvents at 44
-+   vkCmdPipelineBarrier at 40
-+   vkCmdBeginQuery at 20
-+   vkCmdEndQuery at 16
-+   vkCmdResetQueryPool at 20
-+   vkCmdWriteTimestamp at 20
-+   vkCmdCopyQueryPoolResults at 48
-+   vkCmdPushConstants at 28
-+   vkCmdBeginRenderPass at 12
-+   vkCmdNextSubpass at 8
-+   vkCmdEndRenderPass at 4
-+   vkCmdExecuteCommands at 12
-+   vkDestroySurfaceKHR at 16
-+   vkGetPhysicalDeviceSurfaceSupportKHR at 20
-+   vkGetPhysicalDeviceSurfaceCapabilitiesKHR at 16
-+   vkGetPhysicalDeviceSurfaceFormatsKHR at 20
-+   vkGetPhysicalDeviceSurfacePresentModesKHR at 20
-+   vkCreateSwapchainKHR at 16
-+   vkDestroySwapchainKHR at 16
-+   vkGetSwapchainImagesKHR at 20
-+   vkAcquireNextImageKHR at 40
-+   vkQueuePresentKHR at 8
-+   vkGetPhysicalDeviceDisplayPropertiesKHR at 12
-+   vkGetPhysicalDeviceDisplayPlanePropertiesKHR at 12
-+   vkGetDisplayPlaneSupportedDisplaysKHR at 16
-+   vkGetDisplayModePropertiesKHR at 20
-+   vkCreateDisplayModeKHR at 24
-+   vkGetDisplayPlaneCapabilitiesKHR at 20
-+   vkCreateDisplayPlaneSurfaceKHR at 16
-+   vkCreateSharedSwapchainsKHR at 20
-+   vkCreateWin32SurfaceKHR at 16
-+   vkGetPhysicalDeviceWin32PresentationSupportKHR at 8
-+
-+   vkEnumerateInstanceVersion at 4
-+   vkEnumeratePhysicalDeviceGroups at 12
-+   vkGetPhysicalDeviceFeatures2 at 8
-+   vkGetPhysicalDeviceProperties2 at 8
-+   vkGetPhysicalDeviceFormatProperties2 at 12
-+   vkGetPhysicalDeviceQueueFamilyProperties2 at 12
-+   vkGetPhysicalDeviceMemoryProperties2 at 8
-+   vkGetPhysicalDeviceSparseImageFormatProperties2 at 16
-+   vkGetPhysicalDeviceExternalBufferProperties at 12
-+   vkGetPhysicalDeviceExternalSemaphoreProperties at 12
-+   vkGetPhysicalDeviceExternalFenceProperties at 12
-+   vkBindBufferMemory2 at 12
-+   vkBindImageMemory2 at 12
-+   vkGetDeviceGroupPeerMemoryFeatures at 20
-+   vkCmdSetDeviceMask at 8
-+   vkCmdDispatchBase at 28
-+   vkGetImageMemoryRequirements2 at 12
-+   vkGetBufferMemoryRequirements2 at 12
-+   vkTrimCommandPool at 16
-+   vkGetDeviceQueue2 at 12
-+   vkCreateSamplerYcbcrConversion at 16
-+   vkDestroySamplerYcbcrConversion at 16
-+   vkGetDescriptorSetLayoutSupport at 12
-+   vkGetDeviceGroupPresentCapabilitiesKHR at 8
-+   vkGetDeviceGroupSurfacePresentModesKHR at 16
-+   vkGetPhysicalDevicePresentRectanglesKHR at 20
-+   vkAcquireNextImage2KHR at 12
-+   vkCreateDescriptorUpdateTemplate at 16
-+   vkDestroyDescriptorUpdateTemplate at 16
-+   vkUpdateDescriptorSetWithTemplate at 24
-+
-+   vkGetPhysicalDeviceDisplayProperties2KHR at 12
-+   vkGetPhysicalDeviceDisplayPlaneProperties2KHR at 12
-+   vkGetDisplayModeProperties2KHR at 20
-+   vkGetDisplayPlaneCapabilities2KHR at 12
-+
-+   vkGetImageSparseMemoryRequirements2 at 16
-+   vkGetPhysicalDeviceImageFormatProperties2 at 12
-diff -Naur Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0-orig/tests/layers/CMakeLists.txt Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0/tests/layers/CMakeLists.txt
---- Vulkan-LoaderAndValidationLayers-sdk-1.1.73.0-orig/tests/layers/CMakeLists.txt	2017-04-05 00:36:39.000000000 +0300
-+++ Vulkan-LoaderAndValidationLayers-sdk-1.1.73.0/tests/layers/CMakeLists.txt	2017-06-29 08:39:07.115088000 +0300
-@@ -19,12 +19,12 @@
- 
- if(WIN32)
-     macro(AddVkLayer target)
--        file(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/VkLayer_${target}.def DEF_FILE)
-+        file(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/VkLayer_${target}${DEFFILE_SUFFIX}.def DEF_FILE)
-         add_custom_target(copy-${target}-def-file ALL
--                          COMMAND ${CMAKE_COMMAND} -E copy_if_different ${DEF_FILE} VkLayer_${target}.def
-+                          COMMAND ${CMAKE_COMMAND} -E copy_if_different ${DEF_FILE} VkLayer_${target}${DEFFILE_SUFFIX}.def
-                           VERBATIM)
-         set_target_properties(copy-${target}-def-file PROPERTIES FOLDER ${LOADER_HELPER_FOLDER})
--        add_library(VkLayer_${target} SHARED ${ARGN} VkLayer_${target}.def)
-+        add_library(VkLayer_${target} SHARED ${ARGN} VkLayer_${target}${DEFFILE_SUFFIX}.def)
-         target_compile_options(VkLayer_${target} PUBLIC ${MSVC_LOADER_COMPILE_OPTIONS})
-         add_dependencies(VkLayer_${target} generate_helper_files)
-     endmacro()
-diff -Naur Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0-orig/tests/layers/VkLayer_test-x86.def Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0/tests/layers/VkLayer_test-x86.def
---- Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0-orig/tests/layers/VkLayer_test-x86.def	1970-01-01 03:00:00.000000000 +0300
-+++ Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0/tests/layers/VkLayer_test-x86.def	2017-04-05 00:36:39.000000000 +0300
-@@ -0,0 +1,32 @@
-+; THIS FILE IS GENERATED.  DO NOT EDIT.
-+
-+;;;; Begin Copyright Notice ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-+; Vulkan
-+;
-+; Copyright (c) 2015-2016 The Khronos Group Inc.
-+; Copyright (c) 2015-2016 Valve Corporation
-+; Copyright (c) 2015-2016 LunarG, Inc.
-+;
-+; Licensed under the Apache License, Version 2.0 (the "License");
-+; you may not use this file except in compliance with the License.
-+; You may obtain a copy of the License at
-+;
-+;     http://www.apache.org/licenses/LICENSE-2.0
-+;
-+; Unless required by applicable law or agreed to in writing, software
-+; distributed under the License is distributed on an "AS IS" BASIS,
-+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+; See the License for the specific language governing permissions and
-+; limitations under the License.
-+;
-+;  Author: Courtney Goeltzenleuchter <courtney at LunarG.com>
-+;;;;  End Copyright Notice ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-+
-+; The following is required on Windows, for exporting symbols from the DLL
-+
-+LIBRARY VkLayer_test
-+EXPORTS
-+vkGetInstanceProcAddr at 8
-+vkGetDeviceProcAddr at 8
-+vkEnumerateInstanceLayerProperties at 8
-+vkEnumerateInstanceExtensionProperties at 12
-diff -Naur Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0-orig/tests/layers/VkLayer_wrap_objects-x86.def Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0/tests/layers/VkLayer_wrap_objects-x86.def
---- Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0-orig/tests/layers/VkLayer_wrap_objects-x86.def	1970-01-01 03:00:00.000000000 +0300
-+++ Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0/tests/layers/VkLayer_wrap_objects-x86.def	2017-04-05 00:36:39.000000000 +0300
-@@ -0,0 +1,32 @@
-+; THIS FILE IS GENERATED.  DO NOT EDIT.
-+
-+;;;; Begin Copyright Notice ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-+; Vulkan
-+;
-+; Copyright (c) 2015-2016 The Khronos Group Inc.
-+; Copyright (c) 2015-2016 Valve Corporation
-+; Copyright (c) 2015-2016 LunarG, Inc.
-+;
-+; Licensed under the Apache License, Version 2.0 (the "License");
-+; you may not use this file except in compliance with the License.
-+; You may obtain a copy of the License at
-+;
-+;     http://www.apache.org/licenses/LICENSE-2.0
-+;
-+; Unless required by applicable law or agreed to in writing, software
-+; distributed under the License is distributed on an "AS IS" BASIS,
-+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+; See the License for the specific language governing permissions and
-+; limitations under the License.
-+;
-+;  Author: Courtney Goeltzenleuchter <courtney at LunarG.com>
-+;;;;  End Copyright Notice ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-+
-+; The following is required on Windows, for exporting symbols from the DLL
-+
-+LIBRARY VkLayer_wrap_objects
-+EXPORTS
-+vkGetInstanceProcAddr at 8
-+vkGetDeviceProcAddr at 8
-+vkEnumerateInstanceLayerProperties at 8
-+vkEnumerateInstanceExtensionProperties at 12


=====================================
contrib/src/vulkan-loader/003-generate-pkgconfig-files.patch deleted
=====================================
@@ -1,18 +0,0 @@
-diff -Naur Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0-orig/loader/CMakeLists.txt Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0/loader/CMakeLists.txt
---- Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0-orig/loader/CMakeLists.txt	2017-06-29 08:19:36.448133100 +0300
-+++ Vulkan-LoaderAndValidationLayers-sdk-1.0.46.0/loader/CMakeLists.txt	2017-06-29 08:42:41.322355600 +0300
-@@ -286,6 +286,7 @@
-     if(INSTALL_LVL_FILES)
-         install(TARGETS ${API_LOWERCASE} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
-     endif()
-+endif()
- 
-     if(NOT APPLE)
-         # Generate pkg-config file.
-@@ -302,6 +302,5 @@
-             endif()
-         endif()
-     endif()
--endif()
- 
- 


=====================================
contrib/src/vulkan-loader/004-disable-suffix-in-static-lib.patch
=====================================
@@ -0,0 +1,11 @@
+--- a/loader/CMakeLists.txt
++++ b/loader/CMakeLists.txt
+@@ -398,7 +398,7 @@
+     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


=====================================
contrib/src/vulkan-loader/SHA512SUMS
=====================================
@@ -1 +1 @@
-59afc74b83050bd21186dc7a58f7d39350796ddd4cfdf9975dcf7c5d525f1e318acd204dc2a796b6286d24c2b928c3ccaa76563ce2bfedcbcfeaf68e70a88116  Vulkan-Loader-1.1.127.tar.gz
+b4c9716a0cb3d6748f69b91735e43a5fe51599f44c21f9c4d90e69daa05bddcfd354978e53e95d64cb6a6bcca640c48974d61893590ab443b230294d4668f245  Vulkan-Loader-1.3.211.tar.gz


=====================================
contrib/src/vulkan-loader/libvulkan-32.def
=====================================
@@ -0,0 +1,216 @@
+;
+; Definition file of vulkan-1.dll
+; Automatic generated by gendef
+; written by Kai Tietz 2008
+;
+LIBRARY "libvulkan-1.dll"
+EXPORTS
+vkAcquireNextImage2KHR at 12
+vkAcquireNextImageKHR at 40
+vkAllocateCommandBuffers at 12
+vkAllocateDescriptorSets at 12
+vkAllocateMemory at 16
+vkBeginCommandBuffer at 8
+vkBindBufferMemory2 at 12
+vkBindBufferMemory at 28
+vkBindImageMemory2 at 12
+vkBindImageMemory at 28
+vkCmdBeginQuery at 20
+vkCmdBeginRenderPass2 at 12
+vkCmdBeginRenderPass at 12
+vkCmdBindDescriptorSets at 36
+vkCmdBindIndexBuffer at 24
+vkCmdBindPipeline at 16
+vkCmdBindVertexBuffers at 20
+vkCmdBlitImage at 40
+vkCmdClearAttachments at 20
+vkCmdClearColorImage at 28
+vkCmdClearDepthStencilImage at 28
+vkCmdCopyBuffer at 28
+vkCmdCopyBufferToImage at 32
+vkCmdCopyImage at 36
+vkCmdCopyImageToBuffer at 32
+vkCmdCopyQueryPoolResults at 48
+vkCmdDispatch at 16
+vkCmdDispatchBase at 28
+vkCmdDispatchIndirect at 20
+vkCmdDraw at 20
+vkCmdDrawIndexed at 24
+vkCmdDrawIndexedIndirect at 28
+vkCmdDrawIndexedIndirectCount at 44
+vkCmdDrawIndirect at 28
+vkCmdDrawIndirectCount at 44
+vkCmdEndQuery at 16
+vkCmdEndRenderPass2 at 8
+vkCmdEndRenderPass at 4
+vkCmdExecuteCommands at 12
+vkCmdFillBuffer at 32
+vkCmdNextSubpass2 at 12
+vkCmdNextSubpass at 8
+vkCmdPipelineBarrier at 40
+vkCmdPushConstants at 28
+vkCmdResetEvent at 16
+vkCmdResetQueryPool at 20
+vkCmdResolveImage at 36
+vkCmdSetBlendConstants at 8
+vkCmdSetDepthBias at 16
+vkCmdSetDepthBounds at 12
+vkCmdSetDeviceMask at 8
+vkCmdSetEvent at 16
+vkCmdSetLineWidth at 8
+vkCmdSetScissor at 16
+vkCmdSetStencilCompareMask at 12
+vkCmdSetStencilReference at 12
+vkCmdSetStencilWriteMask at 12
+vkCmdSetViewport at 16
+vkCmdUpdateBuffer at 32
+vkCmdWaitEvents at 44
+vkCmdWriteTimestamp at 20
+vkCreateBuffer at 16
+vkCreateBufferView at 16
+vkCreateCommandPool at 16
+vkCreateComputePipelines at 28
+vkCreateDescriptorPool at 16
+vkCreateDescriptorSetLayout at 16
+vkCreateDescriptorUpdateTemplate at 16
+vkCreateDevice at 16
+vkCreateDisplayModeKHR at 24
+vkCreateDisplayPlaneSurfaceKHR at 16
+vkCreateEvent at 16
+vkCreateFence at 16
+vkCreateFramebuffer at 16
+vkCreateGraphicsPipelines at 28
+vkCreateHeadlessSurfaceEXT at 16
+vkCreateImage at 16
+vkCreateImageView at 16
+vkCreateInstance at 12
+vkCreatePipelineCache at 16
+vkCreatePipelineLayout at 16
+vkCreateQueryPool at 16
+vkCreateRenderPass2 at 16
+vkCreateRenderPass at 16
+vkCreateSampler at 16
+vkCreateSamplerYcbcrConversion at 16
+vkCreateSemaphore at 16
+vkCreateShaderModule at 16
+vkCreateSharedSwapchainsKHR at 20
+vkCreateSwapchainKHR at 16
+vkCreateWin32SurfaceKHR at 16
+vkDestroyBuffer at 16
+vkDestroyBufferView at 16
+vkDestroyCommandPool at 16
+vkDestroyDescriptorPool at 16
+vkDestroyDescriptorSetLayout at 16
+vkDestroyDescriptorUpdateTemplate at 16
+vkDestroyDevice at 8
+vkDestroyEvent at 16
+vkDestroyFence at 16
+vkDestroyFramebuffer at 16
+vkDestroyImage at 16
+vkDestroyImageView at 16
+vkDestroyInstance at 8
+vkDestroyPipeline at 16
+vkDestroyPipelineCache at 16
+vkDestroyPipelineLayout at 16
+vkDestroyQueryPool at 16
+vkDestroyRenderPass at 16
+vkDestroySampler at 16
+vkDestroySamplerYcbcrConversion at 16
+vkDestroySemaphore at 16
+vkDestroyShaderModule at 16
+vkDestroySurfaceKHR at 16
+vkDestroySwapchainKHR at 16
+vkDeviceWaitIdle at 4
+vkEndCommandBuffer at 4
+vkEnumerateDeviceExtensionProperties at 16
+vkEnumerateDeviceLayerProperties at 12
+vkEnumerateInstanceExtensionProperties at 12
+vkEnumerateInstanceLayerProperties at 8
+vkEnumerateInstanceVersion at 4
+vkEnumeratePhysicalDeviceGroups at 12
+vkEnumeratePhysicalDevices at 12
+vkFlushMappedMemoryRanges at 12
+vkFreeCommandBuffers at 20
+vkFreeDescriptorSets at 20
+vkFreeMemory at 16
+vkGetBufferDeviceAddress at 8
+vkGetBufferMemoryRequirements2 at 12
+vkGetBufferMemoryRequirements at 16
+vkGetBufferOpaqueCaptureAddress at 8
+vkGetDescriptorSetLayoutSupport at 12
+vkGetDeviceGroupPeerMemoryFeatures at 20
+vkGetDeviceGroupPresentCapabilitiesKHR at 8
+vkGetDeviceGroupSurfacePresentModesKHR at 16
+vkGetDeviceMemoryCommitment at 16
+vkGetDeviceMemoryOpaqueCaptureAddress at 8
+vkGetDeviceProcAddr at 8
+vkGetDeviceQueue2 at 12
+vkGetDeviceQueue at 16
+vkGetDisplayModeProperties2KHR at 20
+vkGetDisplayModePropertiesKHR at 20
+vkGetDisplayPlaneCapabilities2KHR at 12
+vkGetDisplayPlaneCapabilitiesKHR at 20
+vkGetDisplayPlaneSupportedDisplaysKHR at 16
+vkGetEventStatus at 12
+vkGetFenceStatus at 12
+vkGetImageMemoryRequirements2 at 12
+vkGetImageMemoryRequirements at 16
+vkGetImageSparseMemoryRequirements2 at 16
+vkGetImageSparseMemoryRequirements at 20
+vkGetImageSubresourceLayout at 20
+vkGetInstanceProcAddr at 8
+vkGetPhysicalDeviceDisplayPlaneProperties2KHR at 12
+vkGetPhysicalDeviceDisplayPlanePropertiesKHR at 12
+vkGetPhysicalDeviceDisplayProperties2KHR at 12
+vkGetPhysicalDeviceDisplayPropertiesKHR at 12
+vkGetPhysicalDeviceExternalBufferProperties at 12
+vkGetPhysicalDeviceExternalFenceProperties at 12
+vkGetPhysicalDeviceExternalSemaphoreProperties at 12
+vkGetPhysicalDeviceFeatures2 at 8
+vkGetPhysicalDeviceFeatures at 8
+vkGetPhysicalDeviceFormatProperties2 at 12
+vkGetPhysicalDeviceFormatProperties at 12
+vkGetPhysicalDeviceImageFormatProperties2 at 12
+vkGetPhysicalDeviceImageFormatProperties at 28
+vkGetPhysicalDeviceMemoryProperties2 at 8
+vkGetPhysicalDeviceMemoryProperties at 8
+vkGetPhysicalDevicePresentRectanglesKHR at 20
+vkGetPhysicalDeviceProperties2 at 8
+vkGetPhysicalDeviceProperties at 8
+vkGetPhysicalDeviceQueueFamilyProperties2 at 12
+vkGetPhysicalDeviceQueueFamilyProperties at 12
+vkGetPhysicalDeviceSparseImageFormatProperties2 at 16
+vkGetPhysicalDeviceSparseImageFormatProperties at 32
+vkGetPhysicalDeviceSurfaceCapabilities2KHR at 12
+vkGetPhysicalDeviceSurfaceCapabilitiesKHR at 16
+vkGetPhysicalDeviceSurfaceFormats2KHR at 16
+vkGetPhysicalDeviceSurfaceFormatsKHR at 20
+vkGetPhysicalDeviceSurfacePresentModesKHR at 20
+vkGetPhysicalDeviceSurfaceSupportKHR at 20
+vkGetPhysicalDeviceWin32PresentationSupportKHR at 8
+vkGetPipelineCacheData at 20
+vkGetQueryPoolResults at 40
+vkGetRenderAreaGranularity at 16
+vkGetSemaphoreCounterValue at 16
+vkGetSwapchainImagesKHR at 20
+vkInvalidateMappedMemoryRanges at 12
+vkMapMemory at 36
+vkMergePipelineCaches at 20
+vkQueueBindSparse at 20
+vkQueuePresentKHR at 8
+vkQueueSubmit at 20
+vkQueueWaitIdle at 4
+vkResetCommandBuffer at 8
+vkResetCommandPool at 16
+vkResetDescriptorPool at 16
+vkResetEvent at 12
+vkResetFences at 12
+vkResetQueryPool at 20
+vkSetEvent at 12
+vkSignalSemaphore at 8
+vkTrimCommandPool at 16
+vkUnmapMemory at 12
+vkUpdateDescriptorSetWithTemplate at 24
+vkUpdateDescriptorSets at 20
+vkWaitForFences at 24
+vkWaitSemaphores at 16


=====================================
contrib/src/vulkan-loader/rules.mak
=====================================
@@ -1,4 +1,4 @@
-VULKAN_LOADER_VERSION := 1.1.127
+VULKAN_LOADER_VERSION := 1.3.211
 VULKAN_LOADER_URL := https://github.com/KhronosGroup/Vulkan-Loader/archive/v$(VULKAN_LOADER_VERSION).tar.gz
 
 DEPS_vulkan-loader = vulkan-headers $(DEPS_vulkan-headers)
@@ -25,6 +25,7 @@ endif
 VULKAN_LOADER_CONF := \
 	-DENABLE_STATIC_LOADER=ON \
 	-DBUILD_SHARED_LIBS=OFF \
+	-DENABLE_WERROR=OFF \
 	-DBUILD_TESTS=OFF \
 	-DBUILD_LOADER=ON \
 	-DCMAKE_ASM_COMPILER="$(AS)"
@@ -38,9 +39,11 @@ 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/001-build-fix.patch
 	$(APPLY) $(SRC)/vulkan-loader/002-proper-def-files-for-32bit.patch
-	$(APPLY) $(SRC)/vulkan-loader/003-generate-pkgconfig-files.patch
+	$(APPLY) $(SRC)/vulkan-loader/004-disable-suffix-in-static-lib.patch
+ifeq ($(HOST),i686-w64-mingw32)
+	cp -v $(SRC)/vulkan-loader/libvulkan-32.def $(UNPACK_DIR)/loader/vulkan-1.def
+endif
 	$(MOVE)
 
 # Needed for the loader's cmake script to find the registry files
@@ -55,8 +58,8 @@ VULKAN_LOADER_ENV_CONF = \
 
 ifdef HAVE_WIN32
 # CMake will generate a .pc file with -lvulkan even if the static library
-# generated is libVKstatic.1.a. It also forget to link with libcfgmgr32.
-	cd $< && sed -i.orig -e "s,-lvulkan,-lVKstatic.1 -lcfgmgr32," build/loader/vulkan.pc
+# generated is libvulkan.dll.a. It also forget to link with libcfgmgr32.
+	cd $< && sed -i.orig -e "s,-lvulkan,-lvulkan.dll -lcfgmgr32," build/loader/vulkan.pc
 endif
 
 	$(call pkg_static,"build/loader/vulkan.pc")


=====================================
extras/ci/gitlab-ci.yml
=====================================
@@ -19,14 +19,14 @@ default:
         - amd64
 
 variables:
-    VLC_WIN32_IMAGE: registry.videolan.org/vlc-debian-win32:20220224135804
-    VLC_WIN64_IMAGE: registry.videolan.org/vlc-debian-win64:20220224144130
-    VLC_WIN_LLVM_IMAGE: registry.videolan.org/vlc-debian-llvm-mingw:20211020094514
+    VLC_WIN32_IMAGE: registry.videolan.org/vlc-debian-win32:20220505170026
+    VLC_WIN64_IMAGE: registry.videolan.org/vlc-debian-win64:20220505172436
+    VLC_WIN_LLVM_IMAGE: registry.videolan.org/vlc-debian-llvm-mingw:20220705072259
     VLC_UWP_LLVM_IMAGE: registry.videolan.org/vlc-debian-llvm-uwp:20211020111246
     VLC_DEBIAN_IMAGE: registry.videolan.org/vlc-debian-unstable:20210803114245
-    VLC_ANDROID_IMAGE: registry.videolan.org/vlc-debian-android:20210730131708
-    VLC_SNAP_IMAGE: registry.videolan.org/vlc-ubuntu-focal:20211020115724
-    VLC_RASPBIAN_IMAGE: registry.videolan.org/vlc-ubuntu-raspberry:20211006142322
+    VLC_ANDROID_IMAGE: registry.videolan.org/vlc-debian-android:20220505164734
+    VLC_SNAP_IMAGE: registry.videolan.org/vlc-ubuntu-focal:20220505174948
+    VLC_RASPBIAN_IMAGE: registry.videolan.org/vlc-ubuntu-raspberry:20220505175523
     VLC_WASM_EMSCRIPTEN: registry.videolan.org/vlc-debian-wasm-emscripten:20210915101305
 
 .variables-debian: &variables-debian



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/4989505a7a283fc4befc11cf21b90c1f481caa1a...79f0b7eab29e2398ce632d38caeee04562897830

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/4989505a7a283fc4befc11cf21b90c1f481caa1a...79f0b7eab29e2398ce632d38caeee04562897830
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