Merge topic 'FindVulkan-debug-libraries'

74bb57cae9 FindVulkan: Search for dxc / volk debug libraries
7c7c7721e9 FindVulkan: Fix test

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !10475
This commit is contained in:
Brad King 2025-03-20 13:14:59 +00:00 committed by Kitware Robot
commit 0a69e10cbf
3 changed files with 66 additions and 28 deletions

View File

@ -458,23 +458,35 @@ if(MoltenVK IN_LIST Vulkan_FIND_COMPONENTS)
endif() endif()
if(volk IN_LIST Vulkan_FIND_COMPONENTS) if(volk IN_LIST Vulkan_FIND_COMPONENTS)
find_library(Vulkan_volk_LIBRARY find_library(Vulkan_volk_LIBRARY
NAMES volk NAMES volk
HINTS HINTS
${_Vulkan_hint_library_search_paths}) ${_Vulkan_hint_library_search_paths})
mark_as_advanced(Vulkan_Volk_LIBRARY) mark_as_advanced(Vulkan_volk_LIBRARY)
find_library(Vulkan_volk_DEBUG_LIBRARY
NAMES volkd
HINTS
${_Vulkan_hint_library_search_paths})
mark_as_advanced(Vulkan_volk_DEBUG_LIBRARY)
endif() endif()
if (dxc IN_LIST Vulkan_FIND_COMPONENTS) if (dxc IN_LIST Vulkan_FIND_COMPONENTS)
find_library(Vulkan_dxc_LIBRARY find_library(Vulkan_dxc_LIBRARY
NAMES dxcompiler NAMES dxcompiler
HINTS HINTS
${_Vulkan_hint_library_search_paths}) ${_Vulkan_hint_library_search_paths})
mark_as_advanced(Vulkan_dxc_LIBRARY) mark_as_advanced(Vulkan_dxc_LIBRARY)
find_library(Vulkan_dxc_DEBUG_LIBRARY
NAMES dxcompilerd
HINTS
${_Vulkan_hint_library_search_paths})
mark_as_advanced(Vulkan_dxc_DEBUG_LIBRARY)
find_program(Vulkan_dxc_EXECUTABLE find_program(Vulkan_dxc_EXECUTABLE
NAMES dxc NAMES dxc
HINTS HINTS
${_Vulkan_hint_executable_search_paths}) ${_Vulkan_hint_executable_search_paths})
mark_as_advanced(Vulkan_dxc_EXECUTABLE) mark_as_advanced(Vulkan_dxc_EXECUTABLE)
endif() endif()
@ -828,36 +840,57 @@ if(Vulkan_FOUND)
endif() endif()
endif() endif()
if(Vulkan_volk_LIBRARY AND NOT TARGET Vulkan::volk) if((Vulkan_volk_LIBRARY OR Vulkan_volk_DEBUG_LIBRARY) AND NOT TARGET Vulkan::volk)
add_library(Vulkan::volk STATIC IMPORTED) add_library(Vulkan::volk STATIC IMPORTED)
set_property(TARGET Vulkan::volk set_property(TARGET Vulkan::volk
PROPERTY PROPERTY
INTERFACE_INCLUDE_DIRECTORIES "${Vulkan_INCLUDE_DIRS}") INTERFACE_INCLUDE_DIRECTORIES "${Vulkan_INCLUDE_DIRS}")
set_property(TARGET Vulkan::volk APPEND if(Vulkan_volk_LIBRARY)
PROPERTY set_property(TARGET Vulkan::volk APPEND
IMPORTED_CONFIGURATIONS Release) PROPERTY
set_property(TARGET Vulkan::volk APPEND IMPORTED_CONFIGURATIONS Release)
PROPERTY set_property(TARGET Vulkan::volk
IMPORTED_LOCATION_RELEASE "${Vulkan_volk_LIBRARY}") PROPERTY
IMPORTED_LOCATION_RELEASE "${Vulkan_volk_LIBRARY}")
endif()
if(Vulkan_volk_DEBUG_LIBRARY)
set_property(TARGET Vulkan::volk APPEND
PROPERTY
IMPORTED_CONFIGURATIONS Debug)
set_property(TARGET Vulkan::volk
PROPERTY
IMPORTED_LOCATION_DEBUG "${Vulkan_volk_DEBUG_LIBRARY}")
endif()
if (NOT WIN32) if (NOT WIN32)
set_property(TARGET Vulkan::volk APPEND set_property(TARGET Vulkan::volk APPEND
PROPERTY PROPERTY
IMPORTED_LINK_INTERFACE_LIBRARIES dl) IMPORTED_LINK_INTERFACE_LIBRARIES dl)
endif() endif()
endif() endif()
if (Vulkan_dxc_LIBRARY AND NOT TARGET Vulkan::dxc_lib) if ((Vulkan_dxc_LIBRARY OR Vulkan_dxc_DEBUG_LIBRARY) AND NOT TARGET Vulkan::dxc_lib)
add_library(Vulkan::dxc_lib STATIC IMPORTED) add_library(Vulkan::dxc_lib STATIC IMPORTED)
set_property(TARGET Vulkan::dxc_lib set_property(TARGET Vulkan::dxc_lib
PROPERTY PROPERTY
INTERFACE_INCLUDE_DIRECTORIES "${Vulkan_INCLUDE_DIRS}") INTERFACE_INCLUDE_DIRECTORIES "${Vulkan_INCLUDE_DIRS}")
set_property(TARGET Vulkan::dxc_lib APPEND if(Vulkan_dxc_LIBRARY)
PROPERTY set_property(TARGET Vulkan::dxc_lib APPEND
IMPORTED_CONFIGURATIONS Release) PROPERTY
set_property(TARGET Vulkan::dxc_lib APPEND IMPORTED_CONFIGURATIONS Release)
PROPERTY set_property(TARGET Vulkan::dxc_lib
IMPORTED_LOCATION_RELEASE "${Vulkan_dxc_LIBRARY}") PROPERTY
IMPORTED_LOCATION_RELEASE "${Vulkan_dxc_LIBRARY}")
endif()
if(Vulkan_dxc_DEBUG_LIBRARY)
set_property(TARGET Vulkan::dxc_lib APPEND
PROPERTY
IMPORTED_CONFIGURATIONS Debug)
set_property(TARGET Vulkan::dxc_lib
PROPERTY
IMPORTED_LOCATION_DEBUG "${Vulkan_dxc_DEBUG_LIBRARY}")
endif()
endif() endif()
if(Vulkan_dxc_EXECUTABLE AND NOT TARGET Vulkan::dxc_exe) if(Vulkan_dxc_EXECUTABLE AND NOT TARGET Vulkan::dxc_exe)

View File

@ -1,7 +1,12 @@
#include <cassert>
#include <cstdint>
#include <cstdio> #include <cstdio>
#ifdef _WIN32
# include <Windows.h>
#endif
#include "dxc/dxcapi.h" #include "dxc/dxcapi.h"
#include "printf.h"
int main() int main()
{ {

View File

@ -15,7 +15,7 @@ int main()
try { try {
// initialize dynamic dispatcher // initialize dynamic dispatcher
vk::DynamicLoader dl; vk::detail::DynamicLoader dl;
PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr =
dl.getProcAddress<PFN_vkGetInstanceProcAddr>("vkGetInstanceProcAddr"); dl.getProcAddress<PFN_vkGetInstanceProcAddr>("vkGetInstanceProcAddr");
VULKAN_HPP_DEFAULT_DISPATCHER.init(vkGetInstanceProcAddr); VULKAN_HPP_DEFAULT_DISPATCHER.init(vkGetInstanceProcAddr);