|
1 | | -/* Copyright (c) 2024, Huawei Technologies Co., Ltd. |
| 1 | +/* Copyright (c) 2024-2025, Huawei Technologies Co., Ltd. |
2 | 2 | * |
3 | 3 | * SPDX-License-Identifier: Apache-2.0 |
4 | 4 | * |
@@ -165,6 +165,18 @@ void HelloTriangleV13::init_instance() |
165 | 165 | } |
166 | 166 | #endif |
167 | 167 |
|
| 168 | +#if (defined(VKB_ENABLE_PORTABILITY)) |
| 169 | + required_instance_extensions.push_back(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME); |
| 170 | + bool portability_enumeration_available = false; |
| 171 | + if (std::any_of(available_instance_extensions.begin(), |
| 172 | + available_instance_extensions.end(), |
| 173 | + [](VkExtensionProperties const &extension) { return strcmp(extension.extensionName, VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME) == 0; })) |
| 174 | + { |
| 175 | + required_instance_extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); |
| 176 | + portability_enumeration_available = true; |
| 177 | + } |
| 178 | +#endif |
| 179 | + |
168 | 180 | #if defined(VK_USE_PLATFORM_ANDROID_KHR) |
169 | 181 | required_instance_extensions.push_back(VK_KHR_ANDROID_SURFACE_EXTENSION_NAME); |
170 | 182 | #elif defined(VK_USE_PLATFORM_WIN32_KHR) |
@@ -241,6 +253,13 @@ void HelloTriangleV13::init_instance() |
241 | 253 | } |
242 | 254 | #endif |
243 | 255 |
|
| 256 | +#if (defined(VKB_ENABLE_PORTABILITY)) |
| 257 | + if (portability_enumeration_available) |
| 258 | + { |
| 259 | + instance_info.flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; |
| 260 | + } |
| 261 | +#endif |
| 262 | + |
244 | 263 | // Create the Vulkan instance |
245 | 264 | VK_CHECK(vkCreateInstance(&instance_info, nullptr, &context.instance)); |
246 | 265 |
|
@@ -1146,7 +1165,10 @@ void HelloTriangleV13::transition_image_layout( |
1146 | 1165 | HelloTriangleV13::~HelloTriangleV13() |
1147 | 1166 | { |
1148 | 1167 | // Don't release anything until the GPU is completely idle. |
1149 | | - vkDeviceWaitIdle(context.device); |
| 1168 | + if (context.device != VK_NULL_HANDLE) |
| 1169 | + { |
| 1170 | + vkDeviceWaitIdle(context.device); |
| 1171 | + } |
1150 | 1172 |
|
1151 | 1173 | for (auto &per_frame : context.per_frame) |
1152 | 1174 | { |
|
0 commit comments