1*b7893ccfSSadaf Ebrahimi // *** THIS FILE IS GENERATED - DO NOT EDIT *** 2*b7893ccfSSadaf Ebrahimi // See helper_file_generator.py for modifications 3*b7893ccfSSadaf Ebrahimi 4*b7893ccfSSadaf Ebrahimi 5*b7893ccfSSadaf Ebrahimi /*************************************************************************** 6*b7893ccfSSadaf Ebrahimi * 7*b7893ccfSSadaf Ebrahimi * Copyright (c) 2015-2019 The Khronos Group Inc. 8*b7893ccfSSadaf Ebrahimi * Copyright (c) 2015-2019 Valve Corporation 9*b7893ccfSSadaf Ebrahimi * Copyright (c) 2015-2019 LunarG, Inc. 10*b7893ccfSSadaf Ebrahimi * Copyright (c) 2015-2019 Google Inc. 11*b7893ccfSSadaf Ebrahimi * 12*b7893ccfSSadaf Ebrahimi * Licensed under the Apache License, Version 2.0 (the "License"); 13*b7893ccfSSadaf Ebrahimi * you may not use this file except in compliance with the License. 14*b7893ccfSSadaf Ebrahimi * You may obtain a copy of the License at 15*b7893ccfSSadaf Ebrahimi * 16*b7893ccfSSadaf Ebrahimi * http://www.apache.org/licenses/LICENSE-2.0 17*b7893ccfSSadaf Ebrahimi * 18*b7893ccfSSadaf Ebrahimi * Unless required by applicable law or agreed to in writing, software 19*b7893ccfSSadaf Ebrahimi * distributed under the License is distributed on an "AS IS" BASIS, 20*b7893ccfSSadaf Ebrahimi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21*b7893ccfSSadaf Ebrahimi * See the License for the specific language governing permissions and 22*b7893ccfSSadaf Ebrahimi * limitations under the License. 23*b7893ccfSSadaf Ebrahimi * 24*b7893ccfSSadaf Ebrahimi * Author: Mark Lobodzinski <[email protected]> 25*b7893ccfSSadaf Ebrahimi * Author: Courtney Goeltzenleuchter <[email protected]> 26*b7893ccfSSadaf Ebrahimi * Author: Tobin Ehlis <[email protected]> 27*b7893ccfSSadaf Ebrahimi * Author: Chris Forbes <[email protected]> 28*b7893ccfSSadaf Ebrahimi * Author: John Zulauf<[email protected]> 29*b7893ccfSSadaf Ebrahimi * 30*b7893ccfSSadaf Ebrahimi ****************************************************************************/ 31*b7893ccfSSadaf Ebrahimi 32*b7893ccfSSadaf Ebrahimi 33*b7893ccfSSadaf Ebrahimi #ifndef VK_EXTENSION_HELPER_H_ 34*b7893ccfSSadaf Ebrahimi #define VK_EXTENSION_HELPER_H_ 35*b7893ccfSSadaf Ebrahimi #include <unordered_set> 36*b7893ccfSSadaf Ebrahimi #include <string> 37*b7893ccfSSadaf Ebrahimi #include <unordered_map> 38*b7893ccfSSadaf Ebrahimi #include <utility> 39*b7893ccfSSadaf Ebrahimi #include <set> 40*b7893ccfSSadaf Ebrahimi #include <vector> 41*b7893ccfSSadaf Ebrahimi 42*b7893ccfSSadaf Ebrahimi #include <vulkan/vulkan.h> 43*b7893ccfSSadaf Ebrahimi 44*b7893ccfSSadaf Ebrahimi struct InstanceExtensions { 45*b7893ccfSSadaf Ebrahimi bool vk_feature_version_1_1{false}; 46*b7893ccfSSadaf Ebrahimi bool vk_ext_acquire_xlib_display{false}; 47*b7893ccfSSadaf Ebrahimi bool vk_ext_debug_report{false}; 48*b7893ccfSSadaf Ebrahimi bool vk_ext_debug_utils{false}; 49*b7893ccfSSadaf Ebrahimi bool vk_ext_direct_mode_display{false}; 50*b7893ccfSSadaf Ebrahimi bool vk_ext_display_surface_counter{false}; 51*b7893ccfSSadaf Ebrahimi bool vk_ext_headless_surface{false}; 52*b7893ccfSSadaf Ebrahimi bool vk_ext_metal_surface{false}; 53*b7893ccfSSadaf Ebrahimi bool vk_ext_swapchain_color_space{false}; 54*b7893ccfSSadaf Ebrahimi bool vk_ext_validation_features{false}; 55*b7893ccfSSadaf Ebrahimi bool vk_ext_validation_flags{false}; 56*b7893ccfSSadaf Ebrahimi bool vk_fuchsia_imagepipe_surface{false}; 57*b7893ccfSSadaf Ebrahimi bool vk_ggp_stream_descriptor_surface{false}; 58*b7893ccfSSadaf Ebrahimi bool vk_khr_android_surface{false}; 59*b7893ccfSSadaf Ebrahimi bool vk_khr_device_group_creation{false}; 60*b7893ccfSSadaf Ebrahimi bool vk_khr_display{false}; 61*b7893ccfSSadaf Ebrahimi bool vk_khr_external_fence_capabilities{false}; 62*b7893ccfSSadaf Ebrahimi bool vk_khr_external_memory_capabilities{false}; 63*b7893ccfSSadaf Ebrahimi bool vk_khr_external_semaphore_capabilities{false}; 64*b7893ccfSSadaf Ebrahimi bool vk_khr_get_display_properties_2{false}; 65*b7893ccfSSadaf Ebrahimi bool vk_khr_get_physical_device_properties_2{false}; 66*b7893ccfSSadaf Ebrahimi bool vk_khr_get_surface_capabilities_2{false}; 67*b7893ccfSSadaf Ebrahimi bool vk_khr_surface{false}; 68*b7893ccfSSadaf Ebrahimi bool vk_khr_surface_protected_capabilities{false}; 69*b7893ccfSSadaf Ebrahimi bool vk_khr_wayland_surface{false}; 70*b7893ccfSSadaf Ebrahimi bool vk_khr_win32_surface{false}; 71*b7893ccfSSadaf Ebrahimi bool vk_khr_xcb_surface{false}; 72*b7893ccfSSadaf Ebrahimi bool vk_khr_xlib_surface{false}; 73*b7893ccfSSadaf Ebrahimi bool vk_mvk_ios_surface{false}; 74*b7893ccfSSadaf Ebrahimi bool vk_mvk_macos_surface{false}; 75*b7893ccfSSadaf Ebrahimi bool vk_nn_vi_surface{false}; 76*b7893ccfSSadaf Ebrahimi bool vk_nv_external_memory_capabilities{false}; 77*b7893ccfSSadaf Ebrahimi 78*b7893ccfSSadaf Ebrahimi struct InstanceReq { 79*b7893ccfSSadaf Ebrahimi const bool InstanceExtensions::* enabled; 80*b7893ccfSSadaf Ebrahimi const char *name; 81*b7893ccfSSadaf Ebrahimi }; 82*b7893ccfSSadaf Ebrahimi typedef std::vector<InstanceReq> InstanceReqVec; 83*b7893ccfSSadaf Ebrahimi struct InstanceInfo { InstanceInfoInstanceExtensions::InstanceInfo84*b7893ccfSSadaf Ebrahimi InstanceInfo(bool InstanceExtensions::* state_, const InstanceReqVec requires_): state(state_), requires(requires_) {} 85*b7893ccfSSadaf Ebrahimi bool InstanceExtensions::* state; 86*b7893ccfSSadaf Ebrahimi InstanceReqVec requires; 87*b7893ccfSSadaf Ebrahimi }; 88*b7893ccfSSadaf Ebrahimi 89*b7893ccfSSadaf Ebrahimi typedef std::unordered_map<std::string,InstanceInfo> InstanceInfoMap; get_infoInstanceExtensions90*b7893ccfSSadaf Ebrahimi static const InstanceInfo &get_info(const char *name) { 91*b7893ccfSSadaf Ebrahimi static const InstanceInfoMap info_map = { 92*b7893ccfSSadaf Ebrahimi std::make_pair("VK_VERSION_1_1", InstanceInfo(&InstanceExtensions::vk_feature_version_1_1, {})), 93*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT 94*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_ext_acquire_xlib_display, {{ 95*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_ext_direct_mode_display, VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME}}})), 96*b7893ccfSSadaf Ebrahimi #endif 97*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_DEBUG_REPORT_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_ext_debug_report, {})), 98*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_DEBUG_UTILS_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_ext_debug_utils, {})), 99*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_ext_direct_mode_display, {{ 100*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_display, VK_KHR_DISPLAY_EXTENSION_NAME}}})), 101*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_ext_display_surface_counter, {{ 102*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_display, VK_KHR_DISPLAY_EXTENSION_NAME}}})), 103*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_ext_headless_surface, {{ 104*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_surface, VK_KHR_SURFACE_EXTENSION_NAME}}})), 105*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_METAL_EXT 106*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_METAL_SURFACE_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_ext_metal_surface, {{ 107*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_surface, VK_KHR_SURFACE_EXTENSION_NAME}}})), 108*b7893ccfSSadaf Ebrahimi #endif 109*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_ext_swapchain_color_space, {{ 110*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_surface, VK_KHR_SURFACE_EXTENSION_NAME}}})), 111*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_ext_validation_features, {})), 112*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_ext_validation_flags, {})), 113*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_FUCHSIA 114*b7893ccfSSadaf Ebrahimi std::make_pair(VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_fuchsia_imagepipe_surface, {{ 115*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_surface, VK_KHR_SURFACE_EXTENSION_NAME}}})), 116*b7893ccfSSadaf Ebrahimi #endif 117*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_GGP 118*b7893ccfSSadaf Ebrahimi std::make_pair(VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_ggp_stream_descriptor_surface, {{ 119*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_surface, VK_KHR_SURFACE_EXTENSION_NAME}}})), 120*b7893ccfSSadaf Ebrahimi #endif 121*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_ANDROID_KHR 122*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_ANDROID_SURFACE_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_khr_android_surface, {{ 123*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_surface, VK_KHR_SURFACE_EXTENSION_NAME}}})), 124*b7893ccfSSadaf Ebrahimi #endif 125*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_khr_device_group_creation, {})), 126*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_DISPLAY_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_khr_display, {{ 127*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_surface, VK_KHR_SURFACE_EXTENSION_NAME}}})), 128*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_khr_external_fence_capabilities, {{ 129*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 130*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_khr_external_memory_capabilities, {{ 131*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 132*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_khr_external_semaphore_capabilities, {{ 133*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 134*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_khr_get_display_properties_2, {{ 135*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_display, VK_KHR_DISPLAY_EXTENSION_NAME}}})), 136*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_khr_get_physical_device_properties_2, {})), 137*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_khr_get_surface_capabilities_2, {{ 138*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_surface, VK_KHR_SURFACE_EXTENSION_NAME}}})), 139*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_SURFACE_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_khr_surface, {})), 140*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_khr_surface_protected_capabilities, {{ 141*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_get_surface_capabilities_2, VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME}}})), 142*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WAYLAND_KHR 143*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_khr_wayland_surface, {{ 144*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_surface, VK_KHR_SURFACE_EXTENSION_NAME}}})), 145*b7893ccfSSadaf Ebrahimi #endif 146*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR 147*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_WIN32_SURFACE_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_khr_win32_surface, {{ 148*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_surface, VK_KHR_SURFACE_EXTENSION_NAME}}})), 149*b7893ccfSSadaf Ebrahimi #endif 150*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_XCB_KHR 151*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_XCB_SURFACE_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_khr_xcb_surface, {{ 152*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_surface, VK_KHR_SURFACE_EXTENSION_NAME}}})), 153*b7893ccfSSadaf Ebrahimi #endif 154*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_XLIB_KHR 155*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_XLIB_SURFACE_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_khr_xlib_surface, {{ 156*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_surface, VK_KHR_SURFACE_EXTENSION_NAME}}})), 157*b7893ccfSSadaf Ebrahimi #endif 158*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_IOS_MVK 159*b7893ccfSSadaf Ebrahimi std::make_pair(VK_MVK_IOS_SURFACE_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_mvk_ios_surface, {{ 160*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_surface, VK_KHR_SURFACE_EXTENSION_NAME}}})), 161*b7893ccfSSadaf Ebrahimi #endif 162*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_MACOS_MVK 163*b7893ccfSSadaf Ebrahimi std::make_pair(VK_MVK_MACOS_SURFACE_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_mvk_macos_surface, {{ 164*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_surface, VK_KHR_SURFACE_EXTENSION_NAME}}})), 165*b7893ccfSSadaf Ebrahimi #endif 166*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_VI_NN 167*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NN_VI_SURFACE_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_nn_vi_surface, {{ 168*b7893ccfSSadaf Ebrahimi {&InstanceExtensions::vk_khr_surface, VK_KHR_SURFACE_EXTENSION_NAME}}})), 169*b7893ccfSSadaf Ebrahimi #endif 170*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_nv_external_memory_capabilities, {})), 171*b7893ccfSSadaf Ebrahimi }; 172*b7893ccfSSadaf Ebrahimi 173*b7893ccfSSadaf Ebrahimi static const InstanceInfo empty_info {nullptr, InstanceReqVec()}; 174*b7893ccfSSadaf Ebrahimi InstanceInfoMap::const_iterator info = info_map.find(name); 175*b7893ccfSSadaf Ebrahimi if ( info != info_map.cend()) { 176*b7893ccfSSadaf Ebrahimi return info->second; 177*b7893ccfSSadaf Ebrahimi } 178*b7893ccfSSadaf Ebrahimi return empty_info; 179*b7893ccfSSadaf Ebrahimi } 180*b7893ccfSSadaf Ebrahimi NormalizeApiVersionInstanceExtensions181*b7893ccfSSadaf Ebrahimi uint32_t NormalizeApiVersion(uint32_t specified_version) { 182*b7893ccfSSadaf Ebrahimi uint32_t api_version = (specified_version < VK_API_VERSION_1_1) ? VK_API_VERSION_1_0 : VK_API_VERSION_1_1; 183*b7893ccfSSadaf Ebrahimi return api_version; 184*b7893ccfSSadaf Ebrahimi } 185*b7893ccfSSadaf Ebrahimi InitFromInstanceCreateInfoInstanceExtensions186*b7893ccfSSadaf Ebrahimi uint32_t InitFromInstanceCreateInfo(uint32_t requested_api_version, const VkInstanceCreateInfo *pCreateInfo) { 187*b7893ccfSSadaf Ebrahimi 188*b7893ccfSSadaf Ebrahimi static const std::vector<const char *> V_1_1_promoted_instance_apis = { 189*b7893ccfSSadaf Ebrahimi VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME, 190*b7893ccfSSadaf Ebrahimi VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME, 191*b7893ccfSSadaf Ebrahimi VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME, 192*b7893ccfSSadaf Ebrahimi VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME, 193*b7893ccfSSadaf Ebrahimi VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 194*b7893ccfSSadaf Ebrahimi "VK_VERSION_1_1", 195*b7893ccfSSadaf Ebrahimi }; 196*b7893ccfSSadaf Ebrahimi 197*b7893ccfSSadaf Ebrahimi // Initialize struct data, robust to invalid pCreateInfo 198*b7893ccfSSadaf Ebrahimi if (pCreateInfo->ppEnabledExtensionNames) { 199*b7893ccfSSadaf Ebrahimi for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) { 200*b7893ccfSSadaf Ebrahimi if (!pCreateInfo->ppEnabledExtensionNames[i]) continue; 201*b7893ccfSSadaf Ebrahimi auto info = get_info(pCreateInfo->ppEnabledExtensionNames[i]); 202*b7893ccfSSadaf Ebrahimi if(info.state) this->*(info.state) = true; 203*b7893ccfSSadaf Ebrahimi } 204*b7893ccfSSadaf Ebrahimi } 205*b7893ccfSSadaf Ebrahimi uint32_t api_version = NormalizeApiVersion(requested_api_version); 206*b7893ccfSSadaf Ebrahimi if (api_version >= VK_API_VERSION_1_1) { 207*b7893ccfSSadaf Ebrahimi for (auto promoted_ext : V_1_1_promoted_instance_apis) { 208*b7893ccfSSadaf Ebrahimi auto info = get_info(promoted_ext); 209*b7893ccfSSadaf Ebrahimi assert(info.state); 210*b7893ccfSSadaf Ebrahimi if (info.state) this->*(info.state) = true; 211*b7893ccfSSadaf Ebrahimi } 212*b7893ccfSSadaf Ebrahimi } 213*b7893ccfSSadaf Ebrahimi return api_version; 214*b7893ccfSSadaf Ebrahimi } 215*b7893ccfSSadaf Ebrahimi }; 216*b7893ccfSSadaf Ebrahimi 217*b7893ccfSSadaf Ebrahimi static const std::set<std::string> kInstanceExtensionNames = { 218*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT 219*b7893ccfSSadaf Ebrahimi VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME, 220*b7893ccfSSadaf Ebrahimi #endif 221*b7893ccfSSadaf Ebrahimi VK_EXT_DEBUG_REPORT_EXTENSION_NAME, 222*b7893ccfSSadaf Ebrahimi VK_EXT_DEBUG_UTILS_EXTENSION_NAME, 223*b7893ccfSSadaf Ebrahimi VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME, 224*b7893ccfSSadaf Ebrahimi VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME, 225*b7893ccfSSadaf Ebrahimi VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME, 226*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_METAL_EXT 227*b7893ccfSSadaf Ebrahimi VK_EXT_METAL_SURFACE_EXTENSION_NAME, 228*b7893ccfSSadaf Ebrahimi #endif 229*b7893ccfSSadaf Ebrahimi VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME, 230*b7893ccfSSadaf Ebrahimi VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME, 231*b7893ccfSSadaf Ebrahimi VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME, 232*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_FUCHSIA 233*b7893ccfSSadaf Ebrahimi VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME, 234*b7893ccfSSadaf Ebrahimi #endif 235*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_GGP 236*b7893ccfSSadaf Ebrahimi VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME, 237*b7893ccfSSadaf Ebrahimi #endif 238*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_ANDROID_KHR 239*b7893ccfSSadaf Ebrahimi VK_KHR_ANDROID_SURFACE_EXTENSION_NAME, 240*b7893ccfSSadaf Ebrahimi #endif 241*b7893ccfSSadaf Ebrahimi VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME, 242*b7893ccfSSadaf Ebrahimi VK_KHR_DISPLAY_EXTENSION_NAME, 243*b7893ccfSSadaf Ebrahimi VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME, 244*b7893ccfSSadaf Ebrahimi VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME, 245*b7893ccfSSadaf Ebrahimi VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME, 246*b7893ccfSSadaf Ebrahimi VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME, 247*b7893ccfSSadaf Ebrahimi VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, 248*b7893ccfSSadaf Ebrahimi VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME, 249*b7893ccfSSadaf Ebrahimi VK_KHR_SURFACE_EXTENSION_NAME, 250*b7893ccfSSadaf Ebrahimi VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME, 251*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WAYLAND_KHR 252*b7893ccfSSadaf Ebrahimi VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME, 253*b7893ccfSSadaf Ebrahimi #endif 254*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR 255*b7893ccfSSadaf Ebrahimi VK_KHR_WIN32_SURFACE_EXTENSION_NAME, 256*b7893ccfSSadaf Ebrahimi #endif 257*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_XCB_KHR 258*b7893ccfSSadaf Ebrahimi VK_KHR_XCB_SURFACE_EXTENSION_NAME, 259*b7893ccfSSadaf Ebrahimi #endif 260*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_XLIB_KHR 261*b7893ccfSSadaf Ebrahimi VK_KHR_XLIB_SURFACE_EXTENSION_NAME, 262*b7893ccfSSadaf Ebrahimi #endif 263*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_IOS_MVK 264*b7893ccfSSadaf Ebrahimi VK_MVK_IOS_SURFACE_EXTENSION_NAME, 265*b7893ccfSSadaf Ebrahimi #endif 266*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_MACOS_MVK 267*b7893ccfSSadaf Ebrahimi VK_MVK_MACOS_SURFACE_EXTENSION_NAME, 268*b7893ccfSSadaf Ebrahimi #endif 269*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_VI_NN 270*b7893ccfSSadaf Ebrahimi VK_NN_VI_SURFACE_EXTENSION_NAME, 271*b7893ccfSSadaf Ebrahimi #endif 272*b7893ccfSSadaf Ebrahimi VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME, 273*b7893ccfSSadaf Ebrahimi }; 274*b7893ccfSSadaf Ebrahimi 275*b7893ccfSSadaf Ebrahimi struct DeviceExtensions : public InstanceExtensions { 276*b7893ccfSSadaf Ebrahimi bool vk_feature_version_1_1{false}; 277*b7893ccfSSadaf Ebrahimi bool vk_amd_buffer_marker{false}; 278*b7893ccfSSadaf Ebrahimi bool vk_amd_device_coherent_memory{false}; 279*b7893ccfSSadaf Ebrahimi bool vk_amd_display_native_hdr{false}; 280*b7893ccfSSadaf Ebrahimi bool vk_amd_draw_indirect_count{false}; 281*b7893ccfSSadaf Ebrahimi bool vk_amd_gcn_shader{false}; 282*b7893ccfSSadaf Ebrahimi bool vk_amd_gpu_shader_half_float{false}; 283*b7893ccfSSadaf Ebrahimi bool vk_amd_gpu_shader_int16{false}; 284*b7893ccfSSadaf Ebrahimi bool vk_amd_memory_overallocation_behavior{false}; 285*b7893ccfSSadaf Ebrahimi bool vk_amd_mixed_attachment_samples{false}; 286*b7893ccfSSadaf Ebrahimi bool vk_amd_negative_viewport_height{false}; 287*b7893ccfSSadaf Ebrahimi bool vk_amd_pipeline_compiler_control{false}; 288*b7893ccfSSadaf Ebrahimi bool vk_amd_rasterization_order{false}; 289*b7893ccfSSadaf Ebrahimi bool vk_amd_shader_ballot{false}; 290*b7893ccfSSadaf Ebrahimi bool vk_amd_shader_core_properties{false}; 291*b7893ccfSSadaf Ebrahimi bool vk_amd_shader_core_properties_2{false}; 292*b7893ccfSSadaf Ebrahimi bool vk_amd_shader_explicit_vertex_parameter{false}; 293*b7893ccfSSadaf Ebrahimi bool vk_amd_shader_fragment_mask{false}; 294*b7893ccfSSadaf Ebrahimi bool vk_amd_shader_image_load_store_lod{false}; 295*b7893ccfSSadaf Ebrahimi bool vk_amd_shader_info{false}; 296*b7893ccfSSadaf Ebrahimi bool vk_amd_shader_trinary_minmax{false}; 297*b7893ccfSSadaf Ebrahimi bool vk_amd_texture_gather_bias_lod{false}; 298*b7893ccfSSadaf Ebrahimi bool vk_android_external_memory_android_hardware_buffer{false}; 299*b7893ccfSSadaf Ebrahimi bool vk_ext_astc_decode_mode{false}; 300*b7893ccfSSadaf Ebrahimi bool vk_ext_blend_operation_advanced{false}; 301*b7893ccfSSadaf Ebrahimi bool vk_ext_buffer_device_address{false}; 302*b7893ccfSSadaf Ebrahimi bool vk_ext_calibrated_timestamps{false}; 303*b7893ccfSSadaf Ebrahimi bool vk_ext_conditional_rendering{false}; 304*b7893ccfSSadaf Ebrahimi bool vk_ext_conservative_rasterization{false}; 305*b7893ccfSSadaf Ebrahimi bool vk_ext_debug_marker{false}; 306*b7893ccfSSadaf Ebrahimi bool vk_ext_depth_clip_enable{false}; 307*b7893ccfSSadaf Ebrahimi bool vk_ext_depth_range_unrestricted{false}; 308*b7893ccfSSadaf Ebrahimi bool vk_ext_descriptor_indexing{false}; 309*b7893ccfSSadaf Ebrahimi bool vk_ext_discard_rectangles{false}; 310*b7893ccfSSadaf Ebrahimi bool vk_ext_display_control{false}; 311*b7893ccfSSadaf Ebrahimi bool vk_ext_external_memory_dma_buf{false}; 312*b7893ccfSSadaf Ebrahimi bool vk_ext_external_memory_host{false}; 313*b7893ccfSSadaf Ebrahimi bool vk_ext_filter_cubic{false}; 314*b7893ccfSSadaf Ebrahimi bool vk_ext_fragment_density_map{false}; 315*b7893ccfSSadaf Ebrahimi bool vk_ext_fragment_shader_interlock{false}; 316*b7893ccfSSadaf Ebrahimi bool vk_ext_full_screen_exclusive{false}; 317*b7893ccfSSadaf Ebrahimi bool vk_ext_global_priority{false}; 318*b7893ccfSSadaf Ebrahimi bool vk_ext_hdr_metadata{false}; 319*b7893ccfSSadaf Ebrahimi bool vk_ext_host_query_reset{false}; 320*b7893ccfSSadaf Ebrahimi bool vk_ext_image_drm_format_modifier{false}; 321*b7893ccfSSadaf Ebrahimi bool vk_ext_index_type_uint8{false}; 322*b7893ccfSSadaf Ebrahimi bool vk_ext_inline_uniform_block{false}; 323*b7893ccfSSadaf Ebrahimi bool vk_ext_line_rasterization{false}; 324*b7893ccfSSadaf Ebrahimi bool vk_ext_memory_budget{false}; 325*b7893ccfSSadaf Ebrahimi bool vk_ext_memory_priority{false}; 326*b7893ccfSSadaf Ebrahimi bool vk_ext_pci_bus_info{false}; 327*b7893ccfSSadaf Ebrahimi bool vk_ext_pipeline_creation_feedback{false}; 328*b7893ccfSSadaf Ebrahimi bool vk_ext_post_depth_coverage{false}; 329*b7893ccfSSadaf Ebrahimi bool vk_ext_queue_family_foreign{false}; 330*b7893ccfSSadaf Ebrahimi bool vk_ext_sample_locations{false}; 331*b7893ccfSSadaf Ebrahimi bool vk_ext_sampler_filter_minmax{false}; 332*b7893ccfSSadaf Ebrahimi bool vk_ext_scalar_block_layout{false}; 333*b7893ccfSSadaf Ebrahimi bool vk_ext_separate_stencil_usage{false}; 334*b7893ccfSSadaf Ebrahimi bool vk_ext_shader_demote_to_helper_invocation{false}; 335*b7893ccfSSadaf Ebrahimi bool vk_ext_shader_stencil_export{false}; 336*b7893ccfSSadaf Ebrahimi bool vk_ext_shader_subgroup_ballot{false}; 337*b7893ccfSSadaf Ebrahimi bool vk_ext_shader_subgroup_vote{false}; 338*b7893ccfSSadaf Ebrahimi bool vk_ext_shader_viewport_index_layer{false}; 339*b7893ccfSSadaf Ebrahimi bool vk_ext_subgroup_size_control{false}; 340*b7893ccfSSadaf Ebrahimi bool vk_ext_texel_buffer_alignment{false}; 341*b7893ccfSSadaf Ebrahimi bool vk_ext_texture_compression_astc_hdr{false}; 342*b7893ccfSSadaf Ebrahimi bool vk_ext_transform_feedback{false}; 343*b7893ccfSSadaf Ebrahimi bool vk_ext_validation_cache{false}; 344*b7893ccfSSadaf Ebrahimi bool vk_ext_vertex_attribute_divisor{false}; 345*b7893ccfSSadaf Ebrahimi bool vk_ext_ycbcr_image_arrays{false}; 346*b7893ccfSSadaf Ebrahimi bool vk_ggp_frame_token{false}; 347*b7893ccfSSadaf Ebrahimi bool vk_google_decorate_string{false}; 348*b7893ccfSSadaf Ebrahimi bool vk_google_display_timing{false}; 349*b7893ccfSSadaf Ebrahimi bool vk_google_hlsl_functionality1{false}; 350*b7893ccfSSadaf Ebrahimi bool vk_img_filter_cubic{false}; 351*b7893ccfSSadaf Ebrahimi bool vk_img_format_pvrtc{false}; 352*b7893ccfSSadaf Ebrahimi bool vk_intel_performance_query{false}; 353*b7893ccfSSadaf Ebrahimi bool vk_intel_shader_integer_functions_2{false}; 354*b7893ccfSSadaf Ebrahimi bool vk_khr_16bit_storage{false}; 355*b7893ccfSSadaf Ebrahimi bool vk_khr_8bit_storage{false}; 356*b7893ccfSSadaf Ebrahimi bool vk_khr_bind_memory_2{false}; 357*b7893ccfSSadaf Ebrahimi bool vk_khr_create_renderpass_2{false}; 358*b7893ccfSSadaf Ebrahimi bool vk_khr_dedicated_allocation{false}; 359*b7893ccfSSadaf Ebrahimi bool vk_khr_depth_stencil_resolve{false}; 360*b7893ccfSSadaf Ebrahimi bool vk_khr_descriptor_update_template{false}; 361*b7893ccfSSadaf Ebrahimi bool vk_khr_device_group{false}; 362*b7893ccfSSadaf Ebrahimi bool vk_khr_display_swapchain{false}; 363*b7893ccfSSadaf Ebrahimi bool vk_khr_draw_indirect_count{false}; 364*b7893ccfSSadaf Ebrahimi bool vk_khr_driver_properties{false}; 365*b7893ccfSSadaf Ebrahimi bool vk_khr_external_fence{false}; 366*b7893ccfSSadaf Ebrahimi bool vk_khr_external_fence_fd{false}; 367*b7893ccfSSadaf Ebrahimi bool vk_khr_external_fence_win32{false}; 368*b7893ccfSSadaf Ebrahimi bool vk_khr_external_memory{false}; 369*b7893ccfSSadaf Ebrahimi bool vk_khr_external_memory_fd{false}; 370*b7893ccfSSadaf Ebrahimi bool vk_khr_external_memory_win32{false}; 371*b7893ccfSSadaf Ebrahimi bool vk_khr_external_semaphore{false}; 372*b7893ccfSSadaf Ebrahimi bool vk_khr_external_semaphore_fd{false}; 373*b7893ccfSSadaf Ebrahimi bool vk_khr_external_semaphore_win32{false}; 374*b7893ccfSSadaf Ebrahimi bool vk_khr_get_memory_requirements_2{false}; 375*b7893ccfSSadaf Ebrahimi bool vk_khr_image_format_list{false}; 376*b7893ccfSSadaf Ebrahimi bool vk_khr_imageless_framebuffer{false}; 377*b7893ccfSSadaf Ebrahimi bool vk_khr_incremental_present{false}; 378*b7893ccfSSadaf Ebrahimi bool vk_khr_maintenance1{false}; 379*b7893ccfSSadaf Ebrahimi bool vk_khr_maintenance2{false}; 380*b7893ccfSSadaf Ebrahimi bool vk_khr_maintenance3{false}; 381*b7893ccfSSadaf Ebrahimi bool vk_khr_multiview{false}; 382*b7893ccfSSadaf Ebrahimi bool vk_khr_pipeline_executable_properties{false}; 383*b7893ccfSSadaf Ebrahimi bool vk_khr_push_descriptor{false}; 384*b7893ccfSSadaf Ebrahimi bool vk_khr_relaxed_block_layout{false}; 385*b7893ccfSSadaf Ebrahimi bool vk_khr_sampler_mirror_clamp_to_edge{false}; 386*b7893ccfSSadaf Ebrahimi bool vk_khr_sampler_ycbcr_conversion{false}; 387*b7893ccfSSadaf Ebrahimi bool vk_khr_shader_atomic_int64{false}; 388*b7893ccfSSadaf Ebrahimi bool vk_khr_shader_draw_parameters{false}; 389*b7893ccfSSadaf Ebrahimi bool vk_khr_shader_float16_int8{false}; 390*b7893ccfSSadaf Ebrahimi bool vk_khr_shader_float_controls{false}; 391*b7893ccfSSadaf Ebrahimi bool vk_khr_shared_presentable_image{false}; 392*b7893ccfSSadaf Ebrahimi bool vk_khr_storage_buffer_storage_class{false}; 393*b7893ccfSSadaf Ebrahimi bool vk_khr_swapchain{false}; 394*b7893ccfSSadaf Ebrahimi bool vk_khr_swapchain_mutable_format{false}; 395*b7893ccfSSadaf Ebrahimi bool vk_khr_uniform_buffer_standard_layout{false}; 396*b7893ccfSSadaf Ebrahimi bool vk_khr_variable_pointers{false}; 397*b7893ccfSSadaf Ebrahimi bool vk_khr_vulkan_memory_model{false}; 398*b7893ccfSSadaf Ebrahimi bool vk_khr_win32_keyed_mutex{false}; 399*b7893ccfSSadaf Ebrahimi bool vk_nvx_device_generated_commands{false}; 400*b7893ccfSSadaf Ebrahimi bool vk_nvx_image_view_handle{false}; 401*b7893ccfSSadaf Ebrahimi bool vk_nvx_multiview_per_view_attributes{false}; 402*b7893ccfSSadaf Ebrahimi bool vk_nv_clip_space_w_scaling{false}; 403*b7893ccfSSadaf Ebrahimi bool vk_nv_compute_shader_derivatives{false}; 404*b7893ccfSSadaf Ebrahimi bool vk_nv_cooperative_matrix{false}; 405*b7893ccfSSadaf Ebrahimi bool vk_nv_corner_sampled_image{false}; 406*b7893ccfSSadaf Ebrahimi bool vk_nv_coverage_reduction_mode{false}; 407*b7893ccfSSadaf Ebrahimi bool vk_nv_dedicated_allocation{false}; 408*b7893ccfSSadaf Ebrahimi bool vk_nv_dedicated_allocation_image_aliasing{false}; 409*b7893ccfSSadaf Ebrahimi bool vk_nv_device_diagnostic_checkpoints{false}; 410*b7893ccfSSadaf Ebrahimi bool vk_nv_external_memory{false}; 411*b7893ccfSSadaf Ebrahimi bool vk_nv_external_memory_win32{false}; 412*b7893ccfSSadaf Ebrahimi bool vk_nv_fill_rectangle{false}; 413*b7893ccfSSadaf Ebrahimi bool vk_nv_fragment_coverage_to_color{false}; 414*b7893ccfSSadaf Ebrahimi bool vk_nv_fragment_shader_barycentric{false}; 415*b7893ccfSSadaf Ebrahimi bool vk_nv_framebuffer_mixed_samples{false}; 416*b7893ccfSSadaf Ebrahimi bool vk_nv_geometry_shader_passthrough{false}; 417*b7893ccfSSadaf Ebrahimi bool vk_nv_glsl_shader{false}; 418*b7893ccfSSadaf Ebrahimi bool vk_nv_mesh_shader{false}; 419*b7893ccfSSadaf Ebrahimi bool vk_nv_ray_tracing{false}; 420*b7893ccfSSadaf Ebrahimi bool vk_nv_representative_fragment_test{false}; 421*b7893ccfSSadaf Ebrahimi bool vk_nv_sample_mask_override_coverage{false}; 422*b7893ccfSSadaf Ebrahimi bool vk_nv_scissor_exclusive{false}; 423*b7893ccfSSadaf Ebrahimi bool vk_nv_shader_image_footprint{false}; 424*b7893ccfSSadaf Ebrahimi bool vk_nv_shader_sm_builtins{false}; 425*b7893ccfSSadaf Ebrahimi bool vk_nv_shader_subgroup_partitioned{false}; 426*b7893ccfSSadaf Ebrahimi bool vk_nv_shading_rate_image{false}; 427*b7893ccfSSadaf Ebrahimi bool vk_nv_viewport_array2{false}; 428*b7893ccfSSadaf Ebrahimi bool vk_nv_viewport_swizzle{false}; 429*b7893ccfSSadaf Ebrahimi bool vk_nv_win32_keyed_mutex{false}; 430*b7893ccfSSadaf Ebrahimi 431*b7893ccfSSadaf Ebrahimi struct DeviceReq { 432*b7893ccfSSadaf Ebrahimi const bool DeviceExtensions::* enabled; 433*b7893ccfSSadaf Ebrahimi const char *name; 434*b7893ccfSSadaf Ebrahimi }; 435*b7893ccfSSadaf Ebrahimi typedef std::vector<DeviceReq> DeviceReqVec; 436*b7893ccfSSadaf Ebrahimi struct DeviceInfo { DeviceInfoDeviceExtensions::DeviceInfo437*b7893ccfSSadaf Ebrahimi DeviceInfo(bool DeviceExtensions::* state_, const DeviceReqVec requires_): state(state_), requires(requires_) {} 438*b7893ccfSSadaf Ebrahimi bool DeviceExtensions::* state; 439*b7893ccfSSadaf Ebrahimi DeviceReqVec requires; 440*b7893ccfSSadaf Ebrahimi }; 441*b7893ccfSSadaf Ebrahimi 442*b7893ccfSSadaf Ebrahimi typedef std::unordered_map<std::string,DeviceInfo> DeviceInfoMap; get_infoDeviceExtensions443*b7893ccfSSadaf Ebrahimi static const DeviceInfo &get_info(const char *name) { 444*b7893ccfSSadaf Ebrahimi static const DeviceInfoMap info_map = { 445*b7893ccfSSadaf Ebrahimi std::make_pair("VK_VERSION_1_1", DeviceInfo(&DeviceExtensions::vk_feature_version_1_1, {})), 446*b7893ccfSSadaf Ebrahimi std::make_pair(VK_AMD_BUFFER_MARKER_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_amd_buffer_marker, {})), 447*b7893ccfSSadaf Ebrahimi std::make_pair(VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_amd_device_coherent_memory, {})), 448*b7893ccfSSadaf Ebrahimi std::make_pair(VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_amd_display_native_hdr, {{ 449*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}, 450*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_surface_capabilities_2, VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME}, 451*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_swapchain, VK_KHR_SWAPCHAIN_EXTENSION_NAME}}})), 452*b7893ccfSSadaf Ebrahimi std::make_pair(VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_amd_draw_indirect_count, {})), 453*b7893ccfSSadaf Ebrahimi std::make_pair(VK_AMD_GCN_SHADER_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_amd_gcn_shader, {})), 454*b7893ccfSSadaf Ebrahimi std::make_pair(VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_amd_gpu_shader_half_float, {})), 455*b7893ccfSSadaf Ebrahimi std::make_pair(VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_amd_gpu_shader_int16, {})), 456*b7893ccfSSadaf Ebrahimi std::make_pair(VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_amd_memory_overallocation_behavior, {})), 457*b7893ccfSSadaf Ebrahimi std::make_pair(VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_amd_mixed_attachment_samples, {})), 458*b7893ccfSSadaf Ebrahimi std::make_pair(VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_amd_negative_viewport_height, {})), 459*b7893ccfSSadaf Ebrahimi std::make_pair(VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_amd_pipeline_compiler_control, {})), 460*b7893ccfSSadaf Ebrahimi std::make_pair(VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_amd_rasterization_order, {})), 461*b7893ccfSSadaf Ebrahimi std::make_pair(VK_AMD_SHADER_BALLOT_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_amd_shader_ballot, {})), 462*b7893ccfSSadaf Ebrahimi std::make_pair(VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_amd_shader_core_properties, {{ 463*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 464*b7893ccfSSadaf Ebrahimi std::make_pair(VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_amd_shader_core_properties_2, {{ 465*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_amd_shader_core_properties, VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME}}})), 466*b7893ccfSSadaf Ebrahimi std::make_pair(VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_amd_shader_explicit_vertex_parameter, {})), 467*b7893ccfSSadaf Ebrahimi std::make_pair(VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_amd_shader_fragment_mask, {})), 468*b7893ccfSSadaf Ebrahimi std::make_pair(VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_amd_shader_image_load_store_lod, {})), 469*b7893ccfSSadaf Ebrahimi std::make_pair(VK_AMD_SHADER_INFO_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_amd_shader_info, {})), 470*b7893ccfSSadaf Ebrahimi std::make_pair(VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_amd_shader_trinary_minmax, {})), 471*b7893ccfSSadaf Ebrahimi std::make_pair(VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_amd_texture_gather_bias_lod, {{ 472*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 473*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_ANDROID_KHR 474*b7893ccfSSadaf Ebrahimi std::make_pair(VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_android_external_memory_android_hardware_buffer, {{ 475*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_sampler_ycbcr_conversion, VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME}, 476*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_external_memory, VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME}, 477*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_ext_queue_family_foreign, VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME}}})), 478*b7893ccfSSadaf Ebrahimi #endif 479*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_astc_decode_mode, {{ 480*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 481*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_blend_operation_advanced, {})), 482*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_buffer_device_address, {{ 483*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 484*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_calibrated_timestamps, {})), 485*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_conditional_rendering, {})), 486*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_conservative_rasterization, {{ 487*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 488*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_DEBUG_MARKER_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_debug_marker, {{ 489*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_ext_debug_report, VK_EXT_DEBUG_REPORT_EXTENSION_NAME}}})), 490*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_depth_clip_enable, {})), 491*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_depth_range_unrestricted, {})), 492*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_descriptor_indexing, {{ 493*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}, 494*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_maintenance3, VK_KHR_MAINTENANCE3_EXTENSION_NAME}}})), 495*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_discard_rectangles, {{ 496*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 497*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_display_control, {{ 498*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_ext_display_surface_counter, VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME}, 499*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_swapchain, VK_KHR_SWAPCHAIN_EXTENSION_NAME}}})), 500*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_external_memory_dma_buf, {{ 501*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_external_memory_fd, VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME}}})), 502*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_external_memory_host, {{ 503*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_external_memory, VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME}}})), 504*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_FILTER_CUBIC_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_filter_cubic, {{ 505*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_img_filter_cubic, VK_IMG_FILTER_CUBIC_EXTENSION_NAME}}})), 506*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_fragment_density_map, {{ 507*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 508*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_fragment_shader_interlock, {{ 509*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 510*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR 511*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_full_screen_exclusive, {{ 512*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}, 513*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_surface, VK_KHR_SURFACE_EXTENSION_NAME}, 514*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_surface_capabilities_2, VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME}, 515*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_swapchain, VK_KHR_SWAPCHAIN_EXTENSION_NAME}}})), 516*b7893ccfSSadaf Ebrahimi #endif 517*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_global_priority, {})), 518*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_HDR_METADATA_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_hdr_metadata, {{ 519*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_swapchain, VK_KHR_SWAPCHAIN_EXTENSION_NAME}}})), 520*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_host_query_reset, {{ 521*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 522*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_image_drm_format_modifier, {{ 523*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_bind_memory_2, VK_KHR_BIND_MEMORY_2_EXTENSION_NAME}, 524*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}, 525*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_image_format_list, VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME}, 526*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_sampler_ycbcr_conversion, VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME}}})), 527*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_index_type_uint8, {})), 528*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_inline_uniform_block, {{ 529*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}, 530*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_maintenance1, VK_KHR_MAINTENANCE1_EXTENSION_NAME}}})), 531*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_line_rasterization, {{ 532*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 533*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_MEMORY_BUDGET_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_memory_budget, {{ 534*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 535*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_memory_priority, {{ 536*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 537*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_pci_bus_info, {{ 538*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 539*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_pipeline_creation_feedback, {})), 540*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_post_depth_coverage, {})), 541*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_queue_family_foreign, {{ 542*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_external_memory, VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME}}})), 543*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_sample_locations, {{ 544*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 545*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_sampler_filter_minmax, {{ 546*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 547*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_scalar_block_layout, {{ 548*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 549*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_separate_stencil_usage, {})), 550*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_shader_demote_to_helper_invocation, {{ 551*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 552*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_shader_stencil_export, {})), 553*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_shader_subgroup_ballot, {})), 554*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_shader_subgroup_vote, {})), 555*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_shader_viewport_index_layer, {})), 556*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_subgroup_size_control, {})), 557*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_texel_buffer_alignment, {{ 558*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 559*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_texture_compression_astc_hdr, {{ 560*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 561*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_transform_feedback, {{ 562*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 563*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_VALIDATION_CACHE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_validation_cache, {})), 564*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_vertex_attribute_divisor, {{ 565*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 566*b7893ccfSSadaf Ebrahimi std::make_pair(VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_ycbcr_image_arrays, {{ 567*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_sampler_ycbcr_conversion, VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME}}})), 568*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_GGP 569*b7893ccfSSadaf Ebrahimi std::make_pair(VK_GGP_FRAME_TOKEN_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ggp_frame_token, {{ 570*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_swapchain, VK_KHR_SWAPCHAIN_EXTENSION_NAME}, 571*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_ggp_stream_descriptor_surface, VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME}}})), 572*b7893ccfSSadaf Ebrahimi #endif 573*b7893ccfSSadaf Ebrahimi std::make_pair(VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_google_decorate_string, {})), 574*b7893ccfSSadaf Ebrahimi std::make_pair(VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_google_display_timing, {{ 575*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_swapchain, VK_KHR_SWAPCHAIN_EXTENSION_NAME}}})), 576*b7893ccfSSadaf Ebrahimi std::make_pair(VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_google_hlsl_functionality1, {})), 577*b7893ccfSSadaf Ebrahimi std::make_pair(VK_IMG_FILTER_CUBIC_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_img_filter_cubic, {})), 578*b7893ccfSSadaf Ebrahimi std::make_pair(VK_IMG_FORMAT_PVRTC_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_img_format_pvrtc, {})), 579*b7893ccfSSadaf Ebrahimi std::make_pair(VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_intel_performance_query, {})), 580*b7893ccfSSadaf Ebrahimi std::make_pair(VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_intel_shader_integer_functions_2, {{ 581*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 582*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_16BIT_STORAGE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_16bit_storage, {{ 583*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}, 584*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_storage_buffer_storage_class, VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME}}})), 585*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_8BIT_STORAGE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_8bit_storage, {{ 586*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}, 587*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_storage_buffer_storage_class, VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME}}})), 588*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_BIND_MEMORY_2_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_bind_memory_2, {})), 589*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_create_renderpass_2, {{ 590*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_multiview, VK_KHR_MULTIVIEW_EXTENSION_NAME}, 591*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_maintenance2, VK_KHR_MAINTENANCE2_EXTENSION_NAME}}})), 592*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_dedicated_allocation, {{ 593*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_memory_requirements_2, VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME}}})), 594*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_depth_stencil_resolve, {{ 595*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_create_renderpass_2, VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME}}})), 596*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_descriptor_update_template, {})), 597*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_DEVICE_GROUP_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_device_group, {{ 598*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_device_group_creation, VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME}}})), 599*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_display_swapchain, {{ 600*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_swapchain, VK_KHR_SWAPCHAIN_EXTENSION_NAME}, 601*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_display, VK_KHR_DISPLAY_EXTENSION_NAME}}})), 602*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_draw_indirect_count, {})), 603*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_driver_properties, {{ 604*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 605*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_external_fence, {{ 606*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_external_fence_capabilities, VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME}}})), 607*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_external_fence_fd, {{ 608*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_external_fence, VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME}}})), 609*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR 610*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_external_fence_win32, {{ 611*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_external_fence, VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME}}})), 612*b7893ccfSSadaf Ebrahimi #endif 613*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_external_memory, {{ 614*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_external_memory_capabilities, VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME}}})), 615*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_external_memory_fd, {{ 616*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_external_memory, VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME}}})), 617*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR 618*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_external_memory_win32, {{ 619*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_external_memory, VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME}}})), 620*b7893ccfSSadaf Ebrahimi #endif 621*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_external_semaphore, {{ 622*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_external_semaphore_capabilities, VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME}}})), 623*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_external_semaphore_fd, {{ 624*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_external_semaphore, VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME}}})), 625*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR 626*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_external_semaphore_win32, {{ 627*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_external_semaphore, VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME}}})), 628*b7893ccfSSadaf Ebrahimi #endif 629*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_get_memory_requirements_2, {})), 630*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_image_format_list, {})), 631*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_imageless_framebuffer, {{ 632*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_maintenance2, VK_KHR_MAINTENANCE2_EXTENSION_NAME}, 633*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_image_format_list, VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME}}})), 634*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_incremental_present, {{ 635*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_swapchain, VK_KHR_SWAPCHAIN_EXTENSION_NAME}}})), 636*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_MAINTENANCE1_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_maintenance1, {})), 637*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_MAINTENANCE2_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_maintenance2, {})), 638*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_MAINTENANCE3_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_maintenance3, {{ 639*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 640*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_MULTIVIEW_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_multiview, {{ 641*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 642*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_pipeline_executable_properties, {})), 643*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_push_descriptor, {{ 644*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 645*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_relaxed_block_layout, {})), 646*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_sampler_mirror_clamp_to_edge, {})), 647*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_sampler_ycbcr_conversion, {{ 648*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_maintenance1, VK_KHR_MAINTENANCE1_EXTENSION_NAME}, 649*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_bind_memory_2, VK_KHR_BIND_MEMORY_2_EXTENSION_NAME}, 650*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_memory_requirements_2, VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME}, 651*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 652*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_shader_atomic_int64, {{ 653*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 654*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_shader_draw_parameters, {})), 655*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_shader_float16_int8, {{ 656*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 657*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_shader_float_controls, {{ 658*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 659*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_shared_presentable_image, {{ 660*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_swapchain, VK_KHR_SWAPCHAIN_EXTENSION_NAME}, 661*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}, 662*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_surface_capabilities_2, VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME}}})), 663*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_storage_buffer_storage_class, {})), 664*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_SWAPCHAIN_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_swapchain, {{ 665*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_surface, VK_KHR_SURFACE_EXTENSION_NAME}}})), 666*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_swapchain_mutable_format, {{ 667*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_swapchain, VK_KHR_SWAPCHAIN_EXTENSION_NAME}, 668*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_maintenance2, VK_KHR_MAINTENANCE2_EXTENSION_NAME}, 669*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_image_format_list, VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME}}})), 670*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_uniform_buffer_standard_layout, {{ 671*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 672*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_variable_pointers, {{ 673*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}, 674*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_storage_buffer_storage_class, VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME}}})), 675*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_vulkan_memory_model, {})), 676*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR 677*b7893ccfSSadaf Ebrahimi std::make_pair(VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_win32_keyed_mutex, {{ 678*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_external_memory_win32, VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME}}})), 679*b7893ccfSSadaf Ebrahimi #endif 680*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nvx_device_generated_commands, {})), 681*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nvx_image_view_handle, {})), 682*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nvx_multiview_per_view_attributes, {{ 683*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_multiview, VK_KHR_MULTIVIEW_EXTENSION_NAME}}})), 684*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_clip_space_w_scaling, {})), 685*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_compute_shader_derivatives, {{ 686*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 687*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_cooperative_matrix, {{ 688*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 689*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_corner_sampled_image, {{ 690*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 691*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_coverage_reduction_mode, {{ 692*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_nv_framebuffer_mixed_samples, VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME}}})), 693*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_dedicated_allocation, {})), 694*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_dedicated_allocation_image_aliasing, {{ 695*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_dedicated_allocation, VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME}}})), 696*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_device_diagnostic_checkpoints, {{ 697*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 698*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_external_memory, {{ 699*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_nv_external_memory_capabilities, VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME}}})), 700*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR 701*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_external_memory_win32, {{ 702*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_nv_external_memory, VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME}}})), 703*b7893ccfSSadaf Ebrahimi #endif 704*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_FILL_RECTANGLE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_fill_rectangle, {})), 705*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_fragment_coverage_to_color, {})), 706*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_fragment_shader_barycentric, {{ 707*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 708*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_framebuffer_mixed_samples, {})), 709*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_geometry_shader_passthrough, {})), 710*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_GLSL_SHADER_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_glsl_shader, {})), 711*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_MESH_SHADER_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_mesh_shader, {{ 712*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 713*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_RAY_TRACING_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_ray_tracing, {{ 714*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}, 715*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_memory_requirements_2, VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME}}})), 716*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_representative_fragment_test, {})), 717*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_sample_mask_override_coverage, {})), 718*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_scissor_exclusive, {{ 719*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 720*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_shader_image_footprint, {{ 721*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 722*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_shader_sm_builtins, {})), 723*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_shader_subgroup_partitioned, {})), 724*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_shading_rate_image, {{ 725*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), 726*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_viewport_array2, {})), 727*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_viewport_swizzle, {})), 728*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR 729*b7893ccfSSadaf Ebrahimi std::make_pair(VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_win32_keyed_mutex, {{ 730*b7893ccfSSadaf Ebrahimi {&DeviceExtensions::vk_nv_external_memory_win32, VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME}}})), 731*b7893ccfSSadaf Ebrahimi #endif 732*b7893ccfSSadaf Ebrahimi }; 733*b7893ccfSSadaf Ebrahimi 734*b7893ccfSSadaf Ebrahimi static const DeviceInfo empty_info {nullptr, DeviceReqVec()}; 735*b7893ccfSSadaf Ebrahimi DeviceInfoMap::const_iterator info = info_map.find(name); 736*b7893ccfSSadaf Ebrahimi if ( info != info_map.cend()) { 737*b7893ccfSSadaf Ebrahimi return info->second; 738*b7893ccfSSadaf Ebrahimi } 739*b7893ccfSSadaf Ebrahimi return empty_info; 740*b7893ccfSSadaf Ebrahimi } 741*b7893ccfSSadaf Ebrahimi 742*b7893ccfSSadaf Ebrahimi DeviceExtensions() = default; DeviceExtensionsDeviceExtensions743*b7893ccfSSadaf Ebrahimi DeviceExtensions(const InstanceExtensions& instance_ext) : InstanceExtensions(instance_ext) {} 744*b7893ccfSSadaf Ebrahimi InitFromDeviceCreateInfoDeviceExtensions745*b7893ccfSSadaf Ebrahimi uint32_t InitFromDeviceCreateInfo(const InstanceExtensions *instance_extensions, uint32_t requested_api_version, 746*b7893ccfSSadaf Ebrahimi const VkDeviceCreateInfo *pCreateInfo) { 747*b7893ccfSSadaf Ebrahimi // Initialize: this to defaults, base class fields to input. 748*b7893ccfSSadaf Ebrahimi assert(instance_extensions); 749*b7893ccfSSadaf Ebrahimi *this = DeviceExtensions(*instance_extensions); 750*b7893ccfSSadaf Ebrahimi 751*b7893ccfSSadaf Ebrahimi 752*b7893ccfSSadaf Ebrahimi static const std::vector<const char *> V_1_1_promoted_device_apis = { 753*b7893ccfSSadaf Ebrahimi VK_KHR_16BIT_STORAGE_EXTENSION_NAME, 754*b7893ccfSSadaf Ebrahimi VK_KHR_BIND_MEMORY_2_EXTENSION_NAME, 755*b7893ccfSSadaf Ebrahimi VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME, 756*b7893ccfSSadaf Ebrahimi VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME, 757*b7893ccfSSadaf Ebrahimi VK_KHR_DEVICE_GROUP_EXTENSION_NAME, 758*b7893ccfSSadaf Ebrahimi VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME, 759*b7893ccfSSadaf Ebrahimi VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME, 760*b7893ccfSSadaf Ebrahimi VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME, 761*b7893ccfSSadaf Ebrahimi VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME, 762*b7893ccfSSadaf Ebrahimi VK_KHR_MAINTENANCE1_EXTENSION_NAME, 763*b7893ccfSSadaf Ebrahimi VK_KHR_MAINTENANCE2_EXTENSION_NAME, 764*b7893ccfSSadaf Ebrahimi VK_KHR_MAINTENANCE3_EXTENSION_NAME, 765*b7893ccfSSadaf Ebrahimi VK_KHR_MULTIVIEW_EXTENSION_NAME, 766*b7893ccfSSadaf Ebrahimi VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME, 767*b7893ccfSSadaf Ebrahimi VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME, 768*b7893ccfSSadaf Ebrahimi VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, 769*b7893ccfSSadaf Ebrahimi VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME, 770*b7893ccfSSadaf Ebrahimi VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME, 771*b7893ccfSSadaf Ebrahimi "VK_VERSION_1_1", 772*b7893ccfSSadaf Ebrahimi }; 773*b7893ccfSSadaf Ebrahimi 774*b7893ccfSSadaf Ebrahimi // Initialize struct data, robust to invalid pCreateInfo 775*b7893ccfSSadaf Ebrahimi if (pCreateInfo->ppEnabledExtensionNames) { 776*b7893ccfSSadaf Ebrahimi for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) { 777*b7893ccfSSadaf Ebrahimi if (!pCreateInfo->ppEnabledExtensionNames[i]) continue; 778*b7893ccfSSadaf Ebrahimi auto info = get_info(pCreateInfo->ppEnabledExtensionNames[i]); 779*b7893ccfSSadaf Ebrahimi if(info.state) this->*(info.state) = true; 780*b7893ccfSSadaf Ebrahimi } 781*b7893ccfSSadaf Ebrahimi } 782*b7893ccfSSadaf Ebrahimi uint32_t api_version = NormalizeApiVersion(requested_api_version); 783*b7893ccfSSadaf Ebrahimi if (api_version >= VK_API_VERSION_1_1) { 784*b7893ccfSSadaf Ebrahimi for (auto promoted_ext : V_1_1_promoted_device_apis) { 785*b7893ccfSSadaf Ebrahimi auto info = get_info(promoted_ext); 786*b7893ccfSSadaf Ebrahimi assert(info.state); 787*b7893ccfSSadaf Ebrahimi if (info.state) this->*(info.state) = true; 788*b7893ccfSSadaf Ebrahimi } 789*b7893ccfSSadaf Ebrahimi } 790*b7893ccfSSadaf Ebrahimi return api_version; 791*b7893ccfSSadaf Ebrahimi } 792*b7893ccfSSadaf Ebrahimi }; 793*b7893ccfSSadaf Ebrahimi 794*b7893ccfSSadaf Ebrahimi static const std::set<std::string> kDeviceExtensionNames = { 795*b7893ccfSSadaf Ebrahimi VK_AMD_BUFFER_MARKER_EXTENSION_NAME, 796*b7893ccfSSadaf Ebrahimi VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME, 797*b7893ccfSSadaf Ebrahimi VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME, 798*b7893ccfSSadaf Ebrahimi VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME, 799*b7893ccfSSadaf Ebrahimi VK_AMD_GCN_SHADER_EXTENSION_NAME, 800*b7893ccfSSadaf Ebrahimi VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME, 801*b7893ccfSSadaf Ebrahimi VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME, 802*b7893ccfSSadaf Ebrahimi VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME, 803*b7893ccfSSadaf Ebrahimi VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME, 804*b7893ccfSSadaf Ebrahimi VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME, 805*b7893ccfSSadaf Ebrahimi VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME, 806*b7893ccfSSadaf Ebrahimi VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME, 807*b7893ccfSSadaf Ebrahimi VK_AMD_SHADER_BALLOT_EXTENSION_NAME, 808*b7893ccfSSadaf Ebrahimi VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME, 809*b7893ccfSSadaf Ebrahimi VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME, 810*b7893ccfSSadaf Ebrahimi VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME, 811*b7893ccfSSadaf Ebrahimi VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME, 812*b7893ccfSSadaf Ebrahimi VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME, 813*b7893ccfSSadaf Ebrahimi VK_AMD_SHADER_INFO_EXTENSION_NAME, 814*b7893ccfSSadaf Ebrahimi VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME, 815*b7893ccfSSadaf Ebrahimi VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME, 816*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_ANDROID_KHR 817*b7893ccfSSadaf Ebrahimi VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME, 818*b7893ccfSSadaf Ebrahimi #endif 819*b7893ccfSSadaf Ebrahimi VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME, 820*b7893ccfSSadaf Ebrahimi VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME, 821*b7893ccfSSadaf Ebrahimi VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, 822*b7893ccfSSadaf Ebrahimi VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME, 823*b7893ccfSSadaf Ebrahimi VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME, 824*b7893ccfSSadaf Ebrahimi VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME, 825*b7893ccfSSadaf Ebrahimi VK_EXT_DEBUG_MARKER_EXTENSION_NAME, 826*b7893ccfSSadaf Ebrahimi VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, 827*b7893ccfSSadaf Ebrahimi VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME, 828*b7893ccfSSadaf Ebrahimi VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME, 829*b7893ccfSSadaf Ebrahimi VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME, 830*b7893ccfSSadaf Ebrahimi VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME, 831*b7893ccfSSadaf Ebrahimi VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME, 832*b7893ccfSSadaf Ebrahimi VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME, 833*b7893ccfSSadaf Ebrahimi VK_EXT_FILTER_CUBIC_EXTENSION_NAME, 834*b7893ccfSSadaf Ebrahimi VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME, 835*b7893ccfSSadaf Ebrahimi VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME, 836*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR 837*b7893ccfSSadaf Ebrahimi VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME, 838*b7893ccfSSadaf Ebrahimi #endif 839*b7893ccfSSadaf Ebrahimi VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME, 840*b7893ccfSSadaf Ebrahimi VK_EXT_HDR_METADATA_EXTENSION_NAME, 841*b7893ccfSSadaf Ebrahimi VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME, 842*b7893ccfSSadaf Ebrahimi VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME, 843*b7893ccfSSadaf Ebrahimi VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME, 844*b7893ccfSSadaf Ebrahimi VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME, 845*b7893ccfSSadaf Ebrahimi VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, 846*b7893ccfSSadaf Ebrahimi VK_EXT_MEMORY_BUDGET_EXTENSION_NAME, 847*b7893ccfSSadaf Ebrahimi VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME, 848*b7893ccfSSadaf Ebrahimi VK_EXT_PCI_BUS_INFO_EXTENSION_NAME, 849*b7893ccfSSadaf Ebrahimi VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME, 850*b7893ccfSSadaf Ebrahimi VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME, 851*b7893ccfSSadaf Ebrahimi VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME, 852*b7893ccfSSadaf Ebrahimi VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME, 853*b7893ccfSSadaf Ebrahimi VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME, 854*b7893ccfSSadaf Ebrahimi VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME, 855*b7893ccfSSadaf Ebrahimi VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME, 856*b7893ccfSSadaf Ebrahimi VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME, 857*b7893ccfSSadaf Ebrahimi VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME, 858*b7893ccfSSadaf Ebrahimi VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME, 859*b7893ccfSSadaf Ebrahimi VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME, 860*b7893ccfSSadaf Ebrahimi VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME, 861*b7893ccfSSadaf Ebrahimi VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME, 862*b7893ccfSSadaf Ebrahimi VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, 863*b7893ccfSSadaf Ebrahimi VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME, 864*b7893ccfSSadaf Ebrahimi VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, 865*b7893ccfSSadaf Ebrahimi VK_EXT_VALIDATION_CACHE_EXTENSION_NAME, 866*b7893ccfSSadaf Ebrahimi VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, 867*b7893ccfSSadaf Ebrahimi VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME, 868*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_GGP 869*b7893ccfSSadaf Ebrahimi VK_GGP_FRAME_TOKEN_EXTENSION_NAME, 870*b7893ccfSSadaf Ebrahimi #endif 871*b7893ccfSSadaf Ebrahimi VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME, 872*b7893ccfSSadaf Ebrahimi VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME, 873*b7893ccfSSadaf Ebrahimi VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME, 874*b7893ccfSSadaf Ebrahimi VK_IMG_FILTER_CUBIC_EXTENSION_NAME, 875*b7893ccfSSadaf Ebrahimi VK_IMG_FORMAT_PVRTC_EXTENSION_NAME, 876*b7893ccfSSadaf Ebrahimi VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME, 877*b7893ccfSSadaf Ebrahimi VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME, 878*b7893ccfSSadaf Ebrahimi VK_KHR_16BIT_STORAGE_EXTENSION_NAME, 879*b7893ccfSSadaf Ebrahimi VK_KHR_8BIT_STORAGE_EXTENSION_NAME, 880*b7893ccfSSadaf Ebrahimi VK_KHR_BIND_MEMORY_2_EXTENSION_NAME, 881*b7893ccfSSadaf Ebrahimi VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME, 882*b7893ccfSSadaf Ebrahimi VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME, 883*b7893ccfSSadaf Ebrahimi VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, 884*b7893ccfSSadaf Ebrahimi VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME, 885*b7893ccfSSadaf Ebrahimi VK_KHR_DEVICE_GROUP_EXTENSION_NAME, 886*b7893ccfSSadaf Ebrahimi VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME, 887*b7893ccfSSadaf Ebrahimi VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME, 888*b7893ccfSSadaf Ebrahimi VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME, 889*b7893ccfSSadaf Ebrahimi VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME, 890*b7893ccfSSadaf Ebrahimi VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME, 891*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR 892*b7893ccfSSadaf Ebrahimi VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME, 893*b7893ccfSSadaf Ebrahimi #endif 894*b7893ccfSSadaf Ebrahimi VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME, 895*b7893ccfSSadaf Ebrahimi VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME, 896*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR 897*b7893ccfSSadaf Ebrahimi VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME, 898*b7893ccfSSadaf Ebrahimi #endif 899*b7893ccfSSadaf Ebrahimi VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME, 900*b7893ccfSSadaf Ebrahimi VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME, 901*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR 902*b7893ccfSSadaf Ebrahimi VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME, 903*b7893ccfSSadaf Ebrahimi #endif 904*b7893ccfSSadaf Ebrahimi VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME, 905*b7893ccfSSadaf Ebrahimi VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME, 906*b7893ccfSSadaf Ebrahimi VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME, 907*b7893ccfSSadaf Ebrahimi VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME, 908*b7893ccfSSadaf Ebrahimi VK_KHR_MAINTENANCE1_EXTENSION_NAME, 909*b7893ccfSSadaf Ebrahimi VK_KHR_MAINTENANCE2_EXTENSION_NAME, 910*b7893ccfSSadaf Ebrahimi VK_KHR_MAINTENANCE3_EXTENSION_NAME, 911*b7893ccfSSadaf Ebrahimi VK_KHR_MULTIVIEW_EXTENSION_NAME, 912*b7893ccfSSadaf Ebrahimi VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME, 913*b7893ccfSSadaf Ebrahimi VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME, 914*b7893ccfSSadaf Ebrahimi VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME, 915*b7893ccfSSadaf Ebrahimi VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME, 916*b7893ccfSSadaf Ebrahimi VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME, 917*b7893ccfSSadaf Ebrahimi VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME, 918*b7893ccfSSadaf Ebrahimi VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, 919*b7893ccfSSadaf Ebrahimi VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME, 920*b7893ccfSSadaf Ebrahimi VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME, 921*b7893ccfSSadaf Ebrahimi VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME, 922*b7893ccfSSadaf Ebrahimi VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME, 923*b7893ccfSSadaf Ebrahimi VK_KHR_SWAPCHAIN_EXTENSION_NAME, 924*b7893ccfSSadaf Ebrahimi VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME, 925*b7893ccfSSadaf Ebrahimi VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME, 926*b7893ccfSSadaf Ebrahimi VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME, 927*b7893ccfSSadaf Ebrahimi VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME, 928*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR 929*b7893ccfSSadaf Ebrahimi VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME, 930*b7893ccfSSadaf Ebrahimi #endif 931*b7893ccfSSadaf Ebrahimi VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME, 932*b7893ccfSSadaf Ebrahimi VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME, 933*b7893ccfSSadaf Ebrahimi VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME, 934*b7893ccfSSadaf Ebrahimi VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME, 935*b7893ccfSSadaf Ebrahimi VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME, 936*b7893ccfSSadaf Ebrahimi VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME, 937*b7893ccfSSadaf Ebrahimi VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME, 938*b7893ccfSSadaf Ebrahimi VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME, 939*b7893ccfSSadaf Ebrahimi VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME, 940*b7893ccfSSadaf Ebrahimi VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME, 941*b7893ccfSSadaf Ebrahimi VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME, 942*b7893ccfSSadaf Ebrahimi VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME, 943*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR 944*b7893ccfSSadaf Ebrahimi VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME, 945*b7893ccfSSadaf Ebrahimi #endif 946*b7893ccfSSadaf Ebrahimi VK_NV_FILL_RECTANGLE_EXTENSION_NAME, 947*b7893ccfSSadaf Ebrahimi VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME, 948*b7893ccfSSadaf Ebrahimi VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME, 949*b7893ccfSSadaf Ebrahimi VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME, 950*b7893ccfSSadaf Ebrahimi VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME, 951*b7893ccfSSadaf Ebrahimi VK_NV_GLSL_SHADER_EXTENSION_NAME, 952*b7893ccfSSadaf Ebrahimi VK_NV_MESH_SHADER_EXTENSION_NAME, 953*b7893ccfSSadaf Ebrahimi VK_NV_RAY_TRACING_EXTENSION_NAME, 954*b7893ccfSSadaf Ebrahimi VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME, 955*b7893ccfSSadaf Ebrahimi VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME, 956*b7893ccfSSadaf Ebrahimi VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME, 957*b7893ccfSSadaf Ebrahimi VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME, 958*b7893ccfSSadaf Ebrahimi VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME, 959*b7893ccfSSadaf Ebrahimi VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME, 960*b7893ccfSSadaf Ebrahimi VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, 961*b7893ccfSSadaf Ebrahimi VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME, 962*b7893ccfSSadaf Ebrahimi VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME, 963*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR 964*b7893ccfSSadaf Ebrahimi VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME, 965*b7893ccfSSadaf Ebrahimi #endif 966*b7893ccfSSadaf Ebrahimi }; 967*b7893ccfSSadaf Ebrahimi 968*b7893ccfSSadaf Ebrahimi 969*b7893ccfSSadaf Ebrahimi #endif // VK_EXTENSION_HELPER_H_ 970