Fling Engine  0.00.1
Fling Engine is a game engine written in Vulkan
LogicalDevice.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "FlingVulkan.h"
4 
5 namespace Fling
6 {
11  {
12  public:
13 
14  explicit LogicalDevice(class Instance* t_Instance, class PhysicalDevice* t_PhysDevice, const VkSurfaceKHR t_Surface);
15 
17 
18  const VkDevice& GetVkDevice() const { return m_Device; }
19 
20  const VkQueue& GetGraphicsQueue() const { return m_GraphicsQueue; }
21  const VkQueue& GetPresentQueue() const { return m_PresentQueue; }
22 
23  const VkQueueFlags& GetSupportedQueues() const { return m_SupportedQueues; }
24 
27 
28  void WaitForIdle();
29 
30 
31  private:
32 
34  VkDevice m_Device = VK_NULL_HANDLE;
35 
36  const class Instance* m_Instance;
38  const VkSurfaceKHR m_Surface;
39 
41  VkQueue m_GraphicsQueue = VK_NULL_HANDLE;
42 
44  VkQueue m_PresentQueue = VK_NULL_HANDLE;
45 
47  VkQueueFlags m_SupportedQueues{};
52 
56  void CreateQueueIndecies();
57 
61  void CreateDevice();
62  };
63 } // namespace Fling
void WaitForIdle()
Definition: LogicalDevice.cpp:130
const VkSurfaceKHR m_Surface
Definition: LogicalDevice.h:38
VkQueueFlags m_SupportedQueues
Queue families.
Definition: LogicalDevice.h:47
const class Instance * m_Instance
Definition: LogicalDevice.h:36
UINT32 m_GraphicsFamily
Definition: LogicalDevice.h:48
const VkDevice & GetVkDevice() const
Definition: LogicalDevice.h:18
A physical device represents the Vulkan physical device (the GPU) that we are currently using...
Definition: PhyscialDevice.h:11
VkQueue m_GraphicsQueue
Handle for the graphics queue.
Definition: LogicalDevice.h:41
A logical device represents the application view of the device.
Definition: LogicalDevice.h:10
The instance is a representation of this application graphics instance in Vulkan. ...
Definition: Instance.h:11
void CreateQueueIndecies()
Get what queue Indecies/families this device should use.
Definition: LogicalDevice.cpp:18
const VkQueue & GetPresentQueue() const
Definition: LogicalDevice.h:21
const class PhysicalDevice * m_PhysicalDevice
Definition: LogicalDevice.h:37
LogicalDevice(class Instance *t_Instance, class PhysicalDevice *t_PhysDevice, const VkSurfaceKHR t_Surface)
Definition: LogicalDevice.cpp:8
~LogicalDevice()
Definition: LogicalDevice.cpp:135
const VkQueue & GetGraphicsQueue() const
Definition: LogicalDevice.h:20
UINT32 GetPresentFamily() const
Definition: LogicalDevice.h:26
const VkQueueFlags & GetSupportedQueues() const
Definition: LogicalDevice.h:23
VkDevice m_Device
The vulkan logical device.
Definition: LogicalDevice.h:34
UINT32 GetGraphicsFamily() const
Definition: LogicalDevice.h:25
UINT32 m_ComputeFamily
Definition: LogicalDevice.h:50
VkQueue m_PresentQueue
Handle to the presentation queue.
Definition: LogicalDevice.h:44
uint32_t UINT32
Definition: FlingTypes.h:10
UINT32 m_PresentFamily
Definition: LogicalDevice.h:49
Definition: Engine.h:13
UINT32 m_TransferFamily
Definition: LogicalDevice.h:51
void CreateDevice()
Create the Vk resoruces for this logical device.
Definition: LogicalDevice.cpp:79