Changeset View
Changeset View
Standalone View
Standalone View
source/blender/gpu/intern/gpu_element.c
| Show First 20 Lines • Show All 236 Lines • ▼ Show 20 Lines | void GPU_indexbuf_set_tri_restart(GPUIndexBufBuilder *builder, uint elem) | ||||
| if (builder->index_len < idx) { | if (builder->index_len < idx) { | ||||
| builder->index_len = idx; | builder->index_len = idx; | ||||
| } | } | ||||
| } | } | ||||
| GPUIndexBuf *GPU_indexbuf_create_subrange(GPUIndexBuf *elem_src, uint start, uint length) | GPUIndexBuf *GPU_indexbuf_create_subrange(GPUIndexBuf *elem_src, uint start, uint length) | ||||
| { | { | ||||
| GPUIndexBuf *elem = MEM_callocN(sizeof(GPUIndexBuf), "GPUIndexBuf"); | GPUIndexBuf *elem = MEM_callocN(sizeof(GPUIndexBuf), "GPUIndexBuf"); | ||||
| GPU_indexbuf_create_subrange_in_place(elem, elem_src, start, length); | |||||
| return elem; | |||||
| } | |||||
| void GPU_indexbuf_create_subrange_in_place(GPUIndexBuf *elem, | |||||
| GPUIndexBuf *elem_src, | |||||
| uint start, | |||||
| uint length) | |||||
| { | |||||
| BLI_assert(elem_src && !elem_src->is_subrange); | BLI_assert(elem_src && !elem_src->is_subrange); | ||||
| BLI_assert((length == 0) || (start + length <= elem_src->index_len)); | BLI_assert((length == 0) || (start + length <= elem_src->index_len)); | ||||
| #if GPU_TRACK_INDEX_RANGE | #if GPU_TRACK_INDEX_RANGE | ||||
| elem->index_type = elem_src->index_type; | elem->index_type = elem_src->index_type; | ||||
| elem->gl_index_type = elem_src->gl_index_type; | elem->gl_index_type = elem_src->gl_index_type; | ||||
| elem->base_index = elem_src->base_index; | elem->base_index = elem_src->base_index; | ||||
| #endif | #endif | ||||
| elem->is_subrange = true; | elem->is_subrange = true; | ||||
| elem->src = elem_src; | elem->src = elem_src; | ||||
| elem->index_start = start; | elem->index_start = start; | ||||
| elem->index_len = length; | elem->index_len = length; | ||||
| return elem; | |||||
| } | } | ||||
| #if GPU_TRACK_INDEX_RANGE | #if GPU_TRACK_INDEX_RANGE | ||||
| /* Everything remains 32 bit while building to keep things simple. | /* Everything remains 32 bit while building to keep things simple. | ||||
| * Find min/max after, then convert to smallest index type possible. */ | * Find min/max after, then convert to smallest index type possible. */ | ||||
| static uint index_range(const uint values[], uint value_len, uint *min_out, uint *max_out) | static uint index_range(const uint values[], uint value_len, uint *min_out, uint *max_out) | ||||
| { | { | ||||
| ▲ Show 20 Lines • Show All 133 Lines • Show Last 20 Lines | |||||