kiba-engine
image.h
1 #pragma once
2 
3 #include <kiba/renderer/vulkan/common.h>
4 
5 b8 vulkan_image_create(vulkan_context *context,
6  u32 width,
7  u32 height,
8  VkFormat format,
9  VkImageTiling tiling,
10  VkImageUsageFlags usage,
11  VkMemoryPropertyFlags properties,
12  vulkan_image *image);
13 
14 VkFormat vulkan_image_fitting_format(vulkan_context *context,
15  VkFormat *candidates,
16  usize n,
17  VkImageTiling tiling,
18  VkFormatFeatureFlags features);
19 
20 b8 vulkan_image_transition_layout(vulkan_context *context,
21  vulkan_image *image,
22  VkFormat format,
23  VkImageLayout src,
24  VkImageLayout dst);
25 
26 // TODO remove this again
27 static inline b8 vulkan_image_transition_layout_tmp(vulkan_context *context,
28  VkImage image,
29  VkFormat format,
30  VkImageLayout src,
31  VkImageLayout dst) {
32  vulkan_image img = {
33  .image = image,
34  };
35  return vulkan_image_transition_layout(context, &img, format, src, dst);
36 }
37 
38 b8 vulkan_image_copy_from_buffer(vulkan_context *context,
39  vulkan_buffer *buffer,
40  vulkan_image *image,
41  u32 width,
42  u32 height);
43 
44 void vulkan_image_destroy(vulkan_context *context, vulkan_image *image);
45 
46 b8 vulkan_image_view_create(vulkan_context *context,
47  VkImage image,
48  VkFormat format,
49  VkImageAspectFlags aspect_flags,
50  VkImageView *view);
51 
52 void vulkan_image_view_destroy(vulkan_context *context, VkImageView *view);