Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Bakker <jeroen@blender.org>2022-05-10 15:01:02 +0300
committerJeroen Bakker <jeroen@blender.org>2022-05-10 15:31:20 +0300
commit15021968c1e962c364b08f1ade08023da49a28ec (patch)
tree03665e6fe00fd1e630c2af233357caf1522579bd
parentb38cd1bcbedc5699896cec7ea26dd70bce52eb9c (diff)
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}
-rw-r--r--release/scripts/startup/bl_ui/space_userpref.py1
-rw-r--r--source/blender/draw/intern/draw_manager.c2
-rw-r--r--source/blender/makesdna/DNA_userdef_types.h2
-rw-r--r--source/blender/makesrna/intern/rna_userdef.c4
-rw-r--r--source/blender/windowmanager/intern/wm_draw.c2
5 files changed, 8 insertions, 3 deletions
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index 6654053bef4..d4d1e6ace76 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -2278,6 +2278,7 @@ class USERPREF_PT_experimental_prototypes(ExperimentalPanel, Panel):
({"property": "use_new_point_cloud_type"}, "T75717"),
({"property": "use_full_frame_compositor"}, "T88150"),
({"property": "enable_eevee_next"}, "T93220"),
+ ({"property": "use_draw_manager_acquire_lock"}, "T98016"),
),
)
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 a8fa1fd4271..275a89ec680 100644
--- a/source/blender/makesdna/DNA_userdef_types.h
+++ b/source/blender/makesdna/DNA_userdef_types.h
@@ -652,7 +652,7 @@ typedef struct UserDef_Experimental {
char use_override_templates;
char enable_eevee_next;
char use_sculpt_texture_paint;
- char _pad0[1];
+ char use_draw_manager_acquire_lock;
/** `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 5ac324b3627..1b5536c755e 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -6424,6 +6424,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)) {