Blender  V3.3
Namespaces | Macros
gpu_index_buffer.cc File Reference
#include "MEM_guardedalloc.h"
#include "BLI_math_base.h"
#include "BLI_utildefines.h"
#include "gpu_backend.hh"
#include "gpu_index_buffer_private.hh"
#include <cstring>

Go to the source code of this file.

Namespaces

 blender
 
 blender::gpu
 

Macros

#define KEEP_SINGLE_COPY   1
 
#define RESTART_INDEX   0xFFFFFFFF
 

Functions

IndexBufBuilder
void GPU_indexbuf_init_ex (GPUIndexBufBuilder *builder, GPUPrimType prim_type, uint index_len, uint vertex_len)
 
void GPU_indexbuf_init (GPUIndexBufBuilder *builder, GPUPrimType prim_type, uint prim_len, uint vertex_len)
 
GPUIndexBufGPU_indexbuf_build_on_device (uint index_len)
 
void GPU_indexbuf_init_build_on_device (GPUIndexBuf *elem, uint index_len)
 
void GPU_indexbuf_join (GPUIndexBufBuilder *builder_to, const GPUIndexBufBuilder *builder_from)
 
void GPU_indexbuf_add_generic_vert (GPUIndexBufBuilder *builder, uint v)
 
void GPU_indexbuf_add_primitive_restart (GPUIndexBufBuilder *builder)
 
void GPU_indexbuf_add_point_vert (GPUIndexBufBuilder *builder, uint v)
 
void GPU_indexbuf_add_line_verts (GPUIndexBufBuilder *builder, uint v1, uint v2)
 
void GPU_indexbuf_add_tri_verts (GPUIndexBufBuilder *builder, uint v1, uint v2, uint v3)
 
void GPU_indexbuf_add_line_adj_verts (GPUIndexBufBuilder *builder, uint v1, uint v2, uint v3, uint v4)
 
void GPU_indexbuf_set_point_vert (GPUIndexBufBuilder *builder, uint elem, uint v1)
 
void GPU_indexbuf_set_line_verts (GPUIndexBufBuilder *builder, uint elem, uint v1, uint v2)
 
void GPU_indexbuf_set_tri_verts (GPUIndexBufBuilder *builder, uint elem, uint v1, uint v2, uint v3)
 
void GPU_indexbuf_set_point_restart (GPUIndexBufBuilder *builder, uint elem)
 
void GPU_indexbuf_set_line_restart (GPUIndexBufBuilder *builder, uint elem)
 
void GPU_indexbuf_set_tri_restart (GPUIndexBufBuilder *builder, uint elem)
 
C-API
GPUIndexBufGPU_indexbuf_calloc ()
 
GPUIndexBufGPU_indexbuf_build (GPUIndexBufBuilder *builder)
 
GPUIndexBufGPU_indexbuf_create_subrange (GPUIndexBuf *elem_src, uint start, uint length)
 
void GPU_indexbuf_build_in_place (GPUIndexBufBuilder *builder, GPUIndexBuf *elem)
 
void GPU_indexbuf_create_subrange_in_place (GPUIndexBuf *elem, GPUIndexBuf *elem_src, uint start, uint length)
 
const uint32_tGPU_indexbuf_read (GPUIndexBuf *elem)
 
uint32_tGPU_indexbuf_unmap (const GPUIndexBuf *elem, const uint32_t *mapped_buffer)
 
void GPU_indexbuf_discard (GPUIndexBuf *elem)
 
bool GPU_indexbuf_is_init (GPUIndexBuf *elem)
 
int GPU_indexbuf_primitive_len (GPUPrimType prim_type)
 
void GPU_indexbuf_use (GPUIndexBuf *elem)
 
void GPU_indexbuf_bind_as_ssbo (GPUIndexBuf *elem, int binding)
 
void GPU_indexbuf_update_sub (GPUIndexBuf *elem, uint start, uint len, const void *data)
 

Detailed Description

GPU element list (AKA index buffer)

Definition in file gpu_index_buffer.cc.

Macro Definition Documentation

