core: Update Vulkan headers (#4319)
This commit is contained in:
@@ -31,6 +31,11 @@ class ProgramParameters;
|
|||||||
|
|
||||||
namespace vulkan {
|
namespace vulkan {
|
||||||
|
|
||||||
|
using DynamicLoader = vk::detail::DynamicLoader;
|
||||||
|
using DispatchLoaderDynamic = VULKAN_HPP_DISPATCH_LOADER_DYNAMIC_TYPE;
|
||||||
|
template <typename OwnerType>
|
||||||
|
using ObjectDestroy = vk::detail::ObjectDestroy<OwnerType, DispatchLoaderDynamic>;
|
||||||
|
|
||||||
class RendererBackend : public gfx::RendererBackend {
|
class RendererBackend : public gfx::RendererBackend {
|
||||||
public:
|
public:
|
||||||
RendererBackend(gfx::ContextMode);
|
RendererBackend(gfx::ContextMode);
|
||||||
@@ -40,7 +45,7 @@ public:
|
|||||||
void initShaders(gfx::ShaderRegistry&, const ProgramParameters& programParameters) override;
|
void initShaders(gfx::ShaderRegistry&, const ProgramParameters& programParameters) override;
|
||||||
void init();
|
void init();
|
||||||
|
|
||||||
const vk::DispatchLoaderDynamic& getDispatcher() const { return dispatcher; }
|
const DispatchLoaderDynamic& getDispatcher() const { return dispatcher; }
|
||||||
const vk::UniqueInstance& getInstance() const { return instance; }
|
const vk::UniqueInstance& getInstance() const { return instance; }
|
||||||
const vk::PhysicalDevice& getPhysicalDevice() const { return physicalDevice; }
|
const vk::PhysicalDevice& getPhysicalDevice() const { return physicalDevice; }
|
||||||
const vk::UniqueDevice& getDevice() const { return device; }
|
const vk::UniqueDevice& getDevice() const { return device; }
|
||||||
@@ -97,8 +102,8 @@ protected:
|
|||||||
void destroyResources();
|
void destroyResources();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
vk::DynamicLoader dynamicLoader;
|
DynamicLoader dynamicLoader;
|
||||||
vk::DispatchLoaderDynamic dispatcher;
|
DispatchLoaderDynamic dispatcher;
|
||||||
|
|
||||||
vk::UniqueInstance instance;
|
vk::UniqueInstance instance;
|
||||||
vk::UniqueDebugUtilsMessengerEXT debugUtilsCallback;
|
vk::UniqueDebugUtilsMessengerEXT debugUtilsCallback;
|
||||||
|
|||||||
@@ -82,7 +82,6 @@ public:
|
|||||||
return device.get();
|
return device.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<const char*> layers = {"VK_LAYER_KHRONOS_validation"};
|
|
||||||
const std::vector<const char*> extensions = {
|
const std::vector<const char*> extensions = {
|
||||||
VK_KHR_SWAPCHAIN_EXTENSION_NAME,
|
VK_KHR_SWAPCHAIN_EXTENSION_NAME,
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
@@ -93,10 +92,8 @@ public:
|
|||||||
float queuePriority = 1.0f;
|
float queuePriority = 1.0f;
|
||||||
vk::DeviceQueueCreateInfo queueCreateInfo(vk::DeviceQueueCreateFlags(), getQueueIndex(), 1, &queuePriority);
|
vk::DeviceQueueCreateInfo queueCreateInfo(vk::DeviceQueueCreateFlags(), getQueueIndex(), 1, &queuePriority);
|
||||||
|
|
||||||
auto createInfo = vk::DeviceCreateInfo()
|
auto createInfo =
|
||||||
.setQueueCreateInfos(queueCreateInfo)
|
vk::DeviceCreateInfo().setQueueCreateInfos(queueCreateInfo).setPEnabledExtensionNames(extensions);
|
||||||
.setPEnabledExtensionNames(extensions)
|
|
||||||
.setPEnabledLayerNames(layers);
|
|
||||||
|
|
||||||
device = physicalDevice.createDeviceUnique(createInfo, nullptr, dispatcher);
|
device = physicalDevice.createDeviceUnique(createInfo, nullptr, dispatcher);
|
||||||
dispatcher.init(device.get());
|
dispatcher.init(device.get());
|
||||||
@@ -107,8 +104,8 @@ public:
|
|||||||
uint32_t getQueueIndex() { return graphicsQueueIndex; }
|
uint32_t getQueueIndex() { return graphicsQueueIndex; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
vk::DynamicLoader dynamicLoader;
|
mbgl::vulkan::DynamicLoader dynamicLoader;
|
||||||
vk::DispatchLoaderDynamic dispatcher;
|
mbgl::vulkan::DispatchLoaderDynamic dispatcher;
|
||||||
|
|
||||||
vk::UniqueInstance instance;
|
vk::UniqueInstance instance;
|
||||||
vk::PhysicalDevice physicalDevice;
|
vk::PhysicalDevice physicalDevice;
|
||||||
@@ -136,7 +133,7 @@ public:
|
|||||||
if (result != VK_SUCCESS) throw std::runtime_error("Failed to create glfw window surface");
|
if (result != VK_SUCCESS) throw std::runtime_error("Failed to create glfw window surface");
|
||||||
|
|
||||||
surface = vk::UniqueSurfaceKHR(surface_,
|
surface = vk::UniqueSurfaceKHR(surface_,
|
||||||
vk::ObjectDestroy<vk::Instance, vk::DispatchLoaderDynamic>(
|
mbgl::vulkan::ObjectDestroy<vk::Instance>(
|
||||||
backendImpl.getInstance().get(), nullptr, backendImpl.getDispatcher()));
|
backendImpl.getInstance().get(), nullptr, backendImpl.getDispatcher()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -190,7 +187,7 @@ void GLFWVulkanBackend::initInstance() {
|
|||||||
|
|
||||||
// this method is required to set `instance` to a valid vkInstance
|
// this method is required to set `instance` to a valid vkInstance
|
||||||
instance = vk::UniqueInstance(VkContext::shared().getInstance(),
|
instance = vk::UniqueInstance(VkContext::shared().getInstance(),
|
||||||
vk::ObjectDestroy<vk::NoParent, vk::DispatchLoaderDynamic>(nullptr, dispatcher));
|
mbgl::vulkan::ObjectDestroy<vk::NoParent>(nullptr, dispatcher));
|
||||||
|
|
||||||
// debug builds also require:
|
// debug builds also require:
|
||||||
// - enabling either `VK_EXT_debug_utils` (and updating `debugUtilsEnabled`) or `VK_EXT_debug_report` extension
|
// - enabling either `VK_EXT_debug_utils` (and updating `debugUtilsEnabled`) or `VK_EXT_debug_report` extension
|
||||||
@@ -207,7 +204,7 @@ void GLFWVulkanBackend::initDevice() {
|
|||||||
|
|
||||||
physicalDevice = VkContext::shared().getPhysicalDevice();
|
physicalDevice = VkContext::shared().getPhysicalDevice();
|
||||||
device = vk::UniqueDevice(VkContext::shared().getDevice(),
|
device = vk::UniqueDevice(VkContext::shared().getDevice(),
|
||||||
vk::ObjectDestroy<vk::NoParent, vk::DispatchLoaderDynamic>(nullptr, dispatcher));
|
mbgl::vulkan::ObjectDestroy<vk::NoParent>(nullptr, dispatcher));
|
||||||
|
|
||||||
graphicsQueueIndex = presentQueueIndex = VkContext::shared().getQueueIndex();
|
graphicsQueueIndex = presentQueueIndex = VkContext::shared().getQueueIndex();
|
||||||
physicalDeviceFeatures = vk::PhysicalDeviceFeatures();
|
physicalDeviceFeatures = vk::PhysicalDeviceFeatures();
|
||||||
|
|||||||
@@ -271,26 +271,26 @@ void RendererBackend::triggerFrameCapture([[maybe_unused]] uint32_t frameCount,
|
|||||||
|
|
||||||
#ifdef ENABLE_VULKAN_VALIDATION
|
#ifdef ENABLE_VULKAN_VALIDATION
|
||||||
|
|
||||||
static VKAPI_ATTR VkBool32 VKAPI_CALL vkDebugUtilsCallback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
|
static VKAPI_ATTR vk::Bool32 VKAPI_CALL vkDebugUtilsCallback(vk::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
|
||||||
VkDebugUtilsMessageTypeFlagsEXT,
|
vk::DebugUtilsMessageTypeFlagsEXT,
|
||||||
const VkDebugUtilsMessengerCallbackDataEXT* callbackData,
|
const vk::DebugUtilsMessengerCallbackDataEXT* callbackData,
|
||||||
void*) {
|
void*) {
|
||||||
EventSeverity mbglSeverity = EventSeverity::Debug;
|
EventSeverity mbglSeverity = EventSeverity::Debug;
|
||||||
|
|
||||||
switch (messageSeverity) {
|
switch (messageSeverity) {
|
||||||
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT:
|
case vk::DebugUtilsMessageSeverityFlagBitsEXT::eVerbose:
|
||||||
mbglSeverity = EventSeverity::Debug;
|
mbglSeverity = EventSeverity::Debug;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT:
|
case vk::DebugUtilsMessageSeverityFlagBitsEXT::eInfo:
|
||||||
mbglSeverity = EventSeverity::Info;
|
mbglSeverity = EventSeverity::Info;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT:
|
case vk::DebugUtilsMessageSeverityFlagBitsEXT::eWarning:
|
||||||
mbglSeverity = EventSeverity::Warning;
|
mbglSeverity = EventSeverity::Warning;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT:
|
case vk::DebugUtilsMessageSeverityFlagBitsEXT::eError:
|
||||||
mbglSeverity = EventSeverity::Error;
|
mbglSeverity = EventSeverity::Error;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -303,8 +303,8 @@ static VKAPI_ATTR VkBool32 VKAPI_CALL vkDebugUtilsCallback(VkDebugUtilsMessageSe
|
|||||||
return VK_FALSE;
|
return VK_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static VKAPI_ATTR VkBool32 vkDebugReportCallback(VkDebugReportFlagsEXT flags,
|
static VKAPI_ATTR vk::Bool32 VKAPI_CALL vkDebugReportCallback(vk::DebugReportFlagsEXT flags,
|
||||||
VkDebugReportObjectTypeEXT objectType,
|
vk::DebugReportObjectTypeEXT objectType,
|
||||||
[[maybe_unused]] uint64_t object,
|
[[maybe_unused]] uint64_t object,
|
||||||
[[maybe_unused]] size_t location,
|
[[maybe_unused]] size_t location,
|
||||||
int32_t messageCode,
|
int32_t messageCode,
|
||||||
@@ -313,15 +313,15 @@ static VKAPI_ATTR VkBool32 vkDebugReportCallback(VkDebugReportFlagsEXT flags,
|
|||||||
[[maybe_unused]] void* pUserData) {
|
[[maybe_unused]] void* pUserData) {
|
||||||
EventSeverity mbglSeverity = EventSeverity::Debug;
|
EventSeverity mbglSeverity = EventSeverity::Debug;
|
||||||
|
|
||||||
if (flags & VK_DEBUG_REPORT_INFORMATION_BIT_EXT) {
|
if (flags & vk::DebugReportFlagBitsEXT::eInformation) {
|
||||||
mbglSeverity = EventSeverity::Info;
|
mbglSeverity = EventSeverity::Info;
|
||||||
} else if (flags & VK_DEBUG_REPORT_WARNING_BIT_EXT) {
|
} else if (flags & vk::DebugReportFlagBitsEXT::eWarning) {
|
||||||
mbglSeverity = EventSeverity::Warning;
|
mbglSeverity = EventSeverity::Warning;
|
||||||
} else if (flags & VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT) {
|
} else if (flags & vk::DebugReportFlagBitsEXT::ePerformanceWarning) {
|
||||||
mbglSeverity = EventSeverity::Warning;
|
mbglSeverity = EventSeverity::Warning;
|
||||||
} else if (flags & VK_DEBUG_REPORT_ERROR_BIT_EXT) {
|
} else if (flags & vk::DebugReportFlagBitsEXT::eError) {
|
||||||
mbglSeverity = EventSeverity::Error;
|
mbglSeverity = EventSeverity::Error;
|
||||||
} else if (flags & VK_DEBUG_REPORT_DEBUG_BIT_EXT) {
|
} else if (flags & vk::DebugReportFlagBitsEXT::eDebug) {
|
||||||
mbglSeverity = EventSeverity::Debug;
|
mbglSeverity = EventSeverity::Debug;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -507,7 +507,6 @@ void RendererBackend::initAllocator() {
|
|||||||
|
|
||||||
void RendererBackend::initDevice() {
|
void RendererBackend::initDevice() {
|
||||||
const auto& extensions = getDeviceExtensions();
|
const auto& extensions = getDeviceExtensions();
|
||||||
const auto& layers = getLayers();
|
|
||||||
const auto& surface = getDefaultRenderable().getResource<SurfaceRenderableResource>().getPlatformSurface().get();
|
const auto& surface = getDefaultRenderable().getResource<SurfaceRenderableResource>().getPlatformSurface().get();
|
||||||
|
|
||||||
const auto& isPhysicalDeviceCompatible = [&](const vk::PhysicalDevice& candidate) -> bool {
|
const auto& isPhysicalDeviceCompatible = [&](const vk::PhysicalDevice& candidate) -> bool {
|
||||||
@@ -601,9 +600,6 @@ void RendererBackend::initDevice() {
|
|||||||
.setPEnabledExtensionNames(extensions)
|
.setPEnabledExtensionNames(extensions)
|
||||||
.setPEnabledFeatures(&physicalDeviceFeatures);
|
.setPEnabledFeatures(&physicalDeviceFeatures);
|
||||||
|
|
||||||
// this is not needed for newer implementations
|
|
||||||
createInfo.setPEnabledLayerNames(layers);
|
|
||||||
|
|
||||||
device = physicalDevice.createDeviceUnique(createInfo, nullptr, dispatcher);
|
device = physicalDevice.createDeviceUnique(createInfo, nullptr, dispatcher);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
2
vendor/Vulkan-Headers
vendored
2
vendor/Vulkan-Headers
vendored
Submodule vendor/Vulkan-Headers updated: d192041a2f...015e25c3c9
Reference in New Issue
Block a user