class VulkanContext
Defined at line 52 of file ../../src/graphics/tests/common/vulkan_context.h
VulkanContext is a convenience class for handling boilerplate vulkan setup code.
It creates / encapsulates vulkan:
- instance
- physical device
- queue family
- device
- queue
VulkanContext leverages hpp to have smart pointer semantics for simplified vulkan
resource allocation and free.
There are 2 canonical usage modalities expected for VulkanContext:
(1) the simplest mode is to pair VulkanContext with its nested Builder class
to selectively modify the required vulkan "CreateInfo" structs during
construction. E.g. to create an std::unique_ptr
<VulkanContext
> setting the instance
CreateInfo and the queue flag bits:
auto ctx = VulkanContext::Builder{}.set_instance_info(info).set_queue_flag_bits(bits).Unique();
(2) the second construction mode is for more sophisticated construction where more fine
grained control is required during construction. There are three primary piecewise construction
phases that must be done in order:
- InitInstance()
- InitQueueFamily()
- InitDevice()
For example, the device CreateInfo structure may need to be customized
(e.g. to specify protected memory) before calling InitDevice(), and those modifications require
access to the physical device chosen in the pair of calls to InitInstance() and
InitQueueFamily().
Public Members
static const int kInvalidQueueFamily
static Flags kDefaultQueueFlags
static DebugUtilsMessengerCreateInfoEXT default_debug_info_s_
static ContextWithUserData default_debug_callback_user_data_s_
Public Methods
void VulkanContext (const vk::InstanceCreateInfo & instance_info, std::optional<uint32_t> physical_device_index, const vk::DeviceCreateInfo & device_info, const vk::DeviceQueueCreateInfo & queue_info, const vk::QueueFlags & queue_flags, const vk::DebugUtilsMessengerCreateInfoEXT & debug_info, ContextWithUserData debug_user_data, vk::Optional<const vk::AllocationCallbacks> allocator, bool validation_layers_enabled, bool validation_layers_ignored_)
All struct arguments are shallow copied.
Defined at line 34 of file ../../src/graphics/tests/common/vulkan_context.cc
void VulkanContext (std::optional<uint32_t> physical_device_index, const vk::QueueFlags & queue_flags, vk::Optional<const vk::AllocationCallbacks> allocator)
Defined at line 58 of file ../../src/graphics/tests/common/vulkan_context.cc
bool InitInstance ()
Defined at line 70 of file ../../src/graphics/tests/common/vulkan_context.cc
void set_validation_layers_enabled (bool v)
Defined at line 86 of file ../../src/graphics/tests/common/vulkan_context.h
void set_validation_errors_ignored (bool v)
Set to true to ignore validation errors and allow the test to pass even with errors.
Defined at line 88 of file ../../src/graphics/tests/common/vulkan_context.h
const vk::InstanceCreateInfo & instance_info ()
Defined at line 93 of file ../../src/graphics/tests/common/vulkan_context.h
const vk::DeviceCreateInfo & device_info ()
Defined at line 94 of file ../../src/graphics/tests/common/vulkan_context.h
const vk::DeviceQueueCreateInfo & queue_info ()
Defined at line 95 of file ../../src/graphics/tests/common/vulkan_context.h
const vk::QueueFlags & queue_flag_bits ()
Defined at line 102 of file ../../src/graphics/tests/common/vulkan_context.h
bool validation_errors_ignored ()
Defined at line 103 of file ../../src/graphics/tests/common/vulkan_context.h
const vk::detail::DispatchLoaderDynamic & loader ()
Defined at line 105 of file ../../src/graphics/tests/common/vulkan_context.h
bool Init ()
Defined at line 235 of file ../../src/graphics/tests/common/vulkan_context.cc
bool InitQueueFamily ()
Defined at line 153 of file ../../src/graphics/tests/common/vulkan_context.cc
bool InitDevice ()
Defined at line 202 of file ../../src/graphics/tests/common/vulkan_context.cc
bool set_instance_info (const vk::InstanceCreateInfo & v)
All struct arguments to modifiers are shallow copied.
Defined at line 267 of file ../../src/graphics/tests/common/vulkan_context.cc
bool set_device_info (const vk::DeviceCreateInfo & v)
Defined at line 275 of file ../../src/graphics/tests/common/vulkan_context.cc
bool set_queue_info (const vk::DeviceQueueCreateInfo & v)
Defined at line 283 of file ../../src/graphics/tests/common/vulkan_context.cc
bool set_queue_flags (const vk::QueueFlags & v)
Defined at line 291 of file ../../src/graphics/tests/common/vulkan_context.cc
void set_validation_allowed_errors (const std::vector<vk::Result> & v)
void set_debug_utils_messenger (const vk::DebugUtilsMessengerCreateInfoEXT & debug_info, const ContextWithUserData & user_data)
Defined at line 299 of file ../../src/graphics/tests/common/vulkan_context.cc
const vk::UniqueInstance & instance ()
Defined at line 307 of file ../../src/graphics/tests/common/vulkan_context.cc
const vk::PhysicalDevice & physical_device ()
Defined at line 314 of file ../../src/graphics/tests/common/vulkan_context.cc
const vk::UniqueDevice & device ()
Defined at line 328 of file ../../src/graphics/tests/common/vulkan_context.cc
const vk::Queue & queue ()
Defined at line 335 of file ../../src/graphics/tests/common/vulkan_context.cc
int queue_family_index ()
Defined at line 321 of file ../../src/graphics/tests/common/vulkan_context.cc
Records
Friends
class VkContext_ImplicitDebugUtilsMessenger_Test
class VkContext_Unique_Test