Allow exporting of metal device
This commit is contained in:
@@ -12,6 +12,9 @@
|
|||||||
#include "Base/EngineConstants.hpp"
|
#include "Base/EngineConstants.hpp"
|
||||||
#include "Base/UI/IVulkanWindow.hpp"
|
#include "Base/UI/IVulkanWindow.hpp"
|
||||||
#include "Debuging/ValidationLayer.hpp"
|
#include "Debuging/ValidationLayer.hpp"
|
||||||
|
#if __has_include("vulkan/vulkan_metal.h")
|
||||||
|
#include <vulkan/vulkan_metal.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace OpenVulkano::Vulkan
|
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));
|
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();
|
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());
|
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);
|
instance = vk::createInstance(createInfo);
|
||||||
|
|
||||||
if (enableValidationLayer) Debug::SetupValidationLayers(instance, vk::DebugReportFlagBitsEXT::eError | vk::DebugReportFlagBitsEXT::eWarning | vk::DebugReportFlagBitsEXT::ePerformanceWarning /*| vk::DebugReportFlagBitsEXT::eInformation | vk::DebugReportFlagBitsEXT::eDebug*/);
|
if (enableValidationLayer) Debug::SetupValidationLayers(instance, vk::DebugReportFlagBitsEXT::eError | vk::DebugReportFlagBitsEXT::eWarning | vk::DebugReportFlagBitsEXT::ePerformanceWarning /*| vk::DebugReportFlagBitsEXT::eInformation | vk::DebugReportFlagBitsEXT::eDebug*/);
|
||||||
|
|||||||
@@ -76,5 +76,7 @@ namespace OpenVulkano::Vulkan
|
|||||||
void RecordSecondaryBuffer(Data::ReadOnlyAtomicArrayQueue<Scene::Drawable*>* jobQueue, uint32_t poolId);
|
void RecordSecondaryBuffer(Data::ReadOnlyAtomicArrayQueue<Scene::Drawable*>* jobQueue, uint32_t poolId);
|
||||||
|
|
||||||
ResourceManager& GetResourceManager() { return resourceManager; }
|
ResourceManager& GetResourceManager() { return resourceManager; }
|
||||||
|
|
||||||
|
Context& GetContext() { return context; }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
#include "Vulkan/Resources/ResourceManager.hpp"
|
#include "Vulkan/Resources/ResourceManager.hpp"
|
||||||
#include "Vulkan/Scene/VulkanShader.hpp"
|
#include "Vulkan/Scene/VulkanShader.hpp"
|
||||||
#include "Scene/Texture.hpp"
|
#include "Scene/Texture.hpp"
|
||||||
|
#include "Scene/Shader/Shader.hpp"
|
||||||
|
|
||||||
namespace OpenVulkano::Vulkan
|
namespace OpenVulkano::Vulkan
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user