From 1616d277fb427d780d407866f1600742a48a88d2 Mon Sep 17 00:00:00 2001 From: asuessenbach Date: Wed, 17 Sep 2025 12:32:58 +0200 Subject: [PATCH 1/2] Add missing query for support of shaderDrawParameters --- attachments/09_shader_modules.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/attachments/09_shader_modules.cpp b/attachments/09_shader_modules.cpp index e547e0ee..29853b9f 100644 --- a/attachments/09_shader_modules.cpp +++ b/attachments/09_shader_modules.cpp @@ -191,8 +191,12 @@ class HelloTriangleApplication { { return strcmp( availableDeviceExtension.extensionName, requiredDeviceExtension ) == 0; } ); } ); - auto features = device.template getFeatures2(); - bool supportsRequiredFeatures = features.template get().dynamicRendering && + auto features = device.template getFeatures2(); + bool supportsRequiredFeatures = features.template get().shaderDrawParameters && + features.template get().dynamicRendering && features.template get().extendedDynamicState; return supportsVulkan1_3 && supportsGraphics && supportsAllRequiredExtensions && supportsRequiredFeatures; @@ -228,8 +232,13 @@ class HelloTriangleApplication { } // query for Vulkan 1.3 features - vk::StructureChain featureChain = { + vk::StructureChain + featureChain = { {}, // vk::PhysicalDeviceFeatures2 + {.shaderDrawParameters = true }, // vk::PhysicalDeviceVulkan11Features {.dynamicRendering = true }, // vk::PhysicalDeviceVulkan13Features {.extendedDynamicState = true } // vk::PhysicalDeviceExtendedDynamicStateFeaturesEXT }; From b114fb63ee1b4d73bdf83b90550ec10470d6224d Mon Sep 17 00:00:00 2001 From: asuessenbach Date: Mon, 22 Sep 2025 10:43:17 +0200 Subject: [PATCH 2/2] Ported changes to chapters 10 to 17. Other chapters don't need that. --- attachments/10_fixed_functions.cpp | 15 ++++++++++++--- attachments/12_graphics_pipeline_complete.cpp | 15 ++++++++++++--- attachments/14_command_buffers.cpp | 15 ++++++++++++--- attachments/15_hello_triangle.cpp | 16 +++++++++++++--- attachments/16_frames_in_flight.cpp | 16 +++++++++++++--- attachments/17_swap_chain_recreation.cpp | 16 +++++++++++++--- 6 files changed, 75 insertions(+), 18 deletions(-) diff --git a/attachments/10_fixed_functions.cpp b/attachments/10_fixed_functions.cpp index e63602d2..3aa1238b 100644 --- a/attachments/10_fixed_functions.cpp +++ b/attachments/10_fixed_functions.cpp @@ -193,8 +193,12 @@ class HelloTriangleApplication { { return strcmp( availableDeviceExtension.extensionName, requiredDeviceExtension ) == 0; } ); } ); - auto features = device.template getFeatures2(); - bool supportsRequiredFeatures = features.template get().dynamicRendering && + auto features = device.template getFeatures2(); + bool supportsRequiredFeatures = features.template get().shaderDrawParameters && + features.template get().dynamicRendering && features.template get().extendedDynamicState; return supportsVulkan1_3 && supportsGraphics && supportsAllRequiredExtensions && supportsRequiredFeatures; @@ -230,8 +234,13 @@ class HelloTriangleApplication { } // query for Vulkan 1.3 features - vk::StructureChain featureChain = { + vk::StructureChain + featureChain = { {}, // vk::PhysicalDeviceFeatures2 + {.shaderDrawParameters = true }, // vk::PhysicalDeviceVulkan11Features {.dynamicRendering = true }, // vk::PhysicalDeviceVulkan13Features {.extendedDynamicState = true } // vk::PhysicalDeviceExtendedDynamicStateFeaturesEXT }; diff --git a/attachments/12_graphics_pipeline_complete.cpp b/attachments/12_graphics_pipeline_complete.cpp index 9062d84b..7ca1313c 100644 --- a/attachments/12_graphics_pipeline_complete.cpp +++ b/attachments/12_graphics_pipeline_complete.cpp @@ -194,8 +194,12 @@ class HelloTriangleApplication { { return strcmp( availableDeviceExtension.extensionName, requiredDeviceExtension ) == 0; } ); } ); - auto features = device.template getFeatures2(); - bool supportsRequiredFeatures = features.template get().dynamicRendering && + auto features = device.template getFeatures2(); + bool supportsRequiredFeatures = features.template get().shaderDrawParameters && + features.template get().dynamicRendering && features.template get().extendedDynamicState; return supportsVulkan1_3 && supportsGraphics && supportsAllRequiredExtensions && supportsRequiredFeatures; @@ -231,8 +235,13 @@ class HelloTriangleApplication { } // query for Vulkan 1.3 features - vk::StructureChain featureChain = { + vk::StructureChain + featureChain = { {}, // vk::PhysicalDeviceFeatures2 + {.shaderDrawParameters = true }, // vk::PhysicalDeviceVulkan11Features {.dynamicRendering = true }, // vk::PhysicalDeviceVulkan13Features {.extendedDynamicState = true } // vk::PhysicalDeviceExtendedDynamicStateFeaturesEXT }; diff --git a/attachments/14_command_buffers.cpp b/attachments/14_command_buffers.cpp index 9ecb70bb..864edec0 100644 --- a/attachments/14_command_buffers.cpp +++ b/attachments/14_command_buffers.cpp @@ -199,8 +199,12 @@ class HelloTriangleApplication { { return strcmp( availableDeviceExtension.extensionName, requiredDeviceExtension ) == 0; } ); } ); - auto features = device.template getFeatures2(); - bool supportsRequiredFeatures = features.template get().dynamicRendering && + auto features = device.template getFeatures2(); + bool supportsRequiredFeatures = features.template get().shaderDrawParameters && + features.template get().dynamicRendering && features.template get().extendedDynamicState; return supportsVulkan1_3 && supportsGraphics && supportsAllRequiredExtensions && supportsRequiredFeatures; @@ -235,8 +239,13 @@ class HelloTriangleApplication { } // query for Vulkan 1.3 features - vk::StructureChain featureChain = { + vk::StructureChain + featureChain = { {}, // vk::PhysicalDeviceFeatures2 + {.shaderDrawParameters = true }, // vk::PhysicalDeviceVulkan11Features {.dynamicRendering = true }, // vk::PhysicalDeviceVulkan13Features {.extendedDynamicState = true } // vk::PhysicalDeviceExtendedDynamicStateFeaturesEXT }; diff --git a/attachments/15_hello_triangle.cpp b/attachments/15_hello_triangle.cpp index 796d1507..2e9ebb60 100644 --- a/attachments/15_hello_triangle.cpp +++ b/attachments/15_hello_triangle.cpp @@ -208,8 +208,13 @@ class HelloTriangleApplication { { return strcmp( availableDeviceExtension.extensionName, requiredDeviceExtension ) == 0; } ); } ); - auto features = device.template getFeatures2(); - bool supportsRequiredFeatures = features.template get().dynamicRendering && + auto features = device.template getFeatures2(); + bool supportsRequiredFeatures = features.template get().shaderDrawParameters && + features.template get().synchronization2 && + features.template get().dynamicRendering && features.template get().extendedDynamicState; return supportsVulkan1_3 && supportsGraphics && supportsAllRequiredExtensions && supportsRequiredFeatures; @@ -244,8 +249,13 @@ class HelloTriangleApplication { } // query for Vulkan 1.3 features - vk::StructureChain featureChain = { + vk::StructureChain + featureChain = { {}, // vk::PhysicalDeviceFeatures2 + {.shaderDrawParameters = true }, // vk::PhysicalDeviceVulkan11Features {.synchronization2 = true, .dynamicRendering = true }, // vk::PhysicalDeviceVulkan13Features {.extendedDynamicState = true } // vk::PhysicalDeviceExtendedDynamicStateFeaturesEXT }; diff --git a/attachments/16_frames_in_flight.cpp b/attachments/16_frames_in_flight.cpp index 6321c631..2c129802 100644 --- a/attachments/16_frames_in_flight.cpp +++ b/attachments/16_frames_in_flight.cpp @@ -212,8 +212,13 @@ class HelloTriangleApplication { { return strcmp( availableDeviceExtension.extensionName, requiredDeviceExtension ) == 0; } ); } ); - auto features = device.template getFeatures2(); - bool supportsRequiredFeatures = features.template get().dynamicRendering && + auto features = device.template getFeatures2(); + bool supportsRequiredFeatures = features.template get().shaderDrawParameters && + features.template get().synchronization2 && + features.template get().dynamicRendering && features.template get().extendedDynamicState; return supportsVulkan1_3 && supportsGraphics && supportsAllRequiredExtensions && supportsRequiredFeatures; @@ -248,8 +253,13 @@ class HelloTriangleApplication { } // query for Vulkan 1.3 features - vk::StructureChain featureChain = { + vk::StructureChain + featureChain = { {}, // vk::PhysicalDeviceFeatures2 + {.shaderDrawParameters = true }, // vk::PhysicalDeviceVulkan11Features {.synchronization2 = true, .dynamicRendering = true }, // vk::PhysicalDeviceVulkan13Features {.extendedDynamicState = true } // vk::PhysicalDeviceExtendedDynamicStateFeaturesEXT }; diff --git a/attachments/17_swap_chain_recreation.cpp b/attachments/17_swap_chain_recreation.cpp index 16ac1343..7fc4ef75 100644 --- a/attachments/17_swap_chain_recreation.cpp +++ b/attachments/17_swap_chain_recreation.cpp @@ -239,8 +239,13 @@ class HelloTriangleApplication { { return strcmp( availableDeviceExtension.extensionName, requiredDeviceExtension ) == 0; } ); } ); - auto features = device.template getFeatures2(); - bool supportsRequiredFeatures = features.template get().dynamicRendering && + auto features = device.template getFeatures2(); + bool supportsRequiredFeatures = features.template get().shaderDrawParameters && + features.template get().synchronization2 && + features.template get().dynamicRendering && features.template get().extendedDynamicState; return supportsVulkan1_3 && supportsGraphics && supportsAllRequiredExtensions && supportsRequiredFeatures; @@ -275,8 +280,13 @@ class HelloTriangleApplication { } // query for Vulkan 1.3 features - vk::StructureChain featureChain = { + vk::StructureChain + featureChain = { {}, // vk::PhysicalDeviceFeatures2 + {.shaderDrawParameters = true }, // vk::PhysicalDeviceVulkan11Features {.synchronization2 = true, .dynamicRendering = true }, // vk::PhysicalDeviceVulkan13Features {.extendedDynamicState = true } // vk::PhysicalDeviceExtendedDynamicStateFeaturesEXT };