|
Blender V5.0
|
#include <GPU_vertex_buffer.hh>
Inherited by blender::gpu::DummyVertexBuffer, blender::gpu::GLVertBuf, blender::gpu::MTLVertBuf, and blender::gpu::VKVertexBuffer.
Public Member Functions | |
| VertBuf () | |
| virtual | ~VertBuf () |
| void | init (const GPUVertFormat &format, GPUUsageType usage) |
| void | clear () |
| void | allocate (uint vert_len) |
| void | resize (uint vert_len) |
| void | upload () |
| virtual void | bind_as_ssbo (uint binding)=0 |
| virtual void | bind_as_texture (uint binding)=0 |
| virtual void | wrap_handle (uint64_t handle)=0 |
| size_t | size_alloc_get () const |
| size_t | size_used_get () const |
| void | reference_add () |
| void | reference_remove () |
| GPUUsageType | get_usage_type () const |
| template<typename T> | |
| MutableSpan< T > | data () |
| virtual void | update_sub (uint start, uint len, const void *data)=0 |
| virtual void | read (void *data) const =0 |
Static Public Member Functions | |
| template<typename FormatT> | |
| static VertBufPtr | from_size_with_format (const int size, GPUUsageType usage=GPU_USAGE_STATIC) |
| template<typename T> | |
| static VertBufPtr | from_size (const int size, GPUUsageType usage=GPU_USAGE_STATIC) |
| template<typename T> | |
| static VertBufPtr | from_span (const Span< T > data) |
| template<typename T> | |
| static VertBufPtr | from_varray (const VArray< T > &array) |
| template<typename T> | |
| static VertBufPtr | device_only (uint size) |
Public Attributes | |
| GPUVertFormat | format = {} |
| uint | vertex_len = 0 |
| uint | vertex_alloc = 0 |
| GPUVertBufStatus | flag = GPU_VERTBUF_INVALID |
| GPUUsageType | extended_usage_ = GPU_USAGE_STATIC |
Static Public Attributes | |
| static size_t | memory_usage = 0 |
Protected Member Functions | |
| virtual void | acquire_data ()=0 |
| virtual void | resize_data ()=0 |
| virtual void | release_data ()=0 |
| virtual void | upload_data ()=0 |
Protected Attributes | |
| uchar * | data_ = nullptr |
| GPUUsageType | usage_ = GPU_USAGE_STATIC |
Implementation of Vertex Buffers. Base class which is then specialized for each implementation (GL, VK, ...).
Definition at line 89 of file GPU_vertex_buffer.hh.
| blender::gpu::VertBuf::VertBuf | ( | ) |
Definition at line 30 of file gpu_vertex_buffer.cc.
References format.
Referenced by blender::gpu::MTLVertBuf::MTLVertBuf().
|
virtual |
Definition at line 36 of file gpu_vertex_buffer.cc.
References BLI_assert, flag, and GPU_VERTBUF_INVALID.
|
protectedpure virtual |
Implemented in blender::gpu::DummyVertexBuffer, blender::gpu::GLVertBuf, blender::gpu::MTLVertBuf, and blender::gpu::VKVertexBuffer.
Referenced by allocate().
| void blender::gpu::VertBuf::allocate | ( | uint | vert_len | ) |
Definition at line 70 of file gpu_vertex_buffer.cc.
References acquire_data(), BLI_assert, data_, flag, format, GPU_VERTBUF_DATA_DIRTY, vertex_alloc, and vertex_len.
Referenced by blender::draw::test_draw_curves_interpolate_attributes(), blender::draw::test_draw_curves_interpolate_position(), blender::draw::test_draw_curves_lib(), and blender::draw::test_draw_curves_topology().
|
pure virtual |
|
pure virtual |
| void blender::gpu::VertBuf::clear | ( | ) |
Definition at line 64 of file gpu_vertex_buffer.cc.
References flag, GPU_VERTBUF_INVALID, and release_data().
|
inline |
Returns access to the data allocated for the vertex buffer. The size of the data type must match the data type used on the GPU.
Definition at line 217 of file GPU_vertex_buffer.hh.
References blender::MutableSpan< T >::cast(), data_, size_alloc_get(), and T.
Referenced by blender::draw::build_poly_other_map_vbo(), blender::draw::create_edit_points_data(), blender::draw::create_edit_points_position(), blender::draw::create_edit_points_position_vbo(), blender::draw::create_edit_points_selection(), blender::draw::curve_create_attribute(), blender::draw::draw_subdiv_cache_update_extra_coarse_face_data(), blender::draw::DRW_vertbuf_create_wiredata(), blender::draw::extract_data_bmesh_edge(), blender::draw::extract_data_bmesh_face(), blender::draw::extract_data_bmesh_loop(), blender::draw::extract_data_bmesh_vert(), blender::draw::pbvh::extract_data_corner_bmesh(), blender::draw::pbvh::extract_data_corner_mesh(), blender::draw::pbvh::extract_data_face_bmesh(), blender::draw::pbvh::extract_data_face_mesh(), blender::draw::extract_data_mesh_face(), blender::draw::extract_data_mesh_mapped_corner(), blender::draw::pbvh::extract_data_vert_bmesh(), blender::draw::pbvh::extract_data_vert_mesh(), blender::draw::extract_edge_index_subdiv(), blender::draw::extract_edit_subdiv_data_bm(), blender::draw::extract_edit_subdiv_data_mesh(), blender::draw::extract_edituv_lines_subdiv_bm(), blender::draw::extract_edituv_lines_subdiv_mesh(), blender::draw::extract_edituv_points_subdiv_bm(), blender::draw::extract_edituv_points_subdiv_mesh(), blender::draw::extract_edituv_stretch_area_subdiv(), blender::draw::extract_edituv_subdiv_data_bm(), blender::draw::extract_edituv_subdiv_data_mesh(), blender::draw::extract_lines_loose_geom_subdiv(), blender::draw::extract_lines_paint_mask_subdiv(), blender::draw::extract_points_subdiv_bm(), blender::draw::extract_points_subdiv_mesh(), blender::draw::extract_sculpt_data_subdiv(), blender::draw::extract_tangents_subdiv(), blender::draw::extract_vert_index_subdiv(), from_span(), blender::opensubdiv::EvalOutputAPI::getPatchMap(), blender::gpu::GLVertBuf::GLStorageBuf, blender::draw::grease_pencil_edit_batch_ensure(), blender::draw::grease_pencil_geom_batch_ensure(), blender::draw::grease_pencil_weight_batch_ensure(), blender::draw::pointcloud_extract_attribute(), blender::draw::pointcloud_extract_position_and_radius(), pygpu_vertbuf_fill(), blender::gpu::GLVertBuf::read(), blender::gpu::MTLVertBuf::read(), read(), blender::gpu::VKVertexBuffer::read(), blender::draw::test_draw_curves_interpolate_attributes(), blender::draw::test_draw_curves_interpolate_position(), blender::draw::test_draw_curves_lib(), blender::draw::test_draw_curves_topology(), blender::gpu::GLVertBuf::update_sub(), blender::gpu::MTLVertBuf::update_sub(), update_sub(), blender::gpu::VKVertexBuffer::update_sub(), waveform_draw_rgb(), and wm_xr_controller_model_batch_create().
|
inlinestatic |
Definition at line 160 of file GPU_vertex_buffer.hh.
References BLI_assert, GPU_USAGE_DEVICE_ONLY, GPU_USAGE_FLAG_BUFFER_TEXTURE_ONLY, GPU_vertbuf_create_with_format_ex(), and size().
Referenced by blender::draw::CurvesEvalCache::ensure_positions(), blender::draw::CurvesEvalCache::ensure_positions(), blender::draw::CurvesModule::evaluate_topology_indirection(), and blender::draw::CurvesEvalCache::indirection_buf_get().
|
inlinestatic |
Definition at line 132 of file GPU_vertex_buffer.hh.
References from_size_with_format(), GPU_USAGE_STATIC, and size().
Referenced by blender::draw::CurvesEvalCache::ensure_positions().
|
inlinestatic |
Definition at line 122 of file GPU_vertex_buffer.hh.
References BLI_assert, ceil_to_multiple_u(), GPU_USAGE_STATIC, GPU_vertbuf_create_with_format_ex(), and size().
Referenced by from_size().
|
inlinestatic |
Definition at line 137 of file GPU_vertex_buffer.hh.
References BLI_assert, ceil_to_multiple_u(), data(), GPU_USAGE_FLAG_BUFFER_TEXTURE_ONLY, GPU_USAGE_STATIC, GPU_vertbuf_create_with_format_ex(), and T.
Referenced by blender::draw::CurvesEvalCache::ensure_bezier(), blender::draw::CurvesEvalCache::ensure_common(), blender::draw::CurvesEvalCache::ensure_common(), blender::draw::CurvesEvalCache::ensure_nurbs(), and blender::draw::CurvesEvalCache::ensure_positions().
|
inlinestatic |
Definition at line 148 of file GPU_vertex_buffer.hh.
References BLI_assert, ceil_to_multiple_u(), GPU_USAGE_FLAG_BUFFER_TEXTURE_ONLY, GPU_USAGE_STATIC, GPU_vertbuf_create_with_format_ex(), array< T, alignment >::size(), and T.
Referenced by blender::draw::CurvesEvalCache::ensure_common(), blender::draw::CurvesEvalCache::ensure_common(), blender::draw::ensure_curve_attribute(), blender::draw::CurvesEvalCache::ensure_nurbs(), and blender::draw::CurvesEvalCache::ensure_positions().
|
inline |
Definition at line 208 of file GPU_vertex_buffer.hh.
References usage_.
Referenced by blender::gpu::MTLVertBuf::bind().
| void blender::gpu::VertBuf::init | ( | const GPUVertFormat & | format, |
| GPUUsageType | usage ) |
Definition at line 42 of file gpu_vertex_buffer.cc.
References BLI_assert_msg, extended_usage_, flag, format, GPU_USAGE_FLAG_BUFFER_TEXTURE_ONLY, GPU_VERTBUF_DATA_DIRTY, GPU_VERTBUF_INIT, GPU_vertformat_copy(), GPUVertFormat::packed, usage_, and VertexFormat_pack().
|
pure virtual |
Implemented in blender::gpu::DummyVertexBuffer, blender::gpu::GLVertBuf, blender::gpu::MTLVertBuf, and blender::gpu::VKVertexBuffer.
References data().
|
inline |
Definition at line 195 of file GPU_vertex_buffer.hh.
|
inline |
Definition at line 199 of file GPU_vertex_buffer.hh.
References BLI_assert.
|
protectedpure virtual |
Implemented in blender::gpu::DummyVertexBuffer, blender::gpu::GLVertBuf, blender::gpu::MTLVertBuf, and blender::gpu::VKVertexBuffer.
Referenced by clear().
| void blender::gpu::VertBuf::resize | ( | uint | vert_len | ) |
Definition at line 82 of file gpu_vertex_buffer.cc.
References BLI_assert, flag, GPU_VERTBUF_DATA_DIRTY, resize_data(), vertex_alloc, and vertex_len.
|
protectedpure virtual |
Implemented in blender::gpu::DummyVertexBuffer, blender::gpu::GLVertBuf, blender::gpu::MTLVertBuf, and blender::gpu::VKVertexBuffer.
Referenced by resize().
|
inline |
Definition at line 183 of file GPU_vertex_buffer.hh.
References BLI_assert, GPUVertFormat::packed, and GPUVertFormat::stride.
Referenced by blender::gpu::DummyVertexBuffer::acquire_data(), blender::gpu::GLVertBuf::acquire_data(), blender::gpu::MTLVertBuf::acquire_data(), blender::gpu::VKVertexBuffer::acquire_data(), data(), blender::gpu::GLVertBuf::resize_data(), blender::gpu::MTLVertBuf::resize_data(), and blender::gpu::VKVertexBuffer::resize_data().
|
inline |
Definition at line 189 of file GPU_vertex_buffer.hh.
References BLI_assert, format, and GPUVertFormat::stride.
Referenced by blender::gpu::GLVertBuf::bind(), blender::gpu::MTLVertBuf::bind(), blender::gpu::VKDescriptorBufferUpdator::bind_texel_buffer(), and blender::gpu::GLVertBuf::read().
|
pure virtual |
| void blender::gpu::VertBuf::upload | ( | ) |
Definition at line 93 of file gpu_vertex_buffer.cc.
References upload_data().
Referenced by blender::gpu::VKStorageBuffer::copy_sub().
|
protectedpure virtual |
Implemented in blender::gpu::DummyVertexBuffer, blender::gpu::GLVertBuf, blender::gpu::MTLVertBuf, and blender::gpu::VKVertexBuffer.
Referenced by upload().
|
pure virtual |
NULL indicates data in VRAM (unmapped)
Definition at line 108 of file GPU_vertex_buffer.hh.
Referenced by blender::gpu::DummyVertexBuffer::acquire_data(), blender::gpu::GLVertBuf::acquire_data(), blender::gpu::MTLVertBuf::acquire_data(), blender::gpu::VKVertexBuffer::acquire_data(), allocate(), blender::gpu::GLVertBuf::bind(), blender::gpu::MTLVertBuf::bind(), data(), blender::gpu::DummyVertexBuffer::release_data(), blender::gpu::GLVertBuf::release_data(), blender::gpu::MTLVertBuf::release_data(), blender::gpu::VKVertexBuffer::release_data(), blender::gpu::GLVertBuf::resize_data(), blender::gpu::MTLVertBuf::resize_data(), blender::gpu::VKVertexBuffer::resize_data(), and blender::gpu::VKVertexBuffer::upload_data().
| GPUUsageType blender::gpu::VertBuf::extended_usage_ = GPU_USAGE_STATIC |
Usage including extended usage flags.
Definition at line 103 of file GPU_vertex_buffer.hh.
Referenced by GPU_texture_create_from_vertbuf(), and init().
| GPUVertBufStatus blender::gpu::VertBuf::flag = GPU_VERTBUF_INVALID |
Status flag.
Definition at line 99 of file GPU_vertex_buffer.hh.
Referenced by allocate(), blender::gpu::GLVertBuf::bind(), blender::gpu::MTLVertBuf::bind(), clear(), init(), resize(), blender::gpu::VKVertexBuffer::upload_data(), blender::gpu::GLVertBuf::wrap_handle(), blender::gpu::MTLVertBuf::wrap_handle(), and ~VertBuf().
| GPUVertFormat blender::gpu::VertBuf::format = {} |
Definition at line 93 of file GPU_vertex_buffer.hh.
Referenced by allocate(), bind_attribute_as_ssbo(), init(), blender::eevee::VelocityModule::VelocityGeometryData::pos_buf_get(), size_used_get(), blender::gpu::VKVertexBuffer::to_vk_format(), blender::gpu::GLVertArray::update_bindings(), blender::gpu::VKVertexAttributeObject::update_bindings(), and VertBuf().
|
static |
Definition at line 91 of file GPU_vertex_buffer.hh.
Referenced by blender::gpu::GLVertBuf::bind(), GPU_vertbuf_get_memory_usage(), and blender::gpu::GLVertBuf::release_data().
|
protected |
Usage hint for GL optimization.
Definition at line 111 of file GPU_vertex_buffer.hh.
Referenced by blender::gpu::GLVertBuf::acquire_data(), blender::gpu::MTLVertBuf::acquire_data(), blender::gpu::VKVertexBuffer::acquire_data(), blender::gpu::GLVertBuf::bind(), blender::gpu::MTLVertBuf::bind(), get_usage_type(), init(), blender::gpu::MTLVertBuf::read(), blender::gpu::GLVertBuf::resize_data(), blender::gpu::MTLVertBuf::resize_data(), blender::gpu::VKVertexBuffer::resize_data(), and blender::gpu::VKVertexBuffer::upload_data().
| uint blender::gpu::VertBuf::vertex_alloc = 0 |
Number of verts data.
Definition at line 97 of file GPU_vertex_buffer.hh.
Referenced by allocate(), and resize().
| uint blender::gpu::VertBuf::vertex_len = 0 |
Number of verts we want to draw.
Definition at line 95 of file GPU_vertex_buffer.hh.
Referenced by allocate(), bind_attribute_as_ssbo(), blender::gpu::MTLTexture::init_internal(), resize(), blender::gpu::GLVertArray::update_bindings(), and blender::gpu::VKVertexAttributeObject::update_bindings().