From 4ffeb2d449296fbc03d9f5af3288b8e0ff07c602 Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Tue, 10 May 2022 14:01:02 +0200 Subject: DrawManager: Hide lock acquire behind experimental feature. The acquire locking of the draw manager introduced other issues. The current implementation was a hacky solution as we know that the final solution is something totally different {T98016}. Related issues: * {T97988} * {T97600} --- source/blender/draw/intern/draw_manager.c | 2 +- source/blender/makesdna/DNA_userdef_types.h | 3 ++- source/blender/makesrna/intern/rna_userdef.c | 4 ++++ source/blender/windowmanager/intern/wm_draw.c | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) (limited to 'source/blender') diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index 6ab8d30109e..4bbcf6eaf42 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -1287,7 +1287,7 @@ void DRW_notify_view_update(const DRWUpdateContext *update_ctx) const bool gpencil_engine_needed = drw_gpencil_engine_needed(depsgraph, v3d); - if (G.is_rendering) { + if (G.is_rendering && U.experimental.use_draw_manager_acquire_lock) { return; } diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index 3de6453bbaa..21abb632b94 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -650,7 +650,8 @@ typedef struct UserDef_Experimental { char use_override_templates; char enable_eevee_next; char use_sculpt_texture_paint; - char _pad0[2]; + char use_draw_manager_acquire_lock; + char _pad0[1]; /** `makesdna` does not allow empty structs. */ } UserDef_Experimental; diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 1a2017f2dbb..053353b41ba 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -6408,6 +6408,10 @@ static void rna_def_userdef_experimental(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "use_sculpt_texture_paint", 1); RNA_def_property_ui_text(prop, "Sculpt Texture Paint", "Use texture painting in Sculpt Mode"); + prop = RNA_def_property(srna, "use_draw_manager_acquire_lock", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "use_draw_manager_acquire_lock", 1); + RNA_def_property_ui_text(prop, "Draw Manager Locking", "Don't lock UI during background rendering"); + prop = RNA_def_property(srna, "use_extended_asset_browser", PROP_BOOLEAN, PROP_NONE); RNA_def_property_ui_text(prop, "Extended Asset Browser", diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c index 02da798495b..d2ade7b0376 100644 --- a/source/blender/windowmanager/intern/wm_draw.c +++ b/source/blender/windowmanager/intern/wm_draw.c @@ -467,7 +467,7 @@ static bool wm_draw_region_bind(bContext *C, ARegion *region, int view) } if (region->draw_buffer->viewport) { - if (G.is_rendering && C != NULL) { + if (G.is_rendering && C != NULL && U.experimental.use_draw_manager_acquire_lock) { Scene *scene = CTX_data_scene(C); RenderEngineType *render_engine_type = RE_engines_find(scene->r.engine); if (RE_engine_is_opengl(render_engine_type)) { -- cgit v1.2.3