mirror of
https://github.com/openharmony/third_party_vulkan-loader.git
synced 2026-07-21 04:25:25 -04:00
e23d3208d3
Many tests were using the V6 TestICD, which means that it exports the EnumerateAdapterPhysicalDevices. The loader then only looks for devices using that functionality and if the test didn't set it up, the driver won't have its devices found. Also: * Cleaned up handle_validation_tests * Added WSI setup helpers, which put all the setup code for WSI in one place * Created a to/from_nondispatch_handle function for TestICD, probably should be in a more general location
2063 lines
94 KiB
C++
2063 lines
94 KiB
C++
/*
|
|
* Copyright (c) 2021-2022 The Khronos Group Inc.
|
|
* Copyright (c) 2021-2022 Valve Corporation
|
|
* Copyright (c) 2021-2022 LunarG, Inc.
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
* of this software and/or associated documentation files (the "Materials"), to
|
|
* deal in the Materials without restriction, including without limitation the
|
|
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
* sell copies of the Materials, and to permit persons to whom the Materials are
|
|
* furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice(s) and this permission notice shall be included in
|
|
* all copies or substantial portions of the Materials.
|
|
*
|
|
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
*
|
|
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
|
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE
|
|
* USE OR OTHER DEALINGS IN THE MATERIALS.
|
|
*
|
|
* Author(s): Charles Giessen <charles@lunarg.com>
|
|
* Mark Young <marky@lunarg.com>
|
|
*/
|
|
|
|
#include "test_environment.h"
|
|
|
|
// ---- Invalid Instance tests
|
|
|
|
struct BadData {
|
|
uint64_t bad_array[3] = {0x123456789AB, 0x23456789AB1, 0x9876543210AB};
|
|
};
|
|
template <typename T>
|
|
T get_bad_handle() {
|
|
static BadData my_bad_data;
|
|
return reinterpret_cast<T>(static_cast<void*>(&my_bad_data));
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadInstEnumPhysDevices) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_instance = get_bad_handle<VkInstance>();
|
|
uint32_t returned_physical_count = 0;
|
|
|
|
ASSERT_DEATH(env.vulkan_functions.vkEnumeratePhysicalDevices(bad_instance, &returned_physical_count, nullptr),
|
|
"vkEnumeratePhysicalDevices: Invalid instance \\[VUID-vkEnumeratePhysicalDevices-instance-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadInstGetInstProcAddr) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_instance = get_bad_handle<VkInstance>();
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetInstanceProcAddr(bad_instance, "vkGetBufferDeviceAddress"),
|
|
"vkGetInstanceProcAddr: Invalid instance \\[VUID-vkGetInstanceProcAddr-instance-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadInstDestroyInstance) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_instance = get_bad_handle<VkInstance>();
|
|
|
|
ASSERT_DEATH(env.vulkan_functions.vkDestroyInstance(bad_instance, nullptr),
|
|
"vkDestroyInstance: Invalid instance \\[VUID-vkDestroyInstance-instance-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadInstDestroySurface) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_EXT_headless_surface"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_KHR_surface");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_instance = get_bad_handle<VkInstance>();
|
|
|
|
ASSERT_DEATH(env.vulkan_functions.vkDestroySurfaceKHR(bad_instance, VK_NULL_HANDLE, nullptr),
|
|
"vkDestroySurfaceKHR: Invalid instance \\[VUID-vkDestroySurfaceKHR-instance-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadInstCreateHeadlessSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_EXT_headless_surface"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_KHR_surface");
|
|
instance.create_info.add_extension("VK_EXT_headless_surface");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_instance = get_bad_handle<VkInstance>();
|
|
|
|
VkHeadlessSurfaceCreateInfoEXT surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
ASSERT_DEATH(env.vulkan_functions.vkCreateHeadlessSurfaceEXT(bad_instance, &surf_create_info, nullptr, &created_surface),
|
|
"vkCreateHeadlessSurfaceEXT: Invalid instance \\[VUID-vkCreateHeadlessSurfaceEXT-instance-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadInstCreateDisplayPlaneSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_KHR_display"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_KHR_surface");
|
|
instance.create_info.add_extension("VK_KHR_display");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_instance = get_bad_handle<VkInstance>();
|
|
|
|
VkDisplaySurfaceCreateInfoKHR surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
ASSERT_DEATH(env.vulkan_functions.vkCreateDisplayPlaneSurfaceKHR(bad_instance, &surf_create_info, nullptr, &created_surface),
|
|
"vkCreateDisplayPlaneSurfaceKHR: Invalid instance \\[VUID-vkCreateDisplayPlaneSurfaceKHR-instance-parameter\\]");
|
|
}
|
|
|
|
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
|
TEST(LoaderHandleValidTests, BadInstCreateAndroidSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_instance = get_bad_handle<VkInstance>();
|
|
|
|
VkAndroidSurfaceCreateInfoKHR surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
ASSERT_DEATH(env.vulkan_functions.vkCreateAndroidSurfaceKHR(bad_instance, &surf_create_info, nullptr, &created_surface),
|
|
"vkCreateAndroidSurfaceKHR: Invalid instance \\[VUID-vkCreateAndroidSurfaceKHR-instance-parameter\\]");
|
|
}
|
|
#endif // VK_USE_PLATFORM_ANDROID_KHR
|
|
|
|
#ifdef VK_USE_PLATFORM_DIRECTFB_EXT
|
|
TEST(LoaderHandleValidTests, BadInstCreateDirectFBSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_instance = get_bad_handle<VkInstance>();
|
|
|
|
VkDirectFBSurfaceCreateInfoEXT surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
ASSERT_DEATH(env.vulkan_functions.vkCreateDirectFBSurfaceEXT(bad_instance, &surf_create_info, nullptr, &created_surface),
|
|
"vkCreateDirectFBSurfaceEXT: Invalid instance \\[VUID-vkCreateDirectFBSurfaceEXT-instance-parameter\\]");
|
|
}
|
|
#endif // VK_USE_PLATFORM_DIRECTFB_EXT
|
|
|
|
#ifdef VK_USE_PLATFORM_FUCHSIA
|
|
TEST(LoaderHandleValidTests, BadInstCreateFuchsiaSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_instance = get_bad_handle<VkInstance>();
|
|
|
|
VkImagePipeSurfaceCreateInfoFUCHSIA surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
ASSERT_DEATH(env.vulkan_functions.vkCreateImagePipeSurfaceFUCHSIA(bad_instance, &surf_create_info, nullptr, &created_surface),
|
|
"vkCreateImagePipeSurfaceFUCHSIA: Invalid instance \\[VUID-vkCreateImagePipeSurfaceFUCHSIA-instance-parameter\\]");
|
|
}
|
|
#endif // VK_USE_PLATFORM_FUCHSIA
|
|
|
|
#ifdef VK_USE_PLATFORM_GGP
|
|
TEST(LoaderHandleValidTests, BadInstCreateGGPSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_instance = get_bad_handle<VkInstance>();
|
|
|
|
VkStreamDescriptorSurfaceCreateInfoGGP surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
ASSERT_DEATH(
|
|
env.vulkan_functions.vkCreateStreamDescriptorSurfaceGGP(bad_instance, &surf_create_info, nullptr, &created_surface),
|
|
"vkCreateStreamDescriptorSurfaceGGP: Invalid instance \\[VUID-vkCreateStreamDescriptorSurfaceGGP-instance-parameter\\]");
|
|
}
|
|
#endif // VK_USE_PLATFORM_GGP
|
|
|
|
#ifdef VK_USE_PLATFORM_IOS_MVK
|
|
TEST(LoaderHandleValidTests, BadInstCreateIOSSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_instance = get_bad_handle<VkInstance>();
|
|
|
|
VkIOSSurfaceCreateInfoMVK surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
ASSERT_DEATH(env.vulkan_functions.vkCreateIOSSurfaceMVK(bad_instance, &surf_create_info, nullptr, &created_surface),
|
|
"vkCreateIOSSurfaceMVK: Invalid instance \\[VUID-vkCreateIOSSurfaceMVK-instance-parameter\\]");
|
|
}
|
|
#endif // VK_USE_PLATFORM_IOS_MVK
|
|
|
|
#ifdef VK_USE_PLATFORM_MACOS_MVK
|
|
TEST(LoaderHandleValidTests, BadInstCreateMacOSSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_instance = get_bad_handle<VkInstance>();
|
|
|
|
VkMacOSSurfaceCreateInfoMVK surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
ASSERT_DEATH(env.vulkan_functions.vkCreateMacOSSurfaceMVK(bad_instance, &surf_create_info, nullptr, &created_surface),
|
|
"vkCreateMacOSSurfaceMVK: Invalid instance \\[VUID-vkCreateMacOSSurfaceMVK-instance-parameter\\]");
|
|
}
|
|
#endif // VK_USE_PLATFORM_MACOS_MVK
|
|
|
|
#if defined(VK_USE_PLATFORM_METAL_EXT)
|
|
TEST(LoaderHandleValidTests, BadInstCreateMetalSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_instance = get_bad_handle<VkInstance>();
|
|
|
|
VkMetalSurfaceCreateInfoEXT surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
ASSERT_DEATH(env.vulkan_functions.vkCreateMetalSurfaceEXT(bad_instance, &surf_create_info, nullptr, &created_surface),
|
|
"vkCreateMetalSurfaceEXT: Invalid instance \\[VUID-vkCreateMetalSurfaceEXT-instance-parameter\\]");
|
|
}
|
|
#endif // VK_USE_PLATFORM_METAL_EXT
|
|
|
|
#ifdef VK_USE_PLATFORM_SCREEN_QNX
|
|
TEST(LoaderHandleValidTests, BadInstCreateQNXSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_instance = get_bad_handle<VkInstance>();
|
|
|
|
VkScreenSurfaceCreateInfoQNX surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
ASSERT_DEATH(env.vulkan_functions.vkCreateScreenSurfaceQNX(bad_instance, &surf_create_info, nullptr, &created_surface),
|
|
"vkCreateScreenSurfaceQNX: Invalid instance \\[VUID-vkCreateScreenSurfaceQNX-instance-parameter\\]");
|
|
// TODO: Look for "invalid instance" in stderr log to make sure correct error is thrown
|
|
}
|
|
#endif // VK_USE_PLATFORM_SCREEN_QNX
|
|
|
|
#ifdef VK_USE_PLATFORM_VI_NN
|
|
TEST(LoaderHandleValidTests, BadInstCreateViNNSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_instance = get_bad_handle<VkInstance>();
|
|
|
|
VkViSurfaceCreateInfoNN surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
ASSERT_DEATH(env.vulkan_functions.vkCreateViSurfaceNN(bad_instance, &surf_create_info, nullptr, &created_surface),
|
|
"vkCreateViSurfaceNN: Invalid instance \\[VUID-vkCreateViSurfaceNN-instance-parameter\\]");
|
|
// TODO: Look for "invalid instance" in stderr log to make sure correct error is thrown
|
|
}
|
|
#endif // VK_USE_PLATFORM_VI_NN
|
|
|
|
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
|
TEST(LoaderHandleValidTests, BadInstCreateWaylandSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_instance = get_bad_handle<VkInstance>();
|
|
|
|
VkWaylandSurfaceCreateInfoKHR surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
ASSERT_DEATH(env.vulkan_functions.vkCreateWaylandSurfaceKHR(bad_instance, &surf_create_info, nullptr, &created_surface),
|
|
"vkCreateWaylandSurfaceKHR: Invalid instance \\[VUID-vkCreateWaylandSurfaceKHR-instance-parameter\\]");
|
|
// TODO: Look for "invalid instance" in stderr log to make sure correct error is thrown
|
|
}
|
|
#endif // VK_USE_PLATFORM_WAYLAND_KHR
|
|
|
|
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
TEST(LoaderHandleValidTests, BadInstCreateWin32Surf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_instance = get_bad_handle<VkInstance>();
|
|
|
|
VkWin32SurfaceCreateInfoKHR surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
ASSERT_DEATH(env.vulkan_functions.vkCreateWin32SurfaceKHR(bad_instance, &surf_create_info, nullptr, &created_surface),
|
|
"vkCreateWin32SurfaceKHR: Invalid instance \\[VUID-vkCreateWin32SurfaceKHR-instance-parameter\\]");
|
|
// TODO: Look for "invalid instance" in stderr log to make sure correct error is thrown
|
|
}
|
|
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
|
|
#ifdef VK_USE_PLATFORM_XCB_KHR
|
|
TEST(LoaderHandleValidTests, BadInstCreateXCBSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_instance = get_bad_handle<VkInstance>();
|
|
|
|
VkXcbSurfaceCreateInfoKHR surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
ASSERT_DEATH(env.vulkan_functions.vkCreateXcbSurfaceKHR(bad_instance, &surf_create_info, nullptr, &created_surface),
|
|
"vkCreateXcbSurfaceKHR: Invalid instance \\[VUID-vkCreateXcbSurfaceKHR-instance-parameter\\]");
|
|
// TODO: Look for "invalid instance" in stderr log to make sure correct error is thrown
|
|
}
|
|
#endif // VK_USE_PLATFORM_XCB_KHR
|
|
|
|
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
|
TEST(LoaderHandleValidTests, BadInstCreateXlibSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_instance = get_bad_handle<VkInstance>();
|
|
|
|
VkXlibSurfaceCreateInfoKHR surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
ASSERT_DEATH(env.vulkan_functions.vkCreateXlibSurfaceKHR(bad_instance, &surf_create_info, nullptr, &created_surface),
|
|
"vkCreateXlibSurfaceKHR: Invalid instance \\[VUID-vkCreateXlibSurfaceKHR-instance-parameter\\]");
|
|
// TODO: Look for "invalid instance" in stderr log to make sure correct error is thrown
|
|
}
|
|
#endif // VK_USE_PLATFORM_XLIB_KHR
|
|
|
|
// ---- Invalid Physical Device tests
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevFeature) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
env.get_test_icd().physical_devices.push_back({});
|
|
env.get_test_icd().icd_api_version = VK_MAKE_API_VERSION(0, 1, 1, 0);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.set_api_version(1, 1, 0);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
|
|
VkPhysicalDeviceFeatures features = {};
|
|
ASSERT_DEATH(
|
|
env.vulkan_functions.vkGetPhysicalDeviceFeatures(bad_physical_dev, &features),
|
|
"vkGetPhysicalDeviceFeatures: Invalid physicalDevice \\[VUID-vkGetPhysicalDeviceFeatures-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevFormatProps) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
env.get_test_icd().physical_devices.push_back({});
|
|
env.get_test_icd().icd_api_version = VK_MAKE_API_VERSION(0, 1, 1, 0);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.set_api_version(1, 1, 0);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
|
|
VkFormatProperties format_info = {};
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceFormatProperties(bad_physical_dev, VK_FORMAT_R8G8B8A8_UNORM, &format_info),
|
|
"vkGetPhysicalDeviceFormatProperties: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceFormatProperties-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevImgFormatProps) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
env.get_test_icd().physical_devices.push_back({});
|
|
env.get_test_icd().icd_api_version = VK_MAKE_API_VERSION(0, 1, 1, 0);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.set_api_version(1, 1, 0);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
|
|
VkImageFormatProperties format_info = {};
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceImageFormatProperties(bad_physical_dev, VK_FORMAT_R8G8B8A8_UNORM,
|
|
VK_IMAGE_TYPE_2D, VK_IMAGE_TILING_LINEAR,
|
|
VK_IMAGE_USAGE_STORAGE_BIT, 0, &format_info),
|
|
"vkGetPhysicalDeviceImageFormatProperties: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceImageFormatProperties-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevProps) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
env.get_test_icd().physical_devices.push_back({});
|
|
env.get_test_icd().icd_api_version = VK_MAKE_API_VERSION(0, 1, 1, 0);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.set_api_version(1, 1, 0);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
|
|
VkPhysicalDeviceProperties properties = {};
|
|
ASSERT_DEATH(
|
|
env.vulkan_functions.vkGetPhysicalDeviceProperties(bad_physical_dev, &properties),
|
|
"vkGetPhysicalDeviceProperties: Invalid physicalDevice \\[VUID-vkGetPhysicalDeviceProperties-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevQueueFamProps) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
env.get_test_icd().physical_devices.push_back({});
|
|
env.get_test_icd().icd_api_version = VK_MAKE_API_VERSION(0, 1, 1, 0);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.set_api_version(1, 1, 0);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
uint32_t count = 0;
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceQueueFamilyProperties(bad_physical_dev, &count, nullptr),
|
|
"vkGetPhysicalDeviceQueueFamilyProperties: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceQueueFamilyProperties-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevDevMemProps) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
env.get_test_icd().physical_devices.push_back({});
|
|
env.get_test_icd().icd_api_version = VK_MAKE_API_VERSION(0, 1, 1, 0);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.set_api_version(1, 1, 0);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
|
|
VkPhysicalDeviceMemoryProperties properties = {};
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceMemoryProperties(bad_physical_dev, &properties),
|
|
"vkGetPhysicalDeviceMemoryProperties: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceMemoryProperties-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevCreateDevice) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
env.get_test_icd().physical_devices.push_back({});
|
|
env.get_test_icd().icd_api_version = VK_MAKE_API_VERSION(0, 1, 1, 0);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.set_api_version(1, 1, 0);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
|
|
float queue_priorities[3] = {0.0f, 0.5f, 1.0f};
|
|
VkDeviceQueueCreateInfo dev_queue_create_info = {};
|
|
dev_queue_create_info.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
|
|
dev_queue_create_info.pNext = nullptr;
|
|
dev_queue_create_info.flags = 0;
|
|
dev_queue_create_info.queueFamilyIndex = 0;
|
|
dev_queue_create_info.queueCount = 1;
|
|
dev_queue_create_info.pQueuePriorities = queue_priorities;
|
|
VkDeviceCreateInfo dev_create_info = {};
|
|
dev_create_info.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
|
|
dev_create_info.pNext = nullptr;
|
|
dev_create_info.flags = 0;
|
|
dev_create_info.queueCreateInfoCount = 1;
|
|
dev_create_info.pQueueCreateInfos = &dev_queue_create_info;
|
|
dev_create_info.enabledLayerCount = 0;
|
|
dev_create_info.ppEnabledLayerNames = nullptr;
|
|
dev_create_info.enabledExtensionCount = 0;
|
|
dev_create_info.ppEnabledExtensionNames = nullptr;
|
|
dev_create_info.pEnabledFeatures = nullptr;
|
|
VkDevice created_dev = VK_NULL_HANDLE;
|
|
ASSERT_DEATH(env.vulkan_functions.vkCreateDevice(bad_physical_dev, &dev_create_info, nullptr, &created_dev),
|
|
"vkCreateDevice: Invalid physicalDevice \\[VUID-vkCreateDevice-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevEnumDevExtProps) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
env.get_test_icd().physical_devices.push_back({});
|
|
env.get_test_icd().icd_api_version = VK_MAKE_API_VERSION(0, 1, 1, 0);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.set_api_version(1, 1, 0);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
uint32_t count = 0;
|
|
ASSERT_DEATH(env.vulkan_functions.vkEnumerateDeviceExtensionProperties(bad_physical_dev, nullptr, &count, nullptr),
|
|
"vkEnumerateDeviceExtensionProperties: Invalid physicalDevice "
|
|
"\\[VUID-vkEnumerateDeviceExtensionProperties-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevEnumDevLayerProps) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
env.get_test_icd().physical_devices.push_back({});
|
|
env.get_test_icd().icd_api_version = VK_MAKE_API_VERSION(0, 1, 1, 0);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.set_api_version(1, 1, 0);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
uint32_t count = 0;
|
|
ASSERT_DEATH(env.vulkan_functions.vkEnumerateDeviceLayerProperties(bad_physical_dev, &count, nullptr),
|
|
"vkEnumerateDeviceLayerProperties: Invalid physicalDevice "
|
|
"\\[VUID-vkEnumerateDeviceLayerProperties-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevSparseImgFormatProps) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
env.get_test_icd().physical_devices.push_back({});
|
|
env.get_test_icd().icd_api_version = VK_MAKE_API_VERSION(0, 1, 1, 0);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.set_api_version(1, 1, 0);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
|
|
uint32_t count = 0;
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceSparseImageFormatProperties(
|
|
bad_physical_dev, VK_FORMAT_R8G8B8A8_UNORM, VK_IMAGE_TYPE_2D, VK_SAMPLE_COUNT_1_BIT,
|
|
VK_IMAGE_USAGE_STORAGE_BIT, VK_IMAGE_TILING_LINEAR, &count, nullptr),
|
|
"vkGetPhysicalDeviceSparseImageFormatProperties: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceSparseImageFormatProperties-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevFeature2) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
env.get_test_icd().physical_devices.push_back({});
|
|
env.get_test_icd().icd_api_version = VK_MAKE_API_VERSION(0, 1, 1, 0);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.set_api_version(1, 1, 0);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
|
|
VkPhysicalDeviceFeatures2 features = {};
|
|
features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
|
|
features.pNext = nullptr;
|
|
ASSERT_DEATH(
|
|
env.vulkan_functions.vkGetPhysicalDeviceFeatures2(bad_physical_dev, &features),
|
|
"vkGetPhysicalDeviceFeatures2: Invalid physicalDevice \\[VUID-vkGetPhysicalDeviceFeatures2-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevFormatProps2) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
env.get_test_icd().physical_devices.push_back({});
|
|
env.get_test_icd().icd_api_version = VK_MAKE_API_VERSION(0, 1, 1, 0);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.set_api_version(1, 1, 0);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
|
|
VkFormatProperties2 properties = {};
|
|
properties.sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2;
|
|
properties.pNext = nullptr;
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceFormatProperties2(bad_physical_dev, VK_FORMAT_R8G8B8A8_UNORM, &properties),
|
|
"vkGetPhysicalDeviceFormatProperties2: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceFormatProperties2-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevImgFormatProps2) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
env.get_test_icd().physical_devices.push_back({});
|
|
env.get_test_icd().icd_api_version = VK_MAKE_API_VERSION(0, 1, 1, 0);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.set_api_version(1, 1, 0);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
|
|
VkPhysicalDeviceImageFormatInfo2 format_info = {};
|
|
format_info.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2;
|
|
format_info.pNext = nullptr;
|
|
VkImageFormatProperties2 properties = {};
|
|
properties.sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2;
|
|
properties.pNext = nullptr;
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceImageFormatProperties2(bad_physical_dev, &format_info, &properties),
|
|
"vkGetPhysicalDeviceImageFormatProperties2: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceImageFormatProperties2-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevProps2) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
env.get_test_icd().physical_devices.push_back({});
|
|
env.get_test_icd().icd_api_version = VK_MAKE_API_VERSION(0, 1, 1, 0);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.set_api_version(1, 1, 0);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
|
|
VkPhysicalDeviceProperties2 properties = {};
|
|
properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
|
|
properties.pNext = nullptr;
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceProperties2(bad_physical_dev, &properties),
|
|
"vkGetPhysicalDeviceProperties2: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceProperties2-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevQueueFamProps2) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
env.get_test_icd().physical_devices.push_back({});
|
|
env.get_test_icd().icd_api_version = VK_MAKE_API_VERSION(0, 1, 1, 0);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.set_api_version(1, 1, 0);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
uint32_t count = 0;
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceQueueFamilyProperties2(bad_physical_dev, &count, nullptr),
|
|
"vkGetPhysicalDeviceQueueFamilyProperties2: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceQueueFamilyProperties2-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevDevMemProps2) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
env.get_test_icd().physical_devices.push_back({});
|
|
env.get_test_icd().icd_api_version = VK_MAKE_API_VERSION(0, 1, 1, 0);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.set_api_version(1, 1, 0);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
|
|
VkPhysicalDeviceMemoryProperties2 properties = {};
|
|
properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2;
|
|
properties.pNext = nullptr;
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceMemoryProperties2(bad_physical_dev, &properties),
|
|
"vkGetPhysicalDeviceMemoryProperties2: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceMemoryProperties2-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevSparseImgFormatProps2) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
env.get_test_icd().physical_devices.push_back({});
|
|
env.get_test_icd().icd_api_version = VK_MAKE_API_VERSION(0, 1, 1, 0);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.set_api_version(1, 1, 0);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
|
|
VkPhysicalDeviceSparseImageFormatInfo2 info = {};
|
|
info.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2;
|
|
info.pNext = nullptr;
|
|
uint32_t count = 0;
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceSparseImageFormatProperties2(bad_physical_dev, &info, &count, nullptr),
|
|
"vkGetPhysicalDeviceSparseImageFormatProperties2: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevExternFenceProps) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
env.get_test_icd().physical_devices.push_back({});
|
|
env.get_test_icd().icd_api_version = VK_MAKE_API_VERSION(0, 1, 1, 0);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.set_api_version(1, 1, 0);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
|
|
VkPhysicalDeviceExternalFenceInfo info = {};
|
|
info.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO;
|
|
info.pNext = nullptr;
|
|
VkExternalFenceProperties props = {};
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceExternalFenceProperties(bad_physical_dev, &info, &props),
|
|
"vkGetPhysicalDeviceExternalFenceProperties: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceExternalFenceProperties-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevExternBufferProps) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
env.get_test_icd().physical_devices.push_back({});
|
|
env.get_test_icd().icd_api_version = VK_MAKE_API_VERSION(0, 1, 1, 0);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.set_api_version(1, 1, 0);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
|
|
VkPhysicalDeviceExternalBufferInfo info = {};
|
|
info.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO;
|
|
info.pNext = nullptr;
|
|
VkExternalBufferProperties props = {};
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceExternalBufferProperties(bad_physical_dev, &info, &props),
|
|
"vkGetPhysicalDeviceExternalBufferProperties: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceExternalBufferProperties-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevExternSemaphoreProps) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
env.get_test_icd().physical_devices.push_back({});
|
|
env.get_test_icd().icd_api_version = VK_MAKE_API_VERSION(0, 1, 1, 0);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.set_api_version(1, 1, 0);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
|
|
VkPhysicalDeviceExternalSemaphoreInfoKHR info = {};
|
|
info.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO;
|
|
info.pNext = nullptr;
|
|
VkExternalSemaphoreProperties props = {};
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceExternalSemaphoreProperties(bad_physical_dev, &info, &props),
|
|
"vkGetPhysicalDeviceExternalSemaphoreProperties: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevSurfaceSupportKHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_EXT_headless_surface"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_KHR_surface");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
VkBool32 supported = VK_FALSE;
|
|
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceSurfaceSupportKHR(bad_physical_dev, 0, VK_NULL_HANDLE, &supported),
|
|
"vkGetPhysicalDeviceSurfaceSupportKHR: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceSurfaceSupportKHR-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevSurfaceCapsKHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_EXT_headless_surface"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_KHR_surface");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
VkSurfaceCapabilitiesKHR caps = {};
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceSurfaceCapabilitiesKHR(bad_physical_dev, VK_NULL_HANDLE, &caps),
|
|
"vkGetPhysicalDeviceSurfaceCapabilitiesKHR: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevSurfaceFormatsKHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_EXT_headless_surface"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_KHR_surface");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
uint32_t count = 0;
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceSurfaceFormatsKHR(bad_physical_dev, VK_NULL_HANDLE, &count, nullptr),
|
|
"vkGetPhysicalDeviceSurfaceFormatsKHR: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevSurfacePresentModesKHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_EXT_headless_surface"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_KHR_surface");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
uint32_t count = 0;
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceSurfacePresentModesKHR(bad_physical_dev, VK_NULL_HANDLE, &count, nullptr),
|
|
"vkGetPhysicalDeviceSurfacePresentModesKHR: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
#ifdef VK_USE_PLATFORM_DIRECTFB_EXT
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetDirectFBPresentSupportKHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
IDirectFB directfb;
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceDirectFBPresentationSupportEXT(bad_physical_dev, 0, &directfb),
|
|
"vkGetPhysicalDeviceDirectFBPresentationSupportEXT: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceDirectFBPresentationSupportEXT-physicalDevice-parameter\\]");
|
|
}
|
|
#endif // VK_USE_PLATFORM_DIRECTFB_EXT
|
|
|
|
#ifdef VK_USE_PLATFORM_SCREEN_QNX
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetQNXPresentSupportKHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
ASSERT_DEATH(env.vulkan_functions.PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX(bad_physical_dev, 0, nullptr),
|
|
"vkGetPhysicalDeviceScreenPresentationSupportQNX: Invalid instance "
|
|
"\\[VUID-vkGetPhysicalDeviceScreenPresentationSupportQNX-instance-parameter\\]");
|
|
}
|
|
#endif // VK_USE_PLATFORM_SCREEN_QNX
|
|
|
|
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevWaylandPresentSupportKHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceWaylandPresentationSupportKHR(bad_physical_dev, 0, nullptr),
|
|
"vkGetPhysicalDeviceWaylandPresentationSupportKHR: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-physicalDevice-parameter\\]");
|
|
}
|
|
#endif // VK_USE_PLATFORM_WAYLAND_KHR
|
|
|
|
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevWin32PresentSupportKHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceWin32PresentationSupportKHR(bad_physical_dev, 0),
|
|
"vkGetPhysicalDeviceWin32PresentationSupportKHR: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-physicalDevice-parameter\\]");
|
|
}
|
|
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
|
|
#ifdef VK_USE_PLATFORM_XCB_KHR
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetXCBPresentSupportKHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
|
|
xcb_visualid_t visual = 0;
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceXcbPresentationSupportKHR(bad_physical_dev, 0, nullptr, visual),
|
|
"vkGetPhysicalDeviceXcbPresentationSupportKHR: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-physicalDevice-parameter\\]");
|
|
}
|
|
#endif // VK_USE_PLATFORM_XCB_KHR
|
|
|
|
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetXlibPresentSupportKHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
|
|
VisualID visual = 0;
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceXlibPresentationSupportKHR(bad_physical_dev, 0, nullptr, visual),
|
|
"vkGetPhysicalDeviceXlibPresentationSupportKHR: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-physicalDevice-parameter\\]");
|
|
}
|
|
#endif // VK_USE_PLATFORM_XLIB_KHR
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevDisplayPropsKHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_KHR_display"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_KHR_surface");
|
|
instance.create_info.add_extension("VK_KHR_display");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
uint32_t count = 0;
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceDisplayPropertiesKHR(bad_physical_dev, &count, nullptr),
|
|
"vkGetPhysicalDeviceDisplayPropertiesKHR: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevDisplayPlanePropsKHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_KHR_display"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_KHR_surface");
|
|
instance.create_info.add_extension("VK_KHR_display");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
uint32_t count = 0;
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceDisplayPlanePropertiesKHR(bad_physical_dev, &count, nullptr),
|
|
"vkGetPhysicalDeviceDisplayPlanePropertiesKHR: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetDisplayPlaneSupportedDisplaysKHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_KHR_display"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_KHR_surface");
|
|
instance.create_info.add_extension("VK_KHR_display");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
uint32_t count = 0;
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetDisplayPlaneSupportedDisplaysKHR(bad_physical_dev, 0, &count, nullptr),
|
|
"vkGetDisplayPlaneSupportedDisplaysKHR: Invalid physicalDevice "
|
|
"\\[VUID-vkGetDisplayPlaneSupportedDisplaysKHR-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetDisplayModePropsKHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_KHR_display"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_KHR_surface");
|
|
instance.create_info.add_extension("VK_KHR_display");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
uint32_t count = 0;
|
|
ASSERT_DEATH(
|
|
env.vulkan_functions.vkGetDisplayModePropertiesKHR(bad_physical_dev, VK_NULL_HANDLE, &count, nullptr),
|
|
"vkGetDisplayModePropertiesKHR: Invalid physicalDevice \\[VUID-vkGetDisplayModePropertiesKHR-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevCreateDisplayModeKHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_KHR_display"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_KHR_surface");
|
|
instance.create_info.add_extension("VK_KHR_display");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
VkDisplayModeCreateInfoKHR create_info = {};
|
|
create_info.sType = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR;
|
|
create_info.pNext = nullptr;
|
|
VkDisplayModeKHR display_mode;
|
|
ASSERT_DEATH(
|
|
env.vulkan_functions.vkCreateDisplayModeKHR(bad_physical_dev, VK_NULL_HANDLE, &create_info, nullptr, &display_mode),
|
|
"vkCreateDisplayModeKHR: Invalid physicalDevice \\[VUID-vkCreateDisplayModeKHR-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetDisplayPlaneCapsKHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_KHR_display"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_KHR_surface");
|
|
instance.create_info.add_extension("VK_KHR_display");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
VkDisplayPlaneCapabilitiesKHR caps = {};
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetDisplayPlaneCapabilitiesKHR(bad_physical_dev, VK_NULL_HANDLE, 0, &caps),
|
|
"vkGetDisplayPlaneCapabilitiesKHR: Invalid physicalDevice "
|
|
"\\[VUID-vkGetDisplayPlaneCapabilitiesKHR-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevPresentRectsKHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_KHR_display"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_KHR_surface");
|
|
instance.create_info.add_extension("VK_KHR_display");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
uint32_t count = 0;
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDevicePresentRectanglesKHR(bad_physical_dev, VK_NULL_HANDLE, &count, nullptr),
|
|
"vkGetPhysicalDevicePresentRectanglesKHR: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDevicePresentRectanglesKHR-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevDisplayProps2KHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_KHR_get_display_properties2"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_KHR_surface");
|
|
instance.create_info.add_extension("VK_KHR_get_display_properties2");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
uint32_t count = 0;
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceDisplayProperties2KHR(bad_physical_dev, &count, nullptr),
|
|
"vkGetPhysicalDeviceDisplayProperties2KHR: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceDisplayProperties2KHR-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevDisplayPlaneProps2KHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_KHR_get_display_properties2"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_KHR_surface");
|
|
instance.create_info.add_extension("VK_KHR_get_display_properties2");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
uint32_t count = 0;
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceDisplayPlaneProperties2KHR(bad_physical_dev, &count, nullptr),
|
|
"vkGetPhysicalDeviceDisplayPlaneProperties2KHR: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetDisplayModeProps2KHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_KHR_get_display_properties2"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_KHR_surface");
|
|
instance.create_info.add_extension("VK_KHR_get_display_properties2");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
uint32_t count = 0;
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetDisplayModeProperties2KHR(bad_physical_dev, VK_NULL_HANDLE, &count, nullptr),
|
|
"vkGetDisplayModeProperties2KHR: Invalid physicalDevice "
|
|
"\\[VUID-vkGetDisplayModeProperties2KHR-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetDisplayPlaneCaps2KHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_KHR_get_display_properties2"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_KHR_surface");
|
|
instance.create_info.add_extension("VK_KHR_get_display_properties2");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
VkDisplayPlaneInfo2KHR disp_plane_info = {};
|
|
disp_plane_info.sType = VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR;
|
|
disp_plane_info.pNext = nullptr;
|
|
VkDisplayPlaneCapabilities2KHR caps = {};
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetDisplayPlaneCapabilities2KHR(bad_physical_dev, &disp_plane_info, &caps),
|
|
"vkGetDisplayPlaneCapabilities2KHR: Invalid physicalDevice "
|
|
"\\[VUID-vkGetDisplayPlaneCapabilities2KHR-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevSurfaceCaps2KHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_KHR_get_surface_capabilities2"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_KHR_surface");
|
|
instance.create_info.add_extension("VK_KHR_get_surface_capabilities2");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
VkPhysicalDeviceSurfaceInfo2KHR phys_dev_surf_info = {};
|
|
phys_dev_surf_info.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR;
|
|
phys_dev_surf_info.pNext = nullptr;
|
|
VkSurfaceCapabilities2KHR caps = {};
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceSurfaceCapabilities2KHR(bad_physical_dev, &phys_dev_surf_info, &caps),
|
|
"vkGetPhysicalDeviceSurfaceCapabilities2KHR: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevSurfaceFormats2KHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_KHR_get_surface_capabilities2"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_KHR_get_surface_capabilities2");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
VkPhysicalDeviceSurfaceInfo2KHR phys_dev_surf_info = {};
|
|
phys_dev_surf_info.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR;
|
|
phys_dev_surf_info.pNext = nullptr;
|
|
uint32_t count = 0;
|
|
ASSERT_DEATH(env.vulkan_functions.vkGetPhysicalDeviceSurfaceFormats2KHR(bad_physical_dev, &phys_dev_surf_info, &count, nullptr),
|
|
"vkGetPhysicalDeviceSurfaceFormats2KHR: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevEnumPhysDevQueueFamilyPerfQueryCountersKHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
uint32_t count = 0;
|
|
PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR pfn =
|
|
instance.load("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
|
|
ASSERT_NE(pfn, nullptr);
|
|
ASSERT_DEATH(pfn(bad_physical_dev, 0, &count, nullptr, nullptr),
|
|
"vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR: Invalid physicalDevice "
|
|
"\\[VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevQueueFamilyPerfQueryPassesKHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
VkQueryPoolPerformanceCreateInfoKHR create_info = {};
|
|
create_info.sType = VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR;
|
|
create_info.pNext = nullptr;
|
|
uint32_t count = 0;
|
|
PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR pfn =
|
|
instance.load("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
|
|
ASSERT_NE(pfn, nullptr);
|
|
ASSERT_DEATH(pfn(bad_physical_dev, &create_info, &count),
|
|
"vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevFragmentShadingRatesKHR) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
uint32_t count = 0;
|
|
PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR pfn = instance.load("vkGetPhysicalDeviceFragmentShadingRatesKHR");
|
|
ASSERT_NE(pfn, nullptr);
|
|
ASSERT_DEATH(pfn(bad_physical_dev, &count, nullptr),
|
|
"vkGetPhysicalDeviceFragmentShadingRatesKHR: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevMSPropsEXT) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
VkMultisamplePropertiesEXT props = {};
|
|
PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT pfn = instance.load("vkGetPhysicalDeviceMultisamplePropertiesEXT");
|
|
ASSERT_NE(pfn, nullptr);
|
|
ASSERT_DEATH(pfn(bad_physical_dev, VK_SAMPLE_COUNT_1_BIT, &props),
|
|
"vkGetPhysicalDeviceMultisamplePropertiesEXT: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevAcquireDrmDisplayEXT) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_EXT_acquire_drm_display"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_EXT_acquire_drm_display");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
PFN_vkAcquireDrmDisplayEXT pfn = instance.load("vkAcquireDrmDisplayEXT");
|
|
ASSERT_NE(pfn, nullptr);
|
|
ASSERT_DEATH(pfn(bad_physical_dev, 0, VK_NULL_HANDLE),
|
|
"vkAcquireDrmDisplayEXT: Invalid physicalDevice \\[VUID-vkAcquireDrmDisplayEXT-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetDrmDisplayEXT) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_EXT_acquire_drm_display"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_EXT_acquire_drm_display");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
PFN_vkGetDrmDisplayEXT pfn = instance.load("vkGetDrmDisplayEXT");
|
|
ASSERT_NE(pfn, nullptr);
|
|
ASSERT_DEATH(pfn(bad_physical_dev, 0, 0, VK_NULL_HANDLE),
|
|
"vkGetDrmDisplayEXT: Invalid physicalDevice "
|
|
"\\[VUID-vkGetDrmDisplayEXT-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevReleaseDisplayEXT) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_EXT_direct_mode_display"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_EXT_direct_mode_display");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
PFN_vkReleaseDisplayEXT pfn = instance.load("vkReleaseDisplayEXT");
|
|
ASSERT_NE(pfn, nullptr);
|
|
ASSERT_DEATH(pfn(bad_physical_dev, VK_NULL_HANDLE),
|
|
"vkReleaseDisplayEXT: Invalid physicalDevice \\[VUID-vkReleaseDisplayEXT-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
|
TEST(LoaderHandleValidTests, BadPhysDevAcquireXlibDisplayEXT) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_EXT_acquire_xlib_display"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_EXT_acquire_xlib_display");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
PFN_vkAcquireXlibDisplayEXT pfn = instance.load("vkAcquireXlibDisplayEXT");
|
|
ASSERT_NE(pfn, nullptr);
|
|
ASSERT_DEATH(pfn(bad_physical_dev, nullptr, VK_NULL_HANDLE),
|
|
"vkAcquireXlibDisplayEXT: Invalid physicalDevice \\[VUID-vkAcquireXlibDisplayEXT-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetRandROutputDisplayEXT) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension first_ext{"VK_KHR_surface"};
|
|
Extension second_ext{"VK_EXT_acquire_xlib_display"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({first_ext, second_ext});
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_EXT_acquire_xlib_display");
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
RROutput rrout = {};
|
|
VkDisplayKHR disp;
|
|
PFN_vkGetRandROutputDisplayEXT pfn = instance.load("vkGetRandROutputDisplayEXT");
|
|
ASSERT_NE(pfn, nullptr);
|
|
ASSERT_DEATH(
|
|
pfn(bad_physical_dev, nullptr, rrout, &disp),
|
|
"vkGetRandROutputDisplayEXT: Invalid physicalDevice \\[VUID-vkGetRandROutputDisplayEXT-physicalDevice-parameter\\]");
|
|
}
|
|
#endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
|
|
|
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevSurfacePresentModes2EXT) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
VkPhysicalDeviceSurfaceInfo2KHR phys_dev_surf_info = {};
|
|
phys_dev_surf_info.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR;
|
|
phys_dev_surf_info.pNext = nullptr;
|
|
uint32_t count = 0;
|
|
PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT pfn = instance.load("vkGetPhysicalDeviceSurfacePresentModes2EXT");
|
|
ASSERT_NE(pfn, nullptr);
|
|
ASSERT_DEATH(pfn(bad_physical_dev, &phys_dev_surf_info, &count, nullptr),
|
|
"vkGetPhysicalDeviceSurfacePresentModes2EXT: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-physicalDevice-parameter\\]");
|
|
}
|
|
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
|
|
TEST(LoaderHandleValidTests, BadPhysDevGetPhysDevToolPropertiesEXT) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.CheckCreate();
|
|
|
|
auto bad_physical_dev = get_bad_handle<VkPhysicalDevice>();
|
|
PFN_vkGetPhysicalDeviceToolPropertiesEXT pfn = instance.load("vkGetPhysicalDeviceToolPropertiesEXT");
|
|
ASSERT_NE(pfn, nullptr);
|
|
uint32_t count = 0;
|
|
ASSERT_DEATH(pfn(bad_physical_dev, &count, nullptr),
|
|
"vkGetPhysicalDeviceToolPropertiesEXT: Invalid physicalDevice "
|
|
"\\[VUID-vkGetPhysicalDeviceToolPropertiesEXT-physicalDevice-parameter\\]");
|
|
}
|
|
|
|
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
|
TEST(LoaderHandleValidTests, VerifyHandleWrappingAndroidSurface) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
|
|
const char* wrap_objects_name = "WrapObjectsLayer";
|
|
env.add_explicit_layer(ManifestLayer{}.add_layer(
|
|
ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)),
|
|
"wrap_objects_layer.json");
|
|
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
MockQueueFamilyProperties family_props{{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true};
|
|
driver.physical_devices.back().queue_family_properties.push_back(family_props);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
instance.create_info.add_layer(wrap_objects_name);
|
|
|
|
VkAndroidSurfaceCreateInfoKHR surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
PFN_vkCreateAndroidSurfaceKHR pfn_CreateSurface = instance.load("vkCreateAndroidSurfaceKHR");
|
|
ASSERT_NE(pfn_CreateSurface, nullptr);
|
|
PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR");
|
|
ASSERT_NE(pfn_DestroySurface, nullptr);
|
|
ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface));
|
|
pfn_DestroySurface(instance, created_surface, nullptr);
|
|
}
|
|
#endif // VK_USE_PLATFORM_ANDROID_KHR
|
|
|
|
#ifdef VK_USE_PLATFORM_DIRECTFB_EXT
|
|
TEST(LoaderHandleValidTests, VerifyHandleWrappingDirectFBSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
|
|
const char* wrap_objects_name = "WrapObjectsLayer";
|
|
env.add_explicit_layer(ManifestLayer{}.add_layer(
|
|
ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)),
|
|
"wrap_objects_layer.json");
|
|
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
MockQueueFamilyProperties family_props{{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true};
|
|
driver.physical_devices.back().queue_family_properties.push_back(family_props);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
instance.create_info.add_layer(wrap_objects_name);
|
|
|
|
VkDirectFBSurfaceCreateInfoEXT surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
PFN_vkCreateDirectFBSurfaceEXT pfn_CreateSurface = instance.load("vkCreateDirectFBSurfaceEXT");
|
|
ASSERT_NE(pfn_CreateSurface, nullptr);
|
|
PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR");
|
|
ASSERT_NE(pfn_DestroySurface, nullptr);
|
|
ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface));
|
|
pfn_DestroySurface(instance, created_surface, nullptr);
|
|
}
|
|
#endif // VK_USE_PLATFORM_DIRECTFB_EXT
|
|
|
|
#ifdef VK_USE_PLATFORM_FUCHSIA
|
|
TEST(LoaderHandleValidTests, VerifyHandleWrappingFuchsiaSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
|
|
const char* wrap_objects_name = "WrapObjectsLayer";
|
|
env.add_explicit_layer(ManifestLayer{}.add_layer(
|
|
ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)),
|
|
"wrap_objects_layer.json");
|
|
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
MockQueueFamilyProperties family_props{{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true};
|
|
driver.physical_devices.back().queue_family_properties.push_back(family_props);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
instance.create_info.add_layer(wrap_objects_name);
|
|
|
|
VkImagePipeSurfaceCreateInfoFUCHSIA surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
PFN_vkCreateImagePipeSurfaceFUCHSIA pfn_CreateSurface = instance.load("vkCreateImagePipeSurfaceFUCHSIA");
|
|
ASSERT_NE(pfn_CreateSurface, nullptr);
|
|
PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR");
|
|
ASSERT_NE(pfn_DestroySurface, nullptr);
|
|
ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface));
|
|
pfn_DestroySurface(instance, created_surface, nullptr);
|
|
}
|
|
#endif // VK_USE_PLATFORM_FUCHSIA
|
|
|
|
#ifdef VK_USE_PLATFORM_GGP
|
|
TEST(LoaderHandleValidTests, VerifyHandleWrappingGGPSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
|
|
const char* wrap_objects_name = "WrapObjectsLayer";
|
|
env.add_explicit_layer(ManifestLayer{}.add_layer(
|
|
ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)),
|
|
"wrap_objects_layer.json");
|
|
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
MockQueueFamilyProperties family_props{{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true};
|
|
driver.physical_devices.back().queue_family_properties.push_back(family_props);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
instance.create_info.add_layer(wrap_objects_name);
|
|
|
|
VkStreamDescriptorSurfaceCreateInfoGGP surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
PFN_vkCreateStreamDescriptorSurfaceGGP pfn_CreateSurface = instance.load("vkCreateStreamDescriptorSurfaceGGP");
|
|
ASSERT_NE(pfn_CreateSurface, nullptr);
|
|
PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR");
|
|
ASSERT_NE(pfn_DestroySurface, nullptr);
|
|
ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface));
|
|
pfn_DestroySurface(instance, created_surface, nullptr);
|
|
}
|
|
#endif // VK_USE_PLATFORM_GGP
|
|
|
|
#ifdef VK_USE_PLATFORM_IOS_MVK
|
|
TEST(LoaderHandleValidTests, VerifyHandleWrappingIOSSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
|
|
const char* wrap_objects_name = "WrapObjectsLayer";
|
|
env.add_explicit_layer(ManifestLayer{}.add_layer(
|
|
ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)),
|
|
"wrap_objects_layer.json");
|
|
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
MockQueueFamilyProperties family_props{{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true};
|
|
driver.physical_devices.back().queue_family_properties.push_back(family_props);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
instance.create_info.add_layer(wrap_objects_name);
|
|
|
|
VkIOSSurfaceCreateInfoMVK surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
PFN_vkCreateIOSSurfaceMVK pfn_CreateSurface = instance.load("vkCreateIOSSurfaceMVK");
|
|
ASSERT_NE(pfn_CreateSurface, nullptr);
|
|
PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR");
|
|
ASSERT_NE(pfn_DestroySurface, nullptr);
|
|
ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface));
|
|
pfn_DestroySurface(instance, created_surface, nullptr);
|
|
}
|
|
#endif // VK_USE_PLATFORM_IOS_MVK
|
|
|
|
#ifdef VK_USE_PLATFORM_MACOS_MVK
|
|
TEST(LoaderHandleValidTests, VerifyHandleWrappingMacOSSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
|
|
const char* wrap_objects_name = "WrapObjectsLayer";
|
|
env.add_explicit_layer(ManifestLayer{}.add_layer(
|
|
ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)),
|
|
"wrap_objects_layer.json");
|
|
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
MockQueueFamilyProperties family_props{{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true};
|
|
driver.physical_devices.back().queue_family_properties.push_back(family_props);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
instance.create_info.add_layer(wrap_objects_name);
|
|
|
|
VkMacOSSurfaceCreateInfoMVK surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
PFN_vkCreateMacOSSurfaceMVK pfn_CreateSurface = instance.load("vkCreateMacOSSurfaceMVK");
|
|
ASSERT_NE(pfn_CreateSurface, nullptr);
|
|
PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR");
|
|
ASSERT_NE(pfn_DestroySurface, nullptr);
|
|
ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface));
|
|
pfn_DestroySurface(instance, created_surface, nullptr);
|
|
}
|
|
#endif // VK_USE_PLATFORM_MACOS_MVK
|
|
|
|
#if defined(VK_USE_PLATFORM_METAL_EXT)
|
|
TEST(LoaderHandleValidTests, VerifyHandleWrappingMetalSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
|
|
const char* wrap_objects_name = "WrapObjectsLayer";
|
|
env.add_explicit_layer(ManifestLayer{}.add_layer(
|
|
ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)),
|
|
"wrap_objects_layer.json");
|
|
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
MockQueueFamilyProperties family_props{{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true};
|
|
driver.physical_devices.back().queue_family_properties.push_back(family_props);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
instance.create_info.add_layer(wrap_objects_name);
|
|
|
|
VkMetalSurfaceCreateInfoEXT surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
PFN_vkCreateMetalSurfaceEXT pfn_CreateSurface = instance.load("vkCreateMetalSurfaceEXT");
|
|
ASSERT_NE(pfn_CreateSurface, nullptr);
|
|
PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR");
|
|
ASSERT_NE(pfn_DestroySurface, nullptr);
|
|
ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface));
|
|
pfn_DestroySurface(instance, created_surface, nullptr);
|
|
}
|
|
#endif // VK_USE_PLATFORM_METAL_EXT
|
|
|
|
#ifdef VK_USE_PLATFORM_SCREEN_QNX
|
|
TEST(LoaderHandleValidTests, VerifyHandleWrappingQNXSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
|
|
const char* wrap_objects_name = "WrapObjectsLayer";
|
|
env.add_explicit_layer(ManifestLayer{}.add_layer(
|
|
ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)),
|
|
"wrap_objects_layer.json");
|
|
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
MockQueueFamilyProperties family_props{{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true};
|
|
driver.physical_devices.back().queue_family_properties.push_back(family_props);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
instance.create_info.add_layer(wrap_objects_name);
|
|
|
|
VkScreenSurfaceCreateInfoQNX surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
PFN_vkCreateScreenSurfaceQNX pfn_CreateSurface = instance.load("vkCreateScreenSurfaceQNX");
|
|
ASSERT_NE(pfn_CreateSurface, nullptr);
|
|
PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR");
|
|
ASSERT_NE(pfn_DestroySurface, nullptr);
|
|
ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface));
|
|
pfn_DestroySurface(instance, created_surface, nullptr);
|
|
}
|
|
#endif // VK_USE_PLATFORM_SCREEN_QNX
|
|
|
|
#ifdef VK_USE_PLATFORM_VI_NN
|
|
TEST(LoaderHandleValidTests, VerifyHandleWrappingViNNSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
|
|
const char* wrap_objects_name = "WrapObjectsLayer";
|
|
env.add_explicit_layer(ManifestLayer{}.add_layer(
|
|
ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)),
|
|
"wrap_objects_layer.json");
|
|
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
MockQueueFamilyProperties family_props{{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true};
|
|
driver.physical_devices.back().queue_family_properties.push_back(family_props);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
instance.create_info.add_layer(wrap_objects_name);
|
|
|
|
VkViSurfaceCreateInfoNN surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
PFN_vkCreateViSurfaceNN pfn_CreateSurface = instance.load("vkCreateViSurfaceNN");
|
|
ASSERT_NE(pfn_CreateSurface, nullptr);
|
|
PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR");
|
|
ASSERT_NE(pfn_DestroySurface, nullptr);
|
|
ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface));
|
|
pfn_DestroySurface(instance, created_surface, nullptr);
|
|
}
|
|
#endif // VK_USE_PLATFORM_VI_NN
|
|
|
|
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
|
TEST(LoaderHandleValidTests, VerifyHandleWrappingWaylandSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
|
|
const char* wrap_objects_name = "WrapObjectsLayer";
|
|
env.add_explicit_layer(ManifestLayer{}.add_layer(
|
|
ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)),
|
|
"wrap_objects_layer.json");
|
|
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
MockQueueFamilyProperties family_props{{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true};
|
|
driver.physical_devices.back().queue_family_properties.push_back(family_props);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
instance.create_info.add_layer(wrap_objects_name);
|
|
|
|
VkWaylandSurfaceCreateInfoKHR surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
PFN_vkCreateWaylandSurfaceKHR pfn_CreateSurface = instance.load("vkCreateWaylandSurfaceKHR");
|
|
ASSERT_NE(pfn_CreateSurface, nullptr);
|
|
PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR");
|
|
ASSERT_NE(pfn_DestroySurface, nullptr);
|
|
ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface));
|
|
pfn_DestroySurface(instance, created_surface, nullptr);
|
|
}
|
|
#endif // VK_USE_PLATFORM_WAYLAND_KHR
|
|
|
|
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
|
TEST(LoaderHandleValidTests, VerifyHandleWrappingWin32Surf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
|
|
const char* wrap_objects_name = "WrapObjectsLayer";
|
|
env.add_explicit_layer(ManifestLayer{}.add_layer(
|
|
ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)),
|
|
"wrap_objects_layer.json");
|
|
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
MockQueueFamilyProperties family_props{{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true};
|
|
driver.physical_devices.back().queue_family_properties.push_back(family_props);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
instance.create_info.add_layer(wrap_objects_name);
|
|
|
|
VkWin32SurfaceCreateInfoKHR surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
PFN_vkCreateWin32SurfaceKHR pfn_CreateSurface = instance.load("vkCreateWin32SurfaceKHR");
|
|
ASSERT_NE(pfn_CreateSurface, nullptr);
|
|
PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR");
|
|
ASSERT_NE(pfn_DestroySurface, nullptr);
|
|
ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface));
|
|
pfn_DestroySurface(instance, created_surface, nullptr);
|
|
}
|
|
#endif // VK_USE_PLATFORM_WIN32_KHR
|
|
|
|
#ifdef VK_USE_PLATFORM_XCB_KHR
|
|
TEST(LoaderHandleValidTests, VerifyHandleWrappingXCBSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
|
|
const char* wrap_objects_name = "WrapObjectsLayer";
|
|
env.add_explicit_layer(ManifestLayer{}.add_layer(
|
|
ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)),
|
|
"wrap_objects_layer.json");
|
|
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
MockQueueFamilyProperties family_props{{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true};
|
|
driver.physical_devices.back().queue_family_properties.push_back(family_props);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
instance.create_info.add_layer(wrap_objects_name);
|
|
|
|
VkXcbSurfaceCreateInfoKHR surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
PFN_vkCreateXcbSurfaceKHR pfn_CreateSurface = instance.load("vkCreateXcbSurfaceKHR");
|
|
ASSERT_NE(pfn_CreateSurface, nullptr);
|
|
PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR");
|
|
ASSERT_NE(pfn_DestroySurface, nullptr);
|
|
ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface));
|
|
pfn_DestroySurface(instance, created_surface, nullptr);
|
|
}
|
|
#endif // VK_USE_PLATFORM_XCB_KHR
|
|
|
|
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
|
TEST(LoaderHandleValidTests, VerifyHandleWrappingXlibSurf) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
auto& driver = env.get_test_icd();
|
|
setup_WSI_in_ICD(driver);
|
|
|
|
const char* wrap_objects_name = "WrapObjectsLayer";
|
|
env.add_explicit_layer(ManifestLayer{}.add_layer(
|
|
ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)),
|
|
"wrap_objects_layer.json");
|
|
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
MockQueueFamilyProperties family_props{{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true};
|
|
driver.physical_devices.back().queue_family_properties.push_back(family_props);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
setup_WSI_in_create_instance(instance);
|
|
instance.CheckCreate();
|
|
instance.create_info.add_layer(wrap_objects_name);
|
|
|
|
VkXlibSurfaceCreateInfoKHR surf_create_info = {};
|
|
surf_create_info.sType = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR;
|
|
surf_create_info.pNext = nullptr;
|
|
VkSurfaceKHR created_surface = VK_NULL_HANDLE;
|
|
PFN_vkCreateXlibSurfaceKHR pfn_CreateSurface = instance.load("vkCreateXlibSurfaceKHR");
|
|
ASSERT_NE(pfn_CreateSurface, nullptr);
|
|
PFN_vkDestroySurfaceKHR pfn_DestroySurface = instance.load("vkDestroySurfaceKHR");
|
|
ASSERT_NE(pfn_DestroySurface, nullptr);
|
|
ASSERT_EQ(VK_SUCCESS, pfn_CreateSurface(instance, &surf_create_info, nullptr, &created_surface));
|
|
pfn_DestroySurface(instance, created_surface, nullptr);
|
|
}
|
|
#endif // VK_USE_PLATFORM_XLIB_KHR
|
|
|
|
static VKAPI_ATTR VkBool32 VKAPI_CALL JunkDebugUtilsCallback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
|
|
VkDebugUtilsMessageTypeFlagsEXT messageTypes,
|
|
const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
|
|
void* pUserData) {
|
|
// This is just a stub callback in case the loader or any other layer triggers it.
|
|
(void)messageSeverity;
|
|
(void)messageTypes;
|
|
(void)pCallbackData;
|
|
(void)pUserData;
|
|
return VK_FALSE;
|
|
}
|
|
|
|
TEST(LoaderHandleValidTests, VerifyHandleWrappingDebugUtilsMessenger) {
|
|
FrameworkEnvironment env{};
|
|
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2));
|
|
Extension ext{"VK_EXT_debug_utils"};
|
|
auto& driver = env.get_test_icd();
|
|
driver.add_instance_extensions({ext});
|
|
|
|
const char* wrap_objects_name = "WrapObjectsLayer";
|
|
env.add_explicit_layer(ManifestLayer{}.add_layer(
|
|
ManifestLayer::LayerDescription{}.set_name(wrap_objects_name).set_lib_path(TEST_LAYER_WRAP_OBJECTS)),
|
|
"wrap_objects_layer.json");
|
|
|
|
driver.physical_devices.emplace_back("physical_device_0");
|
|
MockQueueFamilyProperties family_props{{VK_QUEUE_GRAPHICS_BIT, 1, 0, {1, 1, 1}}, true};
|
|
driver.physical_devices.back().queue_family_properties.push_back(family_props);
|
|
|
|
InstWrapper instance(env.vulkan_functions);
|
|
instance.create_info.add_extension("VK_EXT_debug_utils");
|
|
instance.create_info.add_layer(wrap_objects_name);
|
|
instance.CheckCreate();
|
|
|
|
VkDebugUtilsMessengerCreateInfoEXT debug_messenger_create_info = {};
|
|
debug_messenger_create_info.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT;
|
|
debug_messenger_create_info.pNext = nullptr;
|
|
debug_messenger_create_info.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT;
|
|
debug_messenger_create_info.messageType =
|
|
VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT;
|
|
debug_messenger_create_info.pfnUserCallback = reinterpret_cast<PFN_vkDebugUtilsMessengerCallbackEXT>(JunkDebugUtilsCallback);
|
|
VkDebugUtilsMessengerEXT messenger = VK_NULL_HANDLE;
|
|
PFN_vkCreateDebugUtilsMessengerEXT pfn_CreateMessenger = instance.load("vkCreateDebugUtilsMessengerEXT");
|
|
ASSERT_NE(pfn_CreateMessenger, nullptr);
|
|
PFN_vkDestroyDebugUtilsMessengerEXT pfn_DestroyMessenger = instance.load("vkDestroyDebugUtilsMessengerEXT");
|
|
ASSERT_NE(pfn_DestroyMessenger, nullptr);
|
|
ASSERT_EQ(VK_SUCCESS, pfn_CreateMessenger(instance, &debug_messenger_create_info, nullptr, &messenger));
|
|
pfn_DestroyMessenger(instance, messenger, nullptr);
|
|
}
|