42#include <vulkan/vulkan.h>
44#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
45#if !defined(DEFINE_NON_DISPATCHABLE_HANDLE)
46 #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
47 #define DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
49 #define DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
65struct VkApplicationInfo;
68 struct SwapChainSupportDetails;
74 extern VkResult
vkExecute(VkResult result,
const char* error_message);
146 bool m_is_init =
false;
147 bool m_is_software_rendered =
false;
uint64_t VkImageView
Definition ImageResources.h:41
#define lib_assert(expression, message)
Definition LibAssert.h:61
uint64_t VkSurfaceKHR
Definition VulkanInstance.h:62
uint64_t VkCommandPool
Definition VulkanInstance.h:63
#define VK_DEFINE_HANDLE(object)
Definition VulkanInstance.h:44
#define DEFINE_NON_DISPATCHABLE_HANDLE(object)
Definition VulkanInstance.h:49
struct VkPhysicalDevice_T * VkPhysicalDevice
Definition VulkanInstance.h:55
struct VkQueue_T * VkQueue
Definition VulkanInstance.h:57
struct VkInstance_T * VkInstance
Definition VulkanInstance.h:54
struct VkDevice_T * VkDevice
Definition VulkanInstance.h:56
struct VkCommandBuffer_T * VkCommandBuffer
Definition VulkanInstance.h:58
uint64_t VkDebugReportCallbackEXT
Definition VulkanInstance.h:60
The equivelent of std::vector but with a bit more control. The basic array unit of the library.
Definition Buffer.hpp:56
Provides a modifiable pointer that has shared ownership of a dynamically allocated object.
Definition Pointer.hpp:320
Definition MemoryManager.h:261
A light-weight base class for Log that allows processes to update, without the need for additional in...
Definition ProgressInfo.hpp:48
The core String class for the NDEVR API.
Definition String.h:69
Represents a timestamp with utilities for manipulation and conversion.
Definition Time.h:54
The connection between the NDEVR API and the Vulkan library. See: https://vulkan-tutorial....
Definition VulkanInstance.h:82
const Buffer< String > & validationLayers() const
Definition VulkanInstance.h:104
virtual uint04 setupLayers(const char **&layers)
const String & surfaceType() const
bool checkValidationSupport()
virtual void setAvailablePhysicalDevices()
VkInstance vkInstance() const
Definition VulkanInstance.h:98
Buffer< VkLayerProperties, uint04, ObjectAllocator< true > > m_available_layer_info
Definition VulkanInstance.h:140
virtual VkApplicationInfo applicationInfo(const String &app_name)
String vulkanLibUsed() const
virtual VkSurfaceFormatKHR chooseSwapSurfaceFormat(const Buffer< VkSurfaceFormatKHR, uint04, ObjectAllocator< true > > &availableFormats)
virtual uint04 deviceSuitableScore(VkPhysicalDevice device)
bool checkLayerSupport(const String &layer)
Buffer< String > m_validation_layers
Definition VulkanInstance.h:144
void setLog(ProgressInfo *log)
virtual ~VulkanInstance()
ProgressInfo * log()
Definition VulkanInstance.h:93
virtual void setAvailableExtensionInfo()
static Module VulkanBackupModule()
bool supportsTriangleFan() const
bool isSoftwareRendered() const
bool supportsKHRSwapchain() const
static String SoftwareRenderedVulkanLib()
const Buffer< VkPhysicalDevice > & physicalDevices() const
Definition VulkanInstance.h:105
Buffer< VkPhysicalDevice > m_available_physical_devices
Definition VulkanInstance.h:141
static void setupModule(Module &module)
ProgressInfo * m_log
Definition VulkanInstance.h:136
virtual void setupDebug()
bool checkExtensionSupport(const String &layer)
bool supportsValidation() const
Definition VulkanInstance.h:103
virtual void setupInstance()
String m_surface_type
Definition VulkanInstance.h:149
virtual uint04 setupExtensions(const char **&extensions)
bool m_supports_validation
Definition VulkanInstance.h:145
Buffer< String > m_extensions
Definition VulkanInstance.h:143
bool m_supports_tri_fan
Definition VulkanInstance.h:148
Buffer< VkExtensionProperties, uint04, ObjectAllocator< true > > m_available_extension_info
Definition VulkanInstance.h:139
VkDebugReportCallbackEXT m_debug_callback
Definition VulkanInstance.h:137
virtual VkInstanceCreateInfo createInfo()
Time m_creation_time
Definition VulkanInstance.h:150
static DynamicPointer< VulkanInstance > & DefaultVulkanInstance()
static Buffer< VulkanInstance * > s_instances
Definition VulkanInstance.h:133
VulkanInstance(VulkanInstance &&instance) noexcept
static String HardwareRenderedVulkanLib()
virtual void setAvailableLayerInfo()
Time creationTime() const
Definition VulkanInstance.h:131
virtual VkResult createVkInstance(const VkInstanceCreateInfo &create_info)
VkInstance m_vk_instance
Definition VulkanInstance.h:135
VkResult vkExecute(VkResult result, const char *error_message)
uint32_t uint04
-Defines an alias representing a 4 byte, unsigned integer -Can represent exact integer values 0 throu...
Definition BaseValues.hpp:96
Base class for extensions, typically added as external DLL's that can modify or enhance the behavior ...
Definition ModuleManager.h:59