Blender V4.3
blender::gpu::VertBuf Class Referenceabstract

#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
 
VertBufduplicate ()
 
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< Tdata ()
 
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
 
virtual void duplicate_data (VertBuf *dst)=0
 

Protected Attributes

uchardata_ = nullptr
 
GPUUsageType usage_ = GPU_USAGE_STATIC
 

Detailed Description

Implementation of Vertex Buffers. Base class which is then specialized for each implementation (GL, VK, ...).

Definition at line 61 of file GPU_vertex_buffer.hh.

Constructor & Destructor Documentation

◆ VertBuf()

blender::gpu::VertBuf::VertBuf ( )

Definition at line 32 of file gpu_vertex_buffer.cc.

◆ ~VertBuf()

blender::gpu::VertBuf::~VertBuf ( )
virtual

Definition at line 38 of file gpu_vertex_buffer.cc.

References BLI_assert, flag, and GPU_VERTBUF_INVALID.

Member Function Documentation

◆ acquire_data()

virtual void blender::gpu::VertBuf::acquire_data ( )
protectedpure virtual

◆ allocate()

void blender::gpu::VertBuf::allocate ( uint vert_len)

◆ bind_as_ssbo()

virtual void blender::gpu::VertBuf::bind_as_ssbo ( uint binding)
pure virtual

◆ bind_as_texture()

virtual void blender::gpu::VertBuf::bind_as_texture ( uint binding)
pure virtual

◆ clear()

void blender::gpu::VertBuf::clear ( )

Definition at line 66 of file gpu_vertex_buffer.cc.

References flag, GPU_VERTBUF_INVALID, and release_data().

◆ data()

template<typename T >
MutableSpan< T > blender::gpu::VertBuf::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 142 of file GPU_vertex_buffer.hh.

References blender::MutableSpan< T >::cast(), data_, and size_alloc_get().

Referenced by SeqQuadsBatch::add_line(), SeqQuadsBatch::add_quad(), SeqQuadsBatch::add_wire_quad(), blender::draw::build_poly_other_map_vbo(), blender::draw::build_vertex_face_adjacency_maps(), blender::draw::create_edit_points_position_and_data(), 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::curve_create_curves_pos(), blender::draw::curve_create_edit_data_and_handles(), blender::draw::draw_subdiv_build_cache(), blender::draw::draw_subdiv_cache_update_extra_coarse_face_data(), blender::draw::draw_subdiv_init_origindex_buffer(), blender::draw::draw_subdiv_topology_info_cb(), blender::draw::DRW_vertbuf_create_wiredata(), blender::draw::ensure_control_point_attribute(), blender::draw::extract_attr_viewer(), 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_factor(), blender::draw::extract_edge_idx_loose_geom_subdiv(), blender::draw::extract_edge_index_subdiv(), blender::draw::extract_edit_data(), blender::draw::extract_edit_data_subdiv(), blender::draw::extract_edit_subdiv_data_bm(), blender::draw::extract_edit_subdiv_data_mesh(), blender::draw::extract_edituv_data(), blender::draw::extract_edituv_data_subdiv(), 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_angle(), blender::draw::extract_edituv_stretch_area(), blender::draw::extract_edituv_stretch_area_subdiv(), blender::draw::extract_edituv_subdiv_data_bm(), blender::draw::extract_edituv_subdiv_data_mesh(), blender::draw::extract_face_dot_normals(), blender::draw::extract_face_dots_edituv_data(), blender::draw::extract_face_dots_position(), blender::draw::extract_face_dots_uv(), blender::draw::extract_face_index_subdiv(), blender::draw::extract_lines_loose_geom_subdiv(), blender::draw::extract_lines_paint_mask_subdiv(), blender::draw::extract_mesh_analysis(), blender::draw::extract_normals(), blender::draw::extract_orco(), blender::draw::extract_points_subdiv_bm(), blender::draw::extract_points_subdiv_mesh(), blender::draw::extract_positions(), blender::draw::extract_positions_subdiv(), blender::draw::extract_sculpt_data(), blender::draw::extract_sculpt_data_subdiv(), blender::draw::extract_skin_roots(), blender::draw::extract_tangents(), blender::draw::extract_tangents_subdiv(), blender::draw::extract_uv_maps(), blender::draw::extract_vert_idx_loose_geom_subdiv(), blender::draw::extract_vert_index_subdiv(), blender::draw::extract_vert_normals(), blender::draw::extract_weights(), blender::draw::pbvh::fill_vbo_face_set_bmesh(), blender::draw::pbvh::fill_vbo_face_set_grids(), blender::draw::pbvh::fill_vbo_face_set_mesh(), blender::draw::pbvh::fill_vbo_mask_bmesh(), blender::draw::pbvh::fill_vbo_mask_grids(), blender::draw::pbvh::fill_vbo_mask_mesh(), blender::draw::pbvh::fill_vbo_normal_bmesh(), blender::draw::pbvh::fill_vbo_normal_grids(), blender::draw::pbvh::fill_vbo_normal_mesh(), blender::draw::pbvh::fill_vbo_position_bmesh(), blender::draw::pbvh::fill_vbo_position_grids(), blender::draw::grease_pencil_edit_batch_ensure(), blender::draw::grease_pencil_geom_batch_ensure(), blender::draw::grease_pencil_weight_batch_ensure(), blender::draw::init_vbo_data(), blender::draw::lattice_batch_cache_create_overlay_batches(), blender::draw::pointcloud_extract_attribute(), blender::draw::pointcloud_extract_position_and_radius(), pygpu_vertbuf_fill(), blender::draw::overlay::vbo_from_vector(), blender::draw::overlay::vbo_from_vector(), blender::draw::overlay::vbo_from_vector(), waveform_draw_rgb(), and wm_xr_controller_model_batch_create().

◆ duplicate()

VertBuf * blender::gpu::VertBuf::duplicate ( )

◆ duplicate_data()

virtual void blender::gpu::VertBuf::duplicate_data ( VertBuf * dst)
protectedpure virtual

◆ get_usage_type()

GPUUsageType blender::gpu::VertBuf::get_usage_type ( ) const
inline

◆ init()

◆ read()

virtual void blender::gpu::VertBuf::read ( void * data) const
pure virtual

◆ reference_add()

void blender::gpu::VertBuf::reference_add ( )
inline

Definition at line 120 of file GPU_vertex_buffer.hh.

◆ reference_remove()

void blender::gpu::VertBuf::reference_remove ( )
inline

Definition at line 124 of file GPU_vertex_buffer.hh.

References BLI_assert.

◆ release_data()

virtual void blender::gpu::VertBuf::release_data ( )
protectedpure virtual

◆ resize()

void blender::gpu::VertBuf::resize ( uint vert_len)

◆ resize_data()

virtual void blender::gpu::VertBuf::resize_data ( )
protectedpure virtual

◆ size_alloc_get()

◆ size_used_get()

size_t blender::gpu::VertBuf::size_used_get ( ) const
inline

◆ update_sub()

virtual void blender::gpu::VertBuf::update_sub ( uint start,
uint len,
const void * data )
pure virtual

◆ upload()

void blender::gpu::VertBuf::upload ( )

Definition at line 111 of file gpu_vertex_buffer.cc.

References upload_data().

Referenced by blender::gpu::VKStorageBuffer::copy_sub().

◆ upload_data()

virtual void blender::gpu::VertBuf::upload_data ( )
protectedpure virtual

◆ wrap_handle()

virtual void blender::gpu::VertBuf::wrap_handle ( uint64_t handle)
pure virtual

Member Data Documentation

◆ data_

◆ extended_usage_

GPUUsageType blender::gpu::VertBuf::extended_usage_ = GPU_USAGE_STATIC

Usage including extended usage flags.

Definition at line 75 of file GPU_vertex_buffer.hh.

Referenced by duplicate(), GPU_texture_create_from_vertbuf(), and init().

◆ flag

◆ format

GPUVertFormat blender::gpu::VertBuf::format = {}

◆ memory_usage

size_t blender::gpu::VertBuf::memory_usage = 0
static

◆ usage_

◆ vertex_alloc

uint blender::gpu::VertBuf::vertex_alloc = 0

Number of verts data.

Definition at line 69 of file GPU_vertex_buffer.hh.

Referenced by allocate(), and resize().

◆ vertex_len


The documentation for this class was generated from the following files: