From 31cad11e3ddbd727edbab02b1cb15c73a19ef1e8 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 10 Nov 2026 11:03:44 +0000 Subject: [PATCH] Enable features/extensions in vulkan tests that we use --- util/test/demos/vk/vk_buffer_truncation.cpp | 20 ++++++++++++++++++++ util/test/demos/vk/vk_dynamic_rendering.cpp | 1 + util/test/demos/vk/vk_khr_buffer_address.cpp | 6 ++++++ util/test/demos/vk/vk_resource_usage.cpp | 1 + util/test/demos/vk/vk_video_textures.cpp | 12 ++++++++++++ 5 files changed, 40 insertions(+) diff --git a/util/test/demos/vk/vk_buffer_truncation.cpp b/util/test/demos/vk/vk_buffer_truncation.cpp index 19a1f451f..02c38d550 100644 --- a/util/test/demos/vk/vk_buffer_truncation.cpp +++ b/util/test/demos/vk/vk_buffer_truncation.cpp @@ -71,8 +71,28 @@ void main() features.robustBufferAccess = VK_TRUE; devExts.push_back(VK_KHR_MAINTENANCE_5_EXTENSION_NAME); + optDevExts.push_back(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME); VulkanGraphicsTest::Prepare(argc, argv); + + VkPhysicalDeviceRobustness2FeaturesEXT robustFeatsAvail = { + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT, + }; + + getPhysFeatures2(&robustFeatsAvail); + + static VkPhysicalDeviceRobustness2FeaturesEXT robustFeats = { + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT, + }; + + // enable robustBufferAccess2 as well for index buffers + if(hasExt(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME) && robustFeatsAvail.robustBufferAccess2) + { + robustFeats.robustBufferAccess2 = VK_TRUE; + + robustFeats.pNext = (void *)devInfoNext; + devInfoNext = &robustFeats; + } } int main() diff --git a/util/test/demos/vk/vk_dynamic_rendering.cpp b/util/test/demos/vk/vk_dynamic_rendering.cpp index 4b503c211..c5415bf81 100644 --- a/util/test/demos/vk/vk_dynamic_rendering.cpp +++ b/util/test/demos/vk/vk_dynamic_rendering.cpp @@ -97,6 +97,7 @@ void main() devExts.push_back(VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME); features.geometryShader = VK_TRUE; + features.fragmentStoresAndAtomics = VK_TRUE; VulkanGraphicsTest::Prepare(argc, argv); diff --git a/util/test/demos/vk/vk_khr_buffer_address.cpp b/util/test/demos/vk/vk_khr_buffer_address.cpp index 312435945..79bf9de15 100644 --- a/util/test/demos/vk/vk_khr_buffer_address.cpp +++ b/util/test/demos/vk/vk_khr_buffer_address.cpp @@ -133,6 +133,11 @@ void main() VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR, }; + static VkPhysicalDeviceScalarBlockLayoutFeaturesEXT scalarFeatures = { + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT, + }; + + getPhysFeatures2(&scalarFeatures); getPhysFeatures2(&bufaddrFeatures); if(!bufaddrFeatures.bufferDeviceAddress) @@ -142,6 +147,7 @@ void main() bufaddrFeatures.bufferDeviceAddressMultiDevice = 0; devInfoNext = &bufaddrFeatures; + bufaddrFeatures.pNext = &scalarFeatures; } int main() diff --git a/util/test/demos/vk/vk_resource_usage.cpp b/util/test/demos/vk/vk_resource_usage.cpp index b9b492ad4..9ebf2f9f8 100644 --- a/util/test/demos/vk/vk_resource_usage.cpp +++ b/util/test/demos/vk/vk_resource_usage.cpp @@ -245,6 +245,7 @@ RD_TEST(VK_Resource_Usage, VulkanGraphicsTest) devExts.push_back(VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME); features.multiDrawIndirect = VK_TRUE; + features.drawIndirectFirstInstance = VK_TRUE; optDevExts.push_back(VK_EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME); optDevExts.push_back(VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME); diff --git a/util/test/demos/vk/vk_video_textures.cpp b/util/test/demos/vk/vk_video_textures.cpp index 01b586b36..b99d22b4e 100644 --- a/util/test/demos/vk/vk_video_textures.cpp +++ b/util/test/demos/vk/vk_video_textures.cpp @@ -229,6 +229,18 @@ void main() devExts.push_back(VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME); VulkanGraphicsTest::Prepare(argc, argv); + + static VkPhysicalDeviceSamplerYcbcrConversionFeatures ycbcrFeats = { + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, + }; + + getPhysFeatures2(&ycbcrFeats); + + if(!ycbcrFeats.samplerYcbcrConversion) + Avail = "feature 'samplerYcbcrConversion' not available"; + + ycbcrFeats.pNext = (void *)devInfoNext; + devInfoNext = &ycbcrFeats; } int main()