|
Blender V4.3
|
#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 | |
| NonCopyable & | operator= (const NonCopyable &other)=delete |
| NonCopyable ()=default | |
| NonCopyable (NonCopyable &&other)=default | |
| NonCopyable & | operator= (NonCopyable &&other)=default |
Class for handing vulkan buffers (allocation/updating/binding).
Definition at line 23 of file vk_buffer.hh.
|
default |
|
virtual |
Definition at line 15 of file vk_buffer.cc.
References free(), and is_allocated().
Definition at line 133 of file vk_buffer.cc.
References blender::gpu::render_graph::VKFillBufferData::data, blender::gpu::render_graph::VKFillBufferData::size, and blender::gpu::render_graph::VKFillBufferData::vk_buffer.
Referenced by blender::gpu::VKStorageBuffer::clear(), and blender::gpu::VKUniformBuffer::clear_to_zero().
| bool blender::gpu::VKBuffer::create | ( | size_t | size, |
| GPUUsageType | usage, | ||
| VkBufferUsageFlags | buffer_usage, | ||
| bool | is_host_visible = true ) |
Definition at line 53 of file vk_buffer.cc.
References blender::gpu::render_graph::VKResourceStateTracker::add_buffer(), BLI_assert, blender::gpu::VKBackend::device, blender::gpu::VKBackend::get(), is_allocated(), max_ulul(), blender::gpu::VKDevice::mem_allocator_get(), blender::gpu::VKDevice::queue_family_get(), blender::gpu::VKDevice::resources, size_in_bytes(), blender::gpu::vma_allocation_flags(), blender::gpu::vma_preferred_flags(), and blender::gpu::vma_required_flags().
Referenced by blender::gpu::VKTexture::read_sub(), blender::gpu::VKTexture::update_sub(), blender::gpu::VKPixelBuffer::VKPixelBuffer(), and blender::gpu::VKStagingBuffer::VKStagingBuffer().
| void blender::gpu::VKBuffer::flush | ( | ) | const |
Definition at line 126 of file vk_buffer.cc.
References blender::gpu::VKBackend::device, blender::gpu::VKBackend::get(), max_ulul(), blender::gpu::VKDevice::mem_allocator_get(), and size_in_bytes().
Referenced by update_immediately().
| 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().
| void blender::gpu::VKBuffer::free_immediately | ( | VKDevice & | device | ) |
Destroy the buffer immediately.
Definition at line 195 of file vk_buffer.cc.
References BLI_assert, is_mapped(), blender::gpu::VKDevice::mem_allocator_get(), blender::gpu::render_graph::VKResourceStateTracker::remove_buffer(), and blender::gpu::VKDevice::resources.
| bool blender::gpu::VKBuffer::is_allocated | ( | ) | const |
Has this buffer been allocated?
Definition at line 22 of file vk_buffer.cc.
Referenced by blender::gpu::VKUniformBuffer::clear_to_zero(), blender::gpu::VKStagingBuffer::copy_from_device(), blender::gpu::VKStagingBuffer::copy_to_device(), create(), blender::gpu::VKStorageBuffer::ensure_allocated(), blender::gpu::VKIndexBuffer::ensure_updated(), blender::gpu::VKUniformBuffer::ensure_updated(), blender::gpu::VKUniformBuffer::update(), blender::gpu::VKVertexBuffer::upload_data(), blender::gpu::VKVertexBuffer::vk_handle(), and ~VKBuffer().
| 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 blender::gpu::VKStagingBuffer::copy_from_device(), blender::gpu::VKStagingBuffer::copy_to_device(), free(), free_immediately(), mapped_memory_get(), read(), blender::gpu::VKVertexBuffer::read(), update_immediately(), and blender::gpu::VKVertexBuffer::upload_data().
| 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().
| void blender::gpu::VKBuffer::read | ( | VKContext & | context, |
| void * | data ) const |
Definition at line 142 of file vk_buffer.cc.
References BLI_assert_msg, and is_mapped().
Referenced by blender::gpu::VKIndexBuffer::read(), blender::gpu::VKStorageBuffer::read(), and blender::gpu::VKVertexBuffer::read().
|
inline |
Definition at line 64 of file vk_buffer.hh.
Referenced by blender::gpu::VKStagingBuffer::copy_from_device(), blender::gpu::VKStagingBuffer::copy_to_device(), create(), blender::gpu::VKVertexBuffer::ensure_buffer_view(), flush(), blender::gpu::VKStorageBuffer::size_in_bytes(), and blender::gpu::VKStagingBuffer::VKStagingBuffer().
| void blender::gpu::VKBuffer::update_immediately | ( | const void * | data | ) | const |
Definition at line 109 of file vk_buffer.cc.
References BLI_assert_msg, flush(), and is_mapped().
Referenced by blender::gpu::VKIndexBuffer::ensure_updated(), and blender::gpu::VKStorageBuffer::update().
| 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().
|
inline |
Definition at line 69 of file vk_buffer.hh.
Referenced by blender::gpu::VKVertexAttributeObject::bind(), blender::gpu::VKStagingBuffer::copy_from_device(), blender::gpu::VKStagingBuffer::copy_to_device(), blender::gpu::VKVertexBuffer::ensure_buffer_view(), blender::gpu::VKPixelBuffer::get_native_handle(), blender::gpu::VKTexture::read_sub(), blender::gpu::VKDrawList::submit(), blender::gpu::VKTexture::update_sub(), blender::gpu::VKIndexBuffer::vk_handle(), blender::gpu::VKStorageBuffer::vk_handle(), blender::gpu::VKUniformBuffer::vk_handle(), blender::gpu::VKVertexBuffer::vk_handle(), blender::gpu::VKPixelBuffer::VKPixelBuffer(), and blender::gpu::VKStagingBuffer::VKStagingBuffer().