|
Blender V4.5
|
#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 |
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 62 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.
|
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 141 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::create_points_position_time_vbo(), 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_positions_subdiv(), blender::draw::extract_sculpt_data_subdiv(), blender::draw::extract_tangents_subdiv(), blender::draw::extract_vert_index_subdiv(), 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::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().
|
inline |
Definition at line 132 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 extended_usage_, flag, format, GPU_USAGE_FLAG_BUFFER_TEXTURE_ONLY, GPU_VERTBUF_DATA_DIRTY, GPU_VERTBUF_INIT, GPU_vertformat_copy(), GPUVertFormat::packed, usage_, VertexFormat_pack(), and VertexFormat_texture_buffer_pack().
|
pure virtual |
Implemented in blender::gpu::DummyVertexBuffer, blender::gpu::GLVertBuf, blender::gpu::MTLVertBuf, and blender::gpu::VKVertexBuffer.
References data().
|
inline |
Definition at line 119 of file GPU_vertex_buffer.hh.
|
inline |
Definition at line 123 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 107 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 113 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 81 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 76 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 72 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 66 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 64 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 84 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 70 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 68 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().