TachyonUI
0.1.0
High-performance UI for building tools.
Toggle main menu visibility
Loading...
Searching...
No Matches
vk_image.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <
gui_core/graphics/gui_image.h
>
4
5
#include <vulkan/vulkan.h>
6
#include <vk_mem_alloc.h>
7
8
#include <cstdint>
9
#include <vector>
10
11
namespace
tachyon::vulkan
12
{
15
16
class
VulkanImage
:
public
tachyon::Image
17
{
18
public
:
19
VkImage
image
;
20
VkImageView
imageView
;
21
VmaAllocation
allocation
;
22
VkExtent3D
imageExtent
;
23
VkFormat
imageFormat
;
24
VkSampler
imageSampler
;
25
28
struct
Recipe
29
{
30
VkImageUsageFlags
usage
= 0;
31
tachyon::Sampler
sampler
=
tachyon::Sampler::UNDEFINED
;
32
bool
mipmapped
=
false
;
33
std::vector<uint8_t>
pixels
;
34
}
recipe
;
35
};
36
37
class
VulkanImageSet
:
public
tachyon::ImageSet
38
{
39
public
:
41
static
constexpr
uint32_t
kCapacity
= 256;
42
43
std::vector<VkDescriptorImageInfo>
textures
;
44
std::vector<VulkanImage*>
owners
;
45
47
void
RefreshDescriptors
();
48
49
public
:
50
void
Clear
()
override
;
51
tachyon::ImageIndex
Add
(
tachyon::Image
* image)
override
;
52
void
Remove
(
tachyon::ImageIndex
index)
override
;
53
bool
SetImage
(
tachyon::ImageIndex
index,
VulkanImage
* image);
54
bool
SetDescriptor
(
tachyon::ImageIndex
index,
const
VkDescriptorImageInfo& descriptor);
55
tachyon::ImageIndex
ReserveIndex
();
56
57
private
:
58
tachyon::ImageIndex
Allocate(
const
VkDescriptorImageInfo& descriptor);
59
bool
IsInRange(
tachyon::ImageIndex
index)
const
;
60
61
std::vector<tachyon::ImageIndex> m_freeIndices;
62
};
63
64
}
tachyon::ImageSet
The images the shaders can sample, each at an ImageIndex. Implemented by the backend.
Definition
gui_image.h:44
tachyon::Image
An image made by GraphicsContext::CreateImage; the backend defines its contents.
Definition
gui_image.h:40
tachyon::vulkan::VulkanImageSet
Definition
vk_image.h:38
tachyon::vulkan::VulkanImageSet::Add
tachyon::ImageIndex Add(tachyon::Image *image) override
Adds an image (not owned) and returns its index.
tachyon::vulkan::VulkanImageSet::RefreshDescriptors
void RefreshDescriptors()
Points every index back at its image, after the images were made again.
tachyon::vulkan::VulkanImageSet::ReserveIndex
tachyon::ImageIndex ReserveIndex()
tachyon::vulkan::VulkanImageSet::SetImage
bool SetImage(tachyon::ImageIndex index, VulkanImage *image)
tachyon::vulkan::VulkanImageSet::SetDescriptor
bool SetDescriptor(tachyon::ImageIndex index, const VkDescriptorImageInfo &descriptor)
tachyon::vulkan::VulkanImageSet::owners
std::vector< VulkanImage * > owners
the image behind each index, or null
Definition
vk_image.h:44
tachyon::vulkan::VulkanImageSet::Clear
void Clear() override
Removes every image, freeing all indices.
tachyon::vulkan::VulkanImageSet::Remove
void Remove(tachyon::ImageIndex index) override
Frees the index for reuse; the image itself stays.
tachyon::vulkan::VulkanImageSet::kCapacity
static constexpr uint32_t kCapacity
Size of the shader's bindless texture array.
Definition
vk_image.h:41
tachyon::vulkan::VulkanImageSet::textures
std::vector< VkDescriptorImageInfo > textures
Definition
vk_image.h:43
tachyon::vulkan::VulkanImage
Definition
vk_image.h:17
tachyon::vulkan::VulkanImage::imageSampler
VkSampler imageSampler
Definition
vk_image.h:24
tachyon::vulkan::VulkanImage::imageFormat
VkFormat imageFormat
Definition
vk_image.h:23
tachyon::vulkan::VulkanImage::imageExtent
VkExtent3D imageExtent
Definition
vk_image.h:22
tachyon::vulkan::VulkanImage::image
VkImage image
Definition
vk_image.h:19
tachyon::vulkan::VulkanImage::imageView
VkImageView imageView
Definition
vk_image.h:20
tachyon::vulkan::VulkanImage::recipe
struct tachyon::vulkan::VulkanImage::Recipe recipe
tachyon::vulkan::VulkanImage::allocation
VmaAllocation allocation
Definition
vk_image.h:21
tachyon::Sampler
Sampler
How an image is filtered and addressed when sampled.
Definition
gui_image.h:27
tachyon::ImageIndex
ImageIndex
Index of an image in the graphics context's image set, as the shaders sample it.
Definition
gui_image.h:37
tachyon::Sampler::UNDEFINED
@ UNDEFINED
Definition
gui_image.h:28
gui_image.h
tachyon::vulkan
Definition
vk_defaults.h:4
tachyon::vulkan::VulkanImage::Recipe
How it was made, to make it again on a new device after the old one is lost; with its pixels when it ...
Definition
vk_image.h:29
tachyon::vulkan::VulkanImage::Recipe::pixels
std::vector< uint8_t > pixels
Definition
vk_image.h:33
tachyon::vulkan::VulkanImage::Recipe::usage
VkImageUsageFlags usage
Definition
vk_image.h:30
tachyon::vulkan::VulkanImage::Recipe::mipmapped
bool mipmapped
Definition
vk_image.h:32
tachyon::vulkan::VulkanImage::Recipe::sampler
tachyon::Sampler sampler
Definition
vk_image.h:31
gui_core
graphics
vulkan
vk_image.h
Generated by
1.18.0