Class VulkanPhysicalDevice

Nested Relationships

Nested Types

Inheritance Relationships

Base Type

Class Documentation

class VulkanPhysicalDevice : public portal::renderer::PhysicalDevice

Vulkan physical device (GPU) wrapper with capabilities and feature queries.

Wraps vk::raii::PhysicalDevice and caches properties, features, memory properties, queue families, and supported extensions at construction time. Provides queries for GPU capabilities needed during device creation and resource allocation.

Public Types

using Features = vk::StructureChain<vk::PhysicalDeviceFeatures2, vk::PhysicalDeviceVulkan11Features, vk::PhysicalDeviceVulkan12Features, vk::PhysicalDeviceVulkan13Features, vk::PhysicalDeviceExtendedDynamicStateFeaturesEXT>

Feature chain including Vulkan 1.1, 1.2, 1.3, and extended dynamic state features.

Public Functions

explicit VulkanPhysicalDevice(vk::raii::PhysicalDevice &&physical_device)

Constructs physical device wrapper and caches capabilities.

Parameters:

physical_device – Physical device handle (moved into this object)

vk::Format find_depth_format() const

Finds a supported depth format from common depth formats.

Returns:

Supported depth format (e.g., D32_SFLOAT, D24_UNORM_S8_UINT)

virtual DriverVersion get_driver_version() const override

Gets driver version.

virtual bool is_extension_supported(std::string_view extensions_name) const override

Checks if extension is supported.

Parameters:

extensions_name – Extension name to check

Returns:

True if supported

virtual bool supports_present(Surface &surface, uint32_t queue_family_index) const override

Checks if queue family supports presentation to surface.

Parameters:
  • surface – The surface

  • queue_family_indexQueue family index to check

Returns:

True if presentation is supported

inline const Features &get_features_chain() const

Gets the feature structure chain.

vk::FormatProperties get_format_properties(vk::Format format) const

Gets format properties.

Parameters:

format – The format to query

Returns:

Format properties

inline const vk::raii::PhysicalDevice &get_handle() const

Gets the physical device handle.

vk::PhysicalDeviceFeatures get_features() const

Gets device features.

inline vk::PhysicalDeviceProperties get_properties() const

Gets device properties.

inline vk::PhysicalDeviceMemoryProperties get_memory_properties() const

Gets memory properties.

const std::vector<vk::QueueFamilyProperties> &get_queue_family_properties() const

Gets queue family properties.

QueueFamilyIndices get_queue_family_indices(vk::QueueFlags queue_flags) const

Gets queue family indices for requested queue types.

Parameters:

queue_flagsQueue type flags (graphics, compute, transfer)

Returns:

Queue family indices

struct QueueFamilyIndices

Queue family indices for different queue types.

Public Members

int32_t graphics = -1
int32_t compute = -1
int32_t transfer = -1