Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2018-12-18 15:08:08 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-12-18 15:08:17 +0300
commitc92cffb56d55f5f8f3d42b9da9ca6885f374c0b0 (patch)
tree359e8fbf3c1e6ce0e651633926ef618c8505d3ff /source/blender/gpu/intern/gpu_batch.c
parent77d9ddc5ea6b9c9c18699671ea5e7c37ee31d623 (diff)
DRW: Instance: Makes it possible to have instances of a non-init batch
Diffstat (limited to 'source/blender/gpu/intern/gpu_batch.c')
-rw-r--r--source/blender/gpu/intern/gpu_batch.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/source/blender/gpu/intern/gpu_batch.c b/source/blender/gpu/intern/gpu_batch.c
index d70752e9b2f..a2184df229f 100644
--- a/source/blender/gpu/intern/gpu_batch.c
+++ b/source/blender/gpu/intern/gpu_batch.c
@@ -114,19 +114,22 @@ void GPU_batch_init_ex(
}
/* This will share the VBOs with the new batch. */
-GPUBatch *GPU_batch_duplicate(GPUBatch *batch_src)
+void GPU_batch_copy(GPUBatch *batch_dst, GPUBatch *batch_src)
{
- GPUBatch *batch = GPU_batch_create_ex(GPU_PRIM_POINTS, batch_src->verts[0], batch_src->elem, 0);
+ GPU_batch_init_ex(batch_dst, GPU_PRIM_POINTS, batch_src->verts[0], batch_src->elem, 0);
- batch->gl_prim_type = batch_src->gl_prim_type;
+ batch_dst->gl_prim_type = batch_src->gl_prim_type;
for (int v = 1; v < GPU_BATCH_VBO_MAX_LEN; ++v) {
- batch->verts[v] = batch_src->verts[v];
+ batch_dst->verts[v] = batch_src->verts[v];
}
- return batch;
}
void GPU_batch_clear(GPUBatch *batch)
{
+ if (batch->free_callback) {
+ batch->free_callback(batch, batch->callback_data);
+ }
+
if (batch->owns_flag & GPU_BATCH_OWNS_INDEX) {
GPU_indexbuf_discard(batch->elem);
}
@@ -144,10 +147,6 @@ void GPU_batch_clear(GPUBatch *batch)
}
}
GPU_batch_vao_cache_clear(batch);
-
- if (batch->free_callback) {
- batch->free_callback(batch, batch->callback_data);
- }
}
void GPU_batch_discard(GPUBatch *batch)