Allow exporting of metal device

This commit is contained in:
Georg Hagen
2024-07-06 14:12:11 +02:00
parent c41b04db9b
commit d4c5e8700b
3 changed files with 12 additions and 1 deletions

View File

@@ -12,6 +12,9 @@
#include "Base/EngineConstants.hpp"
#include "Base/UI/IVulkanWindow.hpp"
#include "Debuging/ValidationLayer.hpp"
#if __has_include("vulkan/vulkan_metal.h")
#include <vulkan/vulkan_metal.h>
#endif
namespace OpenVulkano::Vulkan
{
@@ -62,9 +65,14 @@ namespace OpenVulkano::Vulkan
vk::ApplicationInfo appInfo(graphicsAppManager->GetGraphicsApp()->GetAppName().c_str(), static_cast<uint32_t>(graphicsAppManager->GetGraphicsApp()->GetAppVersion()), ENGINE_NAME, ENGINE_VERSION.intVersion, VK_MAKE_VERSION(1, 1, 0));
std::vector<const char*> extensions = Utils::toCString(requiredExtensions), layers = Debug::GetValidationLayers();
const vk::InstanceCreateInfo createInfo(vk::InstanceCreateFlags(), &appInfo, enableValidationLayer ? layers.size() : 0,
vk::InstanceCreateInfo createInfo(vk::InstanceCreateFlags(), &appInfo, enableValidationLayer ? layers.size() : 0,
layers.data(), extensions.size(), extensions.data());
#ifdef __APPLE__
VkExportMetalObjectCreateInfoEXT metalExportInfo { VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT, nullptr, VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT };
createInfo.pNext = &metalExportInfo;
#endif
instance = vk::createInstance(createInfo);
if (enableValidationLayer) Debug::SetupValidationLayers(instance, vk::DebugReportFlagBitsEXT::eError | vk::DebugReportFlagBitsEXT::eWarning | vk::DebugReportFlagBitsEXT::ePerformanceWarning /*| vk::DebugReportFlagBitsEXT::eInformation | vk::DebugReportFlagBitsEXT::eDebug*/);