PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
PhysicalDevice.hpp
1#pragma once
2
3#include <volk.h>
4
5#include <vector>
6
7namespace PixelBullet
8{
9 class Instance;
10
12 {
13 friend class Graphics;
14
15 public:
16 explicit PhysicalDevice(const Instance& instance);
17
18 operator const VkPhysicalDevice&() const
19 {
20 return m_PhysicalDevice;
21 }
22
23 const VkPhysicalDevice& GetPhysicalDevice() const
24 {
25 return m_PhysicalDevice;
26 }
27 const VkPhysicalDeviceProperties& GetProperties() const
28 {
29 return m_Properties;
30 }
31 const VkPhysicalDeviceFeatures& GetFeatures() const
32 {
33 return m_Features;
34 }
35 const VkPhysicalDeviceMemoryProperties& GetMemoryProperties() const
36 {
37 return m_MemoryProperties;
38 }
39 const VkSampleCountFlagBits& GetMSAASamples() const
40 {
41 return m_MSAASamples;
42 }
43
44 private:
45 VkPhysicalDevice ChoosePhysicalDevice(const std::vector<VkPhysicalDevice>& devices);
46 static uint32_t ScorePhysicalDevice(const VkPhysicalDevice& device);
47 VkSampleCountFlagBits GetMaxUsableSampleCount() const;
48
49 static void LogVulkanDevice(const VkPhysicalDeviceProperties& physicalDeviceProperties,
50 const std::vector<VkExtensionProperties>& extensionProperties);
51
52 const Instance& m_Instance;
53
54 VkPhysicalDevice m_PhysicalDevice = VK_NULL_HANDLE;
55 VkPhysicalDeviceProperties m_Properties = {};
56 VkPhysicalDeviceFeatures m_Features = {};
57 VkPhysicalDeviceMemoryProperties m_MemoryProperties = {};
58 VkSampleCountFlagBits m_MSAASamples = VK_SAMPLE_COUNT_1_BIT;
59 };
60} // namespace PixelBullet
Module that manages the Vulkan m_Instance, Surface, Window and the renderpass structure.
Definition Graphics.hpp:32
Definition Instance.hpp:14
Definition PhysicalDevice.hpp:12