4#include <vulkan/vulkan.hpp>
61 enum class Type : uint8_t {
90 Type type = Type::TYPE_2D,
91 uint32_t mip_levels = 1,
92 uint32_t array_layers = 1,
108 [[nodiscard]] vk::Image get_image()
const {
return m_resources.image; }
111 [[nodiscard]] vk::ImageView
get_image_view()
const {
return m_resources.image_view; }
114 [[nodiscard]] vk::DeviceMemory
get_memory()
const {
return m_resources.memory; }
117 [[nodiscard]] vk::Sampler
get_sampler()
const {
return m_resources.sampler; }
123 void set_image(vk::Image image) { m_resources.image = image; }
129 void set_memory(vk::DeviceMemory memory) { m_resources.memory = memory; }
132 void set_sampler(vk::Sampler sampler) { m_resources.sampler = sampler; }
138 [[nodiscard]]
bool is_initialized()
const {
return m_resources.image != VK_NULL_HANDLE; }
144 [[nodiscard]] uint32_t
get_width()
const {
return m_width; }
145 [[nodiscard]] uint32_t
get_height()
const {
return m_height; }
146 [[nodiscard]] uint32_t
get_depth()
const {
return m_depth; }
147 [[nodiscard]] vk::Format
get_format()
const {
return m_format; }
155 [[nodiscard]]
const std::vector<Kakshya::DataDimension>&
get_dimensions()
const {
return m_dimensions; }
178 [[nodiscard]] vk::ImageUsageFlags get_usage_flags()
const;
184 [[nodiscard]] vk::MemoryPropertyFlags get_memory_properties()
const;
190 [[nodiscard]] vk::ImageAspectFlags get_aspect_flags()
const;
202 [[nodiscard]]
size_t get_size_bytes()
const;
207 uint32_t m_width { 0 };
208 uint32_t m_height { 0 };
209 uint32_t m_depth { 1 };
210 vk::Format m_format { vk::Format::eUndefined };
211 Usage m_usage { Usage::TEXTURE_2D };
213 uint32_t m_mip_levels { 1 };
214 uint32_t m_array_layers { 1 };
216 vk::ImageLayout m_current_layout { vk::ImageLayout::eUndefined };
227 void infer_dimensions_from_parameters();
uint32_t get_array_layers() const
VKImage & operator=(const VKImage &)=delete
void set_image(vk::Image image)
Set VkImage handle after backend allocation.
void set_current_layout(vk::ImageLayout layout)
Set current layout (called after transitions)
void set_image_view(vk::ImageView view)
Set VkImageView handle after backend allocation.
bool is_host_visible() const
Whether this image should be host-visible (staging images)
VKImage(const VKImage &)=delete
const VKImageResources & get_image_resources() const
Get all image resources at once.
uint32_t get_mip_levels() const
void set_sampler(vk::Sampler sampler)
Set VkSampler handle (optional)
void set_image_resources(const VKImageResources &resources)
Set all image resources at once.
VKImageResources m_resources
vk::ImageLayout get_current_layout() const
Get current image layout (for synchronization)
const std::vector< Kakshya::DataDimension > & get_dimensions() const
Get the inferred data dimensions for the image contents.
void set_memory(vk::DeviceMemory memory)
Set VkDeviceMemory handle after backend allocation.
uint32_t get_width() const
vk::Sampler get_sampler() const
Get VkSampler handle (VK_NULL_HANDLE if none assigned)
bool is_initialized() const
Check whether Vulkan handles are present (image registered)
uint32_t get_depth() const
std::vector< Kakshya::DataDimension > m_dimensions
Kakshya::DataModality m_modality
vk::Format get_format() const
Kakshya::DataModality get_modality() const
vk::ImageView get_image_view() const
Get VkImageView handle (VK_NULL_HANDLE if not initialized)
uint32_t get_height() const
vk::DeviceMemory get_memory() const
Get VkDeviceMemory handle (VK_NULL_HANDLE if not initialized)
VKImage(VKImage &&) noexcept=default
Lightweight Vulkan image wrapper for MayaFlux processing pipeline.
DataModality
Data modality types for cross-modal analysis.
Vulkan image resource handles.