◆ KEEP_SINGLE_COPY

#define KEEP_SINGLE_COPY   1

Definition at line 21 of file gpu_index_buffer.cc.

◆ RESTART_INDEX

#define RESTART_INDEX   0xFFFFFFFF

Definition at line 23 of file gpu_index_buffer.cc.

Function Documentation

◆ GPU_indexbuf_add_generic_vert()

void GPU_indexbuf_add_generic_vert ( GPUIndexBufBuilder builder,
uint  v 
)

◆ GPU_indexbuf_add_line_adj_verts()

void GPU_indexbuf_add_line_adj_verts ( GPUIndexBufBuilder builder,
uint  v1,
uint  v2,
uint  v3,
uint  v4 
)

◆ GPU_indexbuf_add_line_verts()

void GPU_indexbuf_add_line_verts ( GPUIndexBufBuilder builder,
uint  v1,
uint  v2 
)

◆ GPU_indexbuf_add_point_vert()

void GPU_indexbuf_add_point_vert ( GPUIndexBufBuilder builder,
uint  v 
)

◆ GPU_indexbuf_add_primitive_restart()

void GPU_indexbuf_add_primitive_restart ( GPUIndexBufBuilder builder)

◆ GPU_indexbuf_add_tri_verts()

void GPU_indexbuf_add_tri_verts ( GPUIndexBufBuilder builder,
uint  v1,
uint  v2,
uint  v3 
)

◆ GPU_indexbuf_bind_as_ssbo()

void GPU_indexbuf_bind_as_ssbo ( GPUIndexBuf elem,
int  binding 
)

◆ GPU_indexbuf_build()

GPUIndexBuf* GPU_indexbuf_build ( GPUIndexBufBuilder builder)

◆ GPU_indexbuf_build_in_place()

void GPU_indexbuf_build_in_place ( GPUIndexBufBuilder builder,
GPUIndexBuf elem 
)

◆ GPU_indexbuf_build_on_device()

GPUIndexBuf* GPU_indexbuf_build_on_device ( uint  index_len)

◆ GPU_indexbuf_calloc()

GPUIndexBuf* GPU_indexbuf_calloc ( void  )

◆ GPU_indexbuf_create_subrange()

GPUIndexBuf* GPU_indexbuf_create_subrange ( GPUIndexBuf elem_src,
uint  start,
uint  length 
)

◆ GPU_indexbuf_create_subrange_in_place()

void GPU_indexbuf_create_subrange_in_place ( GPUIndexBuf elem,
GPUIndexBuf elem_src,
uint  start,
uint  length 
)

◆ GPU_indexbuf_discard()

void GPU_indexbuf_discard ( GPUIndexBuf elem)

◆ GPU_indexbuf_init()

void GPU_indexbuf_init ( GPUIndexBufBuilder builder,
GPUPrimType  prim_type,
uint  prim_len,
uint  vertex_len 
)

Definition at line 46 of file gpu_index_buffer.cc.

References GPU_indexbuf_init_ex(), and GPU_indexbuf_primitive_len().

Referenced by curve_create_edit_data_and_handles(), DRW_cache_bone_box_wire_get(), DRW_cache_bone_octahedral_wire_get(), DRW_cache_cube_get(), DRW_displist_indexbuf_create_edges_adjacency_lines(), DRW_displist_indexbuf_create_lines_in_order(), DRW_displist_indexbuf_create_triangles_in_order(), drw_volume_selection_surface_cb(), drw_volume_wireframe_cb(), blender::draw::extract_edituv_fdots_init(), blender::draw::extract_edituv_lines_init(), blender::draw::extract_edituv_lines_init_subdiv(), blender::draw::extract_edituv_points_init(), blender::draw::extract_edituv_points_init_subdiv(), blender::draw::extract_edituv_tris_init(), blender::draw::extract_edituv_tris_init_subdiv(), blender::draw::extract_fdots_init(), blender::draw::extract_lines_init(), blender::draw::extract_lines_paint_mask_init(), blender::draw::extract_lines_paint_mask_init_subdiv(), blender::draw::extract_points_init(), blender::draw::extract_points_init_subdiv(), blender::draw::extract_tris_init(), blender::draw::extract_tris_single_mat_init(), gpencil_batches_ensure(), gpencil_sbuffer_stroke_ensure(), GPU_batch_tris_from_poly_2d_encoded(), GPU_pbvh_bmesh_buffers_update(), GPU_pbvh_grid_buffers_update(), gpu_pbvh_grid_fill_index_buffers(), GPU_pbvh_mesh_buffers_build(), lattice_batch_cache_get_edges(), blender::draw::line_adjacency_data_init(), pointcloud_batch_cache_ensure_geom(), pygpu_IndexBuf__tp_new(), blender::gpu::tests::test_gpu_index_buffer_subbuilders(), ui_batch_roundbox_widget_get(), wm_gizmo_geometryinfo_draw(), and wm_xr_controller_model_batch_create().

◆ GPU_indexbuf_init_build_on_device()

void GPU_indexbuf_init_build_on_device ( GPUIndexBuf elem,
uint  index_len 
)

◆ GPU_indexbuf_init_ex()

void GPU_indexbuf_init_ex ( GPUIndexBufBuilder builder,
GPUPrimType  prim_type,
uint  index_len,
uint  vertex_len 
)

◆ GPU_indexbuf_is_init()

bool GPU_indexbuf_is_init ( GPUIndexBuf elem)

Definition at line 393 of file gpu_index_buffer.cc.

References blender::bke::image::partial_update::unwrap().

Referenced by DRW_ibo_requested().

◆ GPU_indexbuf_join()

void GPU_indexbuf_join ( GPUIndexBufBuilder builder_to,
const GPUIndexBufBuilder builder_from 
)

◆ GPU_indexbuf_primitive_len()

int GPU_indexbuf_primitive_len ( GPUPrimType  prim_type)

◆ GPU_indexbuf_read()

const uint32_t* GPU_indexbuf_read ( GPUIndexBuf elem)

(Download and) return a pointer containing the data of an index buffer.

Note that the returned pointer is still owned by the driver. To get an local copy, use GPU_indexbuf_unmap after calling GPU_indexbuf_read.

Definition at line 378 of file gpu_index_buffer.cc.

References blender::bke::image::partial_update::unwrap().

Referenced by blender::gpu::tests::test_gpu_shader_compute_ibo().

◆ GPU_indexbuf_set_line_restart()

void GPU_indexbuf_set_line_restart ( GPUIndexBufBuilder builder,
uint  elem 
)

◆ GPU_indexbuf_set_line_verts()

void GPU_indexbuf_set_line_verts ( GPUIndexBufBuilder builder,
uint  elem,
uint  v1,
uint  v2 
)

◆ GPU_indexbuf_set_point_restart()

void GPU_indexbuf_set_point_restart ( GPUIndexBufBuilder builder,
uint  elem 
)

◆ GPU_indexbuf_set_point_vert()

void GPU_indexbuf_set_point_vert ( GPUIndexBufBuilder builder,
uint  elem,
uint  v1 
)

◆ GPU_indexbuf_set_tri_restart()

void GPU_indexbuf_set_tri_restart ( GPUIndexBufBuilder builder,
uint  elem 
)

◆ GPU_indexbuf_set_tri_verts()

void GPU_indexbuf_set_tri_verts ( GPUIndexBufBuilder builder,
uint  elem,
uint  v1,
uint  v2,
uint  v3 
)

◆ GPU_indexbuf_unmap()

uint32_t* GPU_indexbuf_unmap ( const GPUIndexBuf elem,
const uint32_t mapped_buffer 
)

◆ GPU_indexbuf_update_sub()

void GPU_indexbuf_update_sub ( GPUIndexBuf elem,
uint  start,
uint  len,
const void data 
)

Definition at line 413 of file gpu_index_buffer.cc.

References data, len, and blender::bke::image::partial_update::unwrap().

◆ GPU_indexbuf_use()

void GPU_indexbuf_use ( GPUIndexBuf elem)