PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
instance.hpp
1#pragma once
2
3#include <volk.h>
4
5#include <vector>
6
7#ifndef VK_API_VERSION_1_1
8#define VK_API_VERSION_1_1 VK_MAKE_VERSION(1, 1, 0)
9#endif
10
11namespace PixelBullet
12{
13 struct ApplicationSpecification;
14 class Window;
15
17 {
18 friend class Graphics;
19
20 public:
21 friend VKAPI_ATTR VkBool32 VKAPI_CALL CallbackDebug(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
22 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
23 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
24 void* pUserData);
25
26 Instance(const ApplicationSpecification& specification, const Window& window);
27 ~Instance();
28
29 static VkResult FvkCreateDebugUtilsMessengerEXT(VkInstance instance,
30 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
31 const VkAllocationCallbacks* pAllocator,
32 VkDebugUtilsMessengerEXT* pDebugMessenger);
33 static void FvkDestroyDebugUtilsMessengerEXT(VkInstance instance, VkDebugUtilsMessengerEXT messenger,
34 const VkAllocationCallbacks* pAllocator);
35
36 static uint32_t FindMemoryTypeIndex(const VkPhysicalDeviceMemoryProperties* deviceMemoryProperties,
37 const VkMemoryRequirements* memoryRequirements,
38 VkMemoryPropertyFlags requiredProperties);
39
40 operator const VkInstance&() const
41 {
42 return m_Instance;
43 }
44
45 bool GetEnableValidationLayers() const
46 {
47 return m_EnableValidationLayers;
48 }
49 const VkInstance& GetInstance() const
50 {
51 return m_Instance;
52 }
53
54 public:
55 static const std::vector<const char*> ValidationLayers;
56
57 private:
58 bool CheckValidationLayerSupport() const;
59 std::vector<const char*> GetExtensions() const;
60 void CreateInstance();
61 void CreateDebugMessenger();
62
63 private:
64 static void LogVulkanLayers(const std::vector<VkLayerProperties>& layerProperties);
65
66 private:
67 const ApplicationSpecification& m_Specification;
68 const Window& m_Window;
69 bool m_EnableValidationLayers = false;
70
71 VkInstance m_Instance = VK_NULL_HANDLE;
72 VkDebugUtilsMessengerEXT m_DebugMessenger = VK_NULL_HANDLE;
73 };
74} // namespace PixelBullet
Definition instance.hpp:17