{"record":{"id":"644f5d9f4d034b52","repo":"stride3d/stride","slug":"vulkan-dynamic-rendering-and-synchronization2-are-not","errorCode":null,"errorMessage":"Vulkan: Dynamic rendering and synchronization2 are not supported by this device, but are required by Stride.","messagePattern":"Vulkan: Dynamic rendering and synchronization2 are not supported by this device, but are required by Stride\\.","errorType":"exception","errorClass":"NotSupportedException","httpStatus":null,"severity":"critical","filePath":"sources/engine/Stride.Graphics/Vulkan/GraphicsDevice.Vulkan.cs","lineNumber":576,"sourceCode":"            var portabilitySubsetFeatures = new VkPhysicalDevicePortabilitySubsetFeaturesKHR\n            {\n                sType = VkStructureType.PhysicalDevicePortabilitySubsetFeaturesKHR,\n                pNext = &supportedVulkan11Features,\n            };\n            var physicalDeviceFeatures2 = new VkPhysicalDeviceFeatures2\n            {\n                sType = VkStructureType.PhysicalDeviceFeatures2,\n                pNext = isPortabilitySubsetDevice ? (void*)&portabilitySubsetFeatures : &supportedVulkan11Features,\n            };\n            NativeInstanceApi.vkGetPhysicalDeviceFeatures2(NativePhysicalDevice, &physicalDeviceFeatures2);\n\n            if (!supportedVulkan12Features.timelineSemaphore)\n                throw new InvalidOperationException(\"Vulkan: Timeline semaphores are not supported by this device, but are required by Stride.\");\n\n            // Dynamic rendering is required: the backend renders with vkCmdBeginRendering and\n            // creates no render pass objects. Synchronization2 is required for vkQueueSubmit2.\n            if (!supportedVulkan13Features.dynamicRendering || !supportedVulkan13Features.synchronization2)\n                throw new NotSupportedException(\"Vulkan: Dynamic rendering and synchronization2 are not supported by this device, but are required by Stride.\");\n\n            var enabledVulkan13Features = new VkPhysicalDeviceVulkan13Features\n            {\n                sType = VkStructureType.PhysicalDeviceVulkan13Features,\n                dynamicRendering = VkBool32.True,\n                synchronization2 = VkBool32.True,\n            };\n            var enabledVulkan12Features = new VkPhysicalDeviceVulkan12Features\n            {\n                sType = VkStructureType.PhysicalDeviceVulkan12Features,\n                pNext = &enabledVulkan13Features,\n                timelineSemaphore = VkBool32.True,\n                uniformBufferStandardLayout = VkBool32.True,\n                // FP16 in shaders (SPIR-V Float16 capability) — required by some HLSL→SPIR-V output.\n                shaderFloat16 = supportedVulkan12Features.shaderFloat16,\n            };\n            var enabledVulkan11Features = new VkPhysicalDeviceVulkan11Features\n            {","sourceCodeStart":558,"sourceCodeEnd":594,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/engine/Stride.Graphics/Vulkan/GraphicsDevice.Vulkan.cs#L558-L594","documentation":"Stride's Vulkan backend is built entirely on Vulkan 1.3 features: it renders with vkCmdBeginRendering (dynamic rendering) and submits work with vkQueueSubmit2 (synchronization2), creating no legacy render pass objects. During GraphicsDevice initialization it checks the queried Vulkan 1.3 feature struct and throws NotSupportedException if either feature is not reported as supported, because the backend has no fallback path. The device simply cannot run Stride's Vulkan renderer as implemented.","triggerScenarios":"Creating a GraphicsDevice with GraphicsBackend.Vulkan on a physical device whose VkPhysicalDeviceVulkan13Features reports dynamicRendering == VK_FALSE or synchronization2 == VK_FALSE (checked in GraphicsDevice.Vulkan.cs before enabling the features).","commonSituations":"Old GPUs or drivers that only support Vulkan 1.0-1.2 without the dynamic_rendering/synchronization2 extensions promoted in 1.3; virtualized or software Vulkan implementations (lavapipe, SwiftShader, ANGLE) exposing limited feature sets; outdated GPU drivers on Linux/Windows; running on integrated graphics from before ~2021.","solutions":["Update the GPU driver to the latest vendor version so Vulkan 1.3 with dynamicRendering and synchronization2 is supported.","Switch to a GPU that supports Vulkan 1.3 (check with vulkaninfo: 'Vulkan API version' >= 1.3).","Select a different GraphicsBackend (e.g. Direct3D 11/12 on Windows) in GraphicsDeviceManager/ GameSettings instead of Vulkan.","If on a virtual/remote environment, pass through a real GPU (GPU passthrough / hardware acceleration) rather than a software Vulkan ICD."],"exampleFix":"// before\ngraphicsDeviceManager.GraphicsBackend = GraphicsBackend.Vulkan;\n// after (fallback on unsupported device)\ngraphicsDeviceManager.GraphicsBackend =\n    Platform.Type == PlatformType.Windows ? GraphicsBackend.Direct3D11 : GraphicsBackend.Vulkan;","handlingStrategy":"validation","validationCode":"// before creating the device, probe Vulkan 1.3 features (pseudo-API)\nvar props = VkPhysicalDeviceVulkan13Features from chosen physical device;\nif (!props.dynamicRendering || !props.synchronization2)\n    throw new NotSupportedException(\"Vulkan 1.3 dynamicRendering/synchronization2 required\");","typeGuard":"bool SupportsVulkan13Features(PhysicalDevice d) => d.ApiVersion >= VkVersion.Version_1_3 && d.Vulkan13Features.dynamicRendering && d.Vulkan13Features.synchronization2;","tryCatchPattern":"try { device = GraphicsDevice.New(adapter, deviceDesc); }\ncatch (NotSupportedException ex) when (ex.Message.Contains(\"Dynamic rendering\")) { log.Warn(ex.Message); device = CreateFallbackDevice(GraphicsBackend.Direct3D11); }","preventionTips":["Check vulkaninfo output for Vulkan 1.3 support before shipping to a machine","Keep GPU drivers updated on target hardware","Offer a configurable GraphicsBackend with a non-Vulkan fallback","Test on software/virtualized Vulkan early to detect capability gaps"],"tags":["vulkan","graphics","gpu-capability","initialization"],"backgroundTag":"feature-not-enabled","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"}