PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
physical_device.h
1#pragma once
2
3#include <volk.h>
4
5#include <vector>
6
7namespace pixelbullet
8{
9class Instance;
10
12{
13 friend class Graphics;
14
15public:
16 explicit PhysicalDevice(const Instance& instance);
17
18 operator const VkPhysicalDevice&() const
19 {
20 return physical_device_;
21 }
22
23 const VkPhysicalDevice& GetPhysicalDevice() const
24 {
25 return physical_device_;
26 }
27 const VkPhysicalDeviceProperties& GetProperties() const
28 {
29 return properties_;
30 }
31 const VkPhysicalDeviceFeatures& GetFeatures() const
32 {
33 return features_;
34 }
35 const VkPhysicalDeviceMemoryProperties& GetMemoryProperties() const
36 {
37 return memory_properties_;
38 }
39 const VkSampleCountFlagBits& GetMSAASamples() const
40 {
41 return msaa_samples_;
42 }
43
44private:
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& physical_device_properties,
50 const std::vector<VkExtensionProperties>& extension_properties);
51
52 const Instance& instance_;
53
54 VkPhysicalDevice physical_device_ = VK_NULL_HANDLE;
55 VkPhysicalDeviceProperties properties_ = {};
56 VkPhysicalDeviceFeatures features_ = {};
57 VkPhysicalDeviceMemoryProperties memory_properties_ = {};
58 VkSampleCountFlagBits msaa_samples_ = VK_SAMPLE_COUNT_1_BIT;
59};
60} // namespace pixelbullet
Module that manages the Vulkan instance_, Surface, Window and the renderpass structure.
Definition graphics.h:36
Definition instance.h:17
Definition physical_device.h:12