PeriDyno 1.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
VkSystem.h
Go to the documentation of this file.
1#pragma once
2#include "Platform.h"
3#include "vulkan/vulkan.h"
4
5#include <vector>
6#include <string>
7
8#if defined(VK_USE_PLATFORM_ANDROID_KHR)
9#include <android_native_app_glue.h>
10#endif
11
12namespace dyno
13{
14 class VkContext;
15
16 class VkSystem {
17
18 public:
19 static VkSystem* instance();
20
22
23 bool initialize(bool enableValidation = false);
24#if defined(VK_USE_PLATFORM_ANDROID_KHR)
25 bool initialize(android_app* state);
26#endif
27 VkInstance instanceHandle() { return vkInstance; }
28
29 void enableMemoryPool(bool enableMemPool = false) {
30 useMemoryPool = enableMemPool;
31 }
32
33 VkPhysicalDeviceProperties getDeviceProperties() {
34 return deviceProperties;
35 }
36
37 VkPhysicalDevice getPhysicalDevice() {
38 return physicalDevice;
39 }
40
41 private:
42 VkSystem();
43 ~VkSystem();
44
48 VkResult createVulkanInstance();
49
53 VkContext* ctx = nullptr;
54
56 bool useMemoryPool = true;
57 std::string name = "Vulkan";
58 uint32_t apiVersion = VK_API_VERSION_1_2;
59
63 VkInstance vkInstance;
64 VkPhysicalDevice physicalDevice;
65 VkPhysicalDeviceProperties deviceProperties;
66 VkPhysicalDeviceFeatures deviceFeatures;
67 VkPhysicalDeviceMemoryProperties deviceMemoryProperties;
68 VkPhysicalDeviceFeatures enabledFeatures{};
69 void* deviceCreatepNextChain = nullptr;
70
71 VkDebugUtilsMessengerEXT debugUtilsMessenger = nullptr;
72
73 public:
74 std::vector<const char*> enabledDeviceExtensions;
75 std::vector<const char*> enabledInstanceExtensions;
76
77 };
78}
VkPhysicalDevice getPhysicalDevice()
Definition VkSystem.h:37
bool useMemoryPool
Definition VkSystem.h:56
VkPhysicalDeviceMemoryProperties deviceMemoryProperties
Definition VkSystem.h:67
VkContext * currentContext()
Definition VkSystem.h:21
bool initialize(bool enableValidation=false)
Definition VkSystem.cpp:44
VkPhysicalDevice physicalDevice
Definition VkSystem.h:64
VkPhysicalDeviceFeatures deviceFeatures
Definition VkSystem.h:66
VkInstance instanceHandle()
Definition VkSystem.h:27
VkInstance vkInstance
Vulkan instance, stores all per-application states.
Definition VkSystem.h:63
bool validation
Definition VkSystem.h:55
VkPhysicalDeviceFeatures enabledFeatures
Definition VkSystem.h:68
uint32_t apiVersion
Definition VkSystem.h:58
VkDebugUtilsMessengerEXT debugUtilsMessenger
Definition VkSystem.h:71
std::vector< const char * > enabledInstanceExtensions
Definition VkSystem.h:75
VkPhysicalDeviceProperties getDeviceProperties()
Definition VkSystem.h:33
VkResult createVulkanInstance()
Creates the application wide Vulkan instance.
Definition VkSystem.cpp:183
static VkSystem * instance()
Definition VkSystem.cpp:10
std::vector< const char * > enabledDeviceExtensions
Definition VkSystem.h:74
void * deviceCreatepNextChain
Definition VkSystem.h:69
void enableMemoryPool(bool enableMemPool=false)
Definition VkSystem.h:29
std::string name
Definition VkSystem.h:57
VkPhysicalDeviceProperties deviceProperties
Definition VkSystem.h:65
VkContext * ctx
Current Vulkan context.
Definition VkSystem.h:53
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25