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{
14 {
15 friend class Graphics;
16
17 public:
18 friend VKAPI_ATTR VkBool32 VKAPI_CALL CallbackDebug(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
19 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
20 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
21 void* pUserData);
22
23 Instance();
24 ~Instance();
25
26 static VkResult FvkCreateDebugUtilsMessengerEXT(VkInstance instance,
27 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
28 const VkAllocationCallbacks* pAllocator,
29 VkDebugUtilsMessengerEXT* pDebugMessenger);
30 static void FvkDestroyDebugUtilsMessengerEXT(VkInstance instance, VkDebugUtilsMessengerEXT messenger,
31 const VkAllocationCallbacks* pAllocator);
32
33 static void FvkCmdPushDescriptorSetKHR(VkDevice device, VkCommandBuffer commandBuffer,
34 VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout,
35 uint32_t set, uint32_t descriptorWriteCount,
36 const VkWriteDescriptorSet* pDescriptorWrites);
37
38 static uint32_t FindMemoryTypeIndex(const VkPhysicalDeviceMemoryProperties* deviceMemoryProperties,
39 const VkMemoryRequirements* memoryRequirements,
40 VkMemoryPropertyFlags requiredProperties);
41
42 operator const VkInstance&() const
43 {
44 return m_Instance;
45 }
46
47 bool GetEnableValidationLayers() const
48 {
49 return m_EnableValidationLayers;
50 }
51 const VkInstance& GetInstance() const
52 {
53 return m_Instance;
54 }
55
56 public:
57 static const std::vector<const char*> ValidationLayers;
58
59 private:
60 bool CheckValidationLayerSupport() const;
61 std::vector<const char*> GetExtensions() const;
62 void CreateInstance();
63 void CreateDebugMessenger();
64
65 private:
66 static void LogVulkanLayers(const std::vector<VkLayerProperties>& layerProperties);
67
68 private:
69 bool m_EnableValidationLayers = false;
70
71 VkInstance m_Instance = VK_NULL_HANDLE;
72 VkDebugUtilsMessengerEXT m_DebugMessenger = VK_NULL_HANDLE;
73 };
74} // namespace PixelBullet
Module that manages the Vulkan m_Instance, Surface, Window and the renderpass structure.
Definition Graphics.hpp:32
Definition Instance.hpp:14