From 9443da6166f58403eab07c7bff9eac55af04f981 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Mon, 10 Aug 2020 03:17:35 +0200 Subject: GPUBatch: Merge phase and ownership flags and cleanup there usage Also add new flags to communicate specific behavior to future backend. --- source/blender/draw/intern/draw_cache_impl_mesh.c | 2 +- source/blender/draw/intern/draw_instance_data.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'source/blender/draw/intern') diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.c b/source/blender/draw/intern/draw_cache_impl_mesh.c index d6faeb16583..0e2be993787 100644 --- a/source/blender/draw/intern/draw_cache_impl_mesh.c +++ b/source/blender/draw/intern/draw_cache_impl_mesh.c @@ -1248,7 +1248,7 @@ void DRW_mesh_batch_cache_create_requested(struct TaskGraph *task_graph, saved_elem_ranges[i] = cache->surface_per_mat[i]->elem; /* Avoid deletion as the batch is owner. */ cache->surface_per_mat[i]->elem = NULL; - cache->surface_per_mat[i]->owns_flag &= ~GPU_BATCH_OWNS_INDEX; + cache->surface_per_mat[i]->flag &= ~GPU_BATCH_OWNS_INDEX; } } /* We can't discard batches at this point as they have been diff --git a/source/blender/draw/intern/draw_instance_data.c b/source/blender/draw/intern/draw_instance_data.c index 24f17f313c4..70836b9ba2c 100644 --- a/source/blender/draw/intern/draw_instance_data.c +++ b/source/blender/draw/intern/draw_instance_data.c @@ -156,7 +156,7 @@ GPUBatch *DRW_temp_batch_instance_request(DRWInstanceDataList *idatalist, ((batch->inst[0] == instancer->verts[0]) && (batch->inst[1] == instancer->verts[1])); bool is_compatible = (batch->prim_type == geom->prim_type) && instancer_compat && - (batch->phase == GPU_BATCH_READY_TO_DRAW) && (batch->elem == geom->elem); + (batch->flag & GPU_BATCH_BUILDING) == 0 && (batch->elem == geom->elem); for (int i = 0; i < GPU_BATCH_VBO_MAX_LEN && is_compatible; i++) { if (batch->verts[i] != geom->verts[i]) { is_compatible = false; @@ -167,7 +167,7 @@ GPUBatch *DRW_temp_batch_instance_request(DRWInstanceDataList *idatalist, instancing_batch_references_remove(batch); GPU_batch_clear(batch); /* Save args and init later. */ - batch->phase = GPU_BATCH_READY_TO_BUILD; + batch->flag = GPU_BATCH_BUILDING; handle->buf = buf; handle->instancer = instancer; handle->geom = geom; @@ -234,7 +234,7 @@ void DRW_instance_buffer_finish(DRWInstanceDataList *idatalist) BLI_memblock_iternew(idatalist->pool_instancing, &iter); while ((handle_inst = BLI_memblock_iterstep(&iter))) { GPUBatch *batch = handle_inst->batch; - if (batch && batch->phase == GPU_BATCH_READY_TO_BUILD) { + if (batch && batch->flag == GPU_BATCH_BUILDING) { GPUVertBuf *inst_buf = handle_inst->buf; GPUBatch *inst_batch = handle_inst->instancer; GPUBatch *geom = handle_inst->geom; -- cgit v1.2.3