.. _program_listing_file_PrismEngine_src_base.h: Program Listing for File base.h =============================== |exhale_lsh| :ref:`Return to documentation for file ` (``PrismEngine/src/base.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #include #include #include #include #include #include #include #include #include #include "config.h" #include "logger.h" #include "utils.h" #include "deviceWrapper.h" #include "deviceRater.h" namespace prism { namespace PGC { inline VkResult CreateDebugUtilsMessengerEXT(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pDebugMessenger) { auto func = (PFN_vkCreateDebugUtilsMessengerEXT)vkGetInstanceProcAddr(instance, "vkCreateDebugUtilsMessengerEXT"); if (func != nullptr) { return func(instance, pCreateInfo, pAllocator, pDebugMessenger); } else { return VK_ERROR_EXTENSION_NOT_PRESENT; } } inline void DestroyDebugUtilsMessengerEXT(VkInstance instance, VkDebugUtilsMessengerEXT debugMessenger, const VkAllocationCallbacks* pAllocator) { auto func = (PFN_vkDestroyDebugUtilsMessengerEXT)vkGetInstanceProcAddr(instance, "vkDestroyDebugUtilsMessengerEXT"); if (func != nullptr) { func(instance, debugMessenger, pAllocator); } } class Base { public: Base() : context(nullptr), settings(nullptr) {} void init(PGC::utils::Context* context, PGC::utils::Settings* settings); ~Base(); void cleanup(); private: void create(); void createInstance(); void setupDebugMessenger(); void pickPhysicalDevice(); void createSurface(); void createLogicalDevice(); PGC::utils::Context* context; PGC::utils::Settings* settings; //help bool checkValidationLayerSupport(); std::vector getRequiredExtensions(); void populateDebugMessengerCreateInfo(VkDebugUtilsMessengerCreateInfoEXT& createInfo); static VKAPI_ATTR VkBool32 VKAPI_CALL debugCallback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageType, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData, void* pUserData); VkSampleCountFlagBits getMaxUsableSampleCount(); std::vector getPossibleCounts(VkSampleCountFlagBits maxCount); VkSampleCountFlagBits getMsaaSamples(); VkDebugUtilsMessengerEXT debugMessenger; }; } }