diff --git a/scripts/startup/bl_ui/space_userpref.py b/scripts/startup/bl_ui/space_userpref.py index fdfff953918..25c5fad971f 100644 --- a/scripts/startup/bl_ui/space_userpref.py +++ b/scripts/startup/bl_ui/space_userpref.py @@ -2600,6 +2600,7 @@ class USERPREF_PT_experimental_debugging(ExperimentalPanel, Panel): ({"property": "use_asset_indexing"}, None), ({"property": "use_viewport_debug"}, None), ({"property": "use_eevee_debug"}, None), + ({"property": "disable_material_icon"}, None), ), ) diff --git a/source/blender/editors/interface/interface_icons.cc b/source/blender/editors/interface/interface_icons.cc index fed3a8f0d91..a19bfb9f5e4 100644 --- a/source/blender/editors/interface/interface_icons.cc +++ b/source/blender/editors/interface/interface_icons.cc @@ -1445,6 +1445,11 @@ static void icon_set_image(const bContext *C, enum eIconSizes size, const bool use_job) { + if (U.experimental.disable_material_icon && GS(id->name) == ID_MA) { + return; + } + + if (!prv_img) { if (G.debug & G_DEBUG) { printf("%s: no preview image for this ID: %s\n", __func__, id->name); diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index fbd6e6e5a80..f770e42f258 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -696,6 +696,7 @@ typedef struct UserDef_Experimental { char no_asset_indexing; char use_viewport_debug; char use_all_linked_data_direct; + char disable_material_icon; char SANITIZE_AFTER_HERE; /* The following options are automatically sanitized (set to 0) * when the release cycle is not alpha. */ @@ -712,7 +713,7 @@ typedef struct UserDef_Experimental { char use_shader_node_previews; char use_extension_repos; - char _pad[3]; + char _pad[1]; /** `makesdna` does not allow empty structs. */ } UserDef_Experimental; diff --git a/source/blender/makesrna/intern/rna_userdef.cc b/source/blender/makesrna/intern/rna_userdef.cc index 3ae9c8f99de..11f27d3b9d9 100644 --- a/source/blender/makesrna/intern/rna_userdef.cc +++ b/source/blender/makesrna/intern/rna_userdef.cc @@ -7018,6 +7018,15 @@ static void rna_def_userdef_experimental(BlenderRNA *brna) "reduces execution time and memory usage)"); RNA_def_property_update(prop, 0, "rna_userdef_update"); + prop = RNA_def_property(srna, "disable_material_icon", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "disable_material_icon", 1); + RNA_def_property_ui_text( + prop, + "Disable Material Icon Rendering", + "If true, Material Preview Icons will NOT be rendered. " + "This can prevent stuttering from opening the material ID menu"); + + prop = RNA_def_property(srna, "use_new_curves_tools", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, nullptr, "use_new_curves_tools", 1); RNA_def_property_ui_text(