[vlc-devel] [PATCH v2 2/3] contrib: add vulkan-loader 1.1.127 rules
Alexandre Janniaux
ajanni at videolabs.io
Mon Nov 9 09:20:35 CET 2020
Hi,
On Mon, Nov 09, 2020 at 08:12:35AM +0100, Steve Lhomme wrote:
> On 2020-11-08 16:37, Alexandre Janniaux wrote:
> > Add contrib for building vulkan module for Windows with patches from the
> > msys2 project.
>
> Is "vulkan loader" a project to build vulkan or load vulkan ? The naming
> seems odd.
Vulkan is likely provided by the graphic driver, vulkan-loader is
a loader, or ICD loader. The best way to understand is to read the
quick introduction of the the Khronos project:
https://github.com/KhronosGroup/Vulkan-Loader#introduction
Or to read the much more complete description in Khronos doc:
https://github.com/KhronosGroup/Vulkan-Loader/blob/master/loader/LoaderAndLayerInterface.md
> If the patches are clean (standalone) it would be good to keep the whole git
> email/header. Are these patches submitted upstream or we will have to
> maintain them ?
There were no email headers unfortunately, msys2 is using github, not
ML.
I don't know for the patches, but the version I'm pushing here is
somewhat old already. I plan to update it when I can but making it
work was painful from the start and since I need these patch to
correctly check the status of the other Vulkan patches I sent for
Windows, I prefer this version to be merged before and finally have
Vulkan working out-of-the-box on Windows.
Regards,
--
Alexandre Janniaux
Videolabs
> > ---
> > contrib/src/vulkan-loader/001-build-fix.patch | 43 ++
> > .../002-proper-def-files-for-32bit.patch | 401 ++++++++++++++++++
> > .../003-generate-pkgconfig-files.patch | 18 +
> > contrib/src/vulkan-loader/SHA512SUMS | 1 +
> > contrib/src/vulkan-loader/rules.mak | 53 +++
> > 5 files changed, 516 insertions(+)
> > create mode 100644 contrib/src/vulkan-loader/001-build-fix.patch
> > create mode 100644 contrib/src/vulkan-loader/002-proper-def-files-for-32bit.patch
> > create mode 100644 contrib/src/vulkan-loader/003-generate-pkgconfig-files.patch
> > create mode 100644 contrib/src/vulkan-loader/SHA512SUMS
> > create mode 100644 contrib/src/vulkan-loader/rules.mak
> >
> > diff --git a/contrib/src/vulkan-loader/001-build-fix.patch b/contrib/src/vulkan-loader/001-build-fix.patch
> > new file mode 100644
> > index 0000000000..944e7500cb
> > --- /dev/null
> > +++ b/contrib/src/vulkan-loader/001-build-fix.patch
> > @@ -0,0 +1,43 @@
> > +--- 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"
> > 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
> > new file mode 100644
> > index 0000000000..1f722974f4
> > --- /dev/null
> > +++ b/contrib/src/vulkan-loader/002-proper-def-files-for-32bit.patch
> > @@ -0,0 +1,401 @@
> > +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 @@
> > + 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})
> > +
> > + if(WIN32)
> > ++ if(MSVC)
> > + # Use static MSVCRT libraries
> > + foreach(configuration
> > + in
> > +@@ -156,6 +157,7 @@
> > + "${${configuration}}")
> > + endif()
> > + endforeach()
> > ++ 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)
> > + 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 @@
> > + ;
> > + ;;;; End Copyright Notice ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> > +
> > +-LIBRARY vulkan-1.dll
> > ++LIBRARY libvulkan-1.dll
> > + 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
> > diff --git a/contrib/src/vulkan-loader/003-generate-pkgconfig-files.patch b/contrib/src/vulkan-loader/003-generate-pkgconfig-files.patch
> > new file mode 100644
> > index 0000000000..770079b3de
> > --- /dev/null
> > +++ b/contrib/src/vulkan-loader/003-generate-pkgconfig-files.patch
> > @@ -0,0 +1,18 @@
> > +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()
> > +
> > +
> > diff --git a/contrib/src/vulkan-loader/SHA512SUMS b/contrib/src/vulkan-loader/SHA512SUMS
> > new file mode 100644
> > index 0000000000..7fd4dbbba8
> > --- /dev/null
> > +++ b/contrib/src/vulkan-loader/SHA512SUMS
> > @@ -0,0 +1 @@
> > +59afc74b83050bd21186dc7a58f7d39350796ddd4cfdf9975dcf7c5d525f1e318acd204dc2a796b6286d24c2b928c3ccaa76563ce2bfedcbcfeaf68e70a88116 Vulkan-Loader-1.1.127.tar.gz
> > diff --git a/contrib/src/vulkan-loader/rules.mak b/contrib/src/vulkan-loader/rules.mak
> > new file mode 100644
> > index 0000000000..d9b2658f81
> > --- /dev/null
> > +++ b/contrib/src/vulkan-loader/rules.mak
> > @@ -0,0 +1,53 @@
> > +VULKAN_LOADER_VERSION := 1.1.127
> > +VULKAN_LOADER_URL := https://github.com/KhronosGroup/Vulkan-Loader/archive/v$(VULKAN_LOADER_VERSION).tar.gz
> > +VULKAN_LOADER_ARCHIVE := Vulkan-Loader-$(VULKAN_LOADER_VERSION).tar.gz
> > +
> > +DEPS_vulkan-loader = vulkan-headers $(DEPS_vulkan-headers)
> > +
> > +# On WIN32 platform, we don't know where to find the loader
> > +# so always build it for the Vulkan module.
> > +ifdef HAVE_WIN32_DESKTOP
> > +PKGS += vulkan-loader
> > +ifeq ($(call need_pkg,"vulkan"),)
> > +PKGS_FOUND += vulkan-loader
> > +endif
> > +endif
> > +
> > +VULKAN_LOADER_CONF := \
> > + -DENABLE_STATIC_LOADER=ON \
> > + -DBUILD_SHARED_LIBS=OFF \
> > + -DBUILD_TESTS=OFF \
> > + -DBUILD_LOADER=ON
> > +
> > +$(TARBALLS)/$(VULKAN_LOADER_ARCHIVE):
> > + $(call download_pkg,$(VULKAN_LOADER_URL),vulkan-loader)
> > +
> > +.sum-vulkan-loader: $(VULKAN_LOADER_ARCHIVE)
> > +
> > +vulkan-loader: $(VULKAN_LOADER_ARCHIVE) .sum-vulkan-loader
> > + $(UNPACK)
> > + # Patches are from msys2 package system
> > + # https://github.com/msys2/MINGW-packages/tree/master/mingw-w64-vulkan-loader
> > + cd $(UNPACK_DIR) && patch -p1 -i ../$(SRC)/vulkan-loader/001-build-fix.patch
> > + cd $(UNPACK_DIR) && patch -p1 -i ../$(SRC)/vulkan-loader/002-proper-def-files-for-32bit.patch
> > + cd $(UNPACK_DIR) && patch -p1 -i ../$(SRC)/vulkan-loader/003-generate-pkgconfig-files.patch
> > + $(MOVE)
> > +
> > +# Needed for the loader's cmake script to find the registry files
> > +VULKAN_LOADER_ENV_CONF = \
> > + VULKAN_HEADERS_INSTALL_DIR="$(PREFIX)"
> > +
> > +.vulkan-loader: vulkan-loader toolchain.cmake
> > +ifndef HAVE_WIN32
> > + $(error vulkan-loader contrib can only be used on WIN32 targets)
> > +endif
> > + cd $< && rm -rf ./build && mkdir -p build
> > + cd $</build && $(VULKAN_LOADER_ENV_CONF) $(HOSTVARS) \
> > + $(CMAKE) $(VULKAN_LOADER_CONF) ..
> > + cd $</build && $(CMAKEBUILD) .
> > + # 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
> > + $(call pkg_static,"build/loader/vulkan.pc")
> > + cd $</build && $(MAKE) install
>
> You build once with CMAKEBUILD and once with make ?
>
> > + touch $@
> > --
> > 2.29.2
> >
> > _______________________________________________
> > vlc-devel mailing list
> > To unsubscribe or modify your subscription options:
> > https://mailman.videolan.org/listinfo/vlc-devel
> >
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
More information about the vlc-devel
mailing list