42 lines
1.3 KiB
C++
42 lines
1.3 KiB
C++
#pragma once
|
|
#include "vkn/type.h"
|
|
namespace vkn {
|
|
class InstanceCreator {
|
|
public:
|
|
pmr::string appName;
|
|
uint32_t appVersion;
|
|
pmr::string engineName;
|
|
uint32_t engineVersion;
|
|
uint32_t apiVersion;
|
|
|
|
pmr::vector<pmr::string> desiredExtensions;
|
|
pmr::vector<pmr::string> desiredLayers;
|
|
|
|
#ifdef Z_RENDER_DEBUG
|
|
VkDebugUtilsMessageSeverityFlagsEXT messageSeverity;
|
|
VkDebugUtilsMessageTypeFlagsEXT messageType;
|
|
PFN_vkDebugUtilsMessengerCallbackEXT debugCallback;
|
|
|
|
VkDebugUtilsMessengerCreateInfoEXT DebugUtilsLayerNext();
|
|
#endif
|
|
public:
|
|
InstanceCreator();
|
|
void AddExtension(string_view extensionName);
|
|
void AddLayer(string_view layerName);
|
|
|
|
void AddWindowExtension();
|
|
void AddInstanceExtension();
|
|
void AddDebugExtension();
|
|
|
|
pmr::vector<char const*> EnabledExtensionNames();
|
|
pmr::vector<char const*> EnabledLayerNames();
|
|
|
|
private:
|
|
static bool CheckAvailableInstanceExtensions(pmr::vector<VkExtensionProperties>& available_extensions);
|
|
static bool CheckAvailableInstanceLayers(pmr::vector<VkLayerProperties>& available_layers);
|
|
static bool IsExtensionSupported(pmr::vector<VkExtensionProperties> const& available_extensions,
|
|
char const* const extension);
|
|
static bool IsLayerSupported(pmr::vector<VkLayerProperties> const& available_layers,
|
|
char const* const layer);
|
|
};
|
|
}; |