Device &device;
VkImage handle = 0;
VkImageView view_handle = 0;
+ mutable std::vector<VkImageView> mip_view_handles;
unsigned memory_id = 0;
unsigned view_type;
std::string debug_name;
void allocate();
virtual void fill_image_info(void *) const = 0;
+ VkImageView create_view(int) const;
+ void create_mip_views() const;
void require_swizzle() { }
void stage_pixels(void *, const void *, size_t);
- virtual void generate_mipmap() = 0;
- void generate_mipmap_levels(unsigned);
+ void generate_mipmap();
virtual void fill_mipmap_blit(unsigned, void *) = 0;
- void change_layout(unsigned, int, unsigned, bool) const;
+ void change_layout(int, unsigned, bool) const;
+
+ void refresh_mip_views() const { if(mip_view_handles.empty()) create_mip_views(); }
void set_debug_name(const std::string &);
void set_vulkan_object_names() const;