From d2c252879e56f48a612b0d905a00239515dcce5c Mon Sep 17 00:00:00 2001 From: Diewa Date: Thu, 24 Feb 2022 21:42:00 +0100 Subject: [PATCH] Fixes for macOS --- .../Engine/GraphicsDevice/Vulkan/GPUDeviceVulkan.Layers.cpp | 2 +- Source/Engine/GraphicsDevice/Vulkan/GPUTextureVulkan.cpp | 5 +++++ .../Engine/GraphicsDevice/Vulkan/Mac/MacVulkanPlatform.cpp | 1 + Source/Engine/Platform/Mac/MacWindow.cpp | 5 +++-- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Source/Engine/GraphicsDevice/Vulkan/GPUDeviceVulkan.Layers.cpp b/Source/Engine/GraphicsDevice/Vulkan/GPUDeviceVulkan.Layers.cpp index 8d5a9c4b5..522fc1a89 100644 --- a/Source/Engine/GraphicsDevice/Vulkan/GPUDeviceVulkan.Layers.cpp +++ b/Source/Engine/GraphicsDevice/Vulkan/GPUDeviceVulkan.Layers.cpp @@ -366,7 +366,7 @@ void GPUDeviceVulkan::GetInstanceLayersAndExtensions(Array& outInst } #if VK_EXT_debug_utils - if (!vkTrace && outDebugUtils && FindLayerExtension(globalLayerExtensions, VK_EXT_DEBUG_UTILS_EXTENSION_NAME)) + if (!vkTrace && FindLayerExtension(globalLayerExtensions, VK_EXT_DEBUG_UTILS_EXTENSION_NAME)) { outInstanceExtensions.Add(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } diff --git a/Source/Engine/GraphicsDevice/Vulkan/GPUTextureVulkan.cpp b/Source/Engine/GraphicsDevice/Vulkan/GPUTextureVulkan.cpp index 0ee9e0c82..be8f26255 100644 --- a/Source/Engine/GraphicsDevice/Vulkan/GPUTextureVulkan.cpp +++ b/Source/Engine/GraphicsDevice/Vulkan/GPUTextureVulkan.cpp @@ -270,6 +270,11 @@ bool GPUTextureVulkan::OnInit() imageInfo.usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; if (useUAV) imageInfo.usage |= VK_IMAGE_USAGE_STORAGE_BIT; +#if PLATFORM_MAC + // MoltenVK: VK_ERROR_FEATURE_NOT_PRESENT: vkCreateImageView(): 2D views on 3D images can only be used as color attachments. + if (IsVolume() && _desc.HasPerSliceViews()) + imageInfo.usage &= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; +#endif imageInfo.tiling = optimalTiling ? VK_IMAGE_TILING_OPTIMAL : VK_IMAGE_TILING_LINEAR; imageInfo.samples = (VkSampleCountFlagBits)MultiSampleLevel(); // TODO: set initialLayout to VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL for IsRegularTexture() ??? diff --git a/Source/Engine/GraphicsDevice/Vulkan/Mac/MacVulkanPlatform.cpp b/Source/Engine/GraphicsDevice/Vulkan/Mac/MacVulkanPlatform.cpp index 38cc28d22..9b2998296 100644 --- a/Source/Engine/GraphicsDevice/Vulkan/Mac/MacVulkanPlatform.cpp +++ b/Source/Engine/GraphicsDevice/Vulkan/Mac/MacVulkanPlatform.cpp @@ -8,6 +8,7 @@ void MacVulkanPlatform::GetInstanceExtensions(Array& extensions, Array& layers) { + extensions.Add(VK_KHR_SURFACE_EXTENSION_NAME); extensions.Add(VK_MVK_MACOS_SURFACE_EXTENSION_NAME); } diff --git a/Source/Engine/Platform/Mac/MacWindow.cpp b/Source/Engine/Platform/Mac/MacWindow.cpp index 123d390ae..e76304163 100644 --- a/Source/Engine/Platform/Mac/MacWindow.cpp +++ b/Source/Engine/Platform/Mac/MacWindow.cpp @@ -837,8 +837,8 @@ DragDropEffect MacWindow::DoDragDrop(const StringView& data) void MacWindow::SetCursor(CursorType type) { WindowBase::SetCursor(type); - if (!_isMouseOver) - return; + //if (!_isMouseOver) + // return; NSCursor* cursor = nullptr; switch (type) { @@ -875,6 +875,7 @@ void MacWindow::SetCursor(CursorType type) if (cursor) { [cursor set]; + [NSCursor unhide]; } }