[vlc-devel] [PATCH v2 2/3] contrib: add vulkan-loader 1.1.127 rules

Steve Lhomme robux4 at ycbcr.xyz
Mon Nov 9 08:12:35 CET 2020


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.

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 ?

> ---
>   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
> 


More information about the vlc-devel mailing list