From 8d76b5ecb03d9410413cb72ea56d6fc84fc916f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon?= <95319163+wpsimon09@users.noreply.github.com> Date: Thu, 29 Jan 2026 11:05:10 +0100 Subject: [PATCH 1/2] Used StructureChain for feature quering in `createLogicalDevice` function --- .../01_Presentation/00_Window_surface.adoc | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/en/03_Drawing_a_triangle/01_Presentation/00_Window_surface.adoc b/en/03_Drawing_a_triangle/01_Presentation/00_Window_surface.adoc index 5320128f..99cb341b 100644 --- a/en/03_Drawing_a_triangle/01_Presentation/00_Window_surface.adoc +++ b/en/03_Drawing_a_triangle/01_Presentation/00_Window_surface.adoc @@ -254,18 +254,17 @@ void createLogicalDevice() { throw std::runtime_error( "Could not find a queue for graphics or present -> terminating" ); } - // query for Vulkan 1.3 features - auto features = physicalDevice.getFeatures2(); - vk::PhysicalDeviceVulkan13Features vulkan13Features; - vk::PhysicalDeviceExtendedDynamicStateFeaturesEXT extendedDynamicStateFeatures; - vulkan13Features.dynamicRendering = vk::True; - extendedDynamicStateFeatures.extendedDynamicState = vk::True; - vulkan13Features.pNext = &extendedDynamicStateFeatures; - features.pNext = &vulkan13Features; + // Create a chain of feature structures + vk::StructureChain featureChain = { + {}, // vk::PhysicalDeviceFeatures2 (empty for now) + {.dynamicRendering = true }, // Enable dynamic rendering from Vulkan 1.3 + {.extendedDynamicState = true } // Enable extended dynamic state from the extension + }; + // create a Device float queuePriority = 0.5f; vk::DeviceQueueCreateInfo deviceQueueCreateInfo { .queueFamilyIndex = graphicsIndex, .queueCount = 1, .pQueuePriorities = &queuePriority }; - vk::DeviceCreateInfo deviceCreateInfo{ .pNext = &features, .queueCreateInfoCount = 1, .pQueueCreateInfos = &deviceQueueCreateInfo }; + vk::DeviceCreateInfo deviceCreateInfo{ .pNext = featureChain.get(), .queueCreateInfoCount = 1, .pQueueCreateInfos = &deviceQueueCreateInfo }; deviceCreateInfo.enabledExtensionCount = deviceExtensions.size(); deviceCreateInfo.ppEnabledExtensionNames = deviceExtensions.data(); From a6eed6c4f8ec640f8d49b999abcf01dbdf074de4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon?= <95319163+wpsimon09@users.noreply.github.com> Date: Thu, 29 Jan 2026 11:09:15 +0100 Subject: [PATCH 2/2] Fix deviceCreateInfo initialization syntax --- en/03_Drawing_a_triangle/01_Presentation/00_Window_surface.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/en/03_Drawing_a_triangle/01_Presentation/00_Window_surface.adoc b/en/03_Drawing_a_triangle/01_Presentation/00_Window_surface.adoc index 99cb341b..099dbb43 100644 --- a/en/03_Drawing_a_triangle/01_Presentation/00_Window_surface.adoc +++ b/en/03_Drawing_a_triangle/01_Presentation/00_Window_surface.adoc @@ -264,7 +264,7 @@ void createLogicalDevice() { // create a Device float queuePriority = 0.5f; vk::DeviceQueueCreateInfo deviceQueueCreateInfo { .queueFamilyIndex = graphicsIndex, .queueCount = 1, .pQueuePriorities = &queuePriority }; - vk::DeviceCreateInfo deviceCreateInfo{ .pNext = featureChain.get(), .queueCreateInfoCount = 1, .pQueueCreateInfos = &deviceQueueCreateInfo }; + vk::DeviceCreateInfo deviceCreateInfo{ .pNext = &featureChain.get(), .queueCreateInfoCount = 1, .pQueueCreateInfos = &deviceQueueCreateInfo }; deviceCreateInfo.enabledExtensionCount = deviceExtensions.size(); deviceCreateInfo.ppEnabledExtensionNames = deviceExtensions.data();