VulkanRenderer: Fix VK_EXT_debug_utils with MoltenVK
This commit is contained in:
parent
48b87cc99b
commit
d86f61cd82
|
|
@ -58,6 +58,7 @@ namespace Nz
|
|||
inline VmaAllocator GetMemoryAllocator() const;
|
||||
inline VkPhysicalDevice GetPhysicalDevice() const;
|
||||
inline const Vk::PhysicalDevice& GetPhysicalDeviceInfo() const;
|
||||
inline PFN_vkVoidFunction GetProcAddr(const char* name, bool allowInstanceFallback);
|
||||
QueueHandle GetQueue(UInt32 queueFamilyIndex, UInt32 queueIndex);
|
||||
|
||||
inline bool IsExtensionLoaded(const std::string& extensionName);
|
||||
|
|
@ -98,8 +99,6 @@ namespace Nz
|
|||
void ResetPointers();
|
||||
void WaitAndDestroyDevice();
|
||||
|
||||
inline PFN_vkVoidFunction GetProcAddr(const char* name);
|
||||
|
||||
struct InternalData;
|
||||
|
||||
static constexpr std::size_t QueueCount = static_cast<std::size_t>(QueueType::Max) + 1;
|
||||
|
|
|
|||
|
|
@ -57,6 +57,20 @@ namespace Nz::Vk
|
|||
return *m_physicalDevice;
|
||||
}
|
||||
|
||||
inline PFN_vkVoidFunction Device::GetProcAddr(const char* name, bool allowInstanceFallback)
|
||||
{
|
||||
PFN_vkVoidFunction func = m_instance.GetDeviceProcAddr(m_device, name);
|
||||
if (!func)
|
||||
{
|
||||
if (allowInstanceFallback)
|
||||
return m_instance.GetProcAddr(name);
|
||||
|
||||
NazaraError("Failed to get " + std::string(name) + " address");
|
||||
}
|
||||
|
||||
return func;
|
||||
}
|
||||
|
||||
inline bool Device::IsExtensionLoaded(const std::string& extensionName)
|
||||
{
|
||||
return m_loadedExtensions.count(extensionName) > 0;
|
||||
|
|
@ -83,15 +97,6 @@ namespace Nz::Vk
|
|||
{
|
||||
return m_device;
|
||||
}
|
||||
|
||||
inline PFN_vkVoidFunction Device::GetProcAddr(const char* name)
|
||||
{
|
||||
PFN_vkVoidFunction func = m_instance.GetDeviceProcAddr(m_device, name);
|
||||
if (!func)
|
||||
NazaraError("Failed to get " + std::string(name) + " address");
|
||||
|
||||
return func;
|
||||
}
|
||||
}
|
||||
|
||||
#include <Nazara/VulkanRenderer/DebugOff.hpp>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,10 @@
|
|||
#define NAZARA_VULKANRENDERER_DEVICE_EXT_END()
|
||||
#endif
|
||||
|
||||
#ifndef NAZARA_VULKANRENDERER_DEVICE_OR_INSTANCE_FUNCTION
|
||||
#define NAZARA_VULKANRENDERER_DEVICE_OR_INSTANCE_FUNCTION(func) NAZARA_VULKANRENDERER_DEVICE_FUNCTION(func)
|
||||
#endif
|
||||
|
||||
#ifndef NAZARA_VULKANRENDERER_INSTANCE_EXT_BEGIN
|
||||
#define NAZARA_VULKANRENDERER_INSTANCE_EXT_BEGIN(ext)
|
||||
#endif
|
||||
|
|
@ -168,19 +172,20 @@ NAZARA_VULKANRENDERER_DEVICE_EXT_BEGIN(VK_KHR_swapchain)
|
|||
NAZARA_VULKANRENDERER_DEVICE_EXT_END()
|
||||
|
||||
NAZARA_VULKANRENDERER_INSTANCE_EXT_BEGIN(VK_EXT_debug_utils)
|
||||
NAZARA_VULKANRENDERER_DEVICE_FUNCTION(vkCmdBeginDebugUtilsLabelEXT)
|
||||
NAZARA_VULKANRENDERER_DEVICE_FUNCTION(vkCmdEndDebugUtilsLabelEXT)
|
||||
NAZARA_VULKANRENDERER_DEVICE_FUNCTION(vkCmdInsertDebugUtilsLabelEXT)
|
||||
NAZARA_VULKANRENDERER_DEVICE_FUNCTION(vkQueueBeginDebugUtilsLabelEXT)
|
||||
NAZARA_VULKANRENDERER_DEVICE_FUNCTION(vkQueueEndDebugUtilsLabelEXT)
|
||||
NAZARA_VULKANRENDERER_DEVICE_FUNCTION(vkQueueInsertDebugUtilsLabelEXT)
|
||||
NAZARA_VULKANRENDERER_DEVICE_FUNCTION(vkSetDebugUtilsObjectNameEXT)
|
||||
NAZARA_VULKANRENDERER_DEVICE_FUNCTION(vkSetDebugUtilsObjectTagEXT)
|
||||
NAZARA_VULKANRENDERER_DEVICE_OR_INSTANCE_FUNCTION(vkCmdBeginDebugUtilsLabelEXT)
|
||||
NAZARA_VULKANRENDERER_DEVICE_OR_INSTANCE_FUNCTION(vkCmdEndDebugUtilsLabelEXT)
|
||||
NAZARA_VULKANRENDERER_DEVICE_OR_INSTANCE_FUNCTION(vkCmdInsertDebugUtilsLabelEXT)
|
||||
NAZARA_VULKANRENDERER_DEVICE_OR_INSTANCE_FUNCTION(vkQueueBeginDebugUtilsLabelEXT)
|
||||
NAZARA_VULKANRENDERER_DEVICE_OR_INSTANCE_FUNCTION(vkQueueEndDebugUtilsLabelEXT)
|
||||
NAZARA_VULKANRENDERER_DEVICE_OR_INSTANCE_FUNCTION(vkQueueInsertDebugUtilsLabelEXT)
|
||||
NAZARA_VULKANRENDERER_DEVICE_OR_INSTANCE_FUNCTION(vkSetDebugUtilsObjectNameEXT)
|
||||
NAZARA_VULKANRENDERER_DEVICE_OR_INSTANCE_FUNCTION(vkSetDebugUtilsObjectTagEXT)
|
||||
NAZARA_VULKANRENDERER_INSTANCE_EXT_END()
|
||||
|
||||
#undef NAZARA_VULKANRENDERER_DEVICE_CORE_EXT_FUNCTION
|
||||
#undef NAZARA_VULKANRENDERER_DEVICE_EXT_BEGIN
|
||||
#undef NAZARA_VULKANRENDERER_DEVICE_EXT_END
|
||||
#undef NAZARA_VULKANRENDERER_DEVICE_FUNCTION
|
||||
#undef NAZARA_VULKANRENDERER_DEVICE_OR_INSTANCE_FUNCTION
|
||||
#undef NAZARA_VULKANRENDERER_INSTANCE_EXT_BEGIN
|
||||
#undef NAZARA_VULKANRENDERER_INSTANCE_EXT_END
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ namespace Nz
|
|||
inline VkPhysicalDeviceMemoryProperties GetPhysicalDeviceMemoryProperties(VkPhysicalDevice device) const;
|
||||
inline VkPhysicalDeviceProperties GetPhysicalDeviceProperties(VkPhysicalDevice device) const;
|
||||
bool GetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice device, std::vector<VkQueueFamilyProperties>* queueFamilyProperties) const;
|
||||
inline PFN_vkVoidFunction GetProcAddr(const char* name) const;
|
||||
|
||||
void InstallDebugMessageCallback();
|
||||
|
||||
|
|
@ -95,8 +96,6 @@ namespace Nz
|
|||
void DestroyInstance();
|
||||
void ResetPointers();
|
||||
|
||||
inline PFN_vkVoidFunction GetProcAddr(const char* name) const;
|
||||
|
||||
struct InternalData;
|
||||
|
||||
std::unique_ptr<InternalData> m_internalData;
|
||||
|
|
|
|||
|
|
@ -68,6 +68,15 @@ namespace Nz
|
|||
return m_lastErrorCode;
|
||||
}
|
||||
|
||||
inline PFN_vkVoidFunction Instance::GetProcAddr(const char* name) const
|
||||
{
|
||||
PFN_vkVoidFunction func = Loader::GetInstanceProcAddr(m_instance, name);
|
||||
if (!func)
|
||||
NazaraError("Failed to get " + std::string(name) + " address");
|
||||
|
||||
return func;
|
||||
}
|
||||
|
||||
inline bool Instance::IsExtensionLoaded(const std::string& extensionName) const
|
||||
{
|
||||
return m_loadedExtensions.count(extensionName) > 0;
|
||||
|
|
@ -131,15 +140,6 @@ namespace Nz
|
|||
|
||||
return properties;
|
||||
}
|
||||
|
||||
inline PFN_vkVoidFunction Instance::GetProcAddr(const char* name) const
|
||||
{
|
||||
PFN_vkVoidFunction func = Loader::GetInstanceProcAddr(m_instance, name);
|
||||
if (!func)
|
||||
NazaraError("Failed to get " + std::string(name) + " address");
|
||||
|
||||
return func;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -88,16 +88,17 @@ namespace Nz
|
|||
|
||||
#define NAZARA_VULKANRENDERER_DEVICE_EXT_BEGIN(ext) if (IsExtensionLoaded(#ext)) {
|
||||
#define NAZARA_VULKANRENDERER_DEVICE_EXT_END() }
|
||||
#define NAZARA_VULKANRENDERER_DEVICE_FUNCTION(func) func = reinterpret_cast<PFN_##func>(GetProcAddr(#func));
|
||||
#define NAZARA_VULKANRENDERER_DEVICE_FUNCTION(func) func = reinterpret_cast<PFN_##func>(GetProcAddr(#func, false));
|
||||
#define NAZARA_VULKANRENDERER_DEVICE_OR_INSTANCE_FUNCTION(func) func = reinterpret_cast<PFN_##func>(GetProcAddr(#func, true));
|
||||
|
||||
#define NAZARA_VULKANRENDERER_INSTANCE_EXT_BEGIN(ext) if (m_instance.IsExtensionLoaded(#ext)) {
|
||||
#define NAZARA_VULKANRENDERER_INSTANCE_EXT_END() }
|
||||
|
||||
#define NAZARA_VULKANRENDERER_DEVICE_CORE_EXT_FUNCTION(func, coreVersion, suffix, extName) \
|
||||
if (deviceVersion >= coreVersion) \
|
||||
func = reinterpret_cast<PFN_##func>(GetProcAddr(#func)); \
|
||||
func = reinterpret_cast<PFN_##func>(GetProcAddr(#func, false)); \
|
||||
else if (IsExtensionLoaded("VK_" #suffix "_" #extName)) \
|
||||
func = reinterpret_cast<PFN_##func##suffix>(GetProcAddr(#func #suffix));
|
||||
func = reinterpret_cast<PFN_##func##suffix>(GetProcAddr(#func #suffix, false));
|
||||
|
||||
#include <Nazara/VulkanRenderer/Wrapper/DeviceFunctions.hpp>
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue