Fling Engine  0.00.1
Fling Engine is a game engine written in Vulkan
PhyscialDevice.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "FlingVulkan.h"
4 
5 namespace Fling
6 {
12  {
13  public:
14 
15  explicit PhysicalDevice(class Instance* t_Instance);
16 
18  ~PhysicalDevice() noexcept = default;
19 
20  operator const VkPhysicalDevice &() const { return m_PhysicalDevice; }
21  const VkPhysicalDevice& GetVkPhysicalDevice() const { return m_PhysicalDevice; }
22 
23  const VkPhysicalDeviceProperties& GetDeviceProps() const { return m_DeviceProperties; }
24  const VkPhysicalDeviceFeatures& GetDeivceFeatures() const { return m_DeviceFeatures; }
25 
32  static const char* GetDeviceType(VkPhysicalDeviceProperties t_Props);
33 
34  static const char* GetDeviceVendor(VkPhysicalDeviceProperties t_Props);
35 
37  void LogPhysicalDeviceInfo();
38 
42  VkFormatProperties GetFormatProperties(VkFormat t_Form) const;
43 
44  VkSampleCountFlagBits GetMaxUsableSampleCount();
45 
46  VkBool32 GetSupportedDepthFormat(VkFormat* depthFormat) const;
47 
48  private:
49 
54  VkPhysicalDevice ChooseBestPhyscialDevice(std::vector<VkPhysicalDevice>& t_AvailableDevices);
55 
57  VkPhysicalDevice m_PhysicalDevice = VK_NULL_HANDLE;
58 
60  const class Instance* m_Instance;
61 
63  VkPhysicalDeviceProperties m_DeviceProperties{};
64  VkPhysicalDeviceFeatures m_DeviceFeatures{};
65  VkPhysicalDeviceMemoryProperties m_MemoryProperties{};
66 
68  VkSampleCountFlagBits m_MSAASamples = VK_SAMPLE_COUNT_1_BIT;
69  };
70 } // namespace Fling
VkSampleCountFlagBits m_MSAASamples
The max supported MSSA level on this device.
Definition: PhyscialDevice.h:68
VkPhysicalDeviceProperties m_DeviceProperties
Misc.
Definition: PhyscialDevice.h:63
PhysicalDevice(class Instance *t_Instance)
Definition: PhyscialDevice.cpp:11
~PhysicalDevice() noexcept=default
The physical device will get cleaned up when the Instance does automatically.
A physical device represents the Vulkan physical device (the GPU) that we are currently using...
Definition: PhyscialDevice.h:11
const VkPhysicalDeviceFeatures & GetDeivceFeatures() const
Definition: PhyscialDevice.h:24
The instance is a representation of this application graphics instance in Vulkan. ...
Definition: Instance.h:11
VkFormatProperties GetFormatProperties(VkFormat t_Form) const
Checks hte given format properties that are supported on this physical device.
Definition: PhyscialDevice.cpp:42
const class Instance * m_Instance
Owning instance of this physical device.
Definition: PhyscialDevice.h:60
void LogPhysicalDeviceInfo()
Logs info about this physical device (vendor, model, ID, etc) to the console/Log file.
Definition: PhyscialDevice.cpp:89
VkBool32 GetSupportedDepthFormat(VkFormat *depthFormat) const
Definition: PhyscialDevice.cpp:137
VkPhysicalDeviceMemoryProperties m_MemoryProperties
Definition: PhyscialDevice.h:65
VkSampleCountFlagBits GetMaxUsableSampleCount()
Definition: PhyscialDevice.cpp:121
VkPhysicalDevice ChooseBestPhyscialDevice(std::vector< VkPhysicalDevice > &t_AvailableDevices)
Choose the best available physical device on this machine favoring discrete GPU&#39;s and those who match...
Definition: PhyscialDevice.cpp:164
const VkPhysicalDeviceProperties & GetDeviceProps() const
Definition: PhyscialDevice.h:23
VkPhysicalDeviceFeatures m_DeviceFeatures
Definition: PhyscialDevice.h:64
const VkPhysicalDevice & GetVkPhysicalDevice() const
Definition: PhyscialDevice.h:21
Definition: Engine.h:29
static const char * GetDeviceType(VkPhysicalDeviceProperties t_Props)
Get a string representing the device vendor.
Definition: PhyscialDevice.cpp:50
VkPhysicalDevice m_PhysicalDevice
The Vulkan physical device.
Definition: PhyscialDevice.h:57
static const char * GetDeviceVendor(VkPhysicalDeviceProperties t_Props)
Definition: PhyscialDevice.cpp:71