diff --git a/source/blender/draw/engines/compositor/compositor_engine.cc b/source/blender/draw/engines/compositor/compositor_engine.cc index 9a0327b8ff5..4938e844ddd 100644 --- a/source/blender/draw/engines/compositor/compositor_engine.cc +++ b/source/blender/draw/engines/compositor/compositor_engine.cc @@ -274,10 +274,6 @@ using namespace blender::draw::compositor_engine; struct COMPOSITOR_Data { DrawEngineType *engine_type; - DRWViewportEmptyList *fbl; - DRWViewportEmptyList *txl; - DRWViewportEmptyList *psl; - DRWViewportEmptyList *stl; Engine *instance_data; char info[GPU_INFO_SIZE]; }; @@ -342,13 +338,10 @@ static void compositor_engine_update(void *data) extern "C" { -static const DrawEngineDataSize compositor_data_size = DRW_VIEWPORT_DATA_SIZE(COMPOSITOR_Data); - DrawEngineType draw_engine_compositor_type = { /*next*/ nullptr, /*prev*/ nullptr, /*idname*/ N_("Compositor"), - /*vedata_size*/ &compositor_data_size, /*engine_init*/ &compositor_engine_init, /*engine_free*/ nullptr, /*instance_free*/ &compositor_engine_free, diff --git a/source/blender/draw/engines/eevee_next/eevee_engine.cc b/source/blender/draw/engines/eevee_next/eevee_engine.cc index 4e7277e5025..4d74fd4d043 100644 --- a/source/blender/draw/engines/eevee_next/eevee_engine.cc +++ b/source/blender/draw/engines/eevee_next/eevee_engine.cc @@ -23,10 +23,6 @@ using namespace blender; struct EEVEE_Data { DrawEngineType *engine_type; - DRWViewportEmptyList *fbl; - DRWViewportEmptyList *txl; - DRWViewportEmptyList *psl; - DRWViewportEmptyList *stl; eevee::Instance *instance; char info[GPU_INFO_SIZE]; @@ -187,15 +183,12 @@ static void eevee_render_update_passes(RenderEngine *engine, Scene *scene, ViewL eevee::Instance::update_passes(engine, scene, view_layer); } -static const DrawEngineDataSize eevee_data_size = DRW_VIEWPORT_DATA_SIZE(EEVEE_Data); - extern "C" { DrawEngineType draw_engine_eevee_next_type = { /*next*/ nullptr, /*prev*/ nullptr, /*idname*/ N_("EEVEE"), - /*vedata_size*/ &eevee_data_size, /*engine_init*/ &eevee_engine_init, /*engine_free*/ &eevee_engine_free, /*instance_free*/ &eevee_instance_free, diff --git a/source/blender/draw/engines/external/external_engine.cc b/source/blender/draw/engines/external/external_engine.cc index 0fb18cf8a91..f37b0c5b6d9 100644 --- a/source/blender/draw/engines/external/external_engine.cc +++ b/source/blender/draw/engines/external/external_engine.cc @@ -41,10 +41,6 @@ struct EXTERNAL_Data { void *engine_type; - DRWViewportEmptyList *fbl; - DRWViewportEmptyList *txl; - DRWViewportEmptyList *psl; - DRWViewportEmptyList *stl; void *instance_data; char info[GPU_INFO_SIZE]; @@ -236,13 +232,10 @@ static void external_draw_scene(void *vedata) } } -static const DrawEngineDataSize external_data_size = DRW_VIEWPORT_DATA_SIZE(EXTERNAL_Data); - DrawEngineType draw_engine_external_type = { /*next*/ nullptr, /*prev*/ nullptr, /*idname*/ N_("External"), - /*vedata_size*/ &external_data_size, /*engine_init*/ nullptr, /*engine_free*/ nullptr, /*instance_free*/ nullptr, diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.h b/source/blender/draw/engines/gpencil/gpencil_engine.h index becfc2ddc04..620defa14fc 100644 --- a/source/blender/draw/engines/gpencil/gpencil_engine.h +++ b/source/blender/draw/engines/gpencil/gpencil_engine.h @@ -316,10 +316,6 @@ struct GPENCIL_Instance { struct GPENCIL_Data { void *engine_type; /* Required */ - DRWViewportEmptyList *fbl; - DRWViewportEmptyList *txl; - DRWViewportEmptyList *psl; - DRWViewportEmptyList *stl; struct GPENCIL_Instance *instance; char info[GPU_INFO_SIZE]; diff --git a/source/blender/draw/engines/gpencil/gpencil_engine_c.cc b/source/blender/draw/engines/gpencil/gpencil_engine_c.cc index 3ff69f2f369..f318cdc0a3a 100644 --- a/source/blender/draw/engines/gpencil/gpencil_engine_c.cc +++ b/source/blender/draw/engines/gpencil/gpencil_engine_c.cc @@ -936,13 +936,10 @@ static void GPENCIL_instance_free(void *instance) delete reinterpret_cast(instance); } -static const DrawEngineDataSize GPENCIL_data_size = DRW_VIEWPORT_DATA_SIZE(GPENCIL_Data); - DrawEngineType draw_engine_gpencil_type = { /*next*/ nullptr, /*prev*/ nullptr, /*idname*/ N_("GpencilMode"), - /*vedata_size*/ &GPENCIL_data_size, /*engine_init*/ &GPENCIL_engine_init, /*engine_free*/ &GPENCIL_engine_free, /*instance_free*/ &GPENCIL_instance_free, diff --git a/source/blender/draw/engines/image/image_engine.cc b/source/blender/draw/engines/image/image_engine.cc index 7994a09f282..5638c26062d 100644 --- a/source/blender/draw/engines/image/image_engine.cc +++ b/source/blender/draw/engines/image/image_engine.cc @@ -30,10 +30,6 @@ namespace blender::image_engine { struct IMAGE_Data { void *engine_type; - DRWViewportEmptyList *fbl; - DRWViewportEmptyList *txl; - DRWViewportEmptyList *psl; - DRWViewportEmptyList *stl; Instance *instance; char info[GPU_INFO_SIZE]; }; @@ -85,8 +81,6 @@ static void IMAGE_instance_free(void *instance) /** \} */ -static const DrawEngineDataSize IMAGE_data_size = DRW_VIEWPORT_DATA_SIZE(IMAGE_Data); - } // namespace blender::image_engine extern "C" { @@ -97,7 +91,6 @@ DrawEngineType draw_engine_image_type = { /*next*/ nullptr, /*prev*/ nullptr, /*idname*/ N_("UV/Image"), - /*vedata_size*/ &IMAGE_data_size, /*engine_init*/ &IMAGE_engine_init, /*engine_free*/ &IMAGE_engine_free, /*instance_free*/ &IMAGE_instance_free, diff --git a/source/blender/draw/engines/overlay/overlay_next_engine.cc b/source/blender/draw/engines/overlay/overlay_next_engine.cc index ebd26630d38..41a4209b808 100644 --- a/source/blender/draw/engines/overlay/overlay_next_engine.cc +++ b/source/blender/draw/engines/overlay/overlay_next_engine.cc @@ -96,13 +96,10 @@ static void OVERLAY_next_engine_free() /** \name Engine Type * \{ */ -static const DrawEngineDataSize overlay_data_size = DRW_VIEWPORT_DATA_SIZE(OVERLAY_Data); - DrawEngineType draw_engine_overlay_next_type = { /*next*/ nullptr, /*prev*/ nullptr, /*idname*/ N_("Overlay"), - /*vedata_size*/ &overlay_data_size, /*engine_init*/ &OVERLAY_next_engine_init, /*engine_free*/ &OVERLAY_next_engine_free, /*instance_free*/ &OVERLAY_next_instance_free, diff --git a/source/blender/draw/engines/overlay/overlay_private.hh b/source/blender/draw/engines/overlay/overlay_private.hh index e68303e4ed5..e5c36fb4fcd 100644 --- a/source/blender/draw/engines/overlay/overlay_private.hh +++ b/source/blender/draw/engines/overlay/overlay_private.hh @@ -36,10 +36,5 @@ enum OVERLAY_UVLineStyle { struct OVERLAY_Data { void *engine_type; - DRWViewportEmptyList *fbl; - DRWViewportEmptyList *txl; - DRWViewportEmptyList *psl; - DRWViewportEmptyList *stl; - void *instance; }; diff --git a/source/blender/draw/engines/select/select_debug_engine.cc b/source/blender/draw/engines/select/select_debug_engine.cc index 0e3b9d43919..70e17f8e6bc 100644 --- a/source/blender/draw/engines/select/select_debug_engine.cc +++ b/source/blender/draw/engines/select/select_debug_engine.cc @@ -27,10 +27,6 @@ struct SELECTIDDEBUG_Data { void *engine_type; - DRWViewportEmptyList *fbl; - DRWViewportEmptyList *txl; - DRWViewportEmptyList *psl; - DRWViewportEmptyList *stl; }; static struct { @@ -78,14 +74,10 @@ static void select_debug_engine_free() /** \name Engine Type * \{ */ -static const DrawEngineDataSize select_debug_data_size = DRW_VIEWPORT_DATA_SIZE( - SELECTIDDEBUG_Data); - DrawEngineType draw_engine_debug_select_type = { /*next*/ nullptr, /*prev*/ nullptr, /*idname*/ N_("Select ID Debug"), - /*vedata_size*/ &select_debug_data_size, /*engine_init*/ nullptr, /*engine_free*/ &select_debug_engine_free, /*instance_free*/ nullptr, diff --git a/source/blender/draw/engines/select/select_engine.cc b/source/blender/draw/engines/select/select_engine.cc index 95fdc5cd8a5..59daca6e9e9 100644 --- a/source/blender/draw/engines/select/select_engine.cc +++ b/source/blender/draw/engines/select/select_engine.cc @@ -330,13 +330,10 @@ static void select_instance_free(void *instance) /** \name Engine Type * \{ */ -static const DrawEngineDataSize select_data_size = DRW_VIEWPORT_DATA_SIZE(SELECTID_Data); - DrawEngineType draw_engine_select_type = { /*next*/ nullptr, /*prev*/ nullptr, /*idname*/ N_("Select ID"), - /*vedata_size*/ &select_data_size, /*engine_init*/ &select_engine_init, /*engine_free*/ &select_engine_free, /*instance_free*/ select_instance_free, diff --git a/source/blender/draw/engines/select/select_instance.cc b/source/blender/draw/engines/select/select_instance.cc index 6e2f9c03b87..82c5502ed17 100644 --- a/source/blender/draw/engines/select/select_instance.cc +++ b/source/blender/draw/engines/select/select_instance.cc @@ -25,11 +25,6 @@ using Instance = overlay::Instance; struct SELECT_NextData { void *engine_type; - DRWViewportEmptyList *fbl; - DRWViewportEmptyList *txl; - DRWViewportEmptyList *psl; - DRWViewportEmptyList *stl; - Instance *instance; }; @@ -83,13 +78,10 @@ static void SELECT_next_instance_free(void *instance_) delete instance; } -static const DrawEngineDataSize SELECT_next_data_size = DRW_VIEWPORT_DATA_SIZE(SELECT_NextData); - DrawEngineType draw_engine_select_next_type = { /*next*/ nullptr, /*prev*/ nullptr, /*idname*/ N_("Select-Next"), - /*vedata_size*/ &SELECT_next_data_size, /*engine_init*/ &SELECT_next_engine_init, /*engine_free*/ nullptr, /*instance_free*/ &SELECT_next_instance_free, diff --git a/source/blender/draw/engines/select/select_private.hh b/source/blender/draw/engines/select/select_private.hh index 7b2c4a0fb24..8becf8f7b64 100644 --- a/source/blender/draw/engines/select/select_private.hh +++ b/source/blender/draw/engines/select/select_private.hh @@ -46,10 +46,6 @@ struct SELECTID_Instance { struct SELECTID_Data { void *engine_type; - DRWViewportEmptyList *fbl; - DRWViewportEmptyList *txl; - DRWViewportEmptyList *psl; - DRWViewportEmptyList *stl; SELECTID_Instance *instance; char info[GPU_INFO_SIZE]; diff --git a/source/blender/draw/engines/workbench/workbench_engine.cc b/source/blender/draw/engines/workbench/workbench_engine.cc index cb420c6a418..e41142e0745 100644 --- a/source/blender/draw/engines/workbench/workbench_engine.cc +++ b/source/blender/draw/engines/workbench/workbench_engine.cc @@ -531,10 +531,6 @@ using namespace blender; struct WORKBENCH_Data { DrawEngineType *engine_type; - DRWViewportEmptyList *fbl; - DRWViewportEmptyList *txl; - DRWViewportEmptyList *psl; - DRWViewportEmptyList *stl; workbench::Instance *instance; char info[GPU_INFO_SIZE]; @@ -798,13 +794,10 @@ static void workbench_render_update_passes(RenderEngine *engine, extern "C" { -static const DrawEngineDataSize workbench_data_size = DRW_VIEWPORT_DATA_SIZE(WORKBENCH_Data); - DrawEngineType draw_engine_workbench = { /*next*/ nullptr, /*prev*/ nullptr, /*idname*/ N_("Workbench"), - /*vedata_size*/ &workbench_data_size, /*engine_init*/ &workbench_engine_init, /*engine_free*/ &workbench_engine_free, /*instance_free*/ &workbench_instance_free, diff --git a/source/blender/draw/intern/DRW_render.hh b/source/blender/draw/intern/DRW_render.hh index 04a8e1825b8..90da4995625 100644 --- a/source/blender/draw/intern/DRW_render.hh +++ b/source/blender/draw/intern/DRW_render.hh @@ -62,35 +62,11 @@ struct BoundSphere { float center[3], radius; }; -/* declare members as empty (unused) */ -typedef char DRWViewportEmptyList; - -#define DRW_VIEWPORT_LIST_SIZE(list) \ - (sizeof(list) == sizeof(DRWViewportEmptyList) ? 0 : (sizeof(list) / sizeof(void *))) - -/* Unused members must be either pass list or 'char *' when not used. */ -#define DRW_VIEWPORT_DATA_SIZE(ty) \ - { \ - DRW_VIEWPORT_LIST_SIZE(*(((ty *)nullptr)->fbl)), \ - DRW_VIEWPORT_LIST_SIZE(*(((ty *)nullptr)->txl)), \ - DRW_VIEWPORT_LIST_SIZE(*(((ty *)nullptr)->psl)), \ - DRW_VIEWPORT_LIST_SIZE(*(((ty *)nullptr)->stl)), \ - } - -struct DrawEngineDataSize { - int fbl_len; - int txl_len; - int psl_len; - int stl_len; -}; - struct DrawEngineType { DrawEngineType *next, *prev; char idname[32]; - const DrawEngineDataSize *vedata_size; - void (*engine_init)(void *vedata); void (*engine_free)(); diff --git a/source/blender/draw/intern/draw_manager_c.cc b/source/blender/draw/intern/draw_manager_c.cc index 42aa8750e3c..aa60bb2c019 100644 --- a/source/blender/draw/intern/draw_manager_c.cc +++ b/source/blender/draw/intern/draw_manager_c.cc @@ -880,9 +880,6 @@ static void drw_engines_init() DRW_ENABLED_ENGINE_ITER (DST.view_data_active, engine, data) { PROFILE_START(stime); - const DrawEngineDataSize *data_size = engine->vedata_size; - memset(data->psl->passes, 0, sizeof(*data->psl->passes) * data_size->psl_len); - if (engine->engine_init) { engine->engine_init(data); } diff --git a/source/blender/draw/intern/draw_view_data.cc b/source/blender/draw/intern/draw_view_data.cc index 34eb11a5adc..73af2d2bcac 100644 --- a/source/blender/draw/intern/draw_view_data.cc +++ b/source/blender/draw/intern/draw_view_data.cc @@ -120,17 +120,6 @@ void DRW_view_data_default_lists_from_viewport(DRWViewData *view_data, GPUViewpo static void draw_viewport_engines_data_clear(ViewportEngineData *data, bool clear_instance_data) { DrawEngineType *engine_type = data->engine_type->draw_engine; - const DrawEngineDataSize *data_size = engine_type->vedata_size; - - for (int i = 0; data->fbl && i < data_size->fbl_len; i++) { - GPU_FRAMEBUFFER_FREE_SAFE(data->fbl->framebuffers[i]); - } - for (int i = 0; data->txl && i < data_size->txl_len; i++) { - GPU_TEXTURE_FREE_SAFE(data->txl->textures[i]); - } - for (int i = 0; data->stl && i < data_size->stl_len; i++) { - MEM_SAFE_FREE(data->stl->storage[i]); - } if (clear_instance_data && data->instance_data) { BLI_assert(engine_type->instance_free != nullptr); @@ -138,11 +127,6 @@ static void draw_viewport_engines_data_clear(ViewportEngineData *data, bool clea data->instance_data = nullptr; } - MEM_SAFE_FREE(data->fbl); - MEM_SAFE_FREE(data->txl); - MEM_SAFE_FREE(data->psl); - MEM_SAFE_FREE(data->stl); - if (data->text_draw_cache) { DRW_text_cache_destroy(data->text_draw_cache); data->text_draw_cache = nullptr; @@ -189,17 +173,6 @@ ViewportEngineData *DRW_view_data_engine_data_get_ensure(DRWViewData *view_data, { for (ViewportEngineData &engine : view_data->engines) { if (engine.engine_type->draw_engine == engine_type) { - if (engine.fbl == nullptr) { - const DrawEngineDataSize *data_size = engine_type->vedata_size; - engine.fbl = (FramebufferList *)MEM_calloc_arrayN( - data_size->fbl_len, sizeof(GPUFrameBuffer *), "FramebufferList"); - engine.txl = (TextureList *)MEM_calloc_arrayN( - data_size->txl_len, sizeof(GPUTexture *), "TextureList"); - engine.psl = (PassList *)MEM_calloc_arrayN( - data_size->psl_len, sizeof(DRWPass *), "PassList"); - engine.stl = (StorageList *)MEM_calloc_arrayN( - data_size->stl_len, sizeof(void *), "StorageList"); - } return &engine; } } diff --git a/source/blender/draw/intern/draw_view_data.hh b/source/blender/draw/intern/draw_view_data.hh index 0d1d39ccbfc..16070347308 100644 --- a/source/blender/draw/intern/draw_view_data.hh +++ b/source/blender/draw/intern/draw_view_data.hh @@ -17,7 +17,6 @@ namespace blender::draw { class TextureFromPool; } // namespace blender::draw -struct DRWPass; struct DRWRegisteredDrawEngine; struct DRWTextStore; struct DrawEngineType; @@ -26,34 +25,10 @@ struct GPUTexture; struct GPUViewport; struct ListBase; -/* NOTE: these structs are only here for reading the actual lists from the engine. - * The actual length of them is stored in a ViewportEngineData_Info. - * The length of 1 is just here to avoid compiler warning. */ -struct FramebufferList { - GPUFrameBuffer *framebuffers[1]; -}; - -struct TextureList { - GPUTexture *textures[1]; -}; - -struct PassList { - DRWPass *passes[1]; -}; - -/* Stores custom structs from the engine that have been MEM_(m/c)allocN'ed. */ -struct StorageList { - void *storage[1]; -}; - struct ViewportEngineData { /* Not owning pointer to the draw engine. */ DRWRegisteredDrawEngine *engine_type; - FramebufferList *fbl; - TextureList *txl; - PassList *psl; - StorageList *stl; /** * \brief Memory block that can be freely used by the draw engine. * When used the draw engine must implement #DrawEngineType.instance_free callback.