From b069218a5563662b08b3057c96e5e0be877c16ca Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Tue, 7 Dec 2021 10:33:55 +0100 Subject: DrawManager: Engine Instance Data. In the original design draw engines had to copy with a limitation that they were not allowed to reuse complex data structures between drawing calls. Data that could be reused were limited to: - GPUFramebuffers - GPUTextures - Memory that could be removed calling MEM_freeN (storage list) - DRWPass This is fine when the storage list contains arrays or structs but when more complex data types (vectors, maps) etc wasn't possible. This patch adds instance_data that can be reused between drawing calls. The instance_data is controlled by the draw engine and doesn't need to be limited as described above. When an engines stores instance_data it must implement the `DrawEngineType.instance_free` callback to free the data. The patch originates from eevee rewrite. But was added to master as the image engine rewrite also has a need for it. Reviewed By: fclem Differential Revision: https://developer.blender.org/D13425 --- source/blender/draw/engines/workbench/workbench_engine.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source/blender/draw/engines/workbench/workbench_engine.c') diff --git a/source/blender/draw/engines/workbench/workbench_engine.c b/source/blender/draw/engines/workbench/workbench_engine.c index 4706aeb4477..1db21cb4124 100644 --- a/source/blender/draw/engines/workbench/workbench_engine.c +++ b/source/blender/draw/engines/workbench/workbench_engine.c @@ -629,6 +629,7 @@ DrawEngineType draw_engine_workbench = { &workbench_data_size, &workbench_engine_init, &workbench_engine_free, + NULL, /* instance_free */ &workbench_cache_init, &workbench_cache_populate, &workbench_cache_finish, -- cgit v1.2.3