Blender
V3.3
|
Go to the source code of this file.
Classes | |
struct | GPUVertBufRaw |
Typedefs | |
typedef struct GPUVertBuf | GPUVertBuf |
typedef struct GPUVertBufRaw | GPUVertBufRaw |
Enumerations | |
enum | GPUVertBufStatus { GPU_VERTBUF_INVALID = 0 , GPU_VERTBUF_INIT = (1 << 0) , GPU_VERTBUF_DATA_DIRTY = (1 << 1) , GPU_VERTBUF_DATA_UPLOADED = (1 << 2) } |
enum | GPUUsageType { GPU_USAGE_STREAM , GPU_USAGE_STATIC , GPU_USAGE_DYNAMIC , GPU_USAGE_DEVICE_ONLY } |
GPU vertex buffer
Definition in file GPU_vertex_buffer.h.
#define GPU_vertbuf_create_with_format | ( | format | ) | GPU_vertbuf_create_with_format_ex(format, GPU_USAGE_STATIC) |
Definition at line 55 of file GPU_vertex_buffer.h.
Definition at line 183 of file GPU_vertex_buffer.h.
#define GPU_vertbuf_init_with_format | ( | verts, | |
format | |||
) | GPU_vertbuf_init_with_format_ex(verts, format, GPU_USAGE_STATIC) |
Definition at line 80 of file GPU_vertex_buffer.h.
typedef struct GPUVertBuf GPUVertBuf |
Opaque type hiding blender::gpu::VertBuf.
Definition at line 1 of file GPU_vertex_buffer.h.
typedef struct GPUVertBufRaw GPUVertBufRaw |
For low level access only.
enum GPUUsageType |
How to create a GPUVertBuf: 1) verts = GPU_vertbuf_calloc() 2) GPU_vertformat_attr_add(verts->format, ...) 3) GPU_vertbuf_data_alloc(verts, vertex_len) <– finalizes/packs vertex format 4) GPU_vertbuf_attr_fill(verts, pos, application_pos_buffer)
Enumerator | |
---|---|
GPU_USAGE_STREAM | |
GPU_USAGE_STATIC | |
GPU_USAGE_DYNAMIC | |
GPU_USAGE_DEVICE_ONLY |
Definition at line 41 of file GPU_vertex_buffer.h.
enum GPUVertBufStatus |
Definition at line 16 of file GPU_vertex_buffer.h.
void GPU_vertbuf_attr_fill | ( | GPUVertBuf * | verts_, |
uint | a_idx, | ||
const void * | data | ||
) |
Tightly packed, non interleaved input data.
Definition at line 204 of file gpu_vertex_buffer.cc.
References Freestyle::a, BLI_assert, data, GPU_vertbuf_attr_fill_stride(), GPU_VERTBUF_DATA_DIRTY, stride, blender::gpu::unwrap(), and verts.
Referenced by curve_create_curves_pos(), DRW_cache_empty_capsule_body_get(), DRW_curves_init(), DRW_hair_init(), drw_volume_selection_surface_cb(), drw_volume_wireframe_cb(), GPU_batch_preset_quad(), pointcloud_batch_cache_ensure_geom(), pointcloud_batch_cache_ensure_pos(), waveform_draw_one(), and wm_gizmo_geometryinfo_draw().
void GPU_vertbuf_attr_fill_stride | ( | GPUVertBuf * | verts_, |
uint | a_idx, | ||
uint | stride, | ||
const void * | data | ||
) |
Definition at line 225 of file gpu_vertex_buffer.cc.
References Freestyle::a, BLI_assert, data, GPU_VERTBUF_DATA_DIRTY, stride, blender::gpu::unwrap(), v, and verts.
Referenced by drw_volume_wireframe_cb(), GPU_vertbuf_attr_fill(), and pygpu_vertbuf_fill_impl().
void GPU_vertbuf_attr_get_raw_data | ( | GPUVertBuf * | verts_, |
uint | a_idx, | ||
GPUVertBufRaw * | access | ||
) |
Definition at line 248 of file gpu_vertex_buffer.cc.
References Freestyle::a, BLI_assert, GPUVertBufRaw::data, GPUVertBufRaw::data_init, GPU_VERTBUF_DATA_DIRTY, GPU_VERTBUF_DATA_UPLOADED, GPUVertBufRaw::size, GPUVertBufRaw::stride, blender::gpu::unwrap(), and verts.
Referenced by batch_sphere_wire(), blf_batch_draw(), blf_batch_draw_init(), curves_batch_cache_ensure_procedural_strand_data(), DRW_vertbuf_create_wiredata(), ED_draw_object_facemap(), gpu_batch_preset_panel_drag_widget(), gpu_batch_sphere(), GPU_batch_tris_from_poly_2d_encoded(), GPU_batch_wire_from_poly_2d_encoded(), GPU_pbvh_mesh_buffers_update(), gpu_viewport_batch_create(), blender::ed::space_node::nodelink_batch_reset(), particle_batch_cache_ensure_edit_pos_and_seg(), particle_batch_cache_ensure_procedural_pos(), particle_batch_cache_ensure_procedural_strand_data(), pygpu_vertbuf_fill_impl(), and ui_batch_roundbox_shadow_get().
void GPU_vertbuf_attr_set | ( | GPUVertBuf * | verts_, |
uint | a_idx, | ||
uint | v_idx, | ||
const void * | data | ||
) |
The most important #set_attr variant is the untyped one. Get it right first. It takes a void* so the app developer is responsible for matching their app data types to the vertex attribute's type and component count. They're in control of both, so this should not be a problem.
Definition at line 192 of file gpu_vertex_buffer.cc.
References Freestyle::a, BLI_assert, data, GPU_VERTBUF_DATA_DIRTY, blender::gpu::unwrap(), and verts.
Referenced by add_fancy_edge(), curve_create_edit_curves_nor(), curve_create_edit_data_and_handles(), do_vert_pair(), draw_line_bounds(), draw_line_loop(), draw_line_pairs(), DRW_buffer_add_entry_array(), DRW_buffer_add_entry_struct(), DRW_cache_bone_box_get(), DRW_cache_bone_envelope_outline_get(), DRW_cache_bone_envelope_solid_get(), DRW_cache_bone_octahedral_get(), DRW_cache_bone_point_get(), DRW_cache_bone_point_wire_outline_get(), DRW_cache_bone_stick_get(), DRW_cache_cursor_get(), DRW_cache_empty_capsule_cap_get(), DRW_cache_fullscreen_quad_get(), DRW_cache_grid_get(), DRW_cache_speaker_get(), DRW_displist_vertbuf_create_pos_and_nor(), gpu_bmesh_vert_to_buffer_copy(), GPU_pbvh_grid_buffers_update(), knifetool_draw(), lattice_batch_cache_create_overlay_batches(), lattice_batch_cache_get_pos(), particle_batch_cache_ensure_edit_inner_pos(), particle_batch_cache_ensure_edit_tip_pos(), particle_batch_cache_ensure_pos(), particle_batch_cache_fill_segments(), blender::ed::space_node::set_nodelink_vertex(), and stitch_draw().
void GPU_vertbuf_bind_as_ssbo | ( | struct GPUVertBuf * | verts, |
int | binding | ||
) |
Definition at line 325 of file gpu_vertex_buffer.cc.
References blender::gpu::unwrap(), and verts.
Referenced by draw_subdiv_accumulate_normals(), draw_subdiv_build_edge_fac_buffer(), draw_subdiv_build_edituv_stretch_angle_buffer(), draw_subdiv_build_edituv_stretch_area_buffer(), draw_subdiv_build_fdots_buffers(), draw_subdiv_build_lines_buffer(), draw_subdiv_build_lines_loose_buffer(), draw_subdiv_build_lnor_buffer(), draw_subdiv_build_sculpt_data_buffer(), draw_subdiv_build_tris_buffer(), draw_subdiv_extract_pos_nor(), draw_subdiv_extract_uvs(), draw_subdiv_finalize_custom_normals(), draw_subdiv_finalize_normals(), draw_subdiv_interp_custom_data(), draw_update_uniforms(), and blender::gpu::tests::test_gpu_shader_compute_vbo().
void GPU_vertbuf_bind_as_texture | ( | struct GPUVertBuf * | verts, |
int | binding | ||
) |
Definition at line 330 of file gpu_vertex_buffer.cc.
References blender::gpu::unwrap(), and verts.
Referenced by draw_update_uniforms().
GPUVertBuf* GPU_vertbuf_calloc | ( | void | ) |
Definition at line 111 of file gpu_vertex_buffer.cc.
References blender::gpu::GPUBackend::get(), vertbuf_alloc(), and blender::gpu::wrap().
Referenced by create_buffer_and_interface(), draw_patch_map_build(), draw_subdiv_build_origindex_buffer(), draw_subdiv_cache_update_extra_coarse_face_data(), draw_subdiv_topology_info_cb(), DRW_metaball_batch_cache_get_wireframes_face(), DRW_temp_buffer_request(), DRW_vbo_request(), drw_volume_wireframe_cb(), blender::draw::extract_attr_init_subdiv(), blender::draw::extract_edge_fac_init_subdiv(), blender::draw::extract_edituv_stretch_angle_init_subdiv(), blender::draw::extract_edituv_stretch_area_init_subdiv(), blender::draw::extract_lines_loose_geom_subdiv(), blender::draw::extract_pos_nor_init_subdiv(), blender::draw::extract_sculpt_data_init_subdiv(), blender::draw::extract_tan_init_subdiv(), blender::draw::extract_weights_init_subdiv(), gpu_vertbuf_create_from_format(), GPU_vertbuf_create_with_format_ex(), and mball_batch_cache_get_pos_and_normals().
void GPU_vertbuf_clear | ( | GPUVertBuf * | verts | ) |
Same as discard but does not free.
Definition at line 151 of file gpu_vertex_buffer.cc.
References blender::gpu::unwrap(), and verts.
Referenced by blender::draw::extract_edge_fac_finish().
GPUVertBuf* GPU_vertbuf_create_with_format_ex | ( | const GPUVertFormat * | format, |
GPUUsageType | usage | ||
) |
Definition at line 116 of file gpu_vertex_buffer.cc.
References GPU_vertbuf_calloc(), blender::gpu::unwrap(), and verts.
Referenced by blf_batch_draw_init(), curves_batch_cache_ensure_procedural_final_attr(), curves_batch_cache_ensure_procedural_final_points(), gpu_pbvh_vert_buf_data_set(), blender::ed::space_node::nodelink_batch_init(), and blender::gpu::tests::test_gpu_shader_compute_vbo().
void GPU_vertbuf_data_alloc | ( | GPUVertBuf * | verts, |
uint | v_len | ||
) |
Create a new allocation, discarding any existing data.
Definition at line 174 of file gpu_vertex_buffer.cc.
References blender::gpu::unwrap(), and verts.
Referenced by batch_screen_edges_get(), batch_sphere_wire(), blf_batch_draw_init(), curve_create_curves_pos(), curve_create_edit_curves_nor(), curve_create_edit_data_and_handles(), curves_batch_cache_ensure_procedural_final_attr(), curves_batch_cache_ensure_procedural_final_points(), curves_batch_cache_ensure_procedural_indices(), curves_batch_cache_ensure_procedural_pos(), curves_batch_cache_ensure_procedural_strand_data(), curves_batch_ensure_attribute(), draw_cache_view_init_fn(), draw_line_bounds(), draw_line_loop(), draw_line_pairs(), draw_seq_fcurve_overlay(), draw_subdiv_cache_update_extra_coarse_face_data(), draw_subdiv_init_origindex_buffer(), draw_subdiv_topology_info_cb(), DRW_cache_bone_arrows_get(), DRW_cache_bone_box_get(), DRW_cache_bone_dof_lines_get(), DRW_cache_bone_dof_sphere_get(), DRW_cache_bone_envelope_outline_get(), DRW_cache_bone_envelope_solid_get(), DRW_cache_bone_octahedral_get(), DRW_cache_bone_point_get(), DRW_cache_bone_point_wire_outline_get(), DRW_cache_bone_stick_get(), DRW_cache_camera_distances_get(), DRW_cache_camera_frame_get(), DRW_cache_camera_tria_get(), DRW_cache_camera_tria_wire_get(), DRW_cache_camera_volume_get(), DRW_cache_camera_volume_wire_get(), DRW_cache_circle_get(), DRW_cache_cube_get(), DRW_cache_cursor_get(), DRW_cache_empty_capsule_body_get(), DRW_cache_empty_capsule_cap_get(), DRW_cache_empty_cone_get(), DRW_cache_empty_cube_get(), DRW_cache_empty_cylinder_get(), DRW_cache_field_cone_limit_get(), DRW_cache_field_curve_get(), DRW_cache_field_force_get(), DRW_cache_field_sphere_limit_get(), DRW_cache_field_tube_limit_get(), DRW_cache_field_vortex_get(), DRW_cache_field_wind_get(), DRW_cache_fullscreen_quad_get(), DRW_cache_grid_get(), DRW_cache_groundline_get(), DRW_cache_light_area_disk_lines_get(), DRW_cache_light_area_square_lines_get(), DRW_cache_light_point_lines_get(), DRW_cache_light_spot_lines_get(), DRW_cache_light_spot_volume_get(), DRW_cache_light_sun_lines_get(), DRW_cache_lightprobe_cube_get(), DRW_cache_lightprobe_grid_get(), DRW_cache_lightprobe_planar_get(), DRW_cache_normal_arrow_get(), DRW_cache_particles_get_prim(), DRW_cache_plain_axes_get(), drw_cache_procedural_lines_get(), drw_cache_procedural_points_get(), drw_cache_procedural_triangles_get(), DRW_cache_quad_get(), DRW_cache_quad_wires_get(), DRW_cache_single_arrow_get(), DRW_cache_speaker_get(), DRW_cache_sphere_get(), DRW_curves_init(), DRW_displist_vertbuf_create_pos_and_nor(), DRW_gpencil_dummy_buffer_get(), DRW_hair_init(), DRW_temp_buffer_request(), DRW_vertbuf_create_wiredata(), drw_volume_selection_surface_cb(), drw_volume_wireframe_cb(), ED_draw_object_facemap(), blender::draw::extract_attr_init_subdiv(), blender::draw::extract_edge_fac_finish(), blender::draw::extract_edge_fac_init(), blender::draw::extract_edit_data_init(), blender::draw::extract_edit_data_init_subdiv(), blender::draw::extract_edituv_data_init_common(), blender::draw::extract_edituv_stretch_angle_init(), blender::draw::extract_edituv_stretch_area_init(), blender::draw::extract_edituv_stretch_area_init_subdiv(), blender::draw::extract_fdots_edituv_data_init(), blender::draw::extract_fdots_nor_hq_init(), blender::draw::extract_fdots_nor_init(), blender::draw::extract_fdots_pos_init(), blender::draw::extract_fdots_uv_init(), blender::draw::extract_lines_loose_geom_subdiv(), blender::draw::extract_lnor_hq_init(), blender::draw::extract_lnor_init(), blender::draw::extract_mesh_analysis_init(), blender::draw::extract_orco_init(), blender::draw::extract_pos_nor_hq_init(), blender::draw::extract_pos_nor_init(), blender::draw::extract_pos_nor_init_subdiv(), blender::draw::extract_sculpt_data_init(), blender::draw::extract_sculpt_data_init_subdiv(), blender::draw::extract_select_idx_init_impl(), blender::draw::extract_skin_roots_init(), blender::draw::extract_tan_ex_init(), blender::draw::extract_tan_init_subdiv(), blender::draw::extract_uv_init(), blender::draw::extract_weights_init(), gpencil_batches_ensure(), gpencil_edit_batches_ensure(), gpencil_sbuffer_stroke_ensure(), gpu_batch_preset_panel_drag_widget(), GPU_batch_preset_quad(), gpu_batch_sphere(), GPU_batch_tris_from_poly_2d_encoded(), GPU_batch_wire_from_poly_2d_encoded(), gpu_pbvh_vert_buf_data_set(), gpu_vertbuf_create_from_format(), GPU_vertbuf_init_build_on_device(), gpu_viewport_batch_create(), immBeginBatch(), blender::draw::init_vbo_for_attribute(), knifetool_draw(), lattice_batch_cache_create_overlay_batches(), lattice_batch_cache_get_pos(), mpath_vbo_get(), blender::ed::space_node::nodelink_batch_init(), particle_batch_cache_ensure_edit_inner_pos(), particle_batch_cache_ensure_edit_pos_and_seg(), particle_batch_cache_ensure_edit_tip_pos(), particle_batch_cache_ensure_pos(), particle_batch_cache_ensure_pos_and_seg(), particle_batch_cache_ensure_procedural_final_points(), particle_batch_cache_ensure_procedural_indices(), particle_batch_cache_ensure_procedural_pos(), particle_batch_cache_ensure_procedural_strand_data(), pointcloud_batch_cache_ensure_geom(), pointcloud_batch_cache_ensure_pos(), pygpu_vertbuf__tp_new(), sphere_wire_vbo(), stitch_draw(), blender::gpu::tests::test_gpu_shader_compute_vbo(), ui_batch_roundbox_shadow_get(), ui_batch_roundbox_widget_get(), vertbuf_alloc(), vertbuf_device_alloc(), waveform_draw_one(), wm_gizmo_geometryinfo_draw(), and wm_xr_controller_model_batch_create().
void GPU_vertbuf_data_len_set | ( | GPUVertBuf * | verts_, |
uint | v_len | ||
) |
Set vertex count but does not change allocation. Only this many verts will be uploaded to the GPU and rendered. This is useful for streaming data.
Definition at line 184 of file gpu_vertex_buffer.cc.
References BLI_assert, blender::gpu::unwrap(), and verts.
Referenced by blf_batch_draw(), draw_cache_view_batch(), draw_seq_fcurve_overlay(), DRW_instance_buffer_finish(), blender::draw::extract_skin_roots_init(), and blender::ed::space_node::nodelink_batch_draw().
void GPU_vertbuf_data_resize | ( | GPUVertBuf * | verts, |
uint | v_len | ||
) |
Resize buffer keeping existing data.
Definition at line 179 of file gpu_vertex_buffer.cc.
References blender::gpu::unwrap(), and verts.
Referenced by curve_create_edit_data_and_handles(), DRW_buffer_add_entry_array(), DRW_buffer_add_entry_struct(), DRW_cache_bone_dof_sphere_get(), DRW_instance_buffer_finish(), ED_draw_object_facemap(), immEnd(), and particle_batch_cache_ensure_pos().
void GPU_vertbuf_discard | ( | GPUVertBuf * | verts | ) |
Definition at line 156 of file gpu_vertex_buffer.cc.
References blender::gpu::unwrap(), and verts.
Referenced by draw_subdiv_build_fdots_buffers(), draw_subdiv_extract_pos_nor(), draw_subdiv_extract_uvs(), ED_draw_object_facemap(), EEVEE_motion_blur_data_free(), EEVEE_motion_blur_swap_data(), EEVEE_motion_hair_step_free(), blender::draw::extract_attr_init_subdiv(), blender::draw::extract_edge_fac_init_subdiv(), blender::draw::extract_edituv_stretch_angle_init_subdiv(), blender::draw::extract_edituv_stretch_area_init_subdiv(), blender::draw::extract_lines_loose_geom_subdiv(), blender::draw::extract_pos_nor_init_subdiv(), blender::draw::extract_sculpt_data_init_subdiv(), blender::draw::extract_tan_init_subdiv(), blender::draw::extract_weights_init_subdiv(), GPU_batch_instbuf_set(), pygpu_vertbuf__tp_dealloc(), and blender::gpu::tests::test_gpu_shader_compute_vbo().
GPUVertBuf* GPU_vertbuf_duplicate | ( | GPUVertBuf * | verts | ) |
Definition at line 136 of file gpu_vertex_buffer.cc.
References blender::gpu::unwrap(), and blender::gpu::wrap().
Referenced by EEVEE_motion_blur_cache_finish().
void* GPU_vertbuf_get_data | ( | const GPUVertBuf * | verts | ) |
Definition at line 269 of file gpu_vertex_buffer.cc.
References blender::gpu::unwrap(), and verts.
Referenced by build_vertex_face_adjacency_maps(), curves_batch_cache_ensure_procedural_pos(), curves_batch_ensure_attribute(), draw_select_buffer(), draw_subdiv_build_cache(), draw_subdiv_cache_update_extra_coarse_face_data(), draw_subdiv_init_origindex_buffer(), draw_subdiv_topology_info_cb(), DRW_vertbuf_create_wiredata(), blender::draw::extract_analysis_iter_finish_mesh(), blender::draw::extract_attr_generic(), blender::draw::extract_edge_fac_finish(), blender::draw::extract_edge_fac_init(), blender::draw::extract_edge_fac_init_subdiv(), blender::draw::extract_edge_idx_init_subdiv(), blender::draw::extract_edge_idx_loose_geom_subdiv(), blender::draw::extract_edit_data_init(), blender::draw::extract_edit_data_init_subdiv(), blender::draw::extract_edit_data_iter_subdiv_bm(), blender::draw::extract_edituv_data_init_common(), blender::draw::extract_edituv_data_iter_subdiv_bm(), blender::draw::extract_edituv_lines_iter_subdiv_bm(), blender::draw::extract_edituv_lines_iter_subdiv_mesh(), blender::draw::extract_edituv_points_iter_subdiv_bm(), blender::draw::extract_edituv_points_iter_subdiv_mesh(), blender::draw::extract_edituv_stretch_angle_init(), blender::draw::extract_edituv_stretch_area_finish(), blender::draw::extract_edituv_stretch_area_init_subdiv(), blender::draw::extract_fdots_edituv_data_init(), blender::draw::extract_fdots_nor_finish(), blender::draw::extract_fdots_nor_hq_finish(), blender::draw::extract_fdots_pos_init(), blender::draw::extract_fdots_uv_init(), blender::draw::extract_lines_loose_geom_subdiv(), blender::draw::extract_lines_paint_mask_iter_subdiv_mesh(), blender::draw::extract_lnor_hq_init(), blender::draw::extract_lnor_init(), blender::draw::extract_orco_init(), blender::draw::extract_points_iter_subdiv_common(), blender::draw::extract_poly_idx_init_subdiv(), blender::draw::extract_pos_nor_hq_init(), blender::draw::extract_pos_nor_init(), blender::draw::extract_pos_nor_init_subdiv(), blender::draw::extract_sculpt_data_init(), blender::draw::extract_sculpt_data_init_subdiv(), blender::draw::extract_select_idx_init_impl(), blender::draw::extract_skin_roots_init(), blender::draw::extract_tan_ex_init(), blender::draw::extract_tan_init_subdiv(), blender::draw::extract_uv_init(), blender::draw::extract_vert_idx_init_subdiv(), blender::draw::extract_vert_idx_loose_geom_subdiv(), blender::draw::extract_weights_init(), gpencil_batches_ensure(), gpencil_edit_batches_ensure(), gpencil_sbuffer_stroke_ensure(), GPU_pbvh_buffers_update_flush(), gpu_pbvh_vert_buf_data_set(), immBeginBatch(), mpath_vbo_get(), pointcloud_batch_cache_ensure_pos(), pygpu_vertbuf_fill(), vertbuf_alloc(), and wm_xr_controller_model_batch_create().
const GPUVertFormat* GPU_vertbuf_get_format | ( | const GPUVertBuf * | verts | ) |
Definition at line 285 of file gpu_vertex_buffer.cc.
References blender::gpu::unwrap(), and verts.
Referenced by DRW_buffer_add_entry_array(), DRW_vertbuf_create_wiredata(), EEVEE_motion_blur_cache_finish(), EEVEE_motion_blur_swap_data(), blender::draw::extract_fdots_uv_init(), GPU_texture_create_from_vertbuf(), pygpu_vertbuf_fill(), and pygpu_vertbuf_fill_impl().
Definition at line 310 of file gpu_vertex_buffer.cc.
References blender::gpu::VertBuf::memory_usage.
Referenced by DRW_stats_draw().
GPUVertBufStatus GPU_vertbuf_get_status | ( | const GPUVertBuf * | verts | ) |
Definition at line 300 of file gpu_vertex_buffer.cc.
References blender::gpu::unwrap(), and verts.
Referenced by DRW_temp_batch_instance_request(), DRW_temp_batch_request(), and DRW_vbo_requested().
uint GPU_vertbuf_get_vertex_alloc | ( | const GPUVertBuf * | verts | ) |
Definition at line 290 of file gpu_vertex_buffer.cc.
References blender::gpu::unwrap(), and verts.
Referenced by DRW_buffer_add_entry_array(), DRW_buffer_add_entry_struct(), and DRW_instance_buffer_finish().
uint GPU_vertbuf_get_vertex_len | ( | const GPUVertBuf * | verts | ) |
Definition at line 295 of file gpu_vertex_buffer.cc.
References blender::gpu::unwrap(), and verts.
Referenced by draw_select_buffer(), DRW_cache_gpencil_face_wireframe_get(), EEVEE_motion_blur_cache_finish(), blender::eevee::VelocityModule::end_sync(), gpencil_edit_batches_ensure(), gpu_pbvh_vert_buf_data_set(), blender::gpu::Texture::init_buffer(), pygpu_batch_vertbuf_add(), pygpu_vertbuf_fill_impl(), and blender::eevee::VelocityModule::step_swap().
void GPU_vertbuf_handle_ref_add | ( | GPUVertBuf * | verts | ) |
Avoid GPUVertBuf data-block being free but not its data.
Definition at line 162 of file gpu_vertex_buffer.cc.
References blender::gpu::unwrap(), and verts.
Referenced by instancing_batch_references_add().
void GPU_vertbuf_handle_ref_remove | ( | GPUVertBuf * | verts | ) |
Definition at line 167 of file gpu_vertex_buffer.cc.
References blender::gpu::unwrap(), and verts.
Referenced by instancing_batch_references_remove().
void GPU_vertbuf_init_build_on_device | ( | GPUVertBuf * | verts, |
GPUVertFormat * | format, | ||
uint | v_len | ||
) |
Definition at line 130 of file gpu_vertex_buffer.cc.
References GPU_USAGE_DEVICE_ONLY, GPU_vertbuf_data_alloc(), GPU_vertbuf_init_with_format_ex(), and verts.
Referenced by blender::draw::extract_edge_fac_init_subdiv(), blender::draw::extract_edituv_stretch_angle_init_subdiv(), blender::draw::extract_edituv_stretch_area_init_subdiv(), blender::draw::extract_fdots_init_subdiv(), blender::draw::extract_lnor_init_subdiv(), blender::draw::extract_pos_nor_init_subdiv(), blender::draw::extract_sculpt_data_init_subdiv(), blender::draw::extract_tan_init_subdiv(), blender::draw::extract_uv_init_subdiv(), blender::draw::extract_weights_init_subdiv(), and blender::draw::init_vbo_for_attribute().
void GPU_vertbuf_init_with_format_ex | ( | GPUVertBuf * | verts_, |
const GPUVertFormat * | format, | ||
GPUUsageType | usage | ||
) |
Definition at line 123 of file gpu_vertex_buffer.cc.
References blender::gpu::unwrap().
Referenced by create_buffer_and_interface(), draw_patch_map_build(), draw_subdiv_cache_update_extra_coarse_face_data(), draw_subdiv_init_origindex_buffer(), draw_subdiv_topology_info_cb(), DRW_temp_buffer_request(), blender::draw::extract_attr_init_subdiv(), blender::draw::extract_tan_init_subdiv(), and GPU_vertbuf_init_build_on_device().
GPU_INLINE void* GPU_vertbuf_raw_step | ( | GPUVertBufRaw * | a | ) |
Definition at line 132 of file GPU_vertex_buffer.h.
References Freestyle::a, BLI_assert, and data.
Referenced by batch_sphere_lat_lon_vert(), blf_texture_draw(), curves_batch_cache_fill_strands_data(), DRW_vertbuf_create_wiredata(), ED_draw_object_facemap(), gpu_batch_preset_rectf_tris_color_ex(), GPU_batch_tris_from_poly_2d_encoded(), GPU_batch_wire_from_poly_2d_encoded(), GPU_pbvh_mesh_buffers_update(), gpu_viewport_batch_create(), blender::ed::space_node::nodelink_batch_add_link(), particle_batch_cache_fill_segments_edit(), particle_batch_cache_fill_segments_proc_pos(), particle_batch_cache_fill_strands_data(), pygpu_vertbuf_fill_impl(), set_roundbox_vertex(), and set_roundbox_vertex_data().
GPU_INLINE uint GPU_vertbuf_raw_used | ( | GPUVertBufRaw * | a | ) |
Definition at line 140 of file GPU_vertex_buffer.h.
References Freestyle::a.
Referenced by batch_sphere_wire(), gpu_batch_sphere(), and GPU_batch_wire_from_poly_2d_encoded().
const void* GPU_vertbuf_read | ( | GPUVertBuf * | verts | ) |
(Download and) return a pointer containing the data of a vertex buffer.
Note that the returned pointer is still owned by the driver. To get an local copy, use GPU_vertbuf_unmap
after calling GPU_vertbuf_read
.
Definition at line 141 of file gpu_vertex_buffer.cc.
References blender::gpu::unwrap(), and verts.
Referenced by blender::gpu::tests::test_gpu_shader_compute_vbo().
void* GPU_vertbuf_steal_data | ( | GPUVertBuf * | verts | ) |
Returns the data buffer and set it to null internally to avoid freeing.
Definition at line 275 of file gpu_vertex_buffer.cc.
References BLI_assert, data, blender::gpu::unwrap(), and verts.
Referenced by blender::draw::extract_edge_fac_finish().
void GPU_vertbuf_tag_dirty | ( | GPUVertBuf * | verts | ) |
Definition at line 305 of file gpu_vertex_buffer.cc.
References GPU_VERTBUF_DATA_DIRTY, blender::gpu::unwrap(), and verts.
Referenced by draw_subdiv_cache_update_extra_coarse_face_data(), blender::draw::extract_attr_init_subdiv(), and blender::draw::extract_tan_init_subdiv().
void* GPU_vertbuf_unmap | ( | const GPUVertBuf * | verts, |
const void * | mapped_data | ||
) |
Definition at line 146 of file gpu_vertex_buffer.cc.
References blender::gpu::unwrap(), and verts.
void GPU_vertbuf_update_sub | ( | GPUVertBuf * | verts, |
uint | start, | ||
uint | len, | ||
const void * | data | ||
) |
XXX: do not use! This is just a wrapper for the use of the Hair refine workaround. To be used with GPU_vertbuf_use().
Definition at line 335 of file gpu_vertex_buffer.cc.
References data, len, blender::gpu::unwrap(), and verts.
Referenced by DRW_curves_update(), DRW_hair_update(), blender::draw::extract_edge_fac_loose_geom_subdiv(), blender::draw::extract_pos_nor_loose_geom_subdiv(), and vertbuf_update_data().
void GPU_vertbuf_use | ( | GPUVertBuf * | verts | ) |
Should be rename to #GPU_vertbuf_data_upload.
Definition at line 315 of file gpu_vertex_buffer.cc.
References blender::gpu::unwrap(), and verts.
Referenced by blf_batch_draw(), curves_batch_cache_ensure_procedural_final_attr(), curves_batch_cache_ensure_procedural_final_points(), curves_batch_cache_ensure_procedural_pos(), curves_batch_cache_ensure_procedural_strand_data(), curves_batch_ensure_attribute(), DRW_curves_init(), DRW_curves_update(), DRW_hair_init(), DRW_hair_update(), DRW_instance_buffer_finish(), EEVEE_motion_blur_cache_finish(), blender::draw::extract_edge_fac_loose_geom_subdiv(), blender::draw::extract_pos_nor_loose_geom_subdiv(), GPU_pbvh_buffers_update_flush(), blender::ed::space_node::nodelink_batch_draw(), particle_batch_cache_ensure_procedural_final_points(), particle_batch_cache_ensure_procedural_pos(), particle_batch_cache_ensure_procedural_strand_data(), and vertbuf_bind_gpu().
void GPU_vertbuf_vert_set | ( | GPUVertBuf * | verts, |
uint | v_idx, | ||
const void * | data | ||
) |
Fills a whole vertex (all attributes). Data must match packed layout.
Definition at line 215 of file gpu_vertex_buffer.cc.
References BLI_assert, data, GPU_VERTBUF_DATA_DIRTY, blender::gpu::unwrap(), and verts.
Referenced by circle_dashed_verts(), circle_verts(), draw_cache_view_iter_fn(), DRW_buffer_add_entry_struct(), DRW_cache_bone_arrows_get(), DRW_cache_camera_distances_get(), DRW_cache_camera_frame_get(), DRW_cache_camera_tria_get(), DRW_cache_camera_tria_wire_get(), DRW_cache_camera_volume_get(), DRW_cache_camera_volume_wire_get(), DRW_cache_circle_get(), DRW_cache_cube_get(), DRW_cache_empty_cone_get(), DRW_cache_empty_cube_get(), DRW_cache_empty_cylinder_get(), DRW_cache_field_cone_limit_get(), DRW_cache_field_tube_limit_get(), DRW_cache_field_vortex_get(), DRW_cache_groundline_get(), DRW_cache_light_area_disk_lines_get(), DRW_cache_light_area_square_lines_get(), DRW_cache_light_spot_lines_get(), DRW_cache_light_spot_volume_get(), DRW_cache_light_sun_lines_get(), DRW_cache_lightprobe_cube_get(), DRW_cache_lightprobe_grid_get(), DRW_cache_lightprobe_planar_get(), DRW_cache_particles_get_prim(), DRW_cache_plain_axes_get(), DRW_cache_quad_get(), DRW_cache_quad_wires_get(), DRW_cache_single_arrow_get(), fcurve_batch_add_verts(), sphere_lat_lon_vert(), and sphere_wire_vbo().
void GPU_vertbuf_wrap_handle | ( | GPUVertBuf * | verts, |
uint64_t | handle | ||
) |
Definition at line 320 of file gpu_vertex_buffer.cc.
References blender::gpu::unwrap(), and verts.
Referenced by vertbuf_wrap_device_handle().