Skip to content

Commit 1ed6f51

Browse files
committed
GPU Display: Adapt Vulkan Backend to Vulkan headers >= 1.4
1 parent a1faad5 commit 1ed6f51

File tree

2 files changed

+14
-12
lines changed

2 files changed

+14
-12
lines changed

GPU/GPUTracking/display/backend/GPUDisplayBackendVulkan.cxx

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,16 @@
1212
/// \file GPUDisplayBackendVulkan.cxx
1313
/// \author David Rohr
1414

15+
#define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 1
1516
#include <vulkan/vulkan.hpp>
16-
#include <mutex>
17-
1817
VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE
1918

2019
#include "GPUCommonDef.h"
2120
#include "GPUDisplayBackendVulkan.h"
2221
#include "GPUDisplay.h"
2322

23+
#include <mutex>
24+
2425
using namespace o2::gpu;
2526

2627
#include "utils/qGetLdBinarySymbols.h"
@@ -337,6 +338,7 @@ double GPUDisplayBackendVulkan::checkDevice(vk::PhysicalDevice device, const std
337338

338339
void GPUDisplayBackendVulkan::createDevice()
339340
{
341+
VULKAN_HPP_DEFAULT_DISPATCHER.init();
340342
vk::ApplicationInfo appInfo{};
341343
appInfo.pApplicationName = "GPU CA Standalone display";
342344
appInfo.applicationVersion = VK_MAKE_VERSION(1, 0, 0);
@@ -353,28 +355,28 @@ void GPUDisplayBackendVulkan::createDevice()
353355

354356
const std::vector<const char*> reqValidationLayers = {
355357
"VK_LAYER_KHRONOS_validation"};
356-
auto debugCallback = [](VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageType, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData, void* pUserData) -> VkBool32 {
358+
auto debugCallback = [](vk::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, vk::DebugUtilsMessageTypeFlagsEXT messageType, const vk::DebugUtilsMessengerCallbackDataEXT* pCallbackData, void* pUserData) -> VkBool32 {
357359
static int32_t throwOnError = getenv("GPUCA_VULKAN_VALIDATION_THROW") ? atoi(getenv("GPUCA_VULKAN_VALIDATION_THROW")) : 0;
358360
static bool showVulkanValidationInfo = getenv("GPUCA_VULKAN_VALIDATION_INFO") && atoi(getenv("GPUCA_VULKAN_VALIDATION_INFO"));
359361
switch (messageSeverity) {
360-
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT:
362+
case vk::DebugUtilsMessageSeverityFlagBitsEXT::eVerbose:
361363
if (showVulkanValidationInfo) {
362364
GPUInfo("%s", pCallbackData->pMessage);
363365
}
364366
break;
365-
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT:
367+
case vk::DebugUtilsMessageSeverityFlagBitsEXT::eWarning:
366368
GPUWarning("%s", pCallbackData->pMessage);
367369
if (throwOnError > 1) {
368370
throw std::logic_error("break_on_validation_warning");
369371
}
370372
break;
371-
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT:
373+
case vk::DebugUtilsMessageSeverityFlagBitsEXT::eError:
372374
GPUError("%s", pCallbackData->pMessage);
373375
if (throwOnError) {
374376
throw std::logic_error("break_on_validation_error");
375377
}
376378
break;
377-
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT:
379+
case vk::DebugUtilsMessageSeverityFlagBitsEXT::eInfo:
378380
default:
379381
GPUInfo("%s", pCallbackData->pMessage);
380382
break;
@@ -403,10 +405,11 @@ void GPUDisplayBackendVulkan::createDevice()
403405
instanceCreateInfo.ppEnabledExtensionNames = reqInstanceExtensions.data();
404406

405407
mInstance = vk::createInstance(instanceCreateInfo, nullptr);
406-
mDLD = {mInstance, mDL.getProcAddress<PFN_vkGetInstanceProcAddr>("vkGetInstanceProcAddr")};
408+
VULKAN_HPP_DEFAULT_DISPATCHER.init(mInstance);
407409

408410
if (mEnableValidationLayers) {
409-
mDebugMessenger = mInstance.createDebugUtilsMessengerEXT(debugCreateInfo, nullptr, mDLD);
411+
GPUInfo("Enabling Vulkan Validation Layers");
412+
mDebugMessenger = mInstance.createDebugUtilsMessengerEXT(debugCreateInfo, nullptr);
410413
}
411414
std::vector<vk::ExtensionProperties> extensions = vk::enumerateInstanceExtensionProperties(nullptr);
412415
if (mDisplay->param()->par.debugLevel >= 3) {
@@ -480,6 +483,7 @@ void GPUDisplayBackendVulkan::createDevice()
480483
deviceCreateInfo.enabledLayerCount = instanceCreateInfo.enabledLayerCount;
481484
deviceCreateInfo.ppEnabledLayerNames = instanceCreateInfo.ppEnabledLayerNames;
482485
mDevice = mPhysicalDevice.createDevice(deviceCreateInfo, nullptr);
486+
VULKAN_HPP_DEFAULT_DISPATCHER.init(mDevice);
483487
mGraphicsQueue = mDevice.getQueue(mGraphicsFamily, 0);
484488

485489
vk::CommandPoolCreateInfo poolInfo{};
@@ -494,7 +498,7 @@ void GPUDisplayBackendVulkan::clearDevice()
494498
mDevice.destroy(nullptr);
495499
mInstance.destroySurfaceKHR(mSurface, nullptr);
496500
if (mEnableValidationLayers) {
497-
mInstance.destroyDebugUtilsMessengerEXT(mDebugMessenger, nullptr, mDLD);
501+
mInstance.destroyDebugUtilsMessengerEXT(mDebugMessenger, nullptr);
498502
}
499503
}
500504

GPU/GPUTracking/display/backend/GPUDisplayBackendVulkan.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,6 @@ class GPUDisplayBackendVulkan : public GPUDisplayBackend
133133
bool mEnableValidationLayers = false;
134134

135135
vk::Instance mInstance;
136-
vk::DynamicLoader mDL;
137-
vk::DispatchLoaderDynamic mDLD;
138136
vk::DebugUtilsMessengerEXT mDebugMessenger;
139137
vk::PhysicalDevice mPhysicalDevice;
140138
vk::Device mDevice;

0 commit comments

Comments
 (0)