|
Blender V4.5
|
Go to the source code of this file.
Macros | |
| #define | GPU_storagebuf_create(size) |
Functions | |
| GPUStorageBuf * | GPU_storagebuf_create_ex (size_t size, const void *data, GPUUsageType usage, const char *name) |
| void | GPU_storagebuf_free (GPUStorageBuf *ssbo) |
| void | GPU_storagebuf_update (GPUStorageBuf *ssbo, const void *data) |
| void | GPU_storagebuf_bind (GPUStorageBuf *ssbo, int slot) |
| void | GPU_storagebuf_unbind (GPUStorageBuf *ssbo) |
| void | GPU_storagebuf_debug_unbind_all () |
| void | GPU_storagebuf_clear_to_zero (GPUStorageBuf *ssbo) |
| void | GPU_storagebuf_clear (GPUStorageBuf *ssbo, uint32_t clear_value) |
| void | GPU_storagebuf_sync_to_host (GPUStorageBuf *ssbo) |
| void | GPU_storagebuf_read (GPUStorageBuf *ssbo, void *data) |
| void | GPU_storagebuf_copy_sub_from_vertbuf (GPUStorageBuf *ssbo, blender::gpu::VertBuf *src, uint dst_offset, uint src_offset, uint copy_size) |
| Copy a part of a vertex buffer to a storage buffer. | |
| void | GPU_storagebuf_sync_as_indirect_buffer (GPUStorageBuf *ssbo) |
Storage buffers API. Used to handle many way bigger buffers than Uniform buffers update at once. Make sure that the data structure is compatible with what the implementation expect. (see "7.8 Shader Buffer Variables and Shader Storage Blocks" from the OpenGL spec for more info about std430 layout) Rule of thumb: Padding to 16bytes, don't use vec3.
Definition in file GPU_storage_buffer.hh.
| #define GPU_storagebuf_create | ( | size | ) |
Definition at line 28 of file GPU_storage_buffer.hh.
Referenced by blender::gpu::printf_begin().
| void GPU_storagebuf_bind | ( | GPUStorageBuf * | ssbo, |
| int | slot ) |
Definition at line 81 of file gpu_storage_buffer.cc.
References blender::gpu::unwrap().
Referenced by blender::draw::command::DrawCommandBuf::bind(), blender::draw::command::DrawMultiBuf::bind(), blender::gpu::tests::Shader::bind(), blender::nodes::node_composite_vec_blur_cc::VectorBlurOperation::compute_motion_blur(), blender::draw::View::compute_visibility(), blender::draw::Manager::debug_bind(), blender::nodes::node_composite_vec_blur_cc::VectorBlurOperation::dilate_max_velocity(), blender::draw::draw_subdiv_build_fdots_buffers(), blender::draw::draw_subdiv_extract_pos_nor(), blender::draw::draw_subdiv_extract_uvs(), blender::draw::Manager::end_sync(), blender::draw::command::ResourceBind::execute(), blender::draw::command::DrawMultiBuf::generate_commands(), GPU_shader_bind(), blender::draw::Manager::resource_bind(), blender::gpu::tests::ShaderSpecializationConst::ShaderSpecializationConst(), blender::gpu::tests::test_buffer_texture(), and blender::gpu::tests::test_shader_compute_ssbo().
| void GPU_storagebuf_clear | ( | GPUStorageBuf * | ssbo, |
| uint32_t | clear_value ) |
Clear the content of the buffer using the given #clear_value. #clear_value will be used as a repeatable pattern of 32bits.
Definition at line 101 of file gpu_storage_buffer.cc.
References blender::gpu::unwrap().
Referenced by blender::draw::View::compute_visibility(), blender::eevee::ShadowModule::end_sync(), GPU_storagebuf_clear_to_zero(), blender::draw::select::SelectMap::pre_draw(), blender::eevee::IrradianceBake::raylists_build(), blender::draw::test_eevee_surfel_list(), blender::gpu::tests::test_storage_buffer_clear(), and blender::gpu::tests::test_storage_buffer_clear_byte_pattern().
| void GPU_storagebuf_clear_to_zero | ( | GPUStorageBuf * | ssbo | ) |
Definition at line 96 of file gpu_storage_buffer.cc.
References GPU_storagebuf_clear().
Referenced by blender::draw::detail::StorageCommon< T, len, device_only >::clear_to_zero(), blender::nodes::node_composite_vec_blur_cc::VectorBlurOperation::dilate_max_velocity(), blender::gpu::printf_begin(), blender::gpu::tests::test_storage_buffer_clear_zero(), and blender::gpu::tests::test_storage_buffer_copy_from_vertex_buffer().
| void GPU_storagebuf_copy_sub_from_vertbuf | ( | GPUStorageBuf * | ssbo, |
| blender::gpu::VertBuf * | src, | ||
| uint | dst_offset, | ||
| uint | src_offset, | ||
| uint | copy_size ) |
Copy a part of a vertex buffer to a storage buffer.
| ssbo | destination storage buffer |
| src | source vertex buffer |
| dst_offset | where to start copying to (in bytes). |
| src_offset | where to start copying from (in bytes). |
| copy_size | byte size of the segment to copy. |
Definition at line 106 of file gpu_storage_buffer.cc.
References blender::gpu::unwrap().
Referenced by blender::eevee::VelocityModule::geometry_steps_fill(), and blender::gpu::tests::test_storage_buffer_copy_from_vertex_buffer().
| GPUStorageBuf * GPU_storagebuf_create_ex | ( | size_t | size, |
| const void * | data, | ||
| GPUUsageType | usage, | ||
| const char * | name ) |
Definition at line 51 of file gpu_storage_buffer.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::data(), data, G, G_DEBUG_GPU, blender::gpu::GPUBackend::get(), size(), blender::gpu::GPUBackend::storagebuf_alloc(), blender::gpu::StorageBuf::update(), and blender::gpu::wrap().
Referenced by blender::opensubdiv::GPUPatchTable::allocate(), blender::opensubdiv::create_buffer(), blender::opensubdiv::create_patch_array_buffer(), blender::nodes::node_composite_vec_blur_cc::VectorBlurOperation::dilate_max_velocity(), blender::gpu::tests::ShaderSpecializationConst::init_shader(), blender::gpu::tests::CallData::init_ssbo(), blender::draw::StorageArrayBuffer< uint, 1024, true >::resize(), blender::draw::detail::StorageCommon< T, len, device_only >::StorageCommon(), blender::gpu::tests::test_buffer_texture(), blender::gpu::tests::test_compute_indirect(), blender::gpu::tests::test_shader_compute_ssbo(), blender::gpu::tests::test_storage_buffer_clear(), blender::gpu::tests::test_storage_buffer_clear_byte_pattern(), blender::gpu::tests::test_storage_buffer_clear_zero(), blender::gpu::tests::test_storage_buffer_copy_from_vertex_buffer(), and blender::gpu::tests::test_storage_buffer_create_update_read().
| void GPU_storagebuf_debug_unbind_all | ( | ) |
Resets the internal slot usage tracking. But there is no guarantee that this actually undo the bindings for the next draw call. Only has effect when G_DEBUG_GPU is set.
Definition at line 91 of file gpu_storage_buffer.cc.
References blender::gpu::Context::debug_unbind_all_ssbo(), and blender::gpu::Context::get().
Referenced by blender::draw::command::RecordingState::cleanup(), and blender::draw::command::StateSet::set().
| void GPU_storagebuf_free | ( | GPUStorageBuf * | ssbo | ) |
Definition at line 71 of file gpu_storage_buffer.cc.
References blender::gpu::unwrap().
Referenced by blender::opensubdiv::discard_buffer(), blender::opensubdiv::discard_list(), blender::draw::draw_subdiv_build_fdots_buffers(), blender::draw::draw_subdiv_extract_pos_nor(), blender::draw::draw_subdiv_extract_uvs(), blender::nodes::node_composite_vec_blur_cc::VectorBlurOperation::execute_gpu(), blender::gpu::printf_end(), blender::draw::StorageArrayBuffer< uint, 1024, true >::resize(), blender::opensubdiv::storage_buffer_free(), blender::gpu::tests::test_buffer_texture(), blender::gpu::tests::test_compute_indirect(), blender::gpu::tests::test_shader_compute_ssbo(), blender::gpu::tests::test_storage_buffer_clear(), blender::gpu::tests::test_storage_buffer_clear_byte_pattern(), blender::gpu::tests::test_storage_buffer_clear_zero(), blender::gpu::tests::test_storage_buffer_copy_from_vertex_buffer(), blender::gpu::tests::test_storage_buffer_create_update_read(), blender::gpu::tests::CallData::~CallData(), blender::opensubdiv::GPUComputeEvaluator::~GPUComputeEvaluator(), blender::gpu::tests::ShaderSpecializationConst::~ShaderSpecializationConst(), and blender::draw::detail::StorageCommon< T, len, device_only >::~StorageCommon().
| void GPU_storagebuf_read | ( | GPUStorageBuf * | ssbo, |
| void * | data ) |
Read back content of the buffer to CPU for inspection. Slow! Only use for inspection / debugging.
NOTE: If GPU_storagebuf_sync_to_host is called, this command is synchronized against that call. If pending GPU updates to the storage buffer are not yet visible to the host, the command will stall until dependent GPU work has completed.
Otherwise, this command is synchronized against this call and will stall the CPU until the buffer content can be read by the host.
Definition at line 120 of file gpu_storage_buffer.cc.
References data, and blender::gpu::unwrap().
Referenced by blender::gpu::printf_end(), blender::draw::detail::StorageCommon< T, len, device_only >::read(), blender::gpu::tests::CallData::read_back(), blender::gpu::tests::test_buffer_texture(), blender::gpu::tests::test_shader_compute_ssbo(), blender::gpu::tests::test_storage_buffer_clear(), blender::gpu::tests::test_storage_buffer_clear_byte_pattern(), blender::gpu::tests::test_storage_buffer_clear_zero(), blender::gpu::tests::test_storage_buffer_copy_from_vertex_buffer(), blender::gpu::tests::test_storage_buffer_create_update_read(), and blender::gpu::tests::ShaderSpecializationConst::validate().
| void GPU_storagebuf_sync_as_indirect_buffer | ( | GPUStorageBuf * | ssbo | ) |
Ensure the ssbo is ready to be used as an indirect buffer in GPU_batch_draw_indirect. NOTE: Internally, this is only required for the OpenGL backend.
Definition at line 125 of file gpu_storage_buffer.cc.
References blender::gpu::unwrap().
Referenced by blender::draw::command::DrawMultiBuf::generate_commands().
| void GPU_storagebuf_sync_to_host | ( | GPUStorageBuf * | ssbo | ) |
Explicitly sync updated storage buffer contents back to host within the GPU command stream. This ensures any changes made by the GPU are visible to the host. NOTE: This command is only valid for host-visible storage buffers.
Definition at line 115 of file gpu_storage_buffer.cc.
References blender::gpu::unwrap().
Referenced by blender::draw::detail::StorageCommon< T, len, device_only >::async_flush_to_host().
| void GPU_storagebuf_unbind | ( | GPUStorageBuf * | ssbo | ) |
Definition at line 86 of file gpu_storage_buffer.cc.
References blender::gpu::unwrap().
Referenced by blender::nodes::node_composite_vec_blur_cc::VectorBlurOperation::dilate_max_velocity().
| void GPU_storagebuf_update | ( | GPUStorageBuf * | ssbo, |
| const void * | data ) |
Definition at line 76 of file gpu_storage_buffer.cc.
References data, and blender::gpu::unwrap().
Referenced by blender::draw::detail::StorageCommon< T, len, device_only >::push_update(), blender::gpu::tests::test_storage_buffer_clear_zero(), and blender::gpu::tests::test_storage_buffer_create_update_read().