{"record":{"id":"6b646d8a2990591a","repo":"stride3d/stride","slug":"no-vulkan-1-2-physical-device","errorCode":null,"errorMessage":"No Vulkan 1.2+ physical device","messagePattern":"No Vulkan 1\\.2\\+ physical device","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"sources/shaders/Stride.Shaders.Tests/FrameRenderer.Vulkan.cs","lineNumber":176,"sourceCode":"            if (properties.apiVersion < VkVersion.Version_1_2)\n                continue;\n            var isCpu = properties.deviceType == VkPhysicalDeviceType.Cpu;\n            var score = softwareRendering\n                ? (isCpu ? 3 : 0)\n                : properties.deviceType switch\n                {\n                    VkPhysicalDeviceType.DiscreteGpu => 3,\n                    VkPhysicalDeviceType.IntegratedGpu => 2,\n                    _ => 1,\n                };\n            if (score > bestScore)\n            {\n                bestScore = score;\n                best = i;\n            }\n        }\n        if (best < 0)\n            throw new InvalidOperationException(\"No Vulkan 1.2+ physical device\");\n        if (softwareRendering && bestScore < 3)\n            throw new InvalidOperationException(\"Software rendering requested but no CPU Vulkan device (Lavapipe) found\");\n        physicalDevice = devices[best];\n    }\n\n    private static void CreateDevice()\n    {\n        uint familyCount = 0;\n        instanceApi.vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &familyCount, null);\n        var families = new VkQueueFamilyProperties[familyCount];\n        fixed (VkQueueFamilyProperties* familiesPtr = families)\n            instanceApi.vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &familyCount, familiesPtr);\n        queueFamily = uint.MaxValue;\n        for (uint i = 0; i < familyCount; i++)\n        {\n            if ((families[i].queueFlags & (VkQueueFlags.Graphics | VkQueueFlags.Compute)) == (VkQueueFlags.Graphics | VkQueueFlags.Compute))\n            {\n                queueFamily = i;","sourceCodeStart":158,"sourceCodeEnd":194,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/shaders/Stride.Shaders.Tests/FrameRenderer.Vulkan.cs#L158-L194","documentation":"After scoring all physical devices, PickPhysicalDevice throws when no device scored as supporting Vulkan 1.2+ (best < 0). SPIR-V 1.4 modules require a Vulkan 1.2-capable device, so the harness refuses devices limited to older API versions even though some device may exist.","triggerScenarios":"Devices exist but every one reports apiVersion < 1.2 in its properties — e.g. an old GPU driver, an ICD exposing only Vulkan 1.0/1.1, or scoring logic finding no candidate.","commonSituations":"Older GPUs with drivers capped at Vulkan 1.1; out-of-date vendor drivers; headless CI images with only a Vulkan 1.0 ICD; running against llvmpipe builds lacking 1.2 support.","solutions":["Update the GPU driver to one supporting Vulkan 1.2+ (or install recent mesa/Lavapipe)","Check device apiVersion via vulkaninfo and compare against the harness's 1.2 requirement","Lower the SPIR-V target version of the test shaders so a 1.1 device suffices (library-level change)","Skip the test when no 1.2+ device is present"],"exampleFix":"// before\nrenderer.RunVulkanTest();\n// after\nif (!FrameRenderer.Vulkan12Available)\n    Assert.Skip(\"Requires a Vulkan 1.2+ physical device\");\nrenderer.RunVulkanTest();","handlingStrategy":"fallback","validationCode":"api.vkGetPhysicalDeviceProperties(device, out var props);\nbool IsVulkan12(Device d) => (uint)props.ApiVersion >= VkVersion.Version_1_2;","typeGuard":null,"tryCatchPattern":"try { EnsureSharedContext(); }\ncatch (InvalidOperationException ex) when (ex.Message.Contains(\"No Vulkan 1.2+\"))\n{\n    Assert.Skip(\"Requires Vulkan 1.2+ device\");\n}","preventionTips":["Update GPU drivers to Vulkan 1.2-capable versions","Check device apiVersion via vulkaninfo in CI preflight","Target SPIR-V 1.0-1.3 in test shaders if 1.1 devices must be supported","Skip Vulkan tests when no 1.2+ device is found"],"tags":["vulkan","gpu","version-compatibility"],"backgroundTag":"unsupported-platform","analyzedSha":"96fad776d210c221682aac1ccdf4c79dc046fc38","analyzedAt":"2026-09-14T02:59:31.279Z","contentChangedAt":"2026-09-14T02:59:31.279Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}