From b0f0dad7fdfd72e0c6f659ec074e6212c29450d2 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 5 Mar 2020 17:25:50 +0000 Subject: [PATCH] Test that we can capture and replay VkPhysicalDeviceVulkan12Features * This ensure we don't accidentally enable any features that aren't supported. --- util/test/demos/vk/vk_parameter_zoo.cpp | 33 +++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/util/test/demos/vk/vk_parameter_zoo.cpp b/util/test/demos/vk/vk_parameter_zoo.cpp index 778082d10..edc80af0d 100644 --- a/util/test/demos/vk/vk_parameter_zoo.cpp +++ b/util/test/demos/vk/vk_parameter_zoo.cpp @@ -191,6 +191,27 @@ void main() timeline.timelineSemaphore = VK_TRUE; devInfoNext = &timeline; } + + static VkPhysicalDeviceVulkan12Features vk12 = { + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES, + }; + + if(physProperties.apiVersion >= VK_MAKE_VERSION(1, 2, 0)) + { + // don't enable any features, just link the struct in. + // deliberately replace the VkPhysicalDeviceTimelineSemaphoreFeaturesKHR above because it was + // rolled into this struct - so we enable that one feature if we're using it + devInfoNext = &vk12; + + VkPhysicalDeviceVulkan12Features vk12avail = { + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES, + }; + + getPhysFeatures2(&vk12avail); + + if(vk12avail.timelineSemaphore) + vk12.timelineSemaphore = VK_TRUE; + } } int main() @@ -225,6 +246,18 @@ void main() std::find(devExts.begin(), devExts.end(), VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME) != devExts.end(); + if(physProperties.apiVersion >= VK_MAKE_VERSION(1, 2, 0)) + { + VkPhysicalDeviceVulkan12Features vk12avail = { + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES, + }; + + getPhysFeatures2(&vk12avail); + + if(vk12avail.timelineSemaphore) + KHR_timeline_semaphore = true; + } + VkDescriptorSetLayout setlayout = createDescriptorSetLayout(vkh::DescriptorSetLayoutCreateInfo({ {0, VK_DESCRIPTOR_TYPE_SAMPLER, 1, VK_SHADER_STAGE_VERTEX_BIT}, {1, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_VERTEX_BIT},