-
-
Notifications
You must be signed in to change notification settings - Fork 23
VK_EXT_metal_surface extension missing despite being enabled on macOS M1 and M2 #414
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Thanks for filing that issue! That was a great investigation 🙂 Although I don’t have access to an M1 device, I was able to run the engine on macOS Intel with minimal changes. I believe it should work on M1 as well — at least I hope so! Would you be interested in giving it a try? You can check out the draft PR here: [PR Link](#415). From there, we could look into re-enabling those features. Also, just to let you know, this investigation is part of an existing issue that hasn't been picked up yet by anyone. I would be glad if you're interested in working on it! See here: [issue link] |
Yes! I’d love to give it a try. Let me check out the draft PR and dive in! I'll let you know how it goes. |
I'm still hitting the same issue on Here is the output: ./Result.Darwin.x64.Debug/Tetragrama/Debug/zEngineEditor --projectConfigFile "/path/to/RendererEngine/test/projectConfig.json"
Thread 0, Frame 0:
vkCreateInstance(pCreateInfo, pAllocator, pInstance) returns VkResult VK_SUCCESS (0):
pCreateInfo: const VkInstanceCreateInfo* = 0x16dc45bb0:
sType: VkStructureType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO (1)
pNext: const void* = NULL
flags: VkInstanceCreateFlags = 1 (VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR)
pApplicationInfo: const VkApplicationInfo* = 0x16dc49de0:
sType: VkStructureType = VK_STRUCTURE_TYPE_APPLICATION_INFO (0)
pNext: const void* = NULL
pApplicationName: const char* = "Tetragrama"
applicationVersion: uint32_t = 1
pEngineName: const char* = "ZEngine"
engineVersion: uint32_t = 1
apiVersion: uint32_t = 4206592
enabledLayerCount: uint32_t = 3
ppEnabledLayerNames: const char* const* = 0x6000012332c0
ppEnabledLayerNames[0]: const char* const = "VK_LAYER_KHRONOS_validation"
ppEnabledLayerNames[1]: const char* const = "VK_LAYER_LUNARG_api_dump"
ppEnabledLayerNames[2]: const char* const = "VK_LAYER_KHRONOS_synchronization2"
enabledExtensionCount: uint32_t = 5
ppEnabledExtensionNames: const char* const* = 0x600000711300
ppEnabledExtensionNames[0]: const char* const = "VK_EXT_debug_report"
ppEnabledExtensionNames[1]: const char* const = "VK_EXT_debug_utils"
ppEnabledExtensionNames[2]: const char* const = "VK_KHR_surface"
ppEnabledExtensionNames[3]: const char* const = "VK_EXT_metal_surface"
ppEnabledExtensionNames[4]: const char* const = "VK_KHR_portability_enumeration"
pNext: const void* = NULL
pAllocator: const VkAllocationCallbacks* = NULL
pInstance: VkInstance* = 0x11f03a200
Thread 0, Frame 0:
vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) returns VkResult VK_SUCCESS (0):
instance: VkInstance = 0x11f03a200
pPhysicalDeviceCount: uint32_t* = 1
pPhysicalDevices: VkPhysicalDevice* = NULL
Thread 0, Frame 0:
vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) returns VkResult VK_SUCCESS (0):
instance: VkInstance = 0x11f03a200
pPhysicalDeviceCount: uint32_t* = 1
pPhysicalDevices: VkPhysicalDevice* = 0x600001013e40
pPhysicalDevices[0]: VkPhysicalDevice = 0x60000122a440
Thread 0, Frame 0:
vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) returns void:
physicalDevice: VkPhysicalDevice = 0x60000122a440
pQueueFamilyPropertyCount: uint32_t* = 4
pQueueFamilyProperties: VkQueueFamilyProperties* = NULL
Thread 0, Frame 0:
vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) returns void:
physicalDevice: VkPhysicalDevice = 0x60000122a440
pQueueFamilyPropertyCount: uint32_t* = 4
pQueueFamilyProperties: VkQueueFamilyProperties* = 0x6000036003c0
pQueueFamilyProperties[0]: VkQueueFamilyProperties = 0x6000036003c0:
queueFlags: VkQueueFlags = 7 (VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT | VK_QUEUE_TRANSFER_BIT)
queueCount: uint32_t = 1
timestampValidBits: uint32_t = 64
minImageTransferGranularity: VkExtent3D = 0x6000036003cc:
width: uint32_t = 1
height: uint32_t = 1
depth: uint32_t = 1
pQueueFamilyProperties[1]: VkQueueFamilyProperties = 0x6000036003d8:
queueFlags: VkQueueFlags = 7 (VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT | VK_QUEUE_TRANSFER_BIT)
queueCount: uint32_t = 1
timestampValidBits: uint32_t = 64
minImageTransferGranularity: VkExtent3D = 0x6000036003e4:
width: uint32_t = 1
height: uint32_t = 1
depth: uint32_t = 1
pQueueFamilyProperties[2]: VkQueueFamilyProperties = 0x6000036003f0:
queueFlags: VkQueueFlags = 7 (VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT | VK_QUEUE_TRANSFER_BIT)
queueCount: uint32_t = 1
timestampValidBits: uint32_t = 64
minImageTransferGranularity: VkExtent3D = 0x6000036003fc:
width: uint32_t = 1
height: uint32_t = 1
depth: uint32_t = 1
pQueueFamilyProperties[3]: VkQueueFamilyProperties = 0x600003600408:
queueFlags: VkQueueFlags = 7 (VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT | VK_QUEUE_TRANSFER_BIT)
queueCount: uint32_t = 1
timestampValidBits: uint32_t = 64
minImageTransferGranularity: VkExtent3D = 0x600003600414:
width: uint32_t = 1
height: uint32_t = 1
depth: uint32_t = 1
Thread 0, Frame 0:
vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) returns VkResult VK_SUCCESS (0):
instance: VkInstance = 0x11f03a200
pCreateInfo: const VkDebugUtilsMessengerCreateInfoEXT* = 0x16dc49aa8:
sType: VkStructureType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT (1000128004)
pNext: const void* = NULL
flags: VkDebugUtilsMessengerCreateFlagsEXT = 0
messageSeverity: VkDebugUtilsMessageSeverityFlagsEXT = 4369 (VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT)
messageType: VkDebugUtilsMessageTypeFlagsEXT = 7 (VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT)
pfnUserCallback: PFN_vkDebugUtilsMessengerCallbackEXT = 1
pUserData: void* = NULL
pAllocator: const VkAllocationCallbacks* = NULL
pMessenger: VkDebugUtilsMessengerEXT* = 0x600001014db0
``` |
well, I guess I'd need to find a M1 device for further investigation -any info from the log? (Should be available at Tetragrama/Debug/Log/engine_dump.log) |
I couldn’t find the Log folder in Tetragrama/Debug/. Did I miss a step? Here’s what I did:
and result to that Vulkan error. |
❯ ls -f Result.Darwin.x64.Debug/Tetragrama/Debug
. .. Settings zEngineEditor Shaders It seems there is no Logs folder. |
Environment
Issue
Getting error:
Cocoa: Vulkan instance missing VK_EXT_metal_surface extension
during window surface creation, despite the extension being properly enabled.RendererEngine/Tetragrama/EditorWindow.cpp
Lines 415 to 425 in 09456d4
What I've Tried
VK_EXT_metal_surface
extension - confirmed present in extension listVK_MVK_macos_surface
Output (with extension list printed)
The text was updated successfully, but these errors were encountered: