| 40 | } |
| 41 | |
| 42 | int main() |
| 43 | { |
| 44 | try |
| 45 | { |
| 46 | vk::detail::defaultDispatchLoaderDynamic.init(); |
| 47 | |
| 48 | vk::ApplicationInfo appInfo( AppName, 1, EngineName, 1, vk::ApiVersion11 ); |
| 49 | vk::UniqueInstance instance = vk::createInstanceUnique( vk::InstanceCreateInfo( {}, &appInfo ) ); |
| 50 | vk::detail::defaultDispatchLoaderDynamic.init( *instance ); |
| 51 | vk::PhysicalDevice physicalDevice = instance->enumeratePhysicalDevices().front(); |
| 52 | |
| 53 | // some valid StructureChains |
| 54 | vk::StructureChain<vk::PhysicalDeviceProperties2> sc0; |
| 55 | vk::StructureChain<vk::PhysicalDeviceProperties2, vk::PhysicalDeviceIDProperties> const sc1; |
| 56 | auto pdp = sc1.get<vk::PhysicalDeviceProperties2>(); |
| 57 | VULKAN_HPP_UNUSED( pdp ); |
| 58 | vk::StructureChain<vk::PhysicalDeviceProperties2, vk::PhysicalDeviceMaintenance3Properties> sc2; |
| 59 | vk::StructureChain<vk::PhysicalDeviceProperties2, vk::PhysicalDevicePushDescriptorPropertiesKHR> sc3; |
| 60 | vk::StructureChain<vk::PhysicalDeviceProperties2, vk::PhysicalDeviceIDProperties, vk::PhysicalDeviceMaintenance3Properties> sc4; |
| 61 | vk::StructureChain<vk::PhysicalDeviceProperties2, vk::PhysicalDeviceIDProperties, vk::PhysicalDevicePushDescriptorPropertiesKHR> sc6; |
| 62 | vk::StructureChain<vk::PhysicalDeviceProperties2, |
| 63 | vk::PhysicalDeviceIDProperties, |
| 64 | vk::PhysicalDeviceMaintenance3Properties, |
| 65 | vk::PhysicalDevicePushDescriptorPropertiesKHR> |
| 66 | sc7; |
| 67 | |
| 68 | #if ( 17 <= VULKAN_HPP_CPP_VERSION ) || defined( VULKAN_HPP_USE_CXX_MODULE ) |
| 69 | // test for structured binding from a StructureChain |
| 70 | auto const & [p0, p1] = sc1; |
| 71 | auto & [p2, p3] = sc2; |
| 72 | #endif |
| 73 | |
| 74 | void * pNext = sc7.get<vk::PhysicalDeviceIDProperties>().pNext; |
| 75 | sc7.assign<vk::PhysicalDeviceIDProperties>( {} ); |
| 76 | release_assert( pNext == sc7.get<vk::PhysicalDeviceIDProperties>().pNext ); |
| 77 | |
| 78 | vk::StructureChain<vk::DeviceQueueCreateInfo, vk::DeviceQueueGlobalPriorityCreateInfoKHR> sc8; |
| 79 | sc8.assign<vk::DeviceQueueGlobalPriorityCreateInfoKHR>( {} ); |
| 80 | |
| 81 | void * pNext1 = sc7.get<vk::PhysicalDeviceMaintenance3Properties>().pNext; |
| 82 | sc7.assign<vk::PhysicalDeviceMaintenance3Properties>( {} ).assign<vk::PhysicalDeviceIDProperties>( {} ); |
| 83 | release_assert( pNext == sc7.get<vk::PhysicalDeviceIDProperties>().pNext ); |
| 84 | release_assert( pNext1 == sc7.get<vk::PhysicalDeviceMaintenance3Properties>().pNext ); |
| 85 | |
| 86 | // some checks on unmodified chains |
| 87 | release_assert( sc7.isLinked<vk::PhysicalDeviceProperties2>() ); |
| 88 | release_assert( sc7.isLinked<vk::PhysicalDeviceMaintenance3Properties>() ); |
| 89 | |
| 90 | // some invalid StructureChains |
| 91 | // clang-format off |
| 92 | //vk::StructureChain<vk::PhysicalDeviceIDProperties, vk::PhysicalDeviceMaintenance3Properties> x; |
| 93 | //vk::StructureChain<vk::PhysicalDeviceIDProperties, |
| 94 | // vk::PhysicalDeviceMaintenance3Properties, |
| 95 | // vk::PhysicalDevicePushDescriptorPropertiesKHR> |
| 96 | // x; |
| 97 | //vk::StructureChain<vk::PhysicalDeviceIDProperties, |
| 98 | // vk::PhysicalDevicePushDescriptorPropertiesKHR, |
| 99 | // vk::PhysicalDeviceMaintenance3Properties> |
nothing calls this directly
no test coverage detected