Class VulkanImage

Inheritance Relationships

Base Type

Class Documentation

class VulkanImage : public portal::renderer::Image

Vulkan image with VMA allocation and per-mip/layer views.

Supports two creation modes:

  • Wrapping existing vk::Image (e.g., swapchain images)

  • Allocating new image with VMA

Provides per-mip and per-layer image views for compute/fragment shader access.

Public Functions

VulkanImage(vk::Image image, const image::Properties &properties, const VulkanContext &context)

Wraps existing Vulkan image (e.g., swapchain image)

Parameters:
  • image – Vulkan image handle

  • propertiesImage properties

  • context – Vulkan context

VulkanImage(vk::Image image, vk::ImageView image_view, const image::Properties &properties, const VulkanContext &context)

Wraps existing Vulkan image and Image View (e.g., swapchain image + view)

Parameters:
  • image – Vulkan image handle

  • image_view

  • propertiesImage properties

  • context – Vulkan context

VulkanImage(const image::Properties &properties, const VulkanContext &context)

Allocates new Vulkan image with VMA.

Parameters:
  • propertiesImage properties

  • context – Vulkan context

~VulkanImage() override
virtual void reallocate() override

Reallocates image with current properties.

virtual void resize(size_t width, size_t height) override

Resizes image (recreates GPU allocation)

virtual void release() override

Releases GPU resources.

bool is_image_valid() const

Checks if image is valid.

virtual size_t get_width() const override

Gets image width.

virtual size_t get_height() const override

Gets image height.

virtual glm::uvec2 get_size() const override

Gets image size as 2D vector.

vk::Format get_format() const

Gets Vulkan format.

virtual bool has_mip() const override

Checks if image has mipmaps.

virtual float get_aspect_ratio() const override

Gets aspect ratio (width/height)

virtual Reference<ImageView> get_view() const override

Gets image view.

int get_closest_mip_level(size_t width, size_t height) const

Finds closest mip level for dimensions.

Parameters:
  • width – Target width

  • height – Target height

Returns:

Closest mip level index

std::pair<size_t, size_t> get_mip_level_dimensions(size_t mip_level) const

Gets dimensions of mip level.

Parameters:

mip_level – Mip level index

Returns:

Pair of (width, height)

image::Properties &get_prop()

Gets image properties (mutable)

virtual const image::Properties &get_prop() const override

Gets image properties.

virtual void create_per_layer_image_view() override

Creates per-layer views for array/cube textures.

Reference<VulkanImageView> get_mip_image_view(size_t mip_level)

Gets or creates image view for specific mip level.

Parameters:

mip_level – Mip level index

Returns:

Vulkan image view

Reference<VulkanImageView> get_layer_image_view(size_t layer)

Gets image view for specific layer.

Parameters:

layer – Layer index

Returns:

Vulkan image view

VulkanImageInfo &get_image_info()

Gets image info (allocation, view, sampler)

const vk::DescriptorImageInfo &get_descriptor_image_info() const

Gets descriptor image info for binding.

const ImageAllocation &get_image() const

Gets Vulkan image allocation.

const Reference<VulkanSampler> &get_sampler() const

Gets Vulkan sampler.

virtual Buffer get_buffer() const override

Gets CPU buffer (const)

virtual Buffer &get_buffer() override

Gets CPU buffer (mutable)

virtual void set_data(Buffer buffer) override

Uploads data to GPU.

Parameters:

buffer – CPU buffer to upload

virtual Buffer copy_to_host_buffer() override

Downloads GPU data to CPU buffer.

Returns:

CPU buffer with image data

void update_descriptor()

Updates descriptor image info.