From 35de2e2a2fac640e4127cbbb7fe8010d1fa14ca6 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Sat, 2 Dec 2023 17:59:26 +0100 Subject: [PATCH] Use more cores for image decoding and reserve 4 for other important things (main thread, renderg, mesh repo, LFS); bring back FSImageDecodeThreads debug setting --- indra/newview/app_settings/settings.xml | 11 +++++++++++ indra/newview/llappviewer.cpp | 11 +++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 35c0ae8b55..2942ed0c42 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -26540,6 +26540,17 @@ Change of this parameter will affect the layout of buttons in notification toast Value 0 + FSImageDecodeThreads + + Comment + Amount of threads to use for image decoding. 0 = auto, >= 1 number of threads. Needs restart + Persist + 1 + Type + U32 + Value + 0 + FSPerfFloaterSmoothingPeriods Comment diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 68f25f8d18..737ba338a2 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -2571,8 +2571,15 @@ bool LLAppViewer::initThreads() // The only configurable thread count right now is ImageDecode // The viewer typically starts around 8 threads not including image decode, // so try to leave at least one core free - S32 image_decode_count = llclamp(cores - 9, 1, 8); - threadCounts["ImageDecode"] = image_decode_count; + // Override image decode thread config + //S32 image_decode_count = llclamp(cores - 9, 1, 8); + S32 image_decode_count = llclamp(cores - 4, 1, 8); + if (auto max_decodes = gSavedSettings.getU32("FSImageDecodeThreads"); max_decodes > 0) + { + image_decode_count = llclamp((S32)max_decodes, 1, 32); + } + // + threadCounts["ImageDecode"] = image_decode_count; gSavedSettings.setLLSD("ThreadPoolSizes", threadCounts); // Image decoding