|
Blender V5.0
|
#include <mtl_storage_buffer.hh>
Inherits blender::gpu::StorageBuf.
Public Member Functions | |
| void | sync_as_indirect_buffer () override |
| const char * | get_name () |
Creation & Deletion | |
| MTLStorageBuf (size_t size, GPUUsageType usage, const char *name) | |
| ~MTLStorageBuf () override | |
| MTLStorageBuf (MTLUniformBuf *uniform_buf, size_t size) | |
| MTLStorageBuf (MTLVertBuf *vert_buf, size_t size) | |
| MTLStorageBuf (MTLIndexBuf *index_buf, size_t size) | |
| MTLStorageBuf (MTLTexture *texture, size_t size) | |
| MTLStorageBuf (size_t size) | |
Data upload / update | |
| void | update (const void *data) override |
| void | init () |
Usage | |
| void | bind (int slot) override |
| void | unbind () override |
| void | clear (uint32_t clear_value) override |
| void | copy_sub (VertBuf *src, uint dst_offset, uint src_offset, uint copy_size) override |
| void | read (void *data) override |
| void | async_flush_to_host () override |
| id< MTLBuffer > | get_metal_buffer () |
| size_t | get_size () |
| Public Member Functions inherited from blender::gpu::StorageBuf | |
| StorageBuf (size_t size, const char *name) | |
| virtual | ~StorageBuf () |
| void | usage_size_set (size_t size) |
| size_t | usage_size_get () const |
Additional Inherited Members | |
| Protected Attributes inherited from blender::gpu::StorageBuf | |
| size_t | size_in_bytes_ = -1 |
| size_t | usage_size_in_bytes_ = -1 |
| void * | data_ = nullptr |
| char | name_ [DEBUG_NAME_LEN] = {} |
Implementation of Storage Buffers using Metal.
Definition at line 26 of file mtl_storage_buffer.hh.
| blender::gpu::MTLStorageBuf::MTLStorageBuf | ( | size_t | size, |
| GPUUsageType | usage, | ||
| const char * | name ) |
Definition at line 39 of file mtl_storage_buffer.mm.
References metal_buffer_, name, size(), and blender::gpu::StorageBuf::StorageBuf().
Referenced by copy_sub().
|
override |
Definition at line 84 of file mtl_storage_buffer.mm.
References blender::gpu::MTLStorageBufferBinding::bound, blender::gpu::MTLContext::get(), i, metal_buffer_, MTL_MAX_BUFFER_BINDINGS, blender::gpu::MTLContext::pipeline_state, blender::gpu::MTLStorageBufferBinding::ssbo, and blender::gpu::MTLContextGlobalShaderPipelineState::ssbo_bindings.
| blender::gpu::MTLStorageBuf::MTLStorageBuf | ( | MTLUniformBuf * | uniform_buf, |
| size_t | size ) |
Definition at line 48 of file mtl_storage_buffer.mm.
References BLI_assert, GPU_USAGE_DYNAMIC, size(), blender::gpu::StorageBuf::StorageBuf(), and uniform_buffer_.
| blender::gpu::MTLStorageBuf::MTLStorageBuf | ( | MTLVertBuf * | vert_buf, |
| size_t | size ) |
Definition at line 57 of file mtl_storage_buffer.mm.
References BLI_assert, GPU_USAGE_DYNAMIC, size(), blender::gpu::StorageBuf::StorageBuf(), and vertex_buffer_.
| blender::gpu::MTLStorageBuf::MTLStorageBuf | ( | MTLIndexBuf * | index_buf, |
| size_t | size ) |
Definition at line 66 of file mtl_storage_buffer.mm.
References BLI_assert, GPU_USAGE_DYNAMIC, index_buffer_, size(), and blender::gpu::StorageBuf::StorageBuf().
| blender::gpu::MTLStorageBuf::MTLStorageBuf | ( | MTLTexture * | texture, |
| size_t | size ) |
Definition at line 75 of file mtl_storage_buffer.mm.
References BLI_assert, GPU_USAGE_DYNAMIC, size(), blender::gpu::StorageBuf::StorageBuf(), texture(), and texture_.
| blender::gpu::MTLStorageBuf::MTLStorageBuf | ( | size_t | size | ) |
Definition at line 32 of file mtl_storage_buffer.mm.
References blender::gpu::MTLBufferPool::allocate_aligned(), blender::gpu::MTLContext::get_global_memory_manager(), GPU_USAGE_STREAM, metal_buffer_, size(), and blender::gpu::StorageBuf::StorageBuf().
|
overridevirtual |
Implements blender::gpu::StorageBuf.
Definition at line 353 of file mtl_storage_buffer.mm.
References BLI_assert, BLI_assert_msg, blender::gpu::MTLContext::device, blender::gpu::MTLCommandBufferManager::encode_signal_event(), blender::gpu::MTLCommandBufferManager::ensure_begin_blit_encoder(), blender::gpu::MTLContext::get(), GPU_flush(), GPU_USAGE_DEVICE_ONLY, init(), blender::gpu::MTLContext::main_command_buffer, and metal_buffer_.
|
overridevirtual |
Implements blender::gpu::StorageBuf.
Definition at line 221 of file mtl_storage_buffer.mm.
References BLI_assert, blender::gpu::MTLStorageBufferBinding::bound, blender::gpu::StorageBuf::data_, blender::gpu::MTLContext::get(), init(), MEM_SAFE_FREE, metal_buffer_, MTL_MAX_BUFFER_BINDINGS, blender::gpu::StorageBuf::name_, blender::gpu::MTLContext::pipeline_state, blender::gpu::MTLStorageBufferBinding::ssbo, blender::gpu::MTLContextGlobalShaderPipelineState::ssbo_bindings, and update().
Referenced by blender::gpu::MTLScratchBufferManager::bind_as_ssbo(), blender::gpu::MTLContext::ensure_texture_bindings(), and blender::gpu::MTLContext::ensure_texture_bindings().
|
overridevirtual |
Implements blender::gpu::StorageBuf.
Definition at line 281 of file mtl_storage_buffer.mm.
References blender::gpu::MTLComputeState::bind_compute_buffer(), blender::gpu::MTLComputeState::bind_compute_bytes(), blender::gpu::MTLComputeState::bind_pso(), BLI_assert_msg, blender::gpu::MTLCommandBufferManager::ensure_begin_blit_encoder(), blender::gpu::MTLCommandBufferManager::ensure_begin_compute_encoder(), blender::gpu::MTLContext::get(), blender::gpu::MTLContextComputeUtils::get_buffer_clear_pso(), blender::gpu::MTLCommandBufferManager::get_compute_state(), blender::gpu::MTLContext::get_compute_utils(), init(), blender::gpu::MTLContext::main_command_buffer, metal_buffer_, and blender::gpu::StorageBuf::size_in_bytes_.
|
overridevirtual |
Implements blender::gpu::StorageBuf.
Definition at line 320 of file mtl_storage_buffer.mm.
References blender::gpu::MTLVertBuf::bind(), BLI_assert, blender::gpu::MTLCommandBufferManager::ensure_begin_blit_encoder(), blender::gpu::MTLContext::get(), blender::gpu::MTLBuffer::get_metal_buffer(), init(), blender::gpu::MTLContext::main_command_buffer, metal_buffer_, MTLStorageBuf(), and size().
| id< MTLBuffer > blender::gpu::MTLStorageBuf::get_metal_buffer | ( | ) |
Definition at line 471 of file mtl_storage_buffer.mm.
References BLI_assert, BLI_assert_msg, blender::gpu::StorageBuf::data_, blender::gpu::MTLBuffer::debug_ensure_used(), blender::gpu::MTLBuffer::get_metal_buffer(), index_buffer_, metal_buffer_, texture_, uniform_buffer_, UNUSED_VARS_NDEBUG, and vertex_buffer_.
Referenced by blender::gpu::MTLContext::compute_dispatch_indirect().
|
inline |
Definition at line 90 of file mtl_storage_buffer.hh.
References blender::gpu::StorageBuf::name_.
| size_t blender::gpu::MTLStorageBuf::get_size | ( | ) |
Definition at line 520 of file mtl_storage_buffer.mm.
References BLI_assert, and blender::gpu::StorageBuf::size_in_bytes_.
Referenced by update().
| void blender::gpu::MTLStorageBuf::init | ( | ) |
Definition at line 120 of file mtl_storage_buffer.mm.
References blender::gpu::MTLBufferPool::allocate(), BLI_assert, blender::gpu::MTLContext::device, blender::gpu::MTLContext::get(), blender::gpu::MTLContext::get_global_memory_manager(), GPU_USAGE_DEVICE_ONLY, metal_buffer_, blender::gpu::StorageBuf::name_, blender::gpu::StorageBuf::size_in_bytes_, and UNUSED_VARS_NDEBUG.
Referenced by async_flush_to_host(), bind(), clear(), copy_sub(), read(), and update().
|
overridevirtual |
Read storage buffer contents via staging buffer.
Direct storage buffer read.
Implements blender::gpu::StorageBuf.
Definition at line 387 of file mtl_storage_buffer.mm.
References blender::gpu::MTLBufferPool::allocate(), BLI_assert, BLI_time_sleep_ms(), data, blender::gpu::MTLCommandBufferManager::ensure_begin_blit_encoder(), blender::gpu::MTLBuffer::free(), blender::gpu::MTLContext::get(), blender::gpu::MTLContext::get_global_memory_manager(), blender::gpu::MTLBuffer::get_host_ptr(), blender::gpu::MTLBuffer::get_metal_buffer(), GPU_finish(), GPU_USAGE_DEVICE_ONLY, init(), blender::gpu::MTLContext::main_command_buffer, metal_buffer_, MTL_LOG_WARNING, size(), and blender::gpu::StorageBuf::size_in_bytes_.
|
inlineoverridevirtual |
Implements blender::gpu::StorageBuf.
Definition at line 84 of file mtl_storage_buffer.hh.
|
overridevirtual |
Implements blender::gpu::StorageBuf.
Definition at line 255 of file mtl_storage_buffer.mm.
References blender::gpu::MTLStorageBufferBinding::bound, G, G_DEBUG_GPU, and blender::gpu::MTLStorageBufferBinding::ssbo.
Referenced by blender::gpu::MTLScratchBufferManager::unbind_as_ssbo().
|
overridevirtual |
Implements blender::gpu::StorageBuf.
Definition at line 147 of file mtl_storage_buffer.mm.
References blender::gpu::MTLBufferPool::allocate(), BLI_assert, data, blender::gpu::MTLCommandBufferManager::ensure_begin_blit_encoder(), blender::gpu::MTLBuffer::flush_range(), blender::gpu::MTLBuffer::free(), blender::gpu::MTLContext::get(), blender::gpu::MTLContext::get_global_memory_manager(), blender::gpu::MTLBuffer::get_host_ptr(), blender::gpu::MTLBuffer::get_metal_buffer(), get_size(), GPU_USAGE_DEVICE_ONLY, init(), length(), blender::gpu::MTLContext::main_command_buffer, metal_buffer_, size(), and blender::gpu::StorageBuf::size_in_bytes_.
Referenced by bind().
| MTLIndexBuf* blender::gpu::MTLStorageBuf::index_buffer_ |
Definition at line 47 of file mtl_storage_buffer.hh.
Referenced by get_metal_buffer(), and MTLStorageBuf().
| gpu::MTLBuffer* blender::gpu::MTLStorageBuf::metal_buffer_ |
Own allocation.
Definition at line 43 of file mtl_storage_buffer.hh.
Referenced by async_flush_to_host(), bind(), clear(), copy_sub(), get_metal_buffer(), init(), MTLStorageBuf(), MTLStorageBuf(), read(), update(), and ~MTLStorageBuf().
| gpu::MTLTexture* blender::gpu::MTLStorageBuf::texture_ |
Definition at line 48 of file mtl_storage_buffer.hh.
Referenced by get_metal_buffer(), and MTLStorageBuf().
| MTLUniformBuf* blender::gpu::MTLStorageBuf::uniform_buffer_ |
Definition at line 45 of file mtl_storage_buffer.hh.
Referenced by get_metal_buffer(), and MTLStorageBuf().
| MTLVertBuf* blender::gpu::MTLStorageBuf::vertex_buffer_ |
Definition at line 46 of file mtl_storage_buffer.hh.
Referenced by get_metal_buffer(), and MTLStorageBuf().