Skip to content

Commit

Permalink
Fix Dynamic Loader namespace change in Vulkan SDK >= 1.4.304.0
Browse files Browse the repository at this point in the history
  • Loading branch information
SRSaunders committed Feb 7, 2025
1 parent af95639 commit 15be4c6
Showing 1 changed file with 21 additions and 10 deletions.
31 changes: 21 additions & 10 deletions neo/sys/DeviceManager_VK.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -366,9 +366,9 @@ class DeviceManager_VK : public DeviceManager
#endif

private:
static VKAPI_ATTR VkBool32 VKAPI_CALL vulkanDebugCallback(
VkDebugReportFlagsEXT flags,
VkDebugReportObjectTypeEXT objType,
static VKAPI_ATTR vk::Bool32 VKAPI_CALL vulkanDebugCallback(
vk::DebugReportFlagsEXT flags,
vk::DebugReportObjectTypeEXT objType,
uint64_t obj,
size_t location,
int32_t code,
Expand All @@ -388,23 +388,23 @@ class DeviceManager_VK : public DeviceManager
}
}

if( flags & VK_DEBUG_REPORT_ERROR_BIT_EXT )
if( flags & vk::DebugReportFlagBitsEXT::eError )
{
idLib::Printf( "[Vulkan] ERROR location=0x%zx code=%d, layerPrefix='%s'] %s\n", location, code, layerPrefix, msg );
}
else if( flags & VK_DEBUG_REPORT_WARNING_BIT_EXT )
else if( flags & vk::DebugReportFlagBitsEXT::eWarning )
{
idLib::Printf( "[Vulkan] WARNING location=0x%zx code=%d, layerPrefix='%s'] %s\n", location, code, layerPrefix, msg );
}
else if( flags & VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT )
else if( flags & vk::DebugReportFlagBitsEXT::ePerformanceWarning )
{
idLib::Printf( "[Vulkan] PERFORMANCE WARNING location=0x%zx code=%d, layerPrefix='%s'] %s\n", location, code, layerPrefix, msg );
}
else if( flags & VK_DEBUG_REPORT_INFORMATION_BIT_EXT )
else if( flags & vk::DebugReportFlagBitsEXT::eInformation )
{
idLib::Printf( "[Vulkan] INFO location=0x%zx code=%d, layerPrefix='%s'] %s\n", location, code, layerPrefix, msg );
}
else if( flags & VK_DEBUG_REPORT_DEBUG_BIT_EXT )
else if( flags & vk::DebugReportFlagBitsEXT::eDebug )
{
idLib::Printf( "[Vulkan] DEBUG location=0x%zx code=%d, layerPrefix='%s'] %s\n", location, code, layerPrefix, msg );
}
Expand Down Expand Up @@ -640,7 +640,11 @@ void DeviceManager_VK::installDebugCallback()
vk::DebugReportFlagBitsEXT::eWarning |
// vk::DebugReportFlagBitsEXT::eInformation |
vk::DebugReportFlagBitsEXT::ePerformanceWarning )
#if VK_HEADER_VERSION >= 304
.setPfnCallback( vulkanDebugCallback )
#else
.setPfnCallback( reinterpret_cast<PFN_vkDebugReportCallbackEXT>( vulkanDebugCallback ) )
#endif
.setPUserData( this );

const vk::Result res = m_VulkanInstance.createDebugReportCallbackEXT( &info, nullptr, &m_DebugReportCallback );
Expand Down Expand Up @@ -1251,13 +1255,20 @@ bool DeviceManager_VK::CreateDeviceAndSwapChain()
m_DeviceParams.enableNvrhiValidationLayer = r_useValidationLayers.GetInteger() > 0;
m_DeviceParams.enableDebugRuntime = r_useValidationLayers.GetInteger() > 1;

// SRS - DynamicLoader is in a separate namespace in newer versions of Vulkan-Hpp
#if VK_HEADER_VERSION >= 301
using VulkanDynamicLoader = vk::detail::DynamicLoader;
#else
using VulkanDynamicLoader = vk::DynamicLoader;
#endif

if( m_DeviceParams.enableDebugRuntime )
{
#if defined(__APPLE__) && defined( USE_MoltenVK )
}

// SRS - when USE_MoltenVK defined, load libMoltenVK vs. the default libvulkan
static const vk::DynamicLoader dl( "libMoltenVK.dylib" );
static const VulkanDynamicLoader dl( "libMoltenVK.dylib" );
#else
enabledExtensions.layers.insert( "VK_LAYER_KHRONOS_validation" );

Expand All @@ -1276,7 +1287,7 @@ bool DeviceManager_VK::CreateDeviceAndSwapChain()
}

// SRS - make static so ~DynamicLoader() does not prematurely unload vulkan dynamic lib
static const vk::DynamicLoader dl;
static const VulkanDynamicLoader dl;
#endif
vkGetInstanceProcAddr = dl.getProcAddress<PFN_vkGetInstanceProcAddr>( "vkGetInstanceProcAddr" );
VULKAN_HPP_DEFAULT_DISPATCHER.init( vkGetInstanceProcAddr );
Expand Down

0 comments on commit 15be4c6

Please sign in to comment.