15db71995Sopenharmony_ci/* 25db71995Sopenharmony_ci * Copyright (c) 2021-2022 The Khronos Group Inc. 35db71995Sopenharmony_ci * Copyright (c) 2021-2022 Valve Corporation 45db71995Sopenharmony_ci * Copyright (c) 2021-2022 LunarG, Inc. 55db71995Sopenharmony_ci * 65db71995Sopenharmony_ci * Permission is hereby granted, free of charge, to any person obtaining a copy 75db71995Sopenharmony_ci * of this software and/or associated documentation files (the "Materials"), to 85db71995Sopenharmony_ci * deal in the Materials without restriction, including without limitation the 95db71995Sopenharmony_ci * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 105db71995Sopenharmony_ci * sell copies of the Materials, and to permit persons to whom the Materials are 115db71995Sopenharmony_ci * furnished to do so, subject to the following conditions: 125db71995Sopenharmony_ci * 135db71995Sopenharmony_ci * The above copyright notice(s) and this permission notice shall be included in 145db71995Sopenharmony_ci * all copies or substantial portions of the Materials. 155db71995Sopenharmony_ci * 165db71995Sopenharmony_ci * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 175db71995Sopenharmony_ci * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 185db71995Sopenharmony_ci * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 195db71995Sopenharmony_ci * 205db71995Sopenharmony_ci * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 215db71995Sopenharmony_ci * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 225db71995Sopenharmony_ci * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE 235db71995Sopenharmony_ci * USE OR OTHER DEALINGS IN THE MATERIALS. 245db71995Sopenharmony_ci * 255db71995Sopenharmony_ci * Author(s): Charles Giessen <charles@lunarg.com> 265db71995Sopenharmony_ci * Mark Young <marky@lunarg.com> 275db71995Sopenharmony_ci */ 285db71995Sopenharmony_ci 295db71995Sopenharmony_ci#include "test_environment.h" 305db71995Sopenharmony_ci 315db71995Sopenharmony_ci// ---- Invalid Instance tests 325db71995Sopenharmony_ci 335db71995Sopenharmony_cistruct BadData { 345db71995Sopenharmony_ci uint64_t bad_array[3] = {0x123456789AB, 0x23456789AB1, 0x9876543210AB}; 355db71995Sopenharmony_ci}; 365db71995Sopenharmony_citemplate <typename T> 375db71995Sopenharmony_ciT get_bad_handle() { 385db71995Sopenharmony_ci static BadData my_bad_data; 395db71995Sopenharmony_ci return reinterpret_cast<T>(static_cast<void*>(&my_bad_data)); 405db71995Sopenharmony_ci} 415db71995Sopenharmony_ci 425db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadInstEnumPhysDevices) { 435db71995Sopenharmony_ci FrameworkEnvironment env{}; 445db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).add_physical_device("physical_device_0"); 455db71995Sopenharmony_ci 465db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 475db71995Sopenharmony_ci instance.CheckCreate(); 485db71995Sopenharmony_ci 495db71995Sopenharmony_ci auto bad_instance = get_bad_handle<VkInstance>(); 505db71995Sopenharmony_ci uint32_t returned_physical_count = 0; 515db71995Sopenharmony_ci 525db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkEnumeratePhysicalDevices(bad_instance, &returned_physical_count, nullptr), 535db71995Sopenharmony_ci "vkEnumeratePhysicalDevices: Invalid instance \\[VUID-vkEnumeratePhysicalDevices-instance-parameter\\]"); 545db71995Sopenharmony_ci} 555db71995Sopenharmony_ci 565db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadInstGetInstProcAddr) { 575db71995Sopenharmony_ci FrameworkEnvironment env{}; 585db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).add_physical_device("physical_device_0"); 595db71995Sopenharmony_ci 605db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 615db71995Sopenharmony_ci instance.CheckCreate(); 625db71995Sopenharmony_ci 635db71995Sopenharmony_ci auto bad_instance = get_bad_handle<VkInstance>(); 645db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetInstanceProcAddr(bad_instance, "vkGetBufferDeviceAddress"), 655db71995Sopenharmony_ci "vkGetInstanceProcAddr: Invalid instance \\[VUID-vkGetInstanceProcAddr-instance-parameter\\]"); 665db71995Sopenharmony_ci} 675db71995Sopenharmony_ci 685db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadInstDestroyInstance) { 695db71995Sopenharmony_ci FrameworkEnvironment env{}; 705db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).add_physical_device("physical_device_0"); 715db71995Sopenharmony_ci 725db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 735db71995Sopenharmony_ci instance.CheckCreate(); 745db71995Sopenharmony_ci 755db71995Sopenharmony_ci auto bad_instance = get_bad_handle<VkInstance>(); 765db71995Sopenharmony_ci 775db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkDestroyInstance(bad_instance, nullptr), 785db71995Sopenharmony_ci "vkDestroyInstance: Invalid instance \\[VUID-vkDestroyInstance-instance-parameter\\]"); 795db71995Sopenharmony_ci} 805db71995Sopenharmony_ci 815db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadInstDestroySurface) { 825db71995Sopenharmony_ci FrameworkEnvironment env{}; 835db71995Sopenharmony_ci Extension first_ext{"VK_KHR_surface"}; 845db71995Sopenharmony_ci Extension second_ext{"VK_EXT_headless_surface"}; 855db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 865db71995Sopenharmony_ci .add_instance_extensions({first_ext, second_ext}) 875db71995Sopenharmony_ci .add_physical_device("physical_device_0"); 885db71995Sopenharmony_ci 895db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 905db71995Sopenharmony_ci instance.create_info.add_extension(first_ext.extensionName.c_str()); 915db71995Sopenharmony_ci instance.CheckCreate(); 925db71995Sopenharmony_ci 935db71995Sopenharmony_ci auto bad_instance = get_bad_handle<VkInstance>(); 945db71995Sopenharmony_ci 955db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkDestroySurfaceKHR(bad_instance, VK_NULL_HANDLE, nullptr), 965db71995Sopenharmony_ci "vkDestroySurfaceKHR: Invalid instance \\[VUID-vkDestroySurfaceKHR-instance-parameter\\]"); 975db71995Sopenharmony_ci} 985db71995Sopenharmony_ci 995db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadInstCreateHeadlessSurf) { 1005db71995Sopenharmony_ci FrameworkEnvironment env{}; 1015db71995Sopenharmony_ci Extension first_ext{"VK_KHR_surface"}; 1025db71995Sopenharmony_ci Extension second_ext{"VK_EXT_headless_surface"}; 1035db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 1045db71995Sopenharmony_ci .add_instance_extensions({first_ext, second_ext}) 1055db71995Sopenharmony_ci .add_physical_device("physical_device_0"); 1065db71995Sopenharmony_ci 1075db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 1085db71995Sopenharmony_ci instance.create_info.add_extensions({first_ext.extensionName.c_str(), second_ext.extensionName.c_str()}); 1095db71995Sopenharmony_ci instance.CheckCreate(); 1105db71995Sopenharmony_ci 1115db71995Sopenharmony_ci auto bad_instance = get_bad_handle<VkInstance>(); 1125db71995Sopenharmony_ci 1135db71995Sopenharmony_ci VkHeadlessSurfaceCreateInfoEXT surf_create_info = {}; 1145db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT; 1155db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 1165db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 1175db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkCreateHeadlessSurfaceEXT(bad_instance, &surf_create_info, nullptr, &created_surface), 1185db71995Sopenharmony_ci "vkCreateHeadlessSurfaceEXT: Invalid instance \\[VUID-vkCreateHeadlessSurfaceEXT-instance-parameter\\]"); 1195db71995Sopenharmony_ci} 1205db71995Sopenharmony_ci 1215db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadInstCreateDisplayPlaneSurf) { 1225db71995Sopenharmony_ci FrameworkEnvironment env{}; 1235db71995Sopenharmony_ci Extension first_ext{"VK_KHR_surface"}; 1245db71995Sopenharmony_ci Extension second_ext{"VK_KHR_display"}; 1255db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 1265db71995Sopenharmony_ci .add_instance_extensions({first_ext, second_ext}) 1275db71995Sopenharmony_ci .add_physical_device("physical_device_0"); 1285db71995Sopenharmony_ci 1295db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 1305db71995Sopenharmony_ci instance.create_info.add_extensions({first_ext.extensionName.c_str(), second_ext.extensionName.c_str()}); 1315db71995Sopenharmony_ci instance.CheckCreate(); 1325db71995Sopenharmony_ci 1335db71995Sopenharmony_ci auto bad_instance = get_bad_handle<VkInstance>(); 1345db71995Sopenharmony_ci 1355db71995Sopenharmony_ci VkDisplaySurfaceCreateInfoKHR surf_create_info = {}; 1365db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR; 1375db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 1385db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 1395db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkCreateDisplayPlaneSurfaceKHR(bad_instance, &surf_create_info, nullptr, &created_surface), 1405db71995Sopenharmony_ci "vkCreateDisplayPlaneSurfaceKHR: Invalid instance \\[VUID-vkCreateDisplayPlaneSurfaceKHR-instance-parameter\\]"); 1415db71995Sopenharmony_ci} 1425db71995Sopenharmony_ci 1435db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_ANDROID_KHR) 1445db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadInstCreateAndroidSurf) { 1455db71995Sopenharmony_ci FrameworkEnvironment env{}; 1465db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 1475db71995Sopenharmony_ci 1485db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 1495db71995Sopenharmony_ci instance.create_info.setup_WSI(); 1505db71995Sopenharmony_ci instance.CheckCreate(); 1515db71995Sopenharmony_ci 1525db71995Sopenharmony_ci auto bad_instance = get_bad_handle<VkInstance>(); 1535db71995Sopenharmony_ci 1545db71995Sopenharmony_ci VkAndroidSurfaceCreateInfoKHR surf_create_info = {}; 1555db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR; 1565db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 1575db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 1585db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkCreateAndroidSurfaceKHR(bad_instance, &surf_create_info, nullptr, &created_surface), 1595db71995Sopenharmony_ci "vkCreateAndroidSurfaceKHR: Invalid instance \\[VUID-vkCreateAndroidSurfaceKHR-instance-parameter\\]"); 1605db71995Sopenharmony_ci} 1615db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_ANDROID_KHR 1625db71995Sopenharmony_ci 1635db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_DIRECTFB_EXT) 1645db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadInstCreateDirectFBSurf) { 1655db71995Sopenharmony_ci FrameworkEnvironment env{}; 1665db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 1675db71995Sopenharmony_ci 1685db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 1695db71995Sopenharmony_ci instance.create_info.setup_WSI(); 1705db71995Sopenharmony_ci instance.CheckCreate(); 1715db71995Sopenharmony_ci 1725db71995Sopenharmony_ci auto bad_instance = get_bad_handle<VkInstance>(); 1735db71995Sopenharmony_ci 1745db71995Sopenharmony_ci VkDirectFBSurfaceCreateInfoEXT surf_create_info = {}; 1755db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT; 1765db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 1775db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 1785db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkCreateDirectFBSurfaceEXT(bad_instance, &surf_create_info, nullptr, &created_surface), 1795db71995Sopenharmony_ci "vkCreateDirectFBSurfaceEXT: Invalid instance \\[VUID-vkCreateDirectFBSurfaceEXT-instance-parameter\\]"); 1805db71995Sopenharmony_ci} 1815db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_DIRECTFB_EXT 1825db71995Sopenharmony_ci 1835db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_FUCHSIA) 1845db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadInstCreateFuchsiaSurf) { 1855db71995Sopenharmony_ci FrameworkEnvironment env{}; 1865db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 1875db71995Sopenharmony_ci 1885db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 1895db71995Sopenharmony_ci instance.create_info.setup_WSI(); 1905db71995Sopenharmony_ci instance.CheckCreate(); 1915db71995Sopenharmony_ci 1925db71995Sopenharmony_ci auto bad_instance = get_bad_handle<VkInstance>(); 1935db71995Sopenharmony_ci 1945db71995Sopenharmony_ci VkImagePipeSurfaceCreateInfoFUCHSIA surf_create_info = {}; 1955db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA; 1965db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 1975db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 1985db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkCreateImagePipeSurfaceFUCHSIA(bad_instance, &surf_create_info, nullptr, &created_surface), 1995db71995Sopenharmony_ci "vkCreateImagePipeSurfaceFUCHSIA: Invalid instance \\[VUID-vkCreateImagePipeSurfaceFUCHSIA-instance-parameter\\]"); 2005db71995Sopenharmony_ci} 2015db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_FUCHSIA 2025db71995Sopenharmony_ci 2035db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_GGP) 2045db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadInstCreateGGPSurf) { 2055db71995Sopenharmony_ci FrameworkEnvironment env{}; 2065db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 2075db71995Sopenharmony_ci 2085db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 2095db71995Sopenharmony_ci instance.create_info.setup_WSI(); 2105db71995Sopenharmony_ci instance.CheckCreate(); 2115db71995Sopenharmony_ci 2125db71995Sopenharmony_ci auto bad_instance = get_bad_handle<VkInstance>(); 2135db71995Sopenharmony_ci 2145db71995Sopenharmony_ci VkStreamDescriptorSurfaceCreateInfoGGP surf_create_info = {}; 2155db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP; 2165db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 2175db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 2185db71995Sopenharmony_ci ASSERT_DEATH( 2195db71995Sopenharmony_ci env.vulkan_functions.vkCreateStreamDescriptorSurfaceGGP(bad_instance, &surf_create_info, nullptr, &created_surface), 2205db71995Sopenharmony_ci "vkCreateStreamDescriptorSurfaceGGP: Invalid instance \\[VUID-vkCreateStreamDescriptorSurfaceGGP-instance-parameter\\]"); 2215db71995Sopenharmony_ci} 2225db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_GGP 2235db71995Sopenharmony_ci 2245db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_IOS_MVK) 2255db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadInstCreateIOSSurf) { 2265db71995Sopenharmony_ci FrameworkEnvironment env{}; 2275db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 2285db71995Sopenharmony_ci 2295db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 2305db71995Sopenharmony_ci instance.create_info.setup_WSI(); 2315db71995Sopenharmony_ci instance.CheckCreate(); 2325db71995Sopenharmony_ci 2335db71995Sopenharmony_ci auto bad_instance = get_bad_handle<VkInstance>(); 2345db71995Sopenharmony_ci 2355db71995Sopenharmony_ci VkIOSSurfaceCreateInfoMVK surf_create_info = {}; 2365db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK; 2375db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 2385db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 2395db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkCreateIOSSurfaceMVK(bad_instance, &surf_create_info, nullptr, &created_surface), 2405db71995Sopenharmony_ci "vkCreateIOSSurfaceMVK: Invalid instance \\[VUID-vkCreateIOSSurfaceMVK-instance-parameter\\]"); 2415db71995Sopenharmony_ci} 2425db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_IOS_MVK 2435db71995Sopenharmony_ci 2445db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_MACOS_MVK) 2455db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadInstCreateMacOSSurf) { 2465db71995Sopenharmony_ci FrameworkEnvironment env{}; 2475db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 2485db71995Sopenharmony_ci 2495db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 2505db71995Sopenharmony_ci instance.create_info.setup_WSI(); 2515db71995Sopenharmony_ci instance.CheckCreate(); 2525db71995Sopenharmony_ci 2535db71995Sopenharmony_ci auto bad_instance = get_bad_handle<VkInstance>(); 2545db71995Sopenharmony_ci 2555db71995Sopenharmony_ci VkMacOSSurfaceCreateInfoMVK surf_create_info = {}; 2565db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK; 2575db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 2585db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 2595db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkCreateMacOSSurfaceMVK(bad_instance, &surf_create_info, nullptr, &created_surface), 2605db71995Sopenharmony_ci "vkCreateMacOSSurfaceMVK: Invalid instance \\[VUID-vkCreateMacOSSurfaceMVK-instance-parameter\\]"); 2615db71995Sopenharmony_ci} 2625db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_MACOS_MVK 2635db71995Sopenharmony_ci 2645db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_METAL_EXT) 2655db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadInstCreateMetalSurf) { 2665db71995Sopenharmony_ci FrameworkEnvironment env{}; 2675db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 2685db71995Sopenharmony_ci 2695db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 2705db71995Sopenharmony_ci instance.create_info.setup_WSI(); 2715db71995Sopenharmony_ci instance.CheckCreate(); 2725db71995Sopenharmony_ci 2735db71995Sopenharmony_ci auto bad_instance = get_bad_handle<VkInstance>(); 2745db71995Sopenharmony_ci 2755db71995Sopenharmony_ci VkMetalSurfaceCreateInfoEXT surf_create_info = {}; 2765db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT; 2775db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 2785db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 2795db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkCreateMetalSurfaceEXT(bad_instance, &surf_create_info, nullptr, &created_surface), 2805db71995Sopenharmony_ci "vkCreateMetalSurfaceEXT: Invalid instance \\[VUID-vkCreateMetalSurfaceEXT-instance-parameter\\]"); 2815db71995Sopenharmony_ci} 2825db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_METAL_EXT 2835db71995Sopenharmony_ci 2845db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_SCREEN_QNX) 2855db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadInstCreateQNXSurf) { 2865db71995Sopenharmony_ci FrameworkEnvironment env{}; 2875db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 2885db71995Sopenharmony_ci 2895db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 2905db71995Sopenharmony_ci instance.create_info.setup_WSI(); 2915db71995Sopenharmony_ci instance.CheckCreate(); 2925db71995Sopenharmony_ci 2935db71995Sopenharmony_ci auto bad_instance = get_bad_handle<VkInstance>(); 2945db71995Sopenharmony_ci 2955db71995Sopenharmony_ci VkScreenSurfaceCreateInfoQNX surf_create_info = {}; 2965db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX; 2975db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 2985db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 2995db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkCreateScreenSurfaceQNX(bad_instance, &surf_create_info, nullptr, &created_surface), 3005db71995Sopenharmony_ci "vkCreateScreenSurfaceQNX: Invalid instance \\[VUID-vkCreateScreenSurfaceQNX-instance-parameter\\]"); 3015db71995Sopenharmony_ci // TODO: Look for "invalid instance" in stderr log to make sure correct error is thrown 3025db71995Sopenharmony_ci} 3035db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_SCREEN_QNX 3045db71995Sopenharmony_ci 3055db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_VI_NN) 3065db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadInstCreateViNNSurf) { 3075db71995Sopenharmony_ci FrameworkEnvironment env{}; 3085db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 3095db71995Sopenharmony_ci 3105db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 3115db71995Sopenharmony_ci instance.create_info.setup_WSI(); 3125db71995Sopenharmony_ci instance.CheckCreate(); 3135db71995Sopenharmony_ci 3145db71995Sopenharmony_ci auto bad_instance = get_bad_handle<VkInstance>(); 3155db71995Sopenharmony_ci 3165db71995Sopenharmony_ci VkViSurfaceCreateInfoNN surf_create_info = {}; 3175db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN; 3185db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 3195db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 3205db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkCreateViSurfaceNN(bad_instance, &surf_create_info, nullptr, &created_surface), 3215db71995Sopenharmony_ci "vkCreateViSurfaceNN: Invalid instance \\[VUID-vkCreateViSurfaceNN-instance-parameter\\]"); 3225db71995Sopenharmony_ci // TODO: Look for "invalid instance" in stderr log to make sure correct error is thrown 3235db71995Sopenharmony_ci} 3245db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_VI_NN 3255db71995Sopenharmony_ci 3265db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_WAYLAND_KHR) 3275db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadInstCreateWaylandSurf) { 3285db71995Sopenharmony_ci FrameworkEnvironment env{}; 3295db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 3305db71995Sopenharmony_ci 3315db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 3325db71995Sopenharmony_ci instance.create_info.setup_WSI(); 3335db71995Sopenharmony_ci instance.CheckCreate(); 3345db71995Sopenharmony_ci 3355db71995Sopenharmony_ci auto bad_instance = get_bad_handle<VkInstance>(); 3365db71995Sopenharmony_ci 3375db71995Sopenharmony_ci VkWaylandSurfaceCreateInfoKHR surf_create_info = {}; 3385db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR; 3395db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 3405db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 3415db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkCreateWaylandSurfaceKHR(bad_instance, &surf_create_info, nullptr, &created_surface), 3425db71995Sopenharmony_ci "vkCreateWaylandSurfaceKHR: Invalid instance \\[VUID-vkCreateWaylandSurfaceKHR-instance-parameter\\]"); 3435db71995Sopenharmony_ci // TODO: Look for "invalid instance" in stderr log to make sure correct error is thrown 3445db71995Sopenharmony_ci} 3455db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_WAYLAND_KHR 3465db71995Sopenharmony_ci 3475db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_WIN32_KHR) 3485db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadInstCreateWin32Surf) { 3495db71995Sopenharmony_ci FrameworkEnvironment env{}; 3505db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 3515db71995Sopenharmony_ci 3525db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 3535db71995Sopenharmony_ci instance.create_info.setup_WSI(); 3545db71995Sopenharmony_ci instance.CheckCreate(); 3555db71995Sopenharmony_ci 3565db71995Sopenharmony_ci auto bad_instance = get_bad_handle<VkInstance>(); 3575db71995Sopenharmony_ci 3585db71995Sopenharmony_ci VkWin32SurfaceCreateInfoKHR surf_create_info = {}; 3595db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR; 3605db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 3615db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 3625db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkCreateWin32SurfaceKHR(bad_instance, &surf_create_info, nullptr, &created_surface), 3635db71995Sopenharmony_ci "vkCreateWin32SurfaceKHR: Invalid instance \\[VUID-vkCreateWin32SurfaceKHR-instance-parameter\\]"); 3645db71995Sopenharmony_ci // TODO: Look for "invalid instance" in stderr log to make sure correct error is thrown 3655db71995Sopenharmony_ci} 3665db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_WIN32_KHR 3675db71995Sopenharmony_ci 3685db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_XCB_KHR) 3695db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadInstCreateXCBSurf) { 3705db71995Sopenharmony_ci FrameworkEnvironment env{}; 3715db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 3725db71995Sopenharmony_ci 3735db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 3745db71995Sopenharmony_ci instance.create_info.setup_WSI(); 3755db71995Sopenharmony_ci instance.CheckCreate(); 3765db71995Sopenharmony_ci 3775db71995Sopenharmony_ci auto bad_instance = get_bad_handle<VkInstance>(); 3785db71995Sopenharmony_ci 3795db71995Sopenharmony_ci VkXcbSurfaceCreateInfoKHR surf_create_info = {}; 3805db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR; 3815db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 3825db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 3835db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkCreateXcbSurfaceKHR(bad_instance, &surf_create_info, nullptr, &created_surface), 3845db71995Sopenharmony_ci "vkCreateXcbSurfaceKHR: Invalid instance \\[VUID-vkCreateXcbSurfaceKHR-instance-parameter\\]"); 3855db71995Sopenharmony_ci // TODO: Look for "invalid instance" in stderr log to make sure correct error is thrown 3865db71995Sopenharmony_ci} 3875db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_XCB_KHR 3885db71995Sopenharmony_ci 3895db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_XLIB_KHR) 3905db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadInstCreateXlibSurf) { 3915db71995Sopenharmony_ci FrameworkEnvironment env{}; 3925db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 3935db71995Sopenharmony_ci 3945db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 3955db71995Sopenharmony_ci instance.create_info.setup_WSI(); 3965db71995Sopenharmony_ci instance.CheckCreate(); 3975db71995Sopenharmony_ci 3985db71995Sopenharmony_ci auto bad_instance = get_bad_handle<VkInstance>(); 3995db71995Sopenharmony_ci 4005db71995Sopenharmony_ci VkXlibSurfaceCreateInfoKHR surf_create_info = {}; 4015db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR; 4025db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 4035db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 4045db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkCreateXlibSurfaceKHR(bad_instance, &surf_create_info, nullptr, &created_surface), 4055db71995Sopenharmony_ci "vkCreateXlibSurfaceKHR: Invalid instance \\[VUID-vkCreateXlibSurfaceKHR-instance-parameter\\]"); 4065db71995Sopenharmony_ci // TODO: Look for "invalid instance" in stderr log to make sure correct error is thrown 4075db71995Sopenharmony_ci} 4085db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_XLIB_KHR 4095db71995Sopenharmony_ci 4105db71995Sopenharmony_ci// ---- Invalid Physical Device tests 4115db71995Sopenharmony_ci 4125db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevFeature) { 4135db71995Sopenharmony_ci FrameworkEnvironment env{}; 4145db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 4155db71995Sopenharmony_ci .add_physical_device({}) 4165db71995Sopenharmony_ci .set_icd_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); 4175db71995Sopenharmony_ci 4185db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 4195db71995Sopenharmony_ci instance.create_info.set_api_version(1, 1, 0); 4205db71995Sopenharmony_ci instance.CheckCreate(); 4215db71995Sopenharmony_ci 4225db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 4235db71995Sopenharmony_ci 4245db71995Sopenharmony_ci VkPhysicalDeviceFeatures features = {}; 4255db71995Sopenharmony_ci ASSERT_DEATH( 4265db71995Sopenharmony_ci env.vulkan_functions.vkGetPhysicalDeviceFeatures(bad_physical_dev, &features), 4275db71995Sopenharmony_ci "vkGetPhysicalDeviceFeatures: Invalid physicalDevice \\[VUID-vkGetPhysicalDeviceFeatures-physicalDevice-parameter\\]"); 4285db71995Sopenharmony_ci} 4295db71995Sopenharmony_ci 4305db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevFormatProps) { 4315db71995Sopenharmony_ci FrameworkEnvironment env{}; 4325db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 4335db71995Sopenharmony_ci .add_physical_device({}) 4345db71995Sopenharmony_ci .set_icd_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); 4355db71995Sopenharmony_ci 4365db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 4375db71995Sopenharmony_ci instance.create_info.set_api_version(1, 1, 0); 4385db71995Sopenharmony_ci instance.CheckCreate(); 4395db71995Sopenharmony_ci 4405db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 4415db71995Sopenharmony_ci 4425db71995Sopenharmony_ci VkFormatProperties format_info = {}; 4435db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceFormatProperties(bad_physical_dev, VK_FORMAT_R8G8B8A8_UNORM, &format_info), 4445db71995Sopenharmony_ci "vkGetPhysicalDeviceFormatProperties: Invalid physicalDevice " 4455db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceFormatProperties-physicalDevice-parameter\\]"); 4465db71995Sopenharmony_ci} 4475db71995Sopenharmony_ci 4485db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevImgFormatProps) { 4495db71995Sopenharmony_ci FrameworkEnvironment env{}; 4505db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 4515db71995Sopenharmony_ci .add_physical_device({}) 4525db71995Sopenharmony_ci .set_icd_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); 4535db71995Sopenharmony_ci 4545db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 4555db71995Sopenharmony_ci instance.create_info.set_api_version(1, 1, 0); 4565db71995Sopenharmony_ci instance.CheckCreate(); 4575db71995Sopenharmony_ci 4585db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 4595db71995Sopenharmony_ci 4605db71995Sopenharmony_ci VkImageFormatProperties format_info = {}; 4615db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceImageFormatProperties(bad_physical_dev, VK_FORMAT_R8G8B8A8_UNORM, 4625db71995Sopenharmony_ci VK_IMAGE_TYPE_2D, VK_IMAGE_TILING_LINEAR, 4635db71995Sopenharmony_ci VK_IMAGE_USAGE_STORAGE_BIT, 0, &format_info), 4645db71995Sopenharmony_ci "vkGetPhysicalDeviceImageFormatProperties: Invalid physicalDevice " 4655db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceImageFormatProperties-physicalDevice-parameter\\]"); 4665db71995Sopenharmony_ci} 4675db71995Sopenharmony_ci 4685db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevProps) { 4695db71995Sopenharmony_ci FrameworkEnvironment env{}; 4705db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 4715db71995Sopenharmony_ci .add_physical_device({}) 4725db71995Sopenharmony_ci .set_icd_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); 4735db71995Sopenharmony_ci 4745db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 4755db71995Sopenharmony_ci instance.create_info.set_api_version(1, 1, 0); 4765db71995Sopenharmony_ci instance.CheckCreate(); 4775db71995Sopenharmony_ci 4785db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 4795db71995Sopenharmony_ci 4805db71995Sopenharmony_ci VkPhysicalDeviceProperties properties = {}; 4815db71995Sopenharmony_ci ASSERT_DEATH( 4825db71995Sopenharmony_ci env.vulkan_functions.vkGetPhysicalDeviceProperties(bad_physical_dev, &properties), 4835db71995Sopenharmony_ci "vkGetPhysicalDeviceProperties: Invalid physicalDevice \\[VUID-vkGetPhysicalDeviceProperties-physicalDevice-parameter\\]"); 4845db71995Sopenharmony_ci} 4855db71995Sopenharmony_ci 4865db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevQueueFamProps) { 4875db71995Sopenharmony_ci FrameworkEnvironment env{}; 4885db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 4895db71995Sopenharmony_ci .add_physical_device({}) 4905db71995Sopenharmony_ci .set_icd_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); 4915db71995Sopenharmony_ci 4925db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 4935db71995Sopenharmony_ci instance.create_info.set_api_version(1, 1, 0); 4945db71995Sopenharmony_ci instance.CheckCreate(); 4955db71995Sopenharmony_ci 4965db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 4975db71995Sopenharmony_ci uint32_t count = 0; 4985db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceQueueFamilyProperties(bad_physical_dev, &count, nullptr), 4995db71995Sopenharmony_ci "vkGetPhysicalDeviceQueueFamilyProperties: Invalid physicalDevice " 5005db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceQueueFamilyProperties-physicalDevice-parameter\\]"); 5015db71995Sopenharmony_ci} 5025db71995Sopenharmony_ci 5035db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevDevMemProps) { 5045db71995Sopenharmony_ci FrameworkEnvironment env{}; 5055db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 5065db71995Sopenharmony_ci .add_physical_device({}) 5075db71995Sopenharmony_ci .set_icd_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); 5085db71995Sopenharmony_ci 5095db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 5105db71995Sopenharmony_ci instance.create_info.set_api_version(1, 1, 0); 5115db71995Sopenharmony_ci instance.CheckCreate(); 5125db71995Sopenharmony_ci 5135db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 5145db71995Sopenharmony_ci 5155db71995Sopenharmony_ci VkPhysicalDeviceMemoryProperties properties = {}; 5165db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceMemoryProperties(bad_physical_dev, &properties), 5175db71995Sopenharmony_ci "vkGetPhysicalDeviceMemoryProperties: Invalid physicalDevice " 5185db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceMemoryProperties-physicalDevice-parameter\\]"); 5195db71995Sopenharmony_ci} 5205db71995Sopenharmony_ci 5215db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevCreateDevice) { 5225db71995Sopenharmony_ci FrameworkEnvironment env{}; 5235db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 5245db71995Sopenharmony_ci .add_physical_device({}) 5255db71995Sopenharmony_ci .set_icd_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); 5265db71995Sopenharmony_ci 5275db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 5285db71995Sopenharmony_ci instance.create_info.set_api_version(1, 1, 0); 5295db71995Sopenharmony_ci instance.CheckCreate(); 5305db71995Sopenharmony_ci 5315db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 5325db71995Sopenharmony_ci 5335db71995Sopenharmony_ci float queue_priorities[3] = {0.0f, 0.5f, 1.0f}; 5345db71995Sopenharmony_ci VkDeviceQueueCreateInfo dev_queue_create_info = {}; 5355db71995Sopenharmony_ci dev_queue_create_info.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO; 5365db71995Sopenharmony_ci dev_queue_create_info.pNext = nullptr; 5375db71995Sopenharmony_ci dev_queue_create_info.flags = 0; 5385db71995Sopenharmony_ci dev_queue_create_info.queueFamilyIndex = 0; 5395db71995Sopenharmony_ci dev_queue_create_info.queueCount = 1; 5405db71995Sopenharmony_ci dev_queue_create_info.pQueuePriorities = queue_priorities; 5415db71995Sopenharmony_ci VkDeviceCreateInfo dev_create_info = {}; 5425db71995Sopenharmony_ci dev_create_info.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO; 5435db71995Sopenharmony_ci dev_create_info.pNext = nullptr; 5445db71995Sopenharmony_ci dev_create_info.flags = 0; 5455db71995Sopenharmony_ci dev_create_info.queueCreateInfoCount = 1; 5465db71995Sopenharmony_ci dev_create_info.pQueueCreateInfos = &dev_queue_create_info; 5475db71995Sopenharmony_ci dev_create_info.enabledLayerCount = 0; 5485db71995Sopenharmony_ci dev_create_info.ppEnabledLayerNames = nullptr; 5495db71995Sopenharmony_ci dev_create_info.enabledExtensionCount = 0; 5505db71995Sopenharmony_ci dev_create_info.ppEnabledExtensionNames = nullptr; 5515db71995Sopenharmony_ci dev_create_info.pEnabledFeatures = nullptr; 5525db71995Sopenharmony_ci VkDevice created_dev = VK_NULL_HANDLE; 5535db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkCreateDevice(bad_physical_dev, &dev_create_info, nullptr, &created_dev), 5545db71995Sopenharmony_ci "vkCreateDevice: Invalid physicalDevice \\[VUID-vkCreateDevice-physicalDevice-parameter\\]"); 5555db71995Sopenharmony_ci} 5565db71995Sopenharmony_ci 5575db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevEnumDevExtProps) { 5585db71995Sopenharmony_ci FrameworkEnvironment env{}; 5595db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 5605db71995Sopenharmony_ci .add_physical_device({}) 5615db71995Sopenharmony_ci .set_icd_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); 5625db71995Sopenharmony_ci 5635db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 5645db71995Sopenharmony_ci instance.create_info.set_api_version(1, 1, 0); 5655db71995Sopenharmony_ci instance.CheckCreate(); 5665db71995Sopenharmony_ci 5675db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 5685db71995Sopenharmony_ci uint32_t count = 0; 5695db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkEnumerateDeviceExtensionProperties(bad_physical_dev, nullptr, &count, nullptr), 5705db71995Sopenharmony_ci "vkEnumerateDeviceExtensionProperties: Invalid physicalDevice " 5715db71995Sopenharmony_ci "\\[VUID-vkEnumerateDeviceExtensionProperties-physicalDevice-parameter\\]"); 5725db71995Sopenharmony_ci} 5735db71995Sopenharmony_ci 5745db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevEnumDevLayerProps) { 5755db71995Sopenharmony_ci FrameworkEnvironment env{}; 5765db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 5775db71995Sopenharmony_ci .add_physical_device({}) 5785db71995Sopenharmony_ci .set_icd_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); 5795db71995Sopenharmony_ci 5805db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 5815db71995Sopenharmony_ci instance.create_info.set_api_version(1, 1, 0); 5825db71995Sopenharmony_ci instance.CheckCreate(); 5835db71995Sopenharmony_ci 5845db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 5855db71995Sopenharmony_ci uint32_t count = 0; 5865db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkEnumerateDeviceLayerProperties(bad_physical_dev, &count, nullptr), 5875db71995Sopenharmony_ci "vkEnumerateDeviceLayerProperties: Invalid physicalDevice " 5885db71995Sopenharmony_ci "\\[VUID-vkEnumerateDeviceLayerProperties-physicalDevice-parameter\\]"); 5895db71995Sopenharmony_ci} 5905db71995Sopenharmony_ci 5915db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevSparseImgFormatProps) { 5925db71995Sopenharmony_ci FrameworkEnvironment env{}; 5935db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 5945db71995Sopenharmony_ci .add_physical_device({}) 5955db71995Sopenharmony_ci .set_icd_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); 5965db71995Sopenharmony_ci 5975db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 5985db71995Sopenharmony_ci instance.create_info.set_api_version(1, 1, 0); 5995db71995Sopenharmony_ci instance.CheckCreate(); 6005db71995Sopenharmony_ci 6015db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 6025db71995Sopenharmony_ci 6035db71995Sopenharmony_ci uint32_t count = 0; 6045db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceSparseImageFormatProperties( 6055db71995Sopenharmony_ci bad_physical_dev, VK_FORMAT_R8G8B8A8_UNORM, VK_IMAGE_TYPE_2D, VK_SAMPLE_COUNT_1_BIT, 6065db71995Sopenharmony_ci VK_IMAGE_USAGE_STORAGE_BIT, VK_IMAGE_TILING_LINEAR, &count, nullptr), 6075db71995Sopenharmony_ci "vkGetPhysicalDeviceSparseImageFormatProperties: Invalid physicalDevice " 6085db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceSparseImageFormatProperties-physicalDevice-parameter\\]"); 6095db71995Sopenharmony_ci} 6105db71995Sopenharmony_ci 6115db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevFeature2) { 6125db71995Sopenharmony_ci FrameworkEnvironment env{}; 6135db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 6145db71995Sopenharmony_ci .add_physical_device({}) 6155db71995Sopenharmony_ci .set_icd_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); 6165db71995Sopenharmony_ci 6175db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 6185db71995Sopenharmony_ci instance.create_info.set_api_version(1, 1, 0); 6195db71995Sopenharmony_ci instance.CheckCreate(); 6205db71995Sopenharmony_ci 6215db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 6225db71995Sopenharmony_ci 6235db71995Sopenharmony_ci VkPhysicalDeviceFeatures2 features = {}; 6245db71995Sopenharmony_ci features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2; 6255db71995Sopenharmony_ci features.pNext = nullptr; 6265db71995Sopenharmony_ci ASSERT_DEATH( 6275db71995Sopenharmony_ci env.vulkan_functions.vkGetPhysicalDeviceFeatures2(bad_physical_dev, &features), 6285db71995Sopenharmony_ci "vkGetPhysicalDeviceFeatures2: Invalid physicalDevice \\[VUID-vkGetPhysicalDeviceFeatures2-physicalDevice-parameter\\]"); 6295db71995Sopenharmony_ci} 6305db71995Sopenharmony_ci 6315db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevFormatProps2) { 6325db71995Sopenharmony_ci FrameworkEnvironment env{}; 6335db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 6345db71995Sopenharmony_ci .add_physical_device({}) 6355db71995Sopenharmony_ci .set_icd_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); 6365db71995Sopenharmony_ci 6375db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 6385db71995Sopenharmony_ci instance.create_info.set_api_version(1, 1, 0); 6395db71995Sopenharmony_ci instance.CheckCreate(); 6405db71995Sopenharmony_ci 6415db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 6425db71995Sopenharmony_ci 6435db71995Sopenharmony_ci VkFormatProperties2 properties = {}; 6445db71995Sopenharmony_ci properties.sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; 6455db71995Sopenharmony_ci properties.pNext = nullptr; 6465db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceFormatProperties2(bad_physical_dev, VK_FORMAT_R8G8B8A8_UNORM, &properties), 6475db71995Sopenharmony_ci "vkGetPhysicalDeviceFormatProperties2: Invalid physicalDevice " 6485db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceFormatProperties2-physicalDevice-parameter\\]"); 6495db71995Sopenharmony_ci} 6505db71995Sopenharmony_ci 6515db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevImgFormatProps2) { 6525db71995Sopenharmony_ci FrameworkEnvironment env{}; 6535db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 6545db71995Sopenharmony_ci .add_physical_device({}) 6555db71995Sopenharmony_ci .set_icd_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); 6565db71995Sopenharmony_ci 6575db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 6585db71995Sopenharmony_ci instance.create_info.set_api_version(1, 1, 0); 6595db71995Sopenharmony_ci instance.CheckCreate(); 6605db71995Sopenharmony_ci 6615db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 6625db71995Sopenharmony_ci 6635db71995Sopenharmony_ci VkPhysicalDeviceImageFormatInfo2 format_info = {}; 6645db71995Sopenharmony_ci format_info.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2; 6655db71995Sopenharmony_ci format_info.pNext = nullptr; 6665db71995Sopenharmony_ci VkImageFormatProperties2 properties = {}; 6675db71995Sopenharmony_ci properties.sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2; 6685db71995Sopenharmony_ci properties.pNext = nullptr; 6695db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceImageFormatProperties2(bad_physical_dev, &format_info, &properties), 6705db71995Sopenharmony_ci "vkGetPhysicalDeviceImageFormatProperties2: Invalid physicalDevice " 6715db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceImageFormatProperties2-physicalDevice-parameter\\]"); 6725db71995Sopenharmony_ci} 6735db71995Sopenharmony_ci 6745db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevProps2) { 6755db71995Sopenharmony_ci FrameworkEnvironment env{}; 6765db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 6775db71995Sopenharmony_ci .add_physical_device({}) 6785db71995Sopenharmony_ci .set_icd_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); 6795db71995Sopenharmony_ci 6805db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 6815db71995Sopenharmony_ci instance.create_info.set_api_version(1, 1, 0); 6825db71995Sopenharmony_ci instance.CheckCreate(); 6835db71995Sopenharmony_ci 6845db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 6855db71995Sopenharmony_ci 6865db71995Sopenharmony_ci VkPhysicalDeviceProperties2 properties = {}; 6875db71995Sopenharmony_ci properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2; 6885db71995Sopenharmony_ci properties.pNext = nullptr; 6895db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceProperties2(bad_physical_dev, &properties), 6905db71995Sopenharmony_ci "vkGetPhysicalDeviceProperties2: Invalid physicalDevice " 6915db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceProperties2-physicalDevice-parameter\\]"); 6925db71995Sopenharmony_ci} 6935db71995Sopenharmony_ci 6945db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevQueueFamProps2) { 6955db71995Sopenharmony_ci FrameworkEnvironment env{}; 6965db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 6975db71995Sopenharmony_ci .add_physical_device({}) 6985db71995Sopenharmony_ci .set_icd_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); 6995db71995Sopenharmony_ci 7005db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 7015db71995Sopenharmony_ci instance.create_info.set_api_version(1, 1, 0); 7025db71995Sopenharmony_ci instance.CheckCreate(); 7035db71995Sopenharmony_ci 7045db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 7055db71995Sopenharmony_ci uint32_t count = 0; 7065db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceQueueFamilyProperties2(bad_physical_dev, &count, nullptr), 7075db71995Sopenharmony_ci "vkGetPhysicalDeviceQueueFamilyProperties2: Invalid physicalDevice " 7085db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceQueueFamilyProperties2-physicalDevice-parameter\\]"); 7095db71995Sopenharmony_ci} 7105db71995Sopenharmony_ci 7115db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevDevMemProps2) { 7125db71995Sopenharmony_ci FrameworkEnvironment env{}; 7135db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 7145db71995Sopenharmony_ci .add_physical_device({}) 7155db71995Sopenharmony_ci .set_icd_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); 7165db71995Sopenharmony_ci 7175db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 7185db71995Sopenharmony_ci instance.create_info.set_api_version(1, 1, 0); 7195db71995Sopenharmony_ci instance.CheckCreate(); 7205db71995Sopenharmony_ci 7215db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 7225db71995Sopenharmony_ci 7235db71995Sopenharmony_ci VkPhysicalDeviceMemoryProperties2 properties = {}; 7245db71995Sopenharmony_ci properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2; 7255db71995Sopenharmony_ci properties.pNext = nullptr; 7265db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceMemoryProperties2(bad_physical_dev, &properties), 7275db71995Sopenharmony_ci "vkGetPhysicalDeviceMemoryProperties2: Invalid physicalDevice " 7285db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceMemoryProperties2-physicalDevice-parameter\\]"); 7295db71995Sopenharmony_ci} 7305db71995Sopenharmony_ci 7315db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevSparseImgFormatProps2) { 7325db71995Sopenharmony_ci FrameworkEnvironment env{}; 7335db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 7345db71995Sopenharmony_ci .add_physical_device({}) 7355db71995Sopenharmony_ci .set_icd_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); 7365db71995Sopenharmony_ci 7375db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 7385db71995Sopenharmony_ci instance.create_info.set_api_version(1, 1, 0); 7395db71995Sopenharmony_ci instance.CheckCreate(); 7405db71995Sopenharmony_ci 7415db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 7425db71995Sopenharmony_ci 7435db71995Sopenharmony_ci VkPhysicalDeviceSparseImageFormatInfo2 info = {}; 7445db71995Sopenharmony_ci info.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2; 7455db71995Sopenharmony_ci info.pNext = nullptr; 7465db71995Sopenharmony_ci uint32_t count = 0; 7475db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceSparseImageFormatProperties2(bad_physical_dev, &info, &count, nullptr), 7485db71995Sopenharmony_ci "vkGetPhysicalDeviceSparseImageFormatProperties2: Invalid physicalDevice " 7495db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-physicalDevice-parameter\\]"); 7505db71995Sopenharmony_ci} 7515db71995Sopenharmony_ci 7525db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevExternFenceProps) { 7535db71995Sopenharmony_ci FrameworkEnvironment env{}; 7545db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 7555db71995Sopenharmony_ci .add_physical_device({}) 7565db71995Sopenharmony_ci .set_icd_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); 7575db71995Sopenharmony_ci 7585db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 7595db71995Sopenharmony_ci instance.create_info.set_api_version(1, 1, 0); 7605db71995Sopenharmony_ci instance.CheckCreate(); 7615db71995Sopenharmony_ci 7625db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 7635db71995Sopenharmony_ci 7645db71995Sopenharmony_ci VkPhysicalDeviceExternalFenceInfo info = {}; 7655db71995Sopenharmony_ci info.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO; 7665db71995Sopenharmony_ci info.pNext = nullptr; 7675db71995Sopenharmony_ci VkExternalFenceProperties props = {}; 7685db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceExternalFenceProperties(bad_physical_dev, &info, &props), 7695db71995Sopenharmony_ci "vkGetPhysicalDeviceExternalFenceProperties: Invalid physicalDevice " 7705db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceExternalFenceProperties-physicalDevice-parameter\\]"); 7715db71995Sopenharmony_ci} 7725db71995Sopenharmony_ci 7735db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevExternBufferProps) { 7745db71995Sopenharmony_ci FrameworkEnvironment env{}; 7755db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 7765db71995Sopenharmony_ci .add_physical_device({}) 7775db71995Sopenharmony_ci .set_icd_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); 7785db71995Sopenharmony_ci 7795db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 7805db71995Sopenharmony_ci instance.create_info.set_api_version(1, 1, 0); 7815db71995Sopenharmony_ci instance.CheckCreate(); 7825db71995Sopenharmony_ci 7835db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 7845db71995Sopenharmony_ci 7855db71995Sopenharmony_ci VkPhysicalDeviceExternalBufferInfo info = {}; 7865db71995Sopenharmony_ci info.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO; 7875db71995Sopenharmony_ci info.pNext = nullptr; 7885db71995Sopenharmony_ci VkExternalBufferProperties props = {}; 7895db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceExternalBufferProperties(bad_physical_dev, &info, &props), 7905db71995Sopenharmony_ci "vkGetPhysicalDeviceExternalBufferProperties: Invalid physicalDevice " 7915db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceExternalBufferProperties-physicalDevice-parameter\\]"); 7925db71995Sopenharmony_ci} 7935db71995Sopenharmony_ci 7945db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevExternSemaphoreProps) { 7955db71995Sopenharmony_ci FrameworkEnvironment env{}; 7965db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 7975db71995Sopenharmony_ci .add_physical_device({}) 7985db71995Sopenharmony_ci .set_icd_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); 7995db71995Sopenharmony_ci 8005db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 8015db71995Sopenharmony_ci instance.create_info.set_api_version(1, 1, 0); 8025db71995Sopenharmony_ci instance.CheckCreate(); 8035db71995Sopenharmony_ci 8045db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 8055db71995Sopenharmony_ci 8065db71995Sopenharmony_ci VkPhysicalDeviceExternalSemaphoreInfo info = {}; 8075db71995Sopenharmony_ci info.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO; 8085db71995Sopenharmony_ci info.pNext = nullptr; 8095db71995Sopenharmony_ci VkExternalSemaphoreProperties props = {}; 8105db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceExternalSemaphoreProperties(bad_physical_dev, &info, &props), 8115db71995Sopenharmony_ci "vkGetPhysicalDeviceExternalSemaphoreProperties: Invalid physicalDevice " 8125db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-physicalDevice-parameter\\]"); 8135db71995Sopenharmony_ci} 8145db71995Sopenharmony_ci 8155db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevSurfaceSupportKHR) { 8165db71995Sopenharmony_ci FrameworkEnvironment env{}; 8175db71995Sopenharmony_ci Extension first_ext{"VK_KHR_surface"}; 8185db71995Sopenharmony_ci Extension second_ext{"VK_KHR_display"}; 8195db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 8205db71995Sopenharmony_ci .add_instance_extensions({first_ext, second_ext}) 8215db71995Sopenharmony_ci .add_physical_device("physical_device_0"); 8225db71995Sopenharmony_ci 8235db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 8245db71995Sopenharmony_ci instance.create_info.add_extension(first_ext.extensionName.c_str()); 8255db71995Sopenharmony_ci instance.CheckCreate(); 8265db71995Sopenharmony_ci 8275db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 8285db71995Sopenharmony_ci VkBool32 supported = VK_FALSE; 8295db71995Sopenharmony_ci 8305db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceSurfaceSupportKHR(bad_physical_dev, 0, VK_NULL_HANDLE, &supported), 8315db71995Sopenharmony_ci "vkGetPhysicalDeviceSurfaceSupportKHR: Invalid physicalDevice " 8325db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceSurfaceSupportKHR-physicalDevice-parameter\\]"); 8335db71995Sopenharmony_ci} 8345db71995Sopenharmony_ci 8355db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevSurfaceCapsKHR) { 8365db71995Sopenharmony_ci FrameworkEnvironment env{}; 8375db71995Sopenharmony_ci Extension first_ext{"VK_KHR_surface"}; 8385db71995Sopenharmony_ci Extension second_ext{"VK_KHR_display"}; 8395db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 8405db71995Sopenharmony_ci .add_instance_extensions({first_ext, second_ext}) 8415db71995Sopenharmony_ci .add_physical_device("physical_device_0"); 8425db71995Sopenharmony_ci 8435db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 8445db71995Sopenharmony_ci instance.create_info.add_extension(first_ext.extensionName.c_str()); 8455db71995Sopenharmony_ci instance.CheckCreate(); 8465db71995Sopenharmony_ci 8475db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 8485db71995Sopenharmony_ci VkSurfaceCapabilitiesKHR caps = {}; 8495db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceSurfaceCapabilitiesKHR(bad_physical_dev, VK_NULL_HANDLE, &caps), 8505db71995Sopenharmony_ci "vkGetPhysicalDeviceSurfaceCapabilitiesKHR: Invalid physicalDevice " 8515db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-physicalDevice-parameter\\]"); 8525db71995Sopenharmony_ci} 8535db71995Sopenharmony_ci 8545db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevSurfaceFormatsKHR) { 8555db71995Sopenharmony_ci FrameworkEnvironment env{}; 8565db71995Sopenharmony_ci Extension first_ext{"VK_KHR_surface"}; 8575db71995Sopenharmony_ci Extension second_ext{"VK_KHR_display"}; 8585db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 8595db71995Sopenharmony_ci .add_instance_extensions({first_ext, second_ext}) 8605db71995Sopenharmony_ci .add_physical_device("physical_device_0"); 8615db71995Sopenharmony_ci 8625db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 8635db71995Sopenharmony_ci instance.create_info.add_extension(first_ext.extensionName.c_str()); 8645db71995Sopenharmony_ci instance.CheckCreate(); 8655db71995Sopenharmony_ci 8665db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 8675db71995Sopenharmony_ci uint32_t count = 0; 8685db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceSurfaceFormatsKHR(bad_physical_dev, VK_NULL_HANDLE, &count, nullptr), 8695db71995Sopenharmony_ci "vkGetPhysicalDeviceSurfaceFormatsKHR: Invalid physicalDevice " 8705db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-physicalDevice-parameter\\]"); 8715db71995Sopenharmony_ci} 8725db71995Sopenharmony_ci 8735db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevSurfacePresentModesKHR) { 8745db71995Sopenharmony_ci FrameworkEnvironment env{}; 8755db71995Sopenharmony_ci Extension first_ext{"VK_KHR_surface"}; 8765db71995Sopenharmony_ci Extension second_ext{"VK_KHR_display"}; 8775db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 8785db71995Sopenharmony_ci .add_instance_extensions({first_ext, second_ext}) 8795db71995Sopenharmony_ci .add_physical_device("physical_device_0"); 8805db71995Sopenharmony_ci 8815db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 8825db71995Sopenharmony_ci instance.create_info.add_extension(first_ext.extensionName.c_str()); 8835db71995Sopenharmony_ci instance.CheckCreate(); 8845db71995Sopenharmony_ci 8855db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 8865db71995Sopenharmony_ci uint32_t count = 0; 8875db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceSurfacePresentModesKHR(bad_physical_dev, VK_NULL_HANDLE, &count, nullptr), 8885db71995Sopenharmony_ci "vkGetPhysicalDeviceSurfacePresentModesKHR: Invalid physicalDevice " 8895db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-physicalDevice-parameter\\]"); 8905db71995Sopenharmony_ci} 8915db71995Sopenharmony_ci 8925db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_DIRECTFB_EXT) 8935db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetDirectFBPresentSupportKHR) { 8945db71995Sopenharmony_ci FrameworkEnvironment env{}; 8955db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 8965db71995Sopenharmony_ci 8975db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 8985db71995Sopenharmony_ci instance.create_info.setup_WSI(); 8995db71995Sopenharmony_ci instance.CheckCreate(); 9005db71995Sopenharmony_ci 9015db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 9025db71995Sopenharmony_ci IDirectFB directfb; 9035db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceDirectFBPresentationSupportEXT(bad_physical_dev, 0, &directfb), 9045db71995Sopenharmony_ci "vkGetPhysicalDeviceDirectFBPresentationSupportEXT: Invalid physicalDevice " 9055db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceDirectFBPresentationSupportEXT-physicalDevice-parameter\\]"); 9065db71995Sopenharmony_ci} 9075db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_DIRECTFB_EXT 9085db71995Sopenharmony_ci 9095db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_SCREEN_QNX) 9105db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetQNXPresentSupportKHR) { 9115db71995Sopenharmony_ci FrameworkEnvironment env{}; 9125db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 9135db71995Sopenharmony_ci 9145db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 9155db71995Sopenharmony_ci instance.create_info.setup_WSI(); 9165db71995Sopenharmony_ci instance.CheckCreate(); 9175db71995Sopenharmony_ci 9185db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 9195db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX(bad_physical_dev, 0, nullptr), 9205db71995Sopenharmony_ci "vkGetPhysicalDeviceScreenPresentationSupportQNX: Invalid instance " 9215db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceScreenPresentationSupportQNX-instance-parameter\\]"); 9225db71995Sopenharmony_ci} 9235db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_SCREEN_QNX 9245db71995Sopenharmony_ci 9255db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_WAYLAND_KHR) 9265db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevWaylandPresentSupportKHR) { 9275db71995Sopenharmony_ci FrameworkEnvironment env{}; 9285db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 9295db71995Sopenharmony_ci 9305db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 9315db71995Sopenharmony_ci instance.create_info.setup_WSI(); 9325db71995Sopenharmony_ci instance.CheckCreate(); 9335db71995Sopenharmony_ci 9345db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 9355db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceWaylandPresentationSupportKHR(bad_physical_dev, 0, nullptr), 9365db71995Sopenharmony_ci "vkGetPhysicalDeviceWaylandPresentationSupportKHR: Invalid physicalDevice " 9375db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-physicalDevice-parameter\\]"); 9385db71995Sopenharmony_ci} 9395db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_WAYLAND_KHR 9405db71995Sopenharmony_ci 9415db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_WIN32_KHR) 9425db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevWin32PresentSupportKHR) { 9435db71995Sopenharmony_ci FrameworkEnvironment env{}; 9445db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 9455db71995Sopenharmony_ci 9465db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 9475db71995Sopenharmony_ci instance.create_info.setup_WSI(); 9485db71995Sopenharmony_ci instance.CheckCreate(); 9495db71995Sopenharmony_ci 9505db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 9515db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceWin32PresentationSupportKHR(bad_physical_dev, 0), 9525db71995Sopenharmony_ci "vkGetPhysicalDeviceWin32PresentationSupportKHR: Invalid physicalDevice " 9535db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-physicalDevice-parameter\\]"); 9545db71995Sopenharmony_ci} 9555db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_WIN32_KHR 9565db71995Sopenharmony_ci 9575db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_XCB_KHR) 9585db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetXCBPresentSupportKHR) { 9595db71995Sopenharmony_ci FrameworkEnvironment env{}; 9605db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 9615db71995Sopenharmony_ci 9625db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 9635db71995Sopenharmony_ci instance.create_info.setup_WSI(); 9645db71995Sopenharmony_ci instance.CheckCreate(); 9655db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 9665db71995Sopenharmony_ci 9675db71995Sopenharmony_ci xcb_visualid_t visual = 0; 9685db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceXcbPresentationSupportKHR(bad_physical_dev, 0, nullptr, visual), 9695db71995Sopenharmony_ci "vkGetPhysicalDeviceXcbPresentationSupportKHR: Invalid physicalDevice " 9705db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-physicalDevice-parameter\\]"); 9715db71995Sopenharmony_ci} 9725db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_XCB_KHR 9735db71995Sopenharmony_ci 9745db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_XLIB_KHR) 9755db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetXlibPresentSupportKHR) { 9765db71995Sopenharmony_ci FrameworkEnvironment env{}; 9775db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 9785db71995Sopenharmony_ci 9795db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 9805db71995Sopenharmony_ci instance.create_info.setup_WSI(); 9815db71995Sopenharmony_ci instance.CheckCreate(); 9825db71995Sopenharmony_ci 9835db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 9845db71995Sopenharmony_ci 9855db71995Sopenharmony_ci VisualID visual = 0; 9865db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceXlibPresentationSupportKHR(bad_physical_dev, 0, nullptr, visual), 9875db71995Sopenharmony_ci "vkGetPhysicalDeviceXlibPresentationSupportKHR: Invalid physicalDevice " 9885db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-physicalDevice-parameter\\]"); 9895db71995Sopenharmony_ci} 9905db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_XLIB_KHR 9915db71995Sopenharmony_ci 9925db71995Sopenharmony_ciInstWrapper setup_BadPhysDev_env(FrameworkEnvironment& env, std::vector<const char*> exts) { 9935db71995Sopenharmony_ci std::vector<Extension> ext_modified; 9945db71995Sopenharmony_ci for (const auto& ext : exts) { 9955db71995Sopenharmony_ci ext_modified.push_back(Extension{ext}); 9965db71995Sopenharmony_ci } 9975db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)) 9985db71995Sopenharmony_ci .add_instance_extensions(ext_modified) 9995db71995Sopenharmony_ci .setup_WSI() 10005db71995Sopenharmony_ci .add_physical_device("physical_device_0"); 10015db71995Sopenharmony_ci 10025db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 10035db71995Sopenharmony_ci instance.create_info.add_extensions(exts); 10045db71995Sopenharmony_ci instance.CheckCreate(); 10055db71995Sopenharmony_ci return instance; 10065db71995Sopenharmony_ci} 10075db71995Sopenharmony_ci 10085db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevDisplayPropsKHR) { 10095db71995Sopenharmony_ci FrameworkEnvironment env{}; 10105db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {"VK_KHR_surface", "VK_KHR_display"}); 10115db71995Sopenharmony_ci 10125db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 10135db71995Sopenharmony_ci uint32_t count = 0; 10145db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceDisplayPropertiesKHR(bad_physical_dev, &count, nullptr), 10155db71995Sopenharmony_ci "vkGetPhysicalDeviceDisplayPropertiesKHR: Invalid physicalDevice " 10165db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-physicalDevice-parameter\\]"); 10175db71995Sopenharmony_ci} 10185db71995Sopenharmony_ci 10195db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevDisplayPlanePropsKHR) { 10205db71995Sopenharmony_ci FrameworkEnvironment env{}; 10215db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {"VK_KHR_surface", "VK_KHR_display"}); 10225db71995Sopenharmony_ci 10235db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 10245db71995Sopenharmony_ci uint32_t count = 0; 10255db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceDisplayPlanePropertiesKHR(bad_physical_dev, &count, nullptr), 10265db71995Sopenharmony_ci "vkGetPhysicalDeviceDisplayPlanePropertiesKHR: Invalid physicalDevice " 10275db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-physicalDevice-parameter\\]"); 10285db71995Sopenharmony_ci} 10295db71995Sopenharmony_ci 10305db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetDisplayPlaneSupportedDisplaysKHR) { 10315db71995Sopenharmony_ci FrameworkEnvironment env{}; 10325db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {"VK_KHR_surface", "VK_KHR_display"}); 10335db71995Sopenharmony_ci 10345db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 10355db71995Sopenharmony_ci uint32_t count = 0; 10365db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetDisplayPlaneSupportedDisplaysKHR(bad_physical_dev, 0, &count, nullptr), 10375db71995Sopenharmony_ci "vkGetDisplayPlaneSupportedDisplaysKHR: Invalid physicalDevice " 10385db71995Sopenharmony_ci "\\[VUID-vkGetDisplayPlaneSupportedDisplaysKHR-physicalDevice-parameter\\]"); 10395db71995Sopenharmony_ci} 10405db71995Sopenharmony_ci 10415db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetDisplayModePropsKHR) { 10425db71995Sopenharmony_ci FrameworkEnvironment env{}; 10435db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {"VK_KHR_surface", "VK_KHR_display"}); 10445db71995Sopenharmony_ci 10455db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 10465db71995Sopenharmony_ci uint32_t count = 0; 10475db71995Sopenharmony_ci ASSERT_DEATH( 10485db71995Sopenharmony_ci env.vulkan_functions.vkGetDisplayModePropertiesKHR(bad_physical_dev, VK_NULL_HANDLE, &count, nullptr), 10495db71995Sopenharmony_ci "vkGetDisplayModePropertiesKHR: Invalid physicalDevice \\[VUID-vkGetDisplayModePropertiesKHR-physicalDevice-parameter\\]"); 10505db71995Sopenharmony_ci} 10515db71995Sopenharmony_ci 10525db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevCreateDisplayModeKHR) { 10535db71995Sopenharmony_ci FrameworkEnvironment env{}; 10545db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {"VK_KHR_surface", "VK_KHR_display"}); 10555db71995Sopenharmony_ci 10565db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 10575db71995Sopenharmony_ci VkDisplayModeCreateInfoKHR create_info = {}; 10585db71995Sopenharmony_ci create_info.sType = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR; 10595db71995Sopenharmony_ci create_info.pNext = nullptr; 10605db71995Sopenharmony_ci VkDisplayModeKHR display_mode; 10615db71995Sopenharmony_ci ASSERT_DEATH( 10625db71995Sopenharmony_ci env.vulkan_functions.vkCreateDisplayModeKHR(bad_physical_dev, VK_NULL_HANDLE, &create_info, nullptr, &display_mode), 10635db71995Sopenharmony_ci "vkCreateDisplayModeKHR: Invalid physicalDevice \\[VUID-vkCreateDisplayModeKHR-physicalDevice-parameter\\]"); 10645db71995Sopenharmony_ci} 10655db71995Sopenharmony_ci 10665db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetDisplayPlaneCapsKHR) { 10675db71995Sopenharmony_ci FrameworkEnvironment env{}; 10685db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {"VK_KHR_surface", "VK_KHR_display"}); 10695db71995Sopenharmony_ci 10705db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 10715db71995Sopenharmony_ci VkDisplayPlaneCapabilitiesKHR caps = {}; 10725db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetDisplayPlaneCapabilitiesKHR(bad_physical_dev, VK_NULL_HANDLE, 0, &caps), 10735db71995Sopenharmony_ci "vkGetDisplayPlaneCapabilitiesKHR: Invalid physicalDevice " 10745db71995Sopenharmony_ci "\\[VUID-vkGetDisplayPlaneCapabilitiesKHR-physicalDevice-parameter\\]"); 10755db71995Sopenharmony_ci} 10765db71995Sopenharmony_ci 10775db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevPresentRectsKHR) { 10785db71995Sopenharmony_ci FrameworkEnvironment env{}; 10795db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {"VK_KHR_surface", "VK_KHR_display"}); 10805db71995Sopenharmony_ci 10815db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 10825db71995Sopenharmony_ci uint32_t count = 0; 10835db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDevicePresentRectanglesKHR(bad_physical_dev, VK_NULL_HANDLE, &count, nullptr), 10845db71995Sopenharmony_ci "vkGetPhysicalDevicePresentRectanglesKHR: Invalid physicalDevice " 10855db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDevicePresentRectanglesKHR-physicalDevice-parameter\\]"); 10865db71995Sopenharmony_ci} 10875db71995Sopenharmony_ci 10885db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevDisplayProps2KHR) { 10895db71995Sopenharmony_ci FrameworkEnvironment env{}; 10905db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {"VK_KHR_surface", "VK_KHR_get_display_properties2"}); 10915db71995Sopenharmony_ci 10925db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 10935db71995Sopenharmony_ci uint32_t count = 0; 10945db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceDisplayProperties2KHR(bad_physical_dev, &count, nullptr), 10955db71995Sopenharmony_ci "vkGetPhysicalDeviceDisplayProperties2KHR: Invalid physicalDevice " 10965db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceDisplayProperties2KHR-physicalDevice-parameter\\]"); 10975db71995Sopenharmony_ci} 10985db71995Sopenharmony_ci 10995db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevDisplayPlaneProps2KHR) { 11005db71995Sopenharmony_ci FrameworkEnvironment env{}; 11015db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {"VK_KHR_surface", "VK_KHR_get_display_properties2"}); 11025db71995Sopenharmony_ci 11035db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 11045db71995Sopenharmony_ci uint32_t count = 0; 11055db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceDisplayPlaneProperties2KHR(bad_physical_dev, &count, nullptr), 11065db71995Sopenharmony_ci "vkGetPhysicalDeviceDisplayPlaneProperties2KHR: Invalid physicalDevice " 11075db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-physicalDevice-parameter\\]"); 11085db71995Sopenharmony_ci} 11095db71995Sopenharmony_ci 11105db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetDisplayModeProps2KHR) { 11115db71995Sopenharmony_ci FrameworkEnvironment env{}; 11125db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {"VK_KHR_surface", "VK_KHR_get_display_properties2"}); 11135db71995Sopenharmony_ci 11145db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 11155db71995Sopenharmony_ci uint32_t count = 0; 11165db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetDisplayModeProperties2KHR(bad_physical_dev, VK_NULL_HANDLE, &count, nullptr), 11175db71995Sopenharmony_ci "vkGetDisplayModeProperties2KHR: Invalid physicalDevice " 11185db71995Sopenharmony_ci "\\[VUID-vkGetDisplayModeProperties2KHR-physicalDevice-parameter\\]"); 11195db71995Sopenharmony_ci} 11205db71995Sopenharmony_ci 11215db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetDisplayPlaneCaps2KHR) { 11225db71995Sopenharmony_ci FrameworkEnvironment env{}; 11235db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {"VK_KHR_surface", "VK_KHR_get_display_properties2"}); 11245db71995Sopenharmony_ci 11255db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 11265db71995Sopenharmony_ci VkDisplayPlaneInfo2KHR disp_plane_info = {}; 11275db71995Sopenharmony_ci disp_plane_info.sType = VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR; 11285db71995Sopenharmony_ci disp_plane_info.pNext = nullptr; 11295db71995Sopenharmony_ci VkDisplayPlaneCapabilities2KHR caps = {}; 11305db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetDisplayPlaneCapabilities2KHR(bad_physical_dev, &disp_plane_info, &caps), 11315db71995Sopenharmony_ci "vkGetDisplayPlaneCapabilities2KHR: Invalid physicalDevice " 11325db71995Sopenharmony_ci "\\[VUID-vkGetDisplayPlaneCapabilities2KHR-physicalDevice-parameter\\]"); 11335db71995Sopenharmony_ci} 11345db71995Sopenharmony_ci 11355db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevSurfaceCaps2KHR) { 11365db71995Sopenharmony_ci FrameworkEnvironment env{}; 11375db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {"VK_KHR_surface", "VK_KHR_get_surface_capabilities2"}); 11385db71995Sopenharmony_ci 11395db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 11405db71995Sopenharmony_ci VkPhysicalDeviceSurfaceInfo2KHR phys_dev_surf_info = {}; 11415db71995Sopenharmony_ci phys_dev_surf_info.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR; 11425db71995Sopenharmony_ci phys_dev_surf_info.pNext = nullptr; 11435db71995Sopenharmony_ci VkSurfaceCapabilities2KHR caps = {}; 11445db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceSurfaceCapabilities2KHR(bad_physical_dev, &phys_dev_surf_info, &caps), 11455db71995Sopenharmony_ci "vkGetPhysicalDeviceSurfaceCapabilities2KHR: Invalid physicalDevice " 11465db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-physicalDevice-parameter\\]"); 11475db71995Sopenharmony_ci} 11485db71995Sopenharmony_ci 11495db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevSurfaceFormats2KHR) { 11505db71995Sopenharmony_ci FrameworkEnvironment env{}; 11515db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {"VK_KHR_surface", "VK_KHR_get_surface_capabilities2"}); 11525db71995Sopenharmony_ci 11535db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 11545db71995Sopenharmony_ci VkPhysicalDeviceSurfaceInfo2KHR phys_dev_surf_info = {}; 11555db71995Sopenharmony_ci phys_dev_surf_info.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR; 11565db71995Sopenharmony_ci phys_dev_surf_info.pNext = nullptr; 11575db71995Sopenharmony_ci uint32_t count = 0; 11585db71995Sopenharmony_ci ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceSurfaceFormats2KHR(bad_physical_dev, &phys_dev_surf_info, &count, nullptr), 11595db71995Sopenharmony_ci "vkGetPhysicalDeviceSurfaceFormats2KHR: Invalid physicalDevice " 11605db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-physicalDevice-parameter\\]"); 11615db71995Sopenharmony_ci} 11625db71995Sopenharmony_ci 11635db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevEnumPhysDevQueueFamilyPerfQueryCountersKHR) { 11645db71995Sopenharmony_ci FrameworkEnvironment env{}; 11655db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {}); 11665db71995Sopenharmony_ci 11675db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 11685db71995Sopenharmony_ci uint32_t count = 0; 11695db71995Sopenharmony_ci PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR pfn = 11705db71995Sopenharmony_ci instance.load("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"); 11715db71995Sopenharmony_ci ASSERT_NE(pfn, nullptr); 11725db71995Sopenharmony_ci ASSERT_DEATH(pfn(bad_physical_dev, 0, &count, nullptr, nullptr), 11735db71995Sopenharmony_ci "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR: Invalid physicalDevice " 11745db71995Sopenharmony_ci "\\[VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-physicalDevice-parameter\\]"); 11755db71995Sopenharmony_ci} 11765db71995Sopenharmony_ci 11775db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevQueueFamilyPerfQueryPassesKHR) { 11785db71995Sopenharmony_ci FrameworkEnvironment env{}; 11795db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {}); 11805db71995Sopenharmony_ci 11815db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 11825db71995Sopenharmony_ci VkQueryPoolPerformanceCreateInfoKHR create_info = {}; 11835db71995Sopenharmony_ci create_info.sType = VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR; 11845db71995Sopenharmony_ci create_info.pNext = nullptr; 11855db71995Sopenharmony_ci uint32_t count = 0; 11865db71995Sopenharmony_ci PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR pfn = 11875db71995Sopenharmony_ci instance.load("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"); 11885db71995Sopenharmony_ci ASSERT_NE(pfn, nullptr); 11895db71995Sopenharmony_ci ASSERT_DEATH(pfn(bad_physical_dev, &create_info, &count), 11905db71995Sopenharmony_ci "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR: Invalid physicalDevice " 11915db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-physicalDevice-parameter\\]"); 11925db71995Sopenharmony_ci} 11935db71995Sopenharmony_ci 11945db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevFragmentShadingRatesKHR) { 11955db71995Sopenharmony_ci FrameworkEnvironment env{}; 11965db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {}); 11975db71995Sopenharmony_ci 11985db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 11995db71995Sopenharmony_ci uint32_t count = 0; 12005db71995Sopenharmony_ci PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR pfn = instance.load("vkGetPhysicalDeviceFragmentShadingRatesKHR"); 12015db71995Sopenharmony_ci ASSERT_NE(pfn, nullptr); 12025db71995Sopenharmony_ci ASSERT_DEATH(pfn(bad_physical_dev, &count, nullptr), 12035db71995Sopenharmony_ci "vkGetPhysicalDeviceFragmentShadingRatesKHR: Invalid physicalDevice " 12045db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-physicalDevice-parameter\\]"); 12055db71995Sopenharmony_ci} 12065db71995Sopenharmony_ci 12075db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevMSPropsEXT) { 12085db71995Sopenharmony_ci FrameworkEnvironment env{}; 12095db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {}); 12105db71995Sopenharmony_ci 12115db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 12125db71995Sopenharmony_ci VkMultisamplePropertiesEXT props = {}; 12135db71995Sopenharmony_ci PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT pfn = instance.load("vkGetPhysicalDeviceMultisamplePropertiesEXT"); 12145db71995Sopenharmony_ci ASSERT_NE(pfn, nullptr); 12155db71995Sopenharmony_ci ASSERT_DEATH(pfn(bad_physical_dev, VK_SAMPLE_COUNT_1_BIT, &props), 12165db71995Sopenharmony_ci "vkGetPhysicalDeviceMultisamplePropertiesEXT: Invalid physicalDevice " 12175db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-physicalDevice-parameter\\]"); 12185db71995Sopenharmony_ci} 12195db71995Sopenharmony_ci 12205db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevAcquireDrmDisplayEXT) { 12215db71995Sopenharmony_ci FrameworkEnvironment env{}; 12225db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {"VK_KHR_surface", "VK_EXT_acquire_drm_display"}); 12235db71995Sopenharmony_ci 12245db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 12255db71995Sopenharmony_ci PFN_vkAcquireDrmDisplayEXT pfn = instance.load("vkAcquireDrmDisplayEXT"); 12265db71995Sopenharmony_ci ASSERT_NE(pfn, nullptr); 12275db71995Sopenharmony_ci ASSERT_DEATH(pfn(bad_physical_dev, 0, VK_NULL_HANDLE), 12285db71995Sopenharmony_ci "vkAcquireDrmDisplayEXT: Invalid physicalDevice \\[VUID-vkAcquireDrmDisplayEXT-physicalDevice-parameter\\]"); 12295db71995Sopenharmony_ci} 12305db71995Sopenharmony_ci 12315db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetDrmDisplayEXT) { 12325db71995Sopenharmony_ci FrameworkEnvironment env{}; 12335db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {"VK_KHR_surface", "VK_EXT_acquire_drm_display"}); 12345db71995Sopenharmony_ci 12355db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 12365db71995Sopenharmony_ci PFN_vkGetDrmDisplayEXT pfn = instance.load("vkGetDrmDisplayEXT"); 12375db71995Sopenharmony_ci ASSERT_NE(pfn, nullptr); 12385db71995Sopenharmony_ci ASSERT_DEATH(pfn(bad_physical_dev, 0, 0, VK_NULL_HANDLE), 12395db71995Sopenharmony_ci "vkGetDrmDisplayEXT: Invalid physicalDevice " 12405db71995Sopenharmony_ci "\\[VUID-vkGetDrmDisplayEXT-physicalDevice-parameter\\]"); 12415db71995Sopenharmony_ci} 12425db71995Sopenharmony_ci 12435db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevReleaseDisplayEXT) { 12445db71995Sopenharmony_ci FrameworkEnvironment env{}; 12455db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {"VK_KHR_surface", "VK_EXT_direct_mode_display"}); 12465db71995Sopenharmony_ci 12475db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 12485db71995Sopenharmony_ci PFN_vkReleaseDisplayEXT pfn = instance.load("vkReleaseDisplayEXT"); 12495db71995Sopenharmony_ci ASSERT_NE(pfn, nullptr); 12505db71995Sopenharmony_ci ASSERT_DEATH(pfn(bad_physical_dev, VK_NULL_HANDLE), 12515db71995Sopenharmony_ci "vkReleaseDisplayEXT: Invalid physicalDevice \\[VUID-vkReleaseDisplayEXT-physicalDevice-parameter\\]"); 12525db71995Sopenharmony_ci} 12535db71995Sopenharmony_ci 12545db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT) 12555db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevAcquireXlibDisplayEXT) { 12565db71995Sopenharmony_ci FrameworkEnvironment env{}; 12575db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {"VK_KHR_surface", "VK_EXT_acquire_xlib_display"}); 12585db71995Sopenharmony_ci 12595db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 12605db71995Sopenharmony_ci PFN_vkAcquireXlibDisplayEXT pfn = instance.load("vkAcquireXlibDisplayEXT"); 12615db71995Sopenharmony_ci ASSERT_NE(pfn, nullptr); 12625db71995Sopenharmony_ci ASSERT_DEATH(pfn(bad_physical_dev, nullptr, VK_NULL_HANDLE), 12635db71995Sopenharmony_ci "vkAcquireXlibDisplayEXT: Invalid physicalDevice \\[VUID-vkAcquireXlibDisplayEXT-physicalDevice-parameter\\]"); 12645db71995Sopenharmony_ci} 12655db71995Sopenharmony_ci 12665db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetRandROutputDisplayEXT) { 12675db71995Sopenharmony_ci FrameworkEnvironment env{}; 12685db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {"VK_KHR_surface", "VK_EXT_acquire_xlib_display"}); 12695db71995Sopenharmony_ci 12705db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 12715db71995Sopenharmony_ci RROutput rrout = {}; 12725db71995Sopenharmony_ci VkDisplayKHR disp; 12735db71995Sopenharmony_ci PFN_vkGetRandROutputDisplayEXT pfn = instance.load("vkGetRandROutputDisplayEXT"); 12745db71995Sopenharmony_ci ASSERT_NE(pfn, nullptr); 12755db71995Sopenharmony_ci ASSERT_DEATH( 12765db71995Sopenharmony_ci pfn(bad_physical_dev, nullptr, rrout, &disp), 12775db71995Sopenharmony_ci "vkGetRandROutputDisplayEXT: Invalid physicalDevice \\[VUID-vkGetRandROutputDisplayEXT-physicalDevice-parameter\\]"); 12785db71995Sopenharmony_ci} 12795db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT 12805db71995Sopenharmony_ci 12815db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_WIN32_KHR) 12825db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevSurfacePresentModes2EXT) { 12835db71995Sopenharmony_ci FrameworkEnvironment env{}; 12845db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 12855db71995Sopenharmony_ci 12865db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 12875db71995Sopenharmony_ci instance.CheckCreate(); 12885db71995Sopenharmony_ci 12895db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 12905db71995Sopenharmony_ci VkPhysicalDeviceSurfaceInfo2KHR phys_dev_surf_info = {}; 12915db71995Sopenharmony_ci phys_dev_surf_info.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR; 12925db71995Sopenharmony_ci phys_dev_surf_info.pNext = nullptr; 12935db71995Sopenharmony_ci uint32_t count = 0; 12945db71995Sopenharmony_ci PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT pfn = instance.load("vkGetPhysicalDeviceSurfacePresentModes2EXT"); 12955db71995Sopenharmony_ci ASSERT_NE(pfn, nullptr); 12965db71995Sopenharmony_ci ASSERT_DEATH(pfn(bad_physical_dev, &phys_dev_surf_info, &count, nullptr), 12975db71995Sopenharmony_ci "vkGetPhysicalDeviceSurfacePresentModes2EXT: Invalid physicalDevice " 12985db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-physicalDevice-parameter\\]"); 12995db71995Sopenharmony_ci} 13005db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_WIN32_KHR 13015db71995Sopenharmony_ci 13025db71995Sopenharmony_ciTEST(LoaderHandleValidTests, BadPhysDevGetPhysDevToolPropertiesEXT) { 13035db71995Sopenharmony_ci FrameworkEnvironment env{}; 13045db71995Sopenharmony_ci auto instance = setup_BadPhysDev_env(env, {}); 13055db71995Sopenharmony_ci 13065db71995Sopenharmony_ci auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>(); 13075db71995Sopenharmony_ci PFN_vkGetPhysicalDeviceToolPropertiesEXT pfn = instance.load("vkGetPhysicalDeviceToolPropertiesEXT"); 13085db71995Sopenharmony_ci ASSERT_NE(pfn, nullptr); 13095db71995Sopenharmony_ci uint32_t count = 0; 13105db71995Sopenharmony_ci ASSERT_DEATH(pfn(bad_physical_dev, &count, nullptr), 13115db71995Sopenharmony_ci "vkGetPhysicalDeviceToolPropertiesEXT: Invalid physicalDevice " 13125db71995Sopenharmony_ci "\\[VUID-vkGetPhysicalDeviceToolPropertiesEXT-physicalDevice-parameter\\]"); 13135db71995Sopenharmony_ci} 13145db71995Sopenharmony_ci 13155db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_ANDROID_KHR) 13165db71995Sopenharmony_ciTEST(LoaderHandleValidTests, VerifyHandleWrappingAndroidSurface) { 13175db71995Sopenharmony_ci FrameworkEnvironment env{}; 13185db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 13195db71995Sopenharmony_ci 13205db71995Sopenharmony_ci const char* wrap_objects_name = "WrapObjectsLayer"; 13215db71995Sopenharmony_ci env.add_explicit_layer(ManifestLayer{}.add_layer( 13225db71995Sopenharmony_ci ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)), 13235db71995Sopenharmony_ci "wrap_objects_layer.json"); 13245db71995Sopenharmony_ci 13255db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 13265db71995Sopenharmony_ci instance.create_info.setup_WSI(); 13275db71995Sopenharmony_ci instance.create_info.add_layer(wrap_objects_name); 13285db71995Sopenharmony_ci instance.CheckCreate(); 13295db71995Sopenharmony_ci 13305db71995Sopenharmony_ci VkAndroidSurfaceCreateInfoKHR surf_create_info = {}; 13315db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR; 13325db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 13335db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 13345db71995Sopenharmony_ci PFN_vkCreateAndroidSurfaceKHR pfn_CreateSurface = instance.load("vkCreateAndroidSurfaceKHR"); 13355db71995Sopenharmony_ci ASSERT_NE(pfn_CreateSurface, nullptr); 13365db71995Sopenharmony_ci PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR"); 13375db71995Sopenharmony_ci ASSERT_NE(pfn_DestroySurface, nullptr); 13385db71995Sopenharmony_ci ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface)); 13395db71995Sopenharmony_ci pfn_DestroySurface(instance, created_surface, nullptr); 13405db71995Sopenharmony_ci} 13415db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_ANDROID_KHR 13425db71995Sopenharmony_ci 13435db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_DIRECTFB_EXT) 13445db71995Sopenharmony_ciTEST(LoaderHandleValidTests, VerifyHandleWrappingDirectFBSurf) { 13455db71995Sopenharmony_ci FrameworkEnvironment env{}; 13465db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 13475db71995Sopenharmony_ci 13485db71995Sopenharmony_ci const char* wrap_objects_name = "WrapObjectsLayer"; 13495db71995Sopenharmony_ci env.add_explicit_layer(ManifestLayer{}.add_layer( 13505db71995Sopenharmony_ci ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)), 13515db71995Sopenharmony_ci "wrap_objects_layer.json"); 13525db71995Sopenharmony_ci 13535db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 13545db71995Sopenharmony_ci instance.create_info.setup_WSI(); 13555db71995Sopenharmony_ci instance.create_info.add_layer(wrap_objects_name); 13565db71995Sopenharmony_ci instance.CheckCreate(); 13575db71995Sopenharmony_ci 13585db71995Sopenharmony_ci VkDirectFBSurfaceCreateInfoEXT surf_create_info = {}; 13595db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT; 13605db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 13615db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 13625db71995Sopenharmony_ci PFN_vkCreateDirectFBSurfaceEXT pfn_CreateSurface = instance.load("vkCreateDirectFBSurfaceEXT"); 13635db71995Sopenharmony_ci ASSERT_NE(pfn_CreateSurface, nullptr); 13645db71995Sopenharmony_ci PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR"); 13655db71995Sopenharmony_ci ASSERT_NE(pfn_DestroySurface, nullptr); 13665db71995Sopenharmony_ci ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface)); 13675db71995Sopenharmony_ci pfn_DestroySurface(instance, created_surface, nullptr); 13685db71995Sopenharmony_ci} 13695db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_DIRECTFB_EXT 13705db71995Sopenharmony_ci 13715db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_FUCHSIA) 13725db71995Sopenharmony_ciTEST(LoaderHandleValidTests, VerifyHandleWrappingFuchsiaSurf) { 13735db71995Sopenharmony_ci FrameworkEnvironment env{}; 13745db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 13755db71995Sopenharmony_ci 13765db71995Sopenharmony_ci const char* wrap_objects_name = "WrapObjectsLayer"; 13775db71995Sopenharmony_ci env.add_explicit_layer(ManifestLayer{}.add_layer( 13785db71995Sopenharmony_ci ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)), 13795db71995Sopenharmony_ci "wrap_objects_layer.json"); 13805db71995Sopenharmony_ci 13815db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 13825db71995Sopenharmony_ci instance.create_info.setup_WSI(); 13835db71995Sopenharmony_ci instance.create_info.add_layer(wrap_objects_name); 13845db71995Sopenharmony_ci instance.CheckCreate(); 13855db71995Sopenharmony_ci 13865db71995Sopenharmony_ci VkImagePipeSurfaceCreateInfoFUCHSIA surf_create_info = {}; 13875db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA; 13885db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 13895db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 13905db71995Sopenharmony_ci PFN_vkCreateImagePipeSurfaceFUCHSIA pfn_CreateSurface = instance.load("vkCreateImagePipeSurfaceFUCHSIA"); 13915db71995Sopenharmony_ci ASSERT_NE(pfn_CreateSurface, nullptr); 13925db71995Sopenharmony_ci PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR"); 13935db71995Sopenharmony_ci ASSERT_NE(pfn_DestroySurface, nullptr); 13945db71995Sopenharmony_ci ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface)); 13955db71995Sopenharmony_ci pfn_DestroySurface(instance, created_surface, nullptr); 13965db71995Sopenharmony_ci} 13975db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_FUCHSIA 13985db71995Sopenharmony_ci 13995db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_GGP) 14005db71995Sopenharmony_ciTEST(LoaderHandleValidTests, VerifyHandleWrappingGGPSurf) { 14015db71995Sopenharmony_ci FrameworkEnvironment env{}; 14025db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 14035db71995Sopenharmony_ci 14045db71995Sopenharmony_ci const char* wrap_objects_name = "WrapObjectsLayer"; 14055db71995Sopenharmony_ci env.add_explicit_layer(ManifestLayer{}.add_layer( 14065db71995Sopenharmony_ci ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)), 14075db71995Sopenharmony_ci "wrap_objects_layer.json"); 14085db71995Sopenharmony_ci 14095db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 14105db71995Sopenharmony_ci instance.create_info.setup_WSI(); 14115db71995Sopenharmony_ci instance.create_info.add_layer(wrap_objects_name); 14125db71995Sopenharmony_ci instance.CheckCreate(); 14135db71995Sopenharmony_ci 14145db71995Sopenharmony_ci VkStreamDescriptorSurfaceCreateInfoGGP surf_create_info = {}; 14155db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP; 14165db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 14175db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 14185db71995Sopenharmony_ci PFN_vkCreateStreamDescriptorSurfaceGGP pfn_CreateSurface = instance.load("vkCreateStreamDescriptorSurfaceGGP"); 14195db71995Sopenharmony_ci ASSERT_NE(pfn_CreateSurface, nullptr); 14205db71995Sopenharmony_ci PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR"); 14215db71995Sopenharmony_ci ASSERT_NE(pfn_DestroySurface, nullptr); 14225db71995Sopenharmony_ci ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface)); 14235db71995Sopenharmony_ci pfn_DestroySurface(instance, created_surface, nullptr); 14245db71995Sopenharmony_ci} 14255db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_GGP 14265db71995Sopenharmony_ci 14275db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_IOS_MVK) 14285db71995Sopenharmony_ciTEST(LoaderHandleValidTests, VerifyHandleWrappingIOSSurf) { 14295db71995Sopenharmony_ci FrameworkEnvironment env{}; 14305db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 14315db71995Sopenharmony_ci 14325db71995Sopenharmony_ci const char* wrap_objects_name = "WrapObjectsLayer"; 14335db71995Sopenharmony_ci env.add_explicit_layer(ManifestLayer{}.add_layer( 14345db71995Sopenharmony_ci ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)), 14355db71995Sopenharmony_ci "wrap_objects_layer.json"); 14365db71995Sopenharmony_ci 14375db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 14385db71995Sopenharmony_ci instance.create_info.setup_WSI(); 14395db71995Sopenharmony_ci instance.create_info.add_layer(wrap_objects_name); 14405db71995Sopenharmony_ci instance.CheckCreate(); 14415db71995Sopenharmony_ci 14425db71995Sopenharmony_ci VkIOSSurfaceCreateInfoMVK surf_create_info = {}; 14435db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK; 14445db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 14455db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 14465db71995Sopenharmony_ci PFN_vkCreateIOSSurfaceMVK pfn_CreateSurface = instance.load("vkCreateIOSSurfaceMVK"); 14475db71995Sopenharmony_ci ASSERT_NE(pfn_CreateSurface, nullptr); 14485db71995Sopenharmony_ci PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR"); 14495db71995Sopenharmony_ci ASSERT_NE(pfn_DestroySurface, nullptr); 14505db71995Sopenharmony_ci ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface)); 14515db71995Sopenharmony_ci pfn_DestroySurface(instance, created_surface, nullptr); 14525db71995Sopenharmony_ci} 14535db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_IOS_MVK 14545db71995Sopenharmony_ci 14555db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_MACOS_MVK) 14565db71995Sopenharmony_ciTEST(LoaderHandleValidTests, VerifyHandleWrappingMacOSSurf) { 14575db71995Sopenharmony_ci FrameworkEnvironment env{}; 14585db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI("VK_USE_PLATFORM_MACOS_MVK"); 14595db71995Sopenharmony_ci 14605db71995Sopenharmony_ci const char* wrap_objects_name = "WrapObjectsLayer"; 14615db71995Sopenharmony_ci env.add_explicit_layer(ManifestLayer{}.add_layer( 14625db71995Sopenharmony_ci ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)), 14635db71995Sopenharmony_ci "wrap_objects_layer.json"); 14645db71995Sopenharmony_ci 14655db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 14665db71995Sopenharmony_ci instance.create_info.setup_WSI("VK_USE_PLATFORM_MACOS_MVK"); 14675db71995Sopenharmony_ci instance.create_info.add_layer(wrap_objects_name); 14685db71995Sopenharmony_ci instance.CheckCreate(); 14695db71995Sopenharmony_ci 14705db71995Sopenharmony_ci VkMacOSSurfaceCreateInfoMVK surf_create_info = {}; 14715db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK; 14725db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 14735db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 14745db71995Sopenharmony_ci PFN_vkCreateMacOSSurfaceMVK pfn_CreateSurface = instance.load("vkCreateMacOSSurfaceMVK"); 14755db71995Sopenharmony_ci ASSERT_NE(pfn_CreateSurface, nullptr); 14765db71995Sopenharmony_ci PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR"); 14775db71995Sopenharmony_ci ASSERT_NE(pfn_DestroySurface, nullptr); 14785db71995Sopenharmony_ci ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface)); 14795db71995Sopenharmony_ci pfn_DestroySurface(instance, created_surface, nullptr); 14805db71995Sopenharmony_ci} 14815db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_MACOS_MVK 14825db71995Sopenharmony_ci 14835db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_METAL_EXT) 14845db71995Sopenharmony_ciTEST(LoaderHandleValidTests, VerifyHandleWrappingMetalSurf) { 14855db71995Sopenharmony_ci FrameworkEnvironment env{}; 14865db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI("VK_USE_PLATFORM_METAL_EXT"); 14875db71995Sopenharmony_ci 14885db71995Sopenharmony_ci const char* wrap_objects_name = "WrapObjectsLayer"; 14895db71995Sopenharmony_ci env.add_explicit_layer(ManifestLayer{}.add_layer( 14905db71995Sopenharmony_ci ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)), 14915db71995Sopenharmony_ci "wrap_objects_layer.json"); 14925db71995Sopenharmony_ci 14935db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 14945db71995Sopenharmony_ci instance.create_info.setup_WSI("VK_USE_PLATFORM_METAL_EXT"); 14955db71995Sopenharmony_ci instance.create_info.add_layer(wrap_objects_name); 14965db71995Sopenharmony_ci instance.CheckCreate(); 14975db71995Sopenharmony_ci 14985db71995Sopenharmony_ci VkMetalSurfaceCreateInfoEXT surf_create_info = {}; 14995db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT; 15005db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 15015db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 15025db71995Sopenharmony_ci PFN_vkCreateMetalSurfaceEXT pfn_CreateSurface = instance.load("vkCreateMetalSurfaceEXT"); 15035db71995Sopenharmony_ci ASSERT_NE(pfn_CreateSurface, nullptr); 15045db71995Sopenharmony_ci PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR"); 15055db71995Sopenharmony_ci ASSERT_NE(pfn_DestroySurface, nullptr); 15065db71995Sopenharmony_ci ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface)); 15075db71995Sopenharmony_ci pfn_DestroySurface(instance, created_surface, nullptr); 15085db71995Sopenharmony_ci} 15095db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_METAL_EXT 15105db71995Sopenharmony_ci 15115db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_SCREEN_QNX) 15125db71995Sopenharmony_ciTEST(LoaderHandleValidTests, VerifyHandleWrappingQNXSurf) { 15135db71995Sopenharmony_ci FrameworkEnvironment env{}; 15145db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 15155db71995Sopenharmony_ci 15165db71995Sopenharmony_ci const char* wrap_objects_name = "WrapObjectsLayer"; 15175db71995Sopenharmony_ci env.add_explicit_layer(ManifestLayer{}.add_layer( 15185db71995Sopenharmony_ci ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)), 15195db71995Sopenharmony_ci "wrap_objects_layer.json"); 15205db71995Sopenharmony_ci 15215db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 15225db71995Sopenharmony_ci instance.create_info.setup_WSI(); 15235db71995Sopenharmony_ci instance.create_info.add_layer(wrap_objects_name); 15245db71995Sopenharmony_ci instance.CheckCreate(); 15255db71995Sopenharmony_ci 15265db71995Sopenharmony_ci VkScreenSurfaceCreateInfoQNX surf_create_info = {}; 15275db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX; 15285db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 15295db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 15305db71995Sopenharmony_ci PFN_vkCreateScreenSurfaceQNX pfn_CreateSurface = instance.load("vkCreateScreenSurfaceQNX"); 15315db71995Sopenharmony_ci ASSERT_NE(pfn_CreateSurface, nullptr); 15325db71995Sopenharmony_ci PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR"); 15335db71995Sopenharmony_ci ASSERT_NE(pfn_DestroySurface, nullptr); 15345db71995Sopenharmony_ci ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface)); 15355db71995Sopenharmony_ci pfn_DestroySurface(instance, created_surface, nullptr); 15365db71995Sopenharmony_ci} 15375db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_SCREEN_QNX 15385db71995Sopenharmony_ci 15395db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_VI_NN) 15405db71995Sopenharmony_ciTEST(LoaderHandleValidTests, VerifyHandleWrappingViNNSurf) { 15415db71995Sopenharmony_ci FrameworkEnvironment env{}; 15425db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 15435db71995Sopenharmony_ci 15445db71995Sopenharmony_ci const char* wrap_objects_name = "WrapObjectsLayer"; 15455db71995Sopenharmony_ci env.add_explicit_layer(ManifestLayer{}.add_layer( 15465db71995Sopenharmony_ci ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)), 15475db71995Sopenharmony_ci "wrap_objects_layer.json"); 15485db71995Sopenharmony_ci 15495db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 15505db71995Sopenharmony_ci instance.create_info.setup_WSI(); 15515db71995Sopenharmony_ci instance.create_info.add_layer(wrap_objects_name); 15525db71995Sopenharmony_ci instance.CheckCreate(); 15535db71995Sopenharmony_ci 15545db71995Sopenharmony_ci VkViSurfaceCreateInfoNN surf_create_info = {}; 15555db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN; 15565db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 15575db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 15585db71995Sopenharmony_ci PFN_vkCreateViSurfaceNN pfn_CreateSurface = instance.load("vkCreateViSurfaceNN"); 15595db71995Sopenharmony_ci ASSERT_NE(pfn_CreateSurface, nullptr); 15605db71995Sopenharmony_ci PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR"); 15615db71995Sopenharmony_ci ASSERT_NE(pfn_DestroySurface, nullptr); 15625db71995Sopenharmony_ci ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface)); 15635db71995Sopenharmony_ci pfn_DestroySurface(instance, created_surface, nullptr); 15645db71995Sopenharmony_ci} 15655db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_VI_NN 15665db71995Sopenharmony_ci 15675db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_WAYLAND_KHR) 15685db71995Sopenharmony_ciTEST(LoaderHandleValidTests, VerifyHandleWrappingWaylandSurf) { 15695db71995Sopenharmony_ci FrameworkEnvironment env{}; 15705db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI("VK_USE_PLATFORM_WAYLAND_KHR"); 15715db71995Sopenharmony_ci 15725db71995Sopenharmony_ci const char* wrap_objects_name = "WrapObjectsLayer"; 15735db71995Sopenharmony_ci env.add_explicit_layer(ManifestLayer{}.add_layer( 15745db71995Sopenharmony_ci ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)), 15755db71995Sopenharmony_ci "wrap_objects_layer.json"); 15765db71995Sopenharmony_ci 15775db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 15785db71995Sopenharmony_ci instance.create_info.setup_WSI("VK_USE_PLATFORM_WAYLAND_KHR"); 15795db71995Sopenharmony_ci instance.create_info.add_layer(wrap_objects_name); 15805db71995Sopenharmony_ci instance.CheckCreate(); 15815db71995Sopenharmony_ci 15825db71995Sopenharmony_ci VkWaylandSurfaceCreateInfoKHR surf_create_info = {}; 15835db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR; 15845db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 15855db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 15865db71995Sopenharmony_ci PFN_vkCreateWaylandSurfaceKHR pfn_CreateSurface = instance.load("vkCreateWaylandSurfaceKHR"); 15875db71995Sopenharmony_ci ASSERT_NE(pfn_CreateSurface, nullptr); 15885db71995Sopenharmony_ci PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR"); 15895db71995Sopenharmony_ci ASSERT_NE(pfn_DestroySurface, nullptr); 15905db71995Sopenharmony_ci ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface)); 15915db71995Sopenharmony_ci pfn_DestroySurface(instance, created_surface, nullptr); 15925db71995Sopenharmony_ci} 15935db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_WAYLAND_KHR 15945db71995Sopenharmony_ci 15955db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_WIN32_KHR) 15965db71995Sopenharmony_ciTEST(LoaderHandleValidTests, VerifyHandleWrappingWin32Surf) { 15975db71995Sopenharmony_ci FrameworkEnvironment env{}; 15985db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 15995db71995Sopenharmony_ci 16005db71995Sopenharmony_ci const char* wrap_objects_name = "WrapObjectsLayer"; 16015db71995Sopenharmony_ci env.add_explicit_layer(ManifestLayer{}.add_layer( 16025db71995Sopenharmony_ci ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)), 16035db71995Sopenharmony_ci "wrap_objects_layer.json"); 16045db71995Sopenharmony_ci 16055db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 16065db71995Sopenharmony_ci instance.create_info.setup_WSI(); 16075db71995Sopenharmony_ci instance.create_info.add_layer(wrap_objects_name); 16085db71995Sopenharmony_ci instance.CheckCreate(); 16095db71995Sopenharmony_ci 16105db71995Sopenharmony_ci VkWin32SurfaceCreateInfoKHR surf_create_info = {}; 16115db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR; 16125db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 16135db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 16145db71995Sopenharmony_ci PFN_vkCreateWin32SurfaceKHR pfn_CreateSurface = instance.load("vkCreateWin32SurfaceKHR"); 16155db71995Sopenharmony_ci ASSERT_NE(pfn_CreateSurface, nullptr); 16165db71995Sopenharmony_ci PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR"); 16175db71995Sopenharmony_ci ASSERT_NE(pfn_DestroySurface, nullptr); 16185db71995Sopenharmony_ci ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface)); 16195db71995Sopenharmony_ci pfn_DestroySurface(instance, created_surface, nullptr); 16205db71995Sopenharmony_ci} 16215db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_WIN32_KHR 16225db71995Sopenharmony_ci 16235db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_XCB_KHR) 16245db71995Sopenharmony_ciTEST(LoaderHandleValidTests, VerifyHandleWrappingXCBSurf) { 16255db71995Sopenharmony_ci FrameworkEnvironment env{}; 16265db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI(); 16275db71995Sopenharmony_ci 16285db71995Sopenharmony_ci const char* wrap_objects_name = "WrapObjectsLayer"; 16295db71995Sopenharmony_ci env.add_explicit_layer(ManifestLayer{}.add_layer( 16305db71995Sopenharmony_ci ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)), 16315db71995Sopenharmony_ci "wrap_objects_layer.json"); 16325db71995Sopenharmony_ci 16335db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 16345db71995Sopenharmony_ci instance.create_info.setup_WSI(); 16355db71995Sopenharmony_ci instance.create_info.add_layer(wrap_objects_name); 16365db71995Sopenharmony_ci instance.CheckCreate(); 16375db71995Sopenharmony_ci 16385db71995Sopenharmony_ci VkXcbSurfaceCreateInfoKHR surf_create_info = {}; 16395db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR; 16405db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 16415db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 16425db71995Sopenharmony_ci PFN_vkCreateXcbSurfaceKHR pfn_CreateSurface = instance.load("vkCreateXcbSurfaceKHR"); 16435db71995Sopenharmony_ci ASSERT_NE(pfn_CreateSurface, nullptr); 16445db71995Sopenharmony_ci PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR"); 16455db71995Sopenharmony_ci ASSERT_NE(pfn_DestroySurface, nullptr); 16465db71995Sopenharmony_ci ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface)); 16475db71995Sopenharmony_ci pfn_DestroySurface(instance, created_surface, nullptr); 16485db71995Sopenharmony_ci} 16495db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_XCB_KHR 16505db71995Sopenharmony_ci 16515db71995Sopenharmony_ci#if defined(VK_USE_PLATFORM_XLIB_KHR) 16525db71995Sopenharmony_ciTEST(LoaderHandleValidTests, VerifyHandleWrappingXlibSurf) { 16535db71995Sopenharmony_ci FrameworkEnvironment env{}; 16545db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).setup_WSI("VK_USE_PLATFORM_XLIB_KHR"); 16555db71995Sopenharmony_ci 16565db71995Sopenharmony_ci const char* wrap_objects_name = "WrapObjectsLayer"; 16575db71995Sopenharmony_ci env.add_explicit_layer(ManifestLayer{}.add_layer( 16585db71995Sopenharmony_ci ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)), 16595db71995Sopenharmony_ci "wrap_objects_layer.json"); 16605db71995Sopenharmony_ci 16615db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 16625db71995Sopenharmony_ci instance.create_info.setup_WSI("VK_USE_PLATFORM_XLIB_KHR"); 16635db71995Sopenharmony_ci // 16645db71995Sopenharmony_ci for (auto& ext : instance.create_info.enabled_extensions) { 16655db71995Sopenharmony_ci std::cout << ext << "\n"; 16665db71995Sopenharmony_ci } 16675db71995Sopenharmony_ci instance.create_info.add_layer(wrap_objects_name); 16685db71995Sopenharmony_ci instance.CheckCreate(); 16695db71995Sopenharmony_ci 16705db71995Sopenharmony_ci VkXlibSurfaceCreateInfoKHR surf_create_info = {}; 16715db71995Sopenharmony_ci surf_create_info.sType = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR; 16725db71995Sopenharmony_ci surf_create_info.pNext = nullptr; 16735db71995Sopenharmony_ci VkSurfaceKHR created_surface = VK_NULL_HANDLE; 16745db71995Sopenharmony_ci PFN_vkCreateXlibSurfaceKHR pfn_CreateSurface = instance.load("vkCreateXlibSurfaceKHR"); 16755db71995Sopenharmony_ci ASSERT_NE(pfn_CreateSurface, nullptr); 16765db71995Sopenharmony_ci PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR"); 16775db71995Sopenharmony_ci ASSERT_NE(pfn_DestroySurface, nullptr); 16785db71995Sopenharmony_ci ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface)); 16795db71995Sopenharmony_ci pfn_DestroySurface(instance, created_surface, nullptr); 16805db71995Sopenharmony_ci} 16815db71995Sopenharmony_ci#endif // VK_USE_PLATFORM_XLIB_KHR 16825db71995Sopenharmony_ci 16835db71995Sopenharmony_ciVKAPI_ATTR VkBool32 VKAPI_CALL JunkDebugUtilsCallback([[maybe_unused]] VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, 16845db71995Sopenharmony_ci [[maybe_unused]] VkDebugUtilsMessageTypeFlagsEXT messageTypes, 16855db71995Sopenharmony_ci [[maybe_unused]] const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData, 16865db71995Sopenharmony_ci [[maybe_unused]] void* pUserData) { 16875db71995Sopenharmony_ci // This is just a stub callback in case the loader or any other layer triggers it. 16885db71995Sopenharmony_ci return VK_FALSE; 16895db71995Sopenharmony_ci} 16905db71995Sopenharmony_ci 16915db71995Sopenharmony_ciTEST(LoaderHandleValidTests, VerifyHandleWrappingDebugUtilsMessenger) { 16925db71995Sopenharmony_ci FrameworkEnvironment env{}; 16935db71995Sopenharmony_ci Extension ext{"VK_EXT_debug_utils"}; 16945db71995Sopenharmony_ci env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).add_instance_extensions({ext}); 16955db71995Sopenharmony_ci 16965db71995Sopenharmony_ci const char* wrap_objects_name = "WrapObjectsLayer"; 16975db71995Sopenharmony_ci env.add_explicit_layer(ManifestLayer{}.add_layer( 16985db71995Sopenharmony_ci ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)), 16995db71995Sopenharmony_ci "wrap_objects_layer.json"); 17005db71995Sopenharmony_ci 17015db71995Sopenharmony_ci InstWrapper instance(env.vulkan_functions); 17025db71995Sopenharmony_ci instance.create_info.add_extension("VK_EXT_debug_utils"); 17035db71995Sopenharmony_ci instance.create_info.add_layer(wrap_objects_name); 17045db71995Sopenharmony_ci instance.CheckCreate(); 17055db71995Sopenharmony_ci 17065db71995Sopenharmony_ci VkDebugUtilsMessengerCreateInfoEXT debug_messenger_create_info = {}; 17075db71995Sopenharmony_ci debug_messenger_create_info.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT; 17085db71995Sopenharmony_ci debug_messenger_create_info.pNext = nullptr; 17095db71995Sopenharmony_ci debug_messenger_create_info.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT; 17105db71995Sopenharmony_ci debug_messenger_create_info.messageType = 17115db71995Sopenharmony_ci VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT; 17125db71995Sopenharmony_ci debug_messenger_create_info.pfnUserCallback = reinterpret_cast<PFN_vkDebugUtilsMessengerCallbackEXT>(JunkDebugUtilsCallback); 17135db71995Sopenharmony_ci VkDebugUtilsMessengerEXT messenger = VK_NULL_HANDLE; 17145db71995Sopenharmony_ci PFN_vkCreateDebugUtilsMessengerEXT pfn_CreateMessenger = instance.load("vkCreateDebugUtilsMessengerEXT"); 17155db71995Sopenharmony_ci ASSERT_NE(pfn_CreateMessenger, nullptr); 17165db71995Sopenharmony_ci PFN_vkDestroyDebugUtilsMessengerEXT pfn_DestroyMessenger = instance.load("vkDestroyDebugUtilsMessengerEXT"); 17175db71995Sopenharmony_ci ASSERT_NE(pfn_DestroyMessenger, nullptr); 17185db71995Sopenharmony_ci ASSERT_EQ(VK_SUCCESS, pfn_CreateMessenger(instance, &debug_messenger_create_info, nullptr, &messenger)); 17195db71995Sopenharmony_ci pfn_DestroyMessenger(instance, messenger, nullptr); 17205db71995Sopenharmony_ci} 1721