PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
LogicalDevice.hpp
1#pragma once
2
3#include <volk.h>
4
5#include <vector>
6
7namespace PixelBullet
8{
9 class Instance;
10 class PhysicalDevice;
11
13 {
14 friend class Graphics;
15
16 public:
17 LogicalDevice(const Instance& instance, const PhysicalDevice& physicalDevice);
19
20 operator const VkDevice&() const
21 {
22 return m_LogicalDevice;
23 }
24
25 const VkDevice& GetLogicalDevice() const
26 {
27 return m_LogicalDevice;
28 }
29 const VkPhysicalDeviceFeatures& GetEnabledFeatures() const
30 {
31 return m_EnabledFeatures;
32 }
33 const VkQueue& GetGraphicsQueue() const
34 {
35 return m_GraphicsQueue;
36 }
37 const VkQueue& GetPresentQueue() const
38 {
39 return m_PresentQueue;
40 }
41 const VkQueue& GetComputeQueue() const
42 {
43 return m_ComputeQueue;
44 }
45 const VkQueue& GetTransferQueue() const
46 {
47 return m_TransferQueue;
48 }
49 uint32_t GetGraphicsFamily() const
50 {
51 return m_GraphicsFamily;
52 }
53 uint32_t GetPresentFamily() const
54 {
55 return m_PresentFamily;
56 }
57 uint32_t GetComputeFamily() const
58 {
59 return m_ComputeFamily;
60 }
61 uint32_t GetTransferFamily() const
62 {
63 return m_TransferFamily;
64 }
65
66 static const std::vector<const char*> DeviceExtensions;
67
68 private:
69 void CreateQueueIndices();
70 void CreateLogicalDevice();
71
72 const Instance& m_Instance;
73 const PhysicalDevice& m_PhysicalDevice;
74
75 VkDevice m_LogicalDevice = VK_NULL_HANDLE;
76 VkPhysicalDeviceFeatures m_EnabledFeatures = {};
77
78 VkQueueFlags m_SupportedQueues = {};
79 uint32_t m_GraphicsFamily = 0;
80 uint32_t m_PresentFamily = 0;
81 uint32_t m_ComputeFamily = 0;
82 uint32_t m_TransferFamily = 0;
83
84 VkQueue m_GraphicsQueue = VK_NULL_HANDLE;
85 VkQueue m_PresentQueue = VK_NULL_HANDLE;
86 VkQueue m_ComputeQueue = VK_NULL_HANDLE;
87 VkQueue m_TransferQueue = VK_NULL_HANDLE;
88 };
89} // namespace PixelBullet
Module that manages the Vulkan m_Instance, Surface, Window and the renderpass structure.
Definition Graphics.hpp:32
Definition Instance.hpp:14
Definition LogicalDevice.hpp:13
Definition PhysicalDevice.hpp:12