Class VulkanImage¶
Defined in File vulkan_image.h
Inheritance Relationships¶
Base Type¶
public portal::renderer::Image(Class Image)
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
properties – Image 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 –
properties – Image properties
context – Vulkan context
-
VulkanImage(const image::Properties &properties, const VulkanContext &context)¶
Allocates new Vulkan image with VMA.
- Parameters:
properties – Image 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)
-
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 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.