TheAtlasEngine
 
Loading...
Searching...
No Matches
vk_physical_driver.hpp
1#pragma once
2#include <vulkan/vulkan.h>
3#include <vector>
4
5namespace atlas::vk {
6
8 VkSurfaceCapabilitiesKHR surface_capabilities;
9 VkSurfaceFormatKHR surface_format;
10 };
11
24 struct queue_family_indices {
25 uint32_t graphics = -1;
26 uint32_t compute = -1;
27 uint32_t transfer = -1;
28 };
29
30 public:
31 vk_physical_driver() = default;
32
39 vk_physical_driver(const VkInstance& p_instance);
40
42
49 [[nodiscard]] queue_family_indices read_queue_family_indices() const {
50 return m_queue_indices;
51 }
52
53 [[nodiscard]] VkPhysicalDeviceMemoryProperties memory_properties()
54 const;
55
60 [[nodiscard]] uint32_t read_presentation_index(
61 const VkSurfaceKHR& p_surface);
62
68 const VkSurfaceKHR& p_surface);
69
77 operator VkPhysicalDevice() { return m_physical_driver; }
78
86 operator VkPhysicalDevice() const { return m_physical_driver; }
87
88 private:
89 queue_family_indices select_queue_family_indices();
90
91 private:
92 VkPhysicalDevice m_physical_driver = nullptr;
93 queue_family_indices m_queue_indices{};
94 std::vector<VkQueueFamilyProperties> m_queue_family_properties{};
95 surface_properties m_surface_properties{};
96 };
97};
vulkan-specific implementation wrapper around VkPhysicalDevice
Definition vk_physical_driver.hpp:23
vk_physical_driver(const VkInstance &p_instance)
constructs a new vulkan physical device
uint32_t read_presentation_index(const VkSurfaceKHR &p_surface)
surface_properties get_surface_properties(const VkSurfaceKHR &p_surface)
querying surface properties based on the currently specified VkSurfaceKHR handle created
queue_family_indices read_queue_family_indices() const
gives you the queue families that are supported
Definition vk_physical_driver.hpp:49
Definition vk_physical_driver.hpp:7