[Bf-blender-cvs] [ef15a450372] tmp-batch-cache-cleanup: GPU: Elements: Put back index tracking in index_buf_set_* functions
Clément Foucault
noreply at git.blender.org
Mon Jul 29 14:26:35 CEST 2019
Commit: ef15a450372c1d3f1c254c4daa540b6d1dfa1a5b
Author: Clément Foucault
Date: Sun Jul 28 15:17:33 2019 +0200
Branches: tmp-batch-cache-cleanup
https://developer.blender.org/rBef15a450372c1d3f1c254c4daa540b6d1dfa1a5b
GPU: Elements: Put back index tracking in index_buf_set_* functions
There is no threadsafe way of filling the IBOs. So keep filling them
simple and track used indices length.
===================================================================
M source/blender/gpu/intern/gpu_element.c
===================================================================
diff --git a/source/blender/gpu/intern/gpu_element.c b/source/blender/gpu/intern/gpu_element.c
index 644499c87c7..6c9331b4903 100644
--- a/source/blender/gpu/intern/gpu_element.c
+++ b/source/blender/gpu/intern/gpu_element.c
@@ -167,6 +167,9 @@ void GPU_indexbuf_set_point_vert(GPUIndexBufBuilder *builder, uint elem, uint v1
BLI_assert(builder->prim_type == GPU_PRIM_POINTS);
BLI_assert(elem < builder->max_index_len);
builder->data[elem++] = v1;
+ if (builder->index_len < elem) {
+ builder->index_len = elem;
+ }
}
void GPU_indexbuf_set_line_verts(GPUIndexBufBuilder *builder, uint elem, uint v1, uint v2)
@@ -179,6 +182,9 @@ void GPU_indexbuf_set_line_verts(GPUIndexBufBuilder *builder, uint elem, uint v1
uint idx = elem * 2;
builder->data[idx++] = v1;
builder->data[idx++] = v2;
+ if (builder->index_len < idx) {
+ builder->index_len = idx;
+ }
}
void GPU_indexbuf_set_tri_verts(GPUIndexBufBuilder *builder, uint elem, uint v1, uint v2, uint v3)
@@ -193,6 +199,9 @@ void GPU_indexbuf_set_tri_verts(GPUIndexBufBuilder *builder, uint elem, uint v1,
builder->data[idx++] = v1;
builder->data[idx++] = v2;
builder->data[idx++] = v3;
+ if (builder->index_len < idx) {
+ builder->index_len = idx;
+ }
}
void GPU_indexbuf_set_point_restart(GPUIndexBufBuilder *builder, uint elem)
@@ -200,6 +209,9 @@ void GPU_indexbuf_set_point_restart(GPUIndexBufBuilder *builder, uint elem)
BLI_assert(builder->prim_type == GPU_PRIM_POINTS);
BLI_assert(elem < builder->max_index_len);
builder->data[elem++] = RESTART_INDEX;
+ if (builder->index_len < elem) {
+ builder->index_len = elem;
+ }
}
void GPU_indexbuf_set_line_restart(GPUIndexBufBuilder *builder, uint elem)
@@ -209,6 +221,9 @@ void GPU_indexbuf_set_line_restart(GPUIndexBufBuilder *builder, uint elem)
uint idx = elem * 2;
builder->data[idx++] = RESTART_INDEX;
builder->data[idx++] = RESTART_INDEX;
+ if (builder->index_len < idx) {
+ builder->index_len = idx;
+ }
}
void GPU_indexbuf_set_tri_restart(GPUIndexBufBuilder *builder, uint elem)
@@ -219,6 +234,9 @@ void GPU_indexbuf_set_tri_restart(GPUIndexBufBuilder *builder, uint elem)
builder->data[idx++] = RESTART_INDEX;
builder->data[idx++] = RESTART_INDEX;
builder->data[idx++] = RESTART_INDEX;
+ if (builder->index_len < idx) {
+ builder->index_len = idx;
+ }
}
GPUIndexBuf *GPU_indexbuf_create_subrange(GPUIndexBuf *elem_src, uint start, uint length)
More information about the Bf-blender-cvs
mailing list