source: opengl-game/vulkan-utils.hpp@ 4d84c72

feature/imgui-sdl points-test
Last change on this file since 4d84c72 was 6fc24c7, checked in by Dmitry Portnoy <dmitry.portnoy@…>, 5 years ago

In vulkangame, add code to create a render pass

  • Property mode set to 100644
File size: 2.0 KB
Line 
1#ifndef _VULKAN_UTILS_H
2#define _VULKAN_UTILS_H
3
4#include <optional>
5#include <vector>
6
7#include <vulkan/vulkan.h>
8
9using namespace std;
10
11struct QueueFamilyIndices {
12 optional<uint32_t> graphicsFamily;
13 optional<uint32_t> presentFamily;
14
15 bool isComplete() {
16 return graphicsFamily.has_value() && presentFamily.has_value();
17 }
18};
19
20struct SwapChainSupportDetails {
21 VkSurfaceCapabilitiesKHR capabilities;
22 vector<VkSurfaceFormatKHR> formats;
23 vector<VkPresentModeKHR> presentModes;
24};
25
26class VulkanUtils {
27 public:
28 static bool checkValidationLayerSupport(const vector<const char*> &validationLayers);
29
30 static VkResult createDebugUtilsMessengerEXT(VkInstance instance,
31 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
32 const VkAllocationCallbacks* pAllocator,
33 VkDebugUtilsMessengerEXT* pDebugMessenger);
34
35 static void destroyDebugUtilsMessengerEXT(VkInstance instance,
36 VkDebugUtilsMessengerEXT debugMessenger,
37 const VkAllocationCallbacks* pAllocator);
38
39 static QueueFamilyIndices findQueueFamilies(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface);
40 static bool checkDeviceExtensionSupport(VkPhysicalDevice physicalDevice, const vector<const char*>& deviceExtensions);
41 static SwapChainSupportDetails querySwapChainSupport(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface);
42 static VkSurfaceFormatKHR chooseSwapSurfaceFormat(const vector<VkSurfaceFormatKHR>& availableFormats);
43 static VkPresentModeKHR chooseSwapPresentMode(const vector<VkPresentModeKHR>& availablePresentModes);
44 static VkExtent2D chooseSwapExtent(const VkSurfaceCapabilitiesKHR& capabilities, int width, int height);
45 static VkImageView createImageView(VkDevice device, VkImage image, VkFormat format, VkImageAspectFlags aspectFlags);
46 static VkFormat findSupportedFormat(VkPhysicalDevice physicalDevice, const vector<VkFormat>& candidates,
47 VkImageTiling tiling, VkFormatFeatureFlags features);
48};
49
50#endif // _VULKAN_UTILS_H
Note: See TracBrowser for help on using the repository browser.