From 43464c94f4def8689dd99a9e459f5ff77420d27b Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Tue, 8 Jun 2021 13:12:49 +0200 Subject: Cleanup: use cpp new/delete. --- .../mesh_extractors/extract_mesh_ibo_edituv.cc | 33 +++++++++++----------- .../mesh_extractors/extract_mesh_ibo_fdots.cc | 4 +-- .../mesh_extractors/extract_mesh_ibo_lines.cc | 8 +++--- .../mesh_extractors/extract_mesh_ibo_points.cc | 4 +-- .../mesh_extractors/extract_mesh_ibo_tris.cc | 25 +++++++++++----- source/blender/gpu/GPU_index_buffer.h | 5 ++++ 6 files changed, 48 insertions(+), 31 deletions(-) (limited to 'source') diff --git a/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_edituv.cc b/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_edituv.cc index 5d9e94dcbcf..69ded192449 100644 --- a/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_edituv.cc +++ b/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_edituv.cc @@ -35,16 +35,23 @@ namespace blender::draw { struct MeshExtract_EditUvElem_Data { GPUIndexBufBuilder elb; bool sync_selection; + + MeshExtract_EditUvElem_Data(const MeshRenderData *mr) + { + sync_selection = (mr->toolsettings->uv_flag & UV_SYNC_SELECTION) != 0; + } + +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("DRW:MeshExtract_EditUvElem_Data") +#endif }; static void *extract_edituv_tris_init(const MeshRenderData *mr, struct MeshBatchCache *UNUSED(cache), void *UNUSED(ibo)) { - MeshExtract_EditUvElem_Data *data = static_cast( - MEM_callocN(sizeof(*data), __func__)); + MeshExtract_EditUvElem_Data *data = new MeshExtract_EditUvElem_Data(mr); GPU_indexbuf_init(&data->elb, GPU_PRIM_TRIS, mr->tri_len, mr->loop_len); - data->sync_selection = (mr->toolsettings->uv_flag & UV_SYNC_SELECTION) != 0; return data; } @@ -93,7 +100,7 @@ static void extract_edituv_tris_finish(const MeshRenderData *UNUSED(mr), MeshExtract_EditUvElem_Data *data = static_cast(_data); GPUIndexBuf *ibo = static_cast(buf); GPU_indexbuf_build_in_place(&data->elb, ibo); - MEM_freeN(data); + delete data; } constexpr MeshExtract create_extractor_edituv_tris() @@ -119,10 +126,8 @@ static void *extract_edituv_lines_init(const MeshRenderData *mr, struct MeshBatchCache *UNUSED(cache), void *UNUSED(ibo)) { - MeshExtract_EditUvElem_Data *data = static_cast( - MEM_callocN(sizeof(*data), __func__)); + MeshExtract_EditUvElem_Data *data = new MeshExtract_EditUvElem_Data(mr); GPU_indexbuf_init(&data->elb, GPU_PRIM_LINES, mr->loop_len, mr->loop_len); - data->sync_selection = (mr->toolsettings->uv_flag & UV_SYNC_SELECTION) != 0; return data; } @@ -183,7 +188,7 @@ static void extract_edituv_lines_finish(const MeshRenderData *UNUSED(mr), MeshExtract_EditUvElem_Data *data = static_cast(_data); GPUIndexBuf *ibo = static_cast(buf); GPU_indexbuf_build_in_place(&data->elb, ibo); - MEM_freeN(data); + delete data; } constexpr MeshExtract create_extractor_edituv_lines() @@ -209,10 +214,8 @@ static void *extract_edituv_points_init(const MeshRenderData *mr, struct MeshBatchCache *UNUSED(cache), void *UNUSED(ibo)) { - MeshExtract_EditUvElem_Data *data = static_cast( - MEM_callocN(sizeof(*data), __func__)); + MeshExtract_EditUvElem_Data *data = new MeshExtract_EditUvElem_Data(mr); GPU_indexbuf_init(&data->elb, GPU_PRIM_POINTS, mr->loop_len, mr->loop_len); - data->sync_selection = (mr->toolsettings->uv_flag & UV_SYNC_SELECTION) != 0; return data; } @@ -268,7 +271,7 @@ static void extract_edituv_points_finish(const MeshRenderData *UNUSED(mr), MeshExtract_EditUvElem_Data *data = static_cast(_data); GPUIndexBuf *ibo = static_cast(buf); GPU_indexbuf_build_in_place(&data->elb, ibo); - MEM_freeN(data); + delete data; } constexpr MeshExtract create_extractor_edituv_points() @@ -294,10 +297,8 @@ static void *extract_edituv_fdots_init(const MeshRenderData *mr, struct MeshBatchCache *UNUSED(cache), void *UNUSED(ibo)) { - MeshExtract_EditUvElem_Data *data = static_cast( - MEM_callocN(sizeof(*data), __func__)); + MeshExtract_EditUvElem_Data *data = new MeshExtract_EditUvElem_Data(mr); GPU_indexbuf_init(&data->elb, GPU_PRIM_POINTS, mr->poly_len, mr->poly_len); - data->sync_selection = (mr->toolsettings->uv_flag & UV_SYNC_SELECTION) != 0; return data; } @@ -365,7 +366,7 @@ static void extract_edituv_fdots_finish(const MeshRenderData *UNUSED(mr), MeshExtract_EditUvElem_Data *data = static_cast(_data); GPUIndexBuf *ibo = static_cast(buf); GPU_indexbuf_build_in_place(&data->elb, ibo); - MEM_freeN(data); + delete data; } constexpr MeshExtract create_extractor_edituv_fdots() diff --git a/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_fdots.cc b/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_fdots.cc index 9bd918dc9a5..2dfa91d9a87 100644 --- a/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_fdots.cc +++ b/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_fdots.cc @@ -36,7 +36,7 @@ static void *extract_fdots_init(const MeshRenderData *mr, struct MeshBatchCache *UNUSED(cache), void *UNUSED(buf)) { - GPUIndexBufBuilder *elb = static_cast(MEM_mallocN(sizeof(*elb), __func__)); + GPUIndexBufBuilder *elb = new GPUIndexBufBuilder(); GPU_indexbuf_init(elb, GPU_PRIM_POINTS, mr->poly_len, mr->poly_len); return elb; } @@ -93,7 +93,7 @@ static void extract_fdots_finish(const MeshRenderData *UNUSED(mr), GPUIndexBufBuilder *elb = static_cast(_userdata); GPUIndexBuf *ibo = static_cast(buf); GPU_indexbuf_build_in_place(elb, ibo); - MEM_freeN(elb); + delete elb; } constexpr MeshExtract create_extractor_fdots() diff --git a/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_lines.cc b/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_lines.cc index ccc382c1b06..299c4332573 100644 --- a/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_lines.cc +++ b/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_lines.cc @@ -35,7 +35,7 @@ static void *extract_lines_init(const MeshRenderData *mr, struct MeshBatchCache *UNUSED(cache), void *UNUSED(buf)) { - GPUIndexBufBuilder *elb = static_cast(MEM_mallocN(sizeof(*elb), __func__)); + GPUIndexBufBuilder *elb = new GPUIndexBufBuilder(); /* Put loose edges at the end. */ GPU_indexbuf_init( elb, GPU_PRIM_LINES, mr->edge_len + mr->edge_loose_len, mr->loop_len + mr->loop_loose_len); @@ -146,7 +146,7 @@ static void extract_lines_finish(const MeshRenderData *UNUSED(mr), GPUIndexBufBuilder *elb = static_cast(data); GPUIndexBuf *ibo = static_cast(buf); GPU_indexbuf_build_in_place(elb, ibo); - MEM_freeN(elb); + delete elb; } constexpr MeshExtract create_extractor_lines() @@ -190,7 +190,7 @@ static void extract_lines_with_lines_loose_finish(const MeshRenderData *mr, GPUIndexBuf *ibo = static_cast(buf); GPU_indexbuf_build_in_place(elb, ibo); extract_lines_loose_subbuffer(mr, cache); - MEM_freeN(elb); + delete(elb); } constexpr MeshExtract create_extractor_lines_with_lines_loose() @@ -221,7 +221,7 @@ static void *extract_lines_loose_only_init(const MeshRenderData *mr, BLI_assert(buf == cache->final.ibo.lines_loose); UNUSED_VARS_NDEBUG(buf); extract_lines_loose_subbuffer(mr, cache); - return NULL; + return nullptr; } constexpr MeshExtract create_extractor_lines_loose_only() diff --git a/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_points.cc b/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_points.cc index d749a3ab8d1..d71d0f78ddc 100644 --- a/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_points.cc +++ b/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_points.cc @@ -36,7 +36,7 @@ static void *extract_points_init(const MeshRenderData *mr, struct MeshBatchCache *UNUSED(cache), void *UNUSED(buf)) { - GPUIndexBufBuilder *elb = static_cast(MEM_mallocN(sizeof(*elb), __func__)); + GPUIndexBufBuilder *elb = new GPUIndexBufBuilder(); GPU_indexbuf_init(elb, GPU_PRIM_POINTS, mr->vert_len, mr->loop_len + mr->loop_loose_len); return elb; } @@ -145,7 +145,7 @@ static void extract_points_finish(const MeshRenderData *UNUSED(mr), GPUIndexBufBuilder *elb = static_cast(_userdata); GPUIndexBuf *ibo = static_cast(buf); GPU_indexbuf_build_in_place(elb, ibo); - MEM_freeN(elb); + delete elb; } constexpr MeshExtract create_extractor_points() diff --git a/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_tris.cc b/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_tris.cc index 688f04450e9..ca99aa2ee38 100644 --- a/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_tris.cc +++ b/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_tris.cc @@ -35,18 +35,31 @@ struct MeshExtract_Tri_Data { GPUIndexBufBuilder elb; int *tri_mat_start; int *tri_mat_end; + + MeshExtract_Tri_Data(int mat_len) + { + tri_mat_start = new int[mat_len]; + tri_mat_end = new int[mat_len]; + } + + ~MeshExtract_Tri_Data() + { + delete tri_mat_start; + delete tri_mat_end; + } + +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("DRW:MeshExtract_Tri_Data") +#endif }; static void *extract_tris_init(const MeshRenderData *mr, struct MeshBatchCache *UNUSED(cache), void *UNUSED(ibo)) { - MeshExtract_Tri_Data *data = static_cast( - MEM_callocN(sizeof(*data), __func__)); + MeshExtract_Tri_Data *data = new MeshExtract_Tri_Data(mr->mat_len); size_t mat_tri_idx_size = sizeof(int) * mr->mat_len; - data->tri_mat_start = static_cast(MEM_callocN(mat_tri_idx_size, __func__)); - data->tri_mat_end = static_cast(MEM_callocN(mat_tri_idx_size, __func__)); int *mat_tri_len = data->tri_mat_start; /* Count how many triangle for each material. */ @@ -148,9 +161,7 @@ static void extract_tris_finish(const MeshRenderData *mr, GPU_indexbuf_create_subrange_in_place(mbc_final->tris_per_mat[i], ibo, start, len); } } - MEM_freeN(data->tri_mat_start); - MEM_freeN(data->tri_mat_end); - MEM_freeN(data); + delete (data); } constexpr MeshExtract create_extractor_tris() diff --git a/source/blender/gpu/GPU_index_buffer.h b/source/blender/gpu/GPU_index_buffer.h index 4e8d854c7ce..83057c5fb5f 100644 --- a/source/blender/gpu/GPU_index_buffer.h +++ b/source/blender/gpu/GPU_index_buffer.h @@ -44,6 +44,11 @@ typedef struct GPUIndexBufBuilder { uint index_max; GPUPrimType prim_type; uint32_t *data; + +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("GPU:GPUIndexBufBuilder") +#endif + } GPUIndexBufBuilder; /* supports all primitive types. */ -- cgit v1.2.3