mirror of
https://github.com/charles-lunarg/vk-bootstrap.git
synced 2024-11-25 00:14:35 +00:00
96688de170
Since the API can accept vulkan-hpp types in a few places, it is good to have tests for those places. While the current test suite isn't exhaustive, it is enough to get the ball rolling. This PR also refactors some of the 'setup' logic for the tests into a separate file so that the hpp tests can make use of them.
61 lines
3.0 KiB
C++
61 lines
3.0 KiB
C++
|
|
#include "vulkan_mock_setup.hpp"
|
|
|
|
vkb::Instance get_instance(uint32_t minor_version) {
|
|
auto instance_ret = vkb::InstanceBuilder().request_validation_layers().require_api_version(1, minor_version).build();
|
|
REQUIRE(instance_ret.has_value());
|
|
return instance_ret.value();
|
|
}
|
|
vkb::Instance get_headless_instance(uint32_t minor_version) {
|
|
auto instance_ret =
|
|
vkb::InstanceBuilder().request_validation_layers().require_api_version(1, minor_version).set_headless().build();
|
|
REQUIRE(instance_ret.has_value());
|
|
return instance_ret.value();
|
|
}
|
|
|
|
VkExtensionProperties get_extension_properties(const char* extName) {
|
|
VkExtensionProperties ext_props{};
|
|
std::copy_n(extName, VK_MAX_EXTENSION_NAME_SIZE, ext_props.extensionName);
|
|
return ext_props;
|
|
}
|
|
|
|
VulkanMock& get_and_setup_default() {
|
|
VulkanMock& mock = *get_vulkan_mock();
|
|
mock.instance_extensions.push_back(get_extension_properties(VK_KHR_SURFACE_EXTENSION_NAME));
|
|
#if defined(_WIN32)
|
|
mock.instance_extensions.push_back(get_extension_properties("VK_KHR_win32_surface"));
|
|
#elif defined(__ANDROID__)
|
|
mock.instance_extensions.push_back(get_extension_properties("VK_KHR_android_surface"));
|
|
#elif defined(_DIRECT2DISPLAY)
|
|
mock.instance_extensions.push_back(get_extension_properties("VK_KHR_android_surface"));
|
|
#elif defined(__linux__)
|
|
mock.instance_extensions.push_back(get_extension_properties("VK_KHR_xcb_surface"));
|
|
mock.instance_extensions.push_back(get_extension_properties("VK_KHR_xlib_surface"));
|
|
mock.instance_extensions.push_back(get_extension_properties("VK_KHR_wayland_surface"));
|
|
#elif defined(__APPLE__)
|
|
mock.instance_extensions.push_back(get_extension_properties("VK_EXT_metal_surface"));
|
|
#endif
|
|
mock.instance_extensions.push_back(get_extension_properties(VK_EXT_DEBUG_UTILS_EXTENSION_NAME));
|
|
VulkanMock::PhysicalDeviceDetails physical_device_details{};
|
|
physical_device_details.extensions.push_back(get_extension_properties(VK_KHR_SWAPCHAIN_EXTENSION_NAME));
|
|
physical_device_details.properties.apiVersion = VK_API_VERSION_1_0;
|
|
VkQueueFamilyProperties queue_family_properties{};
|
|
queue_family_properties.queueCount = 1;
|
|
queue_family_properties.queueFlags = VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT | VK_QUEUE_TRANSFER_BIT;
|
|
queue_family_properties.minImageTransferGranularity = { 1, 1, 1 };
|
|
physical_device_details.queue_family_properties.push_back(queue_family_properties);
|
|
mock.add_physical_device(std::move(physical_device_details));
|
|
return mock;
|
|
}
|
|
|
|
VulkanMock::SurfaceDetails get_basic_surface_details() {
|
|
VulkanMock::SurfaceDetails details;
|
|
details.present_modes.push_back(VK_PRESENT_MODE_FIFO_KHR);
|
|
details.surface_formats.push_back(VkSurfaceFormatKHR{ VK_FORMAT_R8G8B8_SRGB, VK_COLORSPACE_SRGB_NONLINEAR_KHR });
|
|
details.capabilities.minImageCount = 2;
|
|
details.capabilities.minImageExtent = { 600, 800 };
|
|
details.capabilities.currentExtent = { 600, 800 };
|
|
details.capabilities.supportedUsageFlags = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
|
|
return details;
|
|
}
|