Changeset e8445f0 in opengl-game for vulkan-utils.hpp
- Timestamp:
- Apr 22, 2021, 1:54:17 AM (3 years ago)
- Branches:
- feature/imgui-sdl
- Children:
- b8072d3
- Parents:
- 4a777d2
- git-author:
- Dmitry Portnoy <dportnoy@…> (04/22/21 01:54:07)
- git-committer:
- Dmitry Portnoy <dportnoy@…> (04/22/21 01:54:17)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
vulkan-utils.hpp
r4a777d2 re8445f0 39 39 40 40 static VkResult createDebugUtilsMessengerEXT(VkInstance instance, 41 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,42 const VkAllocationCallbacks* pAllocator,43 VkDebugUtilsMessengerEXT* pDebugMessenger);41 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, 42 const VkAllocationCallbacks* pAllocator, 43 VkDebugUtilsMessengerEXT* pDebugMessenger); 44 44 45 45 static void destroyDebugUtilsMessengerEXT(VkInstance instance, 46 VkDebugUtilsMessengerEXT debugMessenger,47 const VkAllocationCallbacks* pAllocator);46 VkDebugUtilsMessengerEXT debugMessenger, 47 const VkAllocationCallbacks* pAllocator); 48 48 49 49 static QueueFamilyIndices findQueueFamilies(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface); 50 50 static bool checkDeviceExtensionSupport(VkPhysicalDevice physicalDevice, 51 const vector<const char*>& deviceExtensions);51 const vector<const char*>& deviceExtensions); 52 52 static VkSurfaceCapabilitiesKHR querySwapChainCapabilities(VkPhysicalDevice physicalDevice, 53 VkSurfaceKHR surface);53 VkSurfaceKHR surface); 54 54 static vector<VkSurfaceFormatKHR> querySwapChainFormats(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface); 55 55 static vector<VkPresentModeKHR> querySwapChainPresentModes(VkPhysicalDevice physicalDevice, 56 VkSurfaceKHR surface);56 VkSurfaceKHR surface); 57 57 static VkSurfaceFormatKHR chooseSwapSurfaceFormat(const vector<VkSurfaceFormatKHR>& availableFormats, 58 const vector<VkFormat>& requestedFormats, VkColorSpaceKHR requestedColorSpace);58 const vector<VkFormat>& requestedFormats, VkColorSpaceKHR requestedColorSpace); 59 59 static VkPresentModeKHR chooseSwapPresentMode(const vector<VkPresentModeKHR>& availablePresentModes, 60 const vector<VkPresentModeKHR>& requestedPresentModes);60 const vector<VkPresentModeKHR>& requestedPresentModes); 61 61 static VkExtent2D chooseSwapExtent(const VkSurfaceCapabilitiesKHR& capabilities, int width, int height); 62 62 static VkImageView createImageView(VkDevice device, VkImage image, VkFormat format, 63 VkImageAspectFlags aspectFlags);63 VkImageAspectFlags aspectFlags); 64 64 static VkFormat findSupportedFormat(VkPhysicalDevice physicalDevice, const vector<VkFormat>& candidates, 65 VkImageTiling tiling, VkFormatFeatureFlags features);65 VkImageTiling tiling, VkFormatFeatureFlags features); 66 66 static void createBuffer(VkDevice device, VkPhysicalDevice physicalDevice, VkDeviceSize size, 67 VkBufferUsageFlags usage, VkMemoryPropertyFlags properties, VkBuffer& buffer,68 VkDeviceMemory& bufferMemory);67 VkBufferUsageFlags usage, VkMemoryPropertyFlags properties, VkBuffer& buffer, 68 VkDeviceMemory& bufferMemory); 69 69 static uint32_t findMemoryType(VkPhysicalDevice physicalDevice, uint32_t typeFilter, 70 VkMemoryPropertyFlags properties);70 VkMemoryPropertyFlags properties); 71 71 72 72 static void createVulkanImageFromFile(VkDevice device, VkPhysicalDevice physicalDevice, 73 VkCommandPool commandPool, string filename, VulkanImage& image, VkQueue graphicsQueue); 73 VkCommandPool commandPool, string filename, VulkanImage& image, 74 VkQueue graphicsQueue); 74 75 static void createVulkanImageFromSDLTexture(VkDevice device, VkPhysicalDevice physicalDevice, 75 SDL_Texture* texture, VulkanImage& image);76 SDL_Texture* texture, VulkanImage& image); 76 77 static void populateVulkanImageFromSDLTexture(VkDevice device, VkPhysicalDevice physicalDevice, 77 VkCommandPool commandPool, SDL_Texture* texture, SDL_Renderer* renderer, VulkanImage& image,78 VkQueue graphicsQueue);78 VkCommandPool commandPool, SDL_Texture* texture, 79 SDL_Renderer* renderer, VulkanImage& image, VkQueue graphicsQueue); 79 80 static void createDepthImage(VkDevice device, VkPhysicalDevice physicalDevice, VkCommandPool commandPool, 80 VkFormat depthFormat, VkExtent2D extent, VulkanImage& image, VkQueue graphicsQueue);81 VkFormat depthFormat, VkExtent2D extent, VulkanImage& image, VkQueue graphicsQueue); 81 82 static void createImage(VkDevice device, VkPhysicalDevice physicalDevice, uint32_t width, uint32_t height, 82 VkFormat format, VkImageTiling tiling, VkImageUsageFlags usage, VkMemoryPropertyFlags properties,83 VulkanImage& image);83 VkFormat format, VkImageTiling tiling, VkImageUsageFlags usage, 84 VkMemoryPropertyFlags properties, VulkanImage& image); 84 85 85 86 static void transitionImageLayout(VkDevice device, VkCommandPool commandPool, VkImage image, 86 VkFormat format, VkImageLayout oldLayout, VkImageLayout newLayout, VkQueue graphicsQueue); 87 VkFormat format, VkImageLayout oldLayout, VkImageLayout newLayout, 88 VkQueue graphicsQueue); 87 89 static VkCommandBuffer beginSingleTimeCommands(VkDevice device, VkCommandPool commandPool); 88 90 static void endSingleTimeCommands(VkDevice device, VkCommandPool commandPool, 89 VkCommandBuffer commandBuffer, VkQueue graphicsQueue);91 VkCommandBuffer commandBuffer, VkQueue graphicsQueue); 90 92 static void copyBufferToImage(VkDevice device, VkCommandPool commandPool, VkBuffer buffer, VkImage image, 91 uint32_t width, uint32_t height, VkQueue graphicsQueue);93 uint32_t width, uint32_t height, VkQueue graphicsQueue); 92 94 93 95 template<class DataType> 94 96 static void copyDataToBuffer(VkDevice device, VkPhysicalDevice physicalDevice, VkCommandPool commandPool, 95 const vector<DataType>& srcData, VkBuffer dstBuffer, size_t dstVertexOffset, VkQueue graphicsQueue); 97 const vector<DataType>& srcData, VkBuffer dstBuffer, size_t dstVertexOffset, 98 VkQueue graphicsQueue); 96 99 97 100 static void copyBuffer(VkDevice device, VkCommandPool commandPool, VkBuffer srcBuffer, VkBuffer dstBuffer, 98 VkDeviceSize srcOffset, VkDeviceSize dstOffset, VkDeviceSize size, VkQueue graphicsQueue); 101 VkDeviceSize srcOffset, VkDeviceSize dstOffset, VkDeviceSize size, 102 VkQueue graphicsQueue); 99 103 100 104 template<class DataType> 101 static void copyDataToMemory(VkDevice device, VkDeviceMemory bufferMemory, VkDeviceSize offset, 102 const DataType& srcData); 105 static void copyDataToMemory(VkDevice device, const DataType& srcData, VkDeviceMemory bufferMemory, 106 VkDeviceSize offset); 107 108 template<class DataType> 109 static void copyDataToMemory(VkDevice device, const DataType& srcData, VkDeviceMemory bufferMemory, 110 VkDeviceSize offset, VkDeviceSize size); 103 111 104 112 static bool hasStencilComponent(VkFormat format); … … 131 139 132 140 template<class DataType> 133 void VulkanUtils::copyDataToMemory(VkDevice device, VkDeviceMemory bufferMemory, VkDeviceSize offset, 134 const DataType& srcData) { 141 void VulkanUtils::copyDataToMemory(VkDevice device, const DataType& srcData, VkDeviceMemory bufferMemory, 142 VkDeviceSize offset) { 143 copyDataToMemory(device, srcData, bufferMemory, offset, sizeof(DataType)); 144 } 145 146 template<class DataType> 147 void VulkanUtils::copyDataToMemory(VkDevice device, const DataType& srcData, VkDeviceMemory bufferMemory, 148 VkDeviceSize offset, VkDeviceSize size) { 135 149 void* data; 136 150 137 vkMapMemory(device, bufferMemory, offset, size of(DataType), 0, &data);138 memcpy(data, &srcData, size of(DataType));151 vkMapMemory(device, bufferMemory, offset, size, 0, &data); 152 memcpy(data, &srcData, size); 139 153 vkUnmapMemory(device, bufferMemory); 140 154 } 141 155 156 // TODO: Use this in vulkan-utils itself as well 142 157 #define VKUTIL_CHECK_RESULT(f, msg) { \ 143 158 VkResult res = (f); \
Note:
See TracChangeset
for help on using the changeset viewer.