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)
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs