{"record":{"id":"f873511902e72107","repo":"stride3d/stride","slug":"vulkan-device-supports-only-vulkan-adapter-driverinfo","errorCode":null,"errorMessage":"Vulkan: Device supports only Vulkan {Adapter.DriverInfo.ApiVersion}, but Stride requires Vulkan 1.3.","messagePattern":"Vulkan: Device supports only Vulkan (.+?), but Stride requires Vulkan 1\\.3\\.","errorType":"exception","errorClass":"NotSupportedException","httpStatus":null,"severity":"error","filePath":"sources/engine/Stride.Graphics/Vulkan/GraphicsDevice.Vulkan.cs","lineNumber":496,"sourceCode":"                VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME,\n                VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME,\n                VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME,\n                VK_KHR_BIND_MEMORY_2_EXTENSION_NAME,\n                VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME,\n#endif\n            };\n\n            var availableExtensionProperties = GetAvailableExtensionProperties(supportedExtensionProperties);\n            ValidateExtensionPropertiesAvailability(availableExtensionProperties);\n            var desiredExtensionProperties = new HashSet<VkUtf8String>();\n\n            // Swapchain extension is only needed for presentation (not for headless/asset compilation)\n            if (availableExtensionProperties.Contains(VK_KHR_SWAPCHAIN_EXTENSION_NAME))\n                desiredExtensionProperties.Add(VK_KHR_SWAPCHAIN_EXTENSION_NAME);\n\n            // Stride uses Vulkan 1.3 core features and entry points\n            if (Adapter.NativeApiVersion < VkVersion.Version_1_3)\n                throw new NotSupportedException($\"Vulkan: Device supports only Vulkan {Adapter.DriverInfo.ApiVersion}, but Stride requires Vulkan 1.3.\");\n\n            // Vulkan portability spec: if VK_KHR_portability_subset is advertised, the app MUST enable it.\n            // MoltenVK is the only ICD that advertises it; conformant drivers do not.\n            bool isPortabilitySubsetDevice = availableExtensionProperties.Contains(VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME);\n            if (isPortabilitySubsetDevice)\n                desiredExtensionProperties.Add(VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME);\n\n#if STRIDE_PLATFORM_IOS || STRIDE_PLATFORM_MACOS\n            // VK_EXT_metal_objects lets us import IOSurface-backed CVPixelBuffers as VkImages for\n            // zero-copy video upload. MoltenVK 1.2+ supports it; no extra dependency extensions needed.\n            HasMetalObjectsSupport = availableExtensionProperties.Contains(VK_EXT_METAL_OBJECTS_EXTENSION_NAME);\n            if (HasMetalObjectsSupport)\n                desiredExtensionProperties.Add(VK_EXT_METAL_OBJECTS_EXTENSION_NAME);\n#endif\n\n#if STRIDE_PLATFORM_ANDROID\n            // All extensions in the AHardwareBuffer → VkImage chain must be present together.\n            HasAndroidHardwareBufferSupport =","sourceCodeStart":478,"sourceCodeEnd":514,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/engine/Stride.Graphics/Vulkan/GraphicsDevice.Vulkan.cs#L478-L514","documentation":"Stride's Vulkan backend requires Vulkan 1.3 core (dynamic rendering, synchronization2, timeline semaphores). During device creation it compares Adapter.NativeApiVersion against VkVersion.Version_1_3 and throws NotSupportedException if the physical device supports less.","triggerScenarios":"Creating a GraphicsDevice on a physical device whose max supported API version is below 1.3 (e.g. an old GPU or driver reporting Vulkan 1.1/1.2).","commonSituations":"Older GPUs (pre-2015 era) or drivers never updated to 1.3; laptops with hybrid graphics where the wrong (older) adapter is selected; Android devices with 1.1-only drivers; outdated Linux mesa drivers.","solutions":["Update the GPU driver to a Vulkan 1.3-compliant release","Select a different adapter via GraphicsAdapterFactory that supports Vulkan 1.3","Upgrade the GPU/hardware if the device caps at an older Vulkan version","On Linux, update mesa to a recent version for newer Vulkan support"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"GraphicsAdapterFactory.Initialize();\nforeach (var adapter in GraphicsAdapterFactory.Adapters)\n{\n    if (adapter.NativeApiVersion < VkVersion.Version_1_3)\n        continue; // skip adapters without Vulkan 1.3\n    SelectAdapter(adapter);\n    break;\n}","typeGuard":"static bool SupportsVulkan13(GraphicsAdapter a) => a.NativeApiVersion >= VkVersion.Version_1_3;","tryCatchPattern":"try\n{\n    var device = new GraphicsDevice(adapter, ...);\n}\ncatch (NotSupportedException ex) when (ex.Message.Contains(\"Vulkan 1.3\"))\n{\n    Logger.Error(ex, \"Adapter lacks Vulkan 1.3; trying next adapter.\");\n    TryNextAdapter();\n}","preventionTips":["Enumerate adapters and filter by NativeApiVersion before device creation","Publish minimum Vulkan 1.3 GPU requirements","Update drivers on target/test machines","On hybrid-GPU laptops, explicitly select the discrete adapter"],"tags":["vulkan","version-check","unsupported","driver"],"backgroundTag":"unsupported-operation","analyzedSha":"96fad776d210c221682aac1ccdf4c79dc046fc38","analyzedAt":"2026-09-14T02:59:31.279Z","contentChangedAt":"2026-09-14T02:59:31.279Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}