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

References data, and size().

◆ ~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 ~VKBuffer().

◆ free_immediately()

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

◆ is_allocated()

bool blender::gpu::VKBuffer::is_allocated ( ) const

Has this buffer been allocated?

Definition at line 22 of file vk_buffer.cc.

Referenced by create(), and ~VKBuffer().

◆ is_mapped()

bool blender::gpu::VKBuffer::is_mapped ( ) const

Is this buffer mapped (visible on host)

Definition at line 157 of file vk_buffer.cc.

Referenced by free(), free_immediately(), mapped_memory_get(), read(), and update_immediately().

◆ 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::VKTexture::read_sub(), and blender::gpu::VKTexture::update_sub().

◆ read()

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

◆ size_in_bytes()

int64_t blender::gpu::VKBuffer::size_in_bytes ( ) const
inline

Definition at line 64 of file vk_buffer.hh.

Referenced by create(), flush(), and blender::gpu::VKStagingBuffer::VKStagingBuffer().

◆ 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.

◆ vk_handle()

VkBuffer blender::gpu::VKBuffer::vk_handle ( ) const
inline

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