From 0255f1e0225d2eebfd39a9c16d9be299857b9efc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Thu, 6 Aug 2020 01:00:02 +0200 Subject: GPUBatch: Use custom allocator This is needed for the new GPU abstraction. --- source/blender/draw/intern/draw_cache_inline.h | 2 +- source/blender/draw/intern/draw_instance_data.c | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) (limited to 'source/blender/draw/intern') diff --git a/source/blender/draw/intern/draw_cache_inline.h b/source/blender/draw/intern/draw_cache_inline.h index bb3a908c6c5..06d6f1afc31 100644 --- a/source/blender/draw/intern/draw_cache_inline.h +++ b/source/blender/draw/intern/draw_cache_inline.h @@ -48,7 +48,7 @@ BLI_INLINE GPUBatch *DRW_batch_request(GPUBatch **batch) { /* XXX TODO(fclem): We are writing to batch cache here. Need to make this thread safe. */ if (*batch == NULL) { - *batch = MEM_callocN(sizeof(GPUBatch), "GPUBatch"); + *batch = GPU_batch_calloc(1); } return *batch; } diff --git a/source/blender/draw/intern/draw_instance_data.c b/source/blender/draw/intern/draw_instance_data.c index 6aafade00fd..5005f38c558 100644 --- a/source/blender/draw/intern/draw_instance_data.c +++ b/source/blender/draw/intern/draw_instance_data.c @@ -92,8 +92,9 @@ static void instance_batch_free(GPUBatch *geom, void *UNUSED(user_data)) BLI_memblock *memblock = data_list->pool_instancing; BLI_memblock_iter iter; BLI_memblock_iternew(memblock, &iter); - GPUBatch *batch; - while ((batch = *(GPUBatch **)BLI_memblock_iterstep(&iter))) { + GPUBatch **batch_ptr; + while ((batch_ptr = (GPUBatch **)BLI_memblock_iterstep(&iter))) { + GPUBatch *batch = *batch_ptr; /* Only check verts[0] that's enough. */ if (batch->verts[0] == geom->verts[0]) { GPU_batch_clear(batch); @@ -144,7 +145,7 @@ GPUBatch *DRW_temp_batch_instance_request(DRWInstanceDataList *idatalist, GPUBatch **batch_ptr = BLI_memblock_alloc(idatalist->pool_instancing); if (*batch_ptr == NULL) { - *batch_ptr = MEM_callocN(sizeof(GPUBatch), "GPUBatch"); + *batch_ptr = GPU_batch_calloc(1); } GPUBatch *batch = *batch_ptr; @@ -180,7 +181,7 @@ GPUBatch *DRW_temp_batch_request(DRWInstanceDataList *idatalist, { GPUBatch **batch_ptr = BLI_memblock_alloc(idatalist->pool_instancing); if (*batch_ptr == NULL) { - *batch_ptr = MEM_callocN(sizeof(GPUBatch), "GPUBatch"); + *batch_ptr = GPU_batch_calloc(1); } GPUBatch *batch = *batch_ptr; @@ -222,10 +223,10 @@ void DRW_instance_buffer_finish(DRWInstanceDataList *idatalist) } } /* Finish pending instancing batches. */ - GPUBatch *batch, **batch_ptr; + GPUBatch **batch_ptr; BLI_memblock_iternew(idatalist->pool_instancing, &iter); while ((batch_ptr = BLI_memblock_iterstep(&iter))) { - batch = *batch_ptr; + GPUBatch *batch = *batch_ptr; if (batch && batch->phase == GPU_BATCH_READY_TO_BUILD) { GPUVertBuf *inst_buf = batch->inst[0]; /* HACK see DRW_temp_batch_instance_request. */ -- cgit v1.2.3