diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2019-05-31 02:45:41 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-09-17 16:16:43 +0300 |
commit | 3a08153d7a842b7ab1e40a9048730e1a3ddab5f7 (patch) | |
tree | 37e7c902ceb35c5626644ccbbc7e0376e169e56c /source/blender/gpu/intern/gpu_viewport.c | |
parent | 41299bce936afb5e7da9c332d1140c5a77d49317 (diff) |
DRW: Refactor to support draw call batching
Reviewers: brecht
Differential Revision: D4997
Diffstat (limited to 'source/blender/gpu/intern/gpu_viewport.c')
-rw-r--r-- | source/blender/gpu/intern/gpu_viewport.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/source/blender/gpu/intern/gpu_viewport.c b/source/blender/gpu/intern/gpu_viewport.c index fcb1a008226..615af57c1bd 100644 --- a/source/blender/gpu/intern/gpu_viewport.c +++ b/source/blender/gpu/intern/gpu_viewport.c @@ -39,6 +39,7 @@ #include "GPU_immediate.h" #include "GPU_texture.h" #include "GPU_viewport.h" +#include "GPU_uniformbuffer.h" #include "DRW_engine.h" @@ -619,11 +620,20 @@ void GPU_viewport_free(GPUViewport *viewport) MEM_freeN(viewport->fbl); MEM_freeN(viewport->txl); - if (viewport->vmempool.calls != NULL) { - BLI_memblock_destroy(viewport->vmempool.calls, NULL); + if (viewport->vmempool.commands != NULL) { + BLI_memblock_destroy(viewport->vmempool.commands, NULL); } - if (viewport->vmempool.states != NULL) { - BLI_memblock_destroy(viewport->vmempool.states, NULL); + if (viewport->vmempool.commands_small != NULL) { + BLI_memblock_destroy(viewport->vmempool.commands_small, NULL); + } + if (viewport->vmempool.callbuffers != NULL) { + BLI_memblock_destroy(viewport->vmempool.callbuffers, NULL); + } + if (viewport->vmempool.obmats != NULL) { + BLI_memblock_destroy(viewport->vmempool.obmats, NULL); + } + if (viewport->vmempool.obinfos != NULL) { + BLI_memblock_destroy(viewport->vmempool.obinfos, NULL); } if (viewport->vmempool.cullstates != NULL) { BLI_memblock_destroy(viewport->vmempool.cullstates, NULL); @@ -650,6 +660,13 @@ void GPU_viewport_free(GPUViewport *viewport) BLI_memblock_destroy(viewport->vmempool.images, NULL); } + for (int i = 0; i < viewport->vmempool.ubo_len; i++) { + GPU_uniformbuffer_free(viewport->vmempool.matrices_ubo[i]); + GPU_uniformbuffer_free(viewport->vmempool.obinfos_ubo[i]); + } + MEM_SAFE_FREE(viewport->vmempool.matrices_ubo); + MEM_SAFE_FREE(viewport->vmempool.obinfos_ubo); + DRW_instance_data_list_free(viewport->idatalist); MEM_freeN(viewport->idatalist); |