mirror of
https://github.com/charles-lunarg/vk-bootstrap.git
synced 2024-11-25 00:14:35 +00:00
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;
|
||
|
}
|