]> git.tdb.fi Git - libs/gl.git/blobdiff - source/backends/vulkan/vulkan.h
Implement textures and samplers for Vulkan
[libs/gl.git] / source / backends / vulkan / vulkan.h
index 373b75aed5284d2f1d6d124b773d67f2e431e60b..b4b084bd4f4b6928ea4ae1d1775331ae62181691 100644 (file)
@@ -133,10 +133,16 @@ private:
        PFN_vkUnmapMemory vkUnmapMemory = 0;  // 11.2.9
        PFN_vkCreateBuffer vkCreateBuffer = 0;  // 12.1
        PFN_vkDestroyBuffer vkDestroyBuffer = 0;  // 12.1
+       PFN_vkCreateImage vkCreateImage = 0;  // 12.3
+       PFN_vkDestroyImage vkDestroyImage = 0;  // 12.3
        PFN_vkCreateImageView vkCreateImageView = 0;  // 12.5
        PFN_vkDestroyImageView vkDestroyImageView = 0;  // 12.5
        PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements = 0;  // 12.7
+       PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements = 0;  // 12.7
        PFN_vkBindBufferMemory vkBindBufferMemory = 0;  // 12.7
+       PFN_vkBindImageMemory vkBindImageMemory = 0;  // 12.7
+       PFN_vkCreateSampler vkCreateSampler = 0;  // 13
+       PFN_vkDestroySampler vkDestroySampler = 0;  // 13
        PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout = 0;  // 14.2.1
        PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout = 0;  // 14.2.1
        PFN_vkCreatePipelineLayout vkCreatePipelineLayout = 0;  // 14.2.2
@@ -148,6 +154,7 @@ private:
        PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets = 0;  // 14.2.7
        PFN_vkCmdPushConstants vkCmdPushConstants = 0;  // 14.2.10
        PFN_vkCmdCopyBuffer vkCmdCopyBuffer = 0;  // 19.2
+       PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage = 0;  // 19.4
        PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer = 0;  // 20.3
        PFN_vkCmdDrawIndexed vkCmdDrawIndexed = 0;  // 20.3
        PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers = 0;  // 21.2
@@ -280,6 +287,12 @@ public:
        void DestroyBuffer(VkBuffer image) const
        { vkDestroyBuffer(device, handle_cast<::VkBuffer>(image), 0); }
 
+       Result CreateImage(const VkImageCreateInfo &rCreateInfo, VkImage &rImage) const
+       { return { vkCreateImage(device, &rCreateInfo, 0, handle_cast<::VkImage *>(&rImage)), "vkCreateImage" }; }
+
+       void DestroyImage(VkImage image) const
+       { vkDestroyImage(device, handle_cast<::VkImage>(image), 0); }
+
        Result CreateImageView(const VkImageViewCreateInfo &rCreateInfo, VkImageView &rView) const
        { return { vkCreateImageView(device, &rCreateInfo, 0, handle_cast<::VkImageView *>(&rView)), "vkCreateImageView" }; }
 
@@ -289,9 +302,22 @@ public:
        void GetBufferMemoryRequirements(VkBuffer image, VkMemoryRequirements &rMemoryRequirements) const
        { vkGetBufferMemoryRequirements(device, handle_cast<::VkBuffer>(image), &rMemoryRequirements); }
 
+       void GetImageMemoryRequirements(VkImage image, VkMemoryRequirements &rMemoryRequirements) const
+       { vkGetImageMemoryRequirements(device, handle_cast<::VkImage>(image), &rMemoryRequirements); }
+
        Result BindBufferMemory(VkBuffer image, VkDeviceMemory memory, VkDeviceSize memoryOffset) const
        { return { vkBindBufferMemory(device, handle_cast<::VkBuffer>(image), handle_cast<::VkDeviceMemory>(memory), memoryOffset), "vkBindBufferMemory" }; }
 
+       Result BindImageMemory(VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset) const
+       { return { vkBindImageMemory(device, handle_cast<::VkImage>(image), handle_cast<::VkDeviceMemory>(memory), memoryOffset), "vkBindImageMemory" }; }
+
+       // Chapter 13: Samplers
+       Result CreateSampler(const VkSamplerCreateInfo &rCreateInfo, VkSampler &rSampler) const
+       { return { vkCreateSampler(device, &rCreateInfo, 0, handle_cast<::VkSampler *>(&rSampler)), "vkCreateSampler" }; }
+
+       void DestroySampler(VkSampler sampler) const
+       { vkDestroySampler(device, handle_cast<::VkSampler>(sampler), 0); }
+
        // Chapter 14: Resource Descriptors
        Result CreateDescriptorSetLayout(const VkDescriptorSetLayoutCreateInfo &rCreateInfo, VkDescriptorSetLayout &rSetLayout) const
        { return { vkCreateDescriptorSetLayout(device, &rCreateInfo, 0, handle_cast<::VkDescriptorSetLayout *>(&rSetLayout)), "vkCreateDescriptorSetLayout" }; }
@@ -327,6 +353,9 @@ public:
        void CmdCopyBuffer(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, std::uint32_t regionCount, const VkBufferCopy *pRegions) const
        { vkCmdCopyBuffer(handle_cast<::VkCommandBuffer>(commandBuffer), handle_cast<::VkBuffer>(srcBuffer), handle_cast<::VkBuffer>(dstBuffer), regionCount, pRegions); }
 
+       void CmdCopyBufferToImage(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, std::uint32_t regionCount, const VkBufferImageCopy *pRegions) const
+       { vkCmdCopyBufferToImage(handle_cast<::VkCommandBuffer>(commandBuffer), handle_cast<::VkBuffer>(srcBuffer), handle_cast<::VkImage>(dstImage), dstImageLayout, regionCount, pRegions); }
+
        // Chapter 20: Drawing Commands
        void CmdBindIndexBuffer(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) const
        { vkCmdBindIndexBuffer(handle_cast<::VkCommandBuffer>(commandBuffer), handle_cast<::VkBuffer>(buffer), offset, indexType); }