Blender V4.3
blender::gpu::VKBuffer Class Reference

#include <vk_buffer.hh>

Inherits blender::NonCopyable.

Public Member Functions

 VKBuffer ()=default
 
virtual ~VKBuffer ()
 
bool is_allocated () const
 
bool create (size_t size, GPUUsageType usage, VkBufferUsageFlags buffer_usage, bool is_host_visible=true)
 
void clear (VKContext &context, uint32_t clear_value)
 
void update_immediately (const void *data) const
 
void update_render_graph (VKContext &context, void *data) const
 
void flush () const
 
void read (VKContext &context, void *data) const
 
bool free ()
 
void free_immediately (VKDevice &device)
 
int64_t size_in_bytes () const
 
VkBuffer vk_handle () const
 
void * mapped_memory_get () const
 
bool is_mapped () const
 
- Public Member Functions inherited from blender::NonCopyable
 NonCopyable (const NonCopyable &other)=delete
 
NonCopyableoperator= (const NonCopyable &other)=delete
 
 NonCopyable ()=default
 
 NonCopyable (NonCopyable &&other)=default
 
NonCopyableoperator= (NonCopyable &&other)=default
 

Detailed Description

Class for handing vulkan buffers (allocation/updating/binding).

Definition at line 23 of file vk_buffer.hh.

Constructor & Destructor Documentation

◆ VKBuffer()

blender::gpu::VKBuffer::VKBuffer ( )
default

◆ ~VKBuffer()

blender::gpu::VKBuffer::~VKBuffer ( )
virtual

Definition at line 15 of file vk_buffer.cc.

References free(), and is_allocated().

Member Function Documentation

◆ clear()

◆ create()

◆ flush()

void blender::gpu::VKBuffer::flush ( ) const

◆ free()

bool blender::gpu::VKBuffer::free ( )

Free the buffer.

Discards the buffer so it can be destroyed safely later. Buffers can still be used when rendering so we can only destroy them after the rendering is completed.

Definition at line 180 of file vk_buffer.cc.

References blender::gpu::VKBackend::device, blender::gpu::VKDiscardPool::discard_buffer(), blender::gpu::VKDevice::discard_pool_for_current_thread(), blender::gpu::VKBackend::get(), and is_mapped().

Referenced by blender::gpu::VKDevice::deinit(), blender::gpu::VKStagingBuffer::free(), and ~VKBuffer().

◆ free_immediately()

void blender::gpu::VKBuffer::free_immediately ( VKDevice & device)

◆ is_allocated()

◆ is_mapped()

◆ mapped_memory_get()

void * blender::gpu::VKBuffer::mapped_memory_get ( ) const

Get the reference to the mapped memory.

Can only be called when the buffer is (still) mapped.

Definition at line 151 of file vk_buffer.cc.

References BLI_assert_msg, and is_mapped().

Referenced by blender::gpu::VKImmediate::begin(), blender::gpu::VKPixelBuffer::map(), blender::gpu::VKTexture::read_sub(), and blender::gpu::VKTexture::update_sub().

◆ read()

void blender::gpu::VKBuffer::read ( VKContext & context,
void * data ) const

◆ size_in_bytes()

◆ update_immediately()

void blender::gpu::VKBuffer::update_immediately ( const void * data) const

◆ update_render_graph()

void blender::gpu::VKBuffer::update_render_graph ( VKContext & context,
void * data ) const

Update the buffer as part of the render graph evaluation. The ownership of data will be transferred to the render graph and should have been allocated using guarded alloc.

Definition at line 116 of file vk_buffer.cc.

References BLI_assert, blender::gpu::render_graph::VKUpdateBufferData::data, data, blender::gpu::render_graph::VKUpdateBufferData::data_size, and blender::gpu::render_graph::VKUpdateBufferData::dst_buffer.

Referenced by blender::gpu::VKUniformBuffer::ensure_updated(), and blender::gpu::VKUniformBuffer::update().

◆ vk_handle()


The documentation for this class was generated from the following files: