53 VkImage vk_image_ = VK_NULL_HANDLE;
54 VmaAllocation allocation_ = VK_NULL_HANDLE;
55 VmaAllocationInfo allocation_info_ = {};
63 int layer_offset_ = 0;
64 bool use_stencil_ =
false;
66 char swizzle_[4] = {
'r',
'g',
'b',
'a'};
70 {{
'r',
'g',
'b',
'a'}},
80 void generate_mipmap()
override;
81 void copy_to(
Texture *tex)
override;
82 void copy_to(
VKTexture &dst_texture, VkImageAspectFlags vk_image_aspect);
87 std::optional<int> layer);
88 void swizzle_set(
const char swizzle_mask[4])
override;
89 void mip_range_set(
int min,
int max)
override;
93 void update_sub(
int mip,
102 void update_sub(
int offset[3],
105 GPUPixelBuffer *pixbuf)
override;
108 uint gl_bindcode_get()
const override;
115 VKMemoryExport export_memory(VkExternalMemoryHandleTypeFlagBits handle_type);
119 if (is_texture_view()) {
120 return source_texture_->vk_image_handle();
131 return device_format_;
146 bool init_internal()
override;
147 bool init_internal(
VertBuf *vbo)
override;
148 bool init_internal(GPUTexture *src,
int mip_offset,
int layer_offset,
bool use_stencil)
override;
152 bool is_texture_view()
const;
164 int vk_layer_count(
int non_layered_value)
const;
169 VkExtent3D vk_extent_3d(
int mip_level)
const;
Texture(const char *name)
eGPUTextureFormat device_format_get() const
friend class VKDescriptorSetUpdator
VkImage vk_image_handle() const
VKTexture(const char *name)