sandbox
Loading...
Searching...
No Matches
physical_device.hpp
1#ifndef LIBSBX_GRAPHICS_DEVICES_PHYSICAL_DEVICE_HPP_
2#define LIBSBX_GRAPHICS_DEVICES_PHYSICAL_DEVICE_HPP_
3
4#include <vector>
5#include <cstring>
6#include <cinttypes>
7
8#include <vulkan/vulkan.hpp>
9
10#include <libsbx/utility/noncopyable.hpp>
11
12#include <libsbx/graphics/devices/instance.hpp>
13
14namespace sbx::graphics {
15
17
18public:
19
21
23
24 auto handle() const noexcept -> const VkPhysicalDevice&;
25
26 operator const VkPhysicalDevice&() const noexcept;
27
28 auto properties() const -> const VkPhysicalDeviceProperties&;
29
30 auto features() const -> const VkPhysicalDeviceFeatures&;
31
32 auto memory_properties() const -> const VkPhysicalDeviceMemoryProperties&;
33
34 auto msaa_samples() const -> const VkSampleCountFlagBits&;
35
36 auto find_memory_type(std::uint32_t typeFilter, VkMemoryPropertyFlags properties) const -> std::uint32_t;
37
38 auto find_supported_format(const std::vector<VkFormat>& candidates, VkImageTiling tiling, VkFormatFeatureFlags features) const -> VkFormat;
39
40private:
41
42 auto _choose_device(const std::vector<VkPhysicalDevice>& devices) -> VkPhysicalDevice;
43
44 auto _score_device(const VkPhysicalDevice& device) -> std::uint32_t;
45
46 auto _get_max_usable_sample_count() const -> VkSampleCountFlagBits;
47
48 VkPhysicalDevice _handle{};
49 VkPhysicalDeviceProperties _properties{};
50 VkPhysicalDeviceFeatures _features{};
51 VkPhysicalDeviceMemoryProperties _memory_properties{};
52 VkSampleCountFlagBits _msaa_samples{};
53
54}; // class physical_device
55
56} // namespace sbx::graphics
57
58#endif // LIBSBX_GRAPHICS_DEVICES_PHYSICAL_DEVICE_HPP_
59
Definition: instance.hpp:10
Definition: physical_device.hpp:16
Definition: noncopyable.hpp:6