diff --git a/indra/newview/fsdata.cpp b/indra/newview/fsdata.cpp index 90b84869e9..e604350737 100644 --- a/indra/newview/fsdata.cpp +++ b/indra/newview/fsdata.cpp @@ -1058,9 +1058,16 @@ LLSD FSData::getSystemInfo() sysinfo2 += llformat("Draw Distance: %d m\n", info["DRAW_DISTANCE"].asInteger()); sysinfo2 += llformat("Bandwidth: %d kbit/s\n", info["BANDWIDTH"].asInteger()); sysinfo2 += llformat("LOD Factor: %.3f\n", info["LOD"].asReal()); - sysinfo2 += llformat("Render quality: %s\n", info["RENDERQUALITY_FSDATA_ENGLISH"].asString().c_str()); // FIRE-4785: Current render quality setting in sysinfo / about floater + sysinfo2 += llformat("Render quality: %s\n", info["RENDERQUALITY_FSDATA_ENGLISH"].asString().c_str()); sysinfo2 += llformat("ALM enabled: %s\n", info["ALMSTATUS_FSDATA_ENGLISH"].asString().c_str()); - sysinfo2 += llformat("Texture memory: %d MB (%.2f)\n", info["TEXTUREMEMORY"].asInteger(), info["TEXTUREMEMORYMULTIPLIER"].asReal()); + if (info["TEXTUREMEMORYDYNAMIC"].asBoolean()) + { + sysinfo2 += llformat("Texture memory: Dynamic (%d MB min / %d%% Cache / %d%% VRAM)\n", info["TEXTUREMEMORYMIN"].asInteger(), info["TEXTUREMEMORYCACHERESERVE"].asInteger(), info["TEXTUREMEMORYGPURESERVE"].asInteger()); + } + else + { + sysinfo2 += llformat("Texture memory: %d MB (%.2f)\n", info["TEXTUREMEMORY"].asInteger(), info["TEXTUREMEMORYMULTIPLIER"].asReal()); + } sysinfo2 += "VFS (cache) creation time (UTC) " + info["VFS_DATE"].asString(); LLSD sysinfos; diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index d4411c9212..d257ecb00d 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -3966,8 +3966,12 @@ LLSD LLAppViewer::getViewerInfo() const // // FIRE-11768: Include texture memory settings + info["TEXTUREMEMORYDYNAMIC"] = LLViewerTextureList::canUseDynamicTextureMemory() && gSavedSettings.getBOOL("FSDynamicTextureMemory"); info["TEXTUREMEMORY"] = gSavedSettings.getS32("TextureMemory"); info["TEXTUREMEMORYMULTIPLIER"] = gSavedSettings.getF32("RenderTextureMemoryMultiple"); + info["TEXTUREMEMORYMIN"] = gSavedSettings.getS32("FSDynamicTextureMemoryMinTextureMemory"); + info["TEXTUREMEMORYCACHERESERVE"] = gSavedSettings.getS32("FSDynamicTextureMemoryCacheReserve"); + info["TEXTUREMEMORYGPURESERVE"] = gSavedSettings.getS32("FSDynamicTextureMemoryGPUReserve"); // // Add creation time of VFS (cache) @@ -4048,6 +4052,21 @@ std::string LLAppViewer::getViewerInfoString(bool default_string) const { support << "\n" << LLTrans::getString("AboutSettings", args, default_string); } + if (info.has("TEXTUREMEMORYDYNAMIC")) + { + if (info["TEXTUREMEMORYDYNAMIC"].asBoolean()) + { + support << "\n" << LLTrans::getString("AboutTextureMemoryDynamic", args, default_string); + } + else + { + support << "\n" << LLTrans::getString("AboutTextureMemory", args, default_string); + } + } + if (info.has("VFS_DATE")) + { + support << "\n" << LLTrans::getString("AboutVFS", args, default_string); + } // if (info.has("COMPILER")) { diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 64873828a8..7c4ae20825 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -2312,8 +2312,7 @@ void LLFloaterPreference::refreshEnabledState() // Dynamic texture memory calculation void LLFloaterPreference::handleDynamicTextureMemoryChanged() { -#if ADDRESS_SIZE == 64 - if ((gGLManager.mHasATIMemInfo || gGLManager.mHasNVXMemInfo) && gGLManager.mVRAM >= 512) + if (LLViewerTextureList::canUseDynamicTextureMemory()) { bool dynamic_tex_mem_enabled = gSavedSettings.getBOOL("FSDynamicTextureMemory"); childSetEnabled("FSDynamicTextureMemory", true); @@ -2323,7 +2322,6 @@ void LLFloaterPreference::handleDynamicTextureMemoryChanged() childSetEnabled("GraphicsCardTextureMemory", !dynamic_tex_mem_enabled); } else -#endif { childSetEnabled("FSDynamicTextureMemory", false); childSetEnabled("FSDynamicTextureMemoryMinTextureMemory", false); diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index 07c26e9391..88777fbc15 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -1524,27 +1524,29 @@ void LLViewerTextureList::updateMaxResidentTexMem(S32Megabytes mem) } // Dynamic texture memory calculation +//static +bool LLViewerTextureList::canUseDynamicTextureMemory() +{ +#if ADDRESS_SIZE == 64 + return (gGLManager.mHasATIMemInfo || gGLManager.mHasNVXMemInfo) && gGLManager.mVRAM >= 512; +#else + return false; +#endif +} + void LLViewerTextureList::updateTexMemDynamic() { -#if ADDRESS_SIZE == 64 // Only available on 64bit versions + if (!canUseDynamicTextureMemory()) + { + return; + } + static LLCachedControl fsDynamicTexMem(gSavedSettings, "FSDynamicTextureMemory"); if (!fsDynamicTexMem) { return; } - if (!gGLManager.mHasATIMemInfo && !gGLManager.mHasNVXMemInfo) - { - // Can't detect current GPU mem usage - so, nope! - return; - } - - if (gGLManager.mVRAM < 512) - { - // Only for GPUs with at least 512MB video memory - return; - } - static LLCachedControl fsDynamicTexMemCacheReserve(gSavedSettings, "FSDynamicTextureMemoryCacheReserve"); static LLCachedControl fsDynamicTexMemGPUReserve(gSavedSettings, "FSDynamicTextureMemoryGPUReserve"); static LLCachedControl fsDynamicTexMemMinTextureMemory(gSavedSettings, "FSDynamicTextureMemoryMinTextureMemory"); @@ -1574,7 +1576,6 @@ void LLViewerTextureList::updateTexMemDynamic() // get evicted from GPU memory, if available memory gets low (see LLViewerFetchedTexture::destroyTexture()). mMaxTotalTextureMemInMegaBytes = llmax(max_tex_mem_in_gpu, min_texture_mem) - gpu_reserve; mMaxResidentTexMemInMegaBytes = mMaxTotalTextureMemInMegaBytes - cache_reserve; -#endif } // diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h index f8103a4ca3..6feae4d897 100644 --- a/indra/newview/llviewertexturelist.h +++ b/indra/newview/llviewertexturelist.h @@ -129,7 +129,10 @@ public: S32 getNumImages() { return mImageList.size(); } void updateMaxResidentTexMem(S32Megabytes mem); - void updateTexMemDynamic(); // Dynamic texture memory calculation + // Dynamic texture memory calculation + void updateTexMemDynamic(); + static bool canUseDynamicTextureMemory(); + // void doPreloadImages(); void doPrefetchImages(); diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index 6df809d280..1f9dda61ef 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -78,8 +78,15 @@ Bandbreite: [BANDWIDTH] kbit/s LOD-Faktor: [LOD] Darstellungsqualität: [RENDERQUALITY] Erweitertes Beleuchtungsmodell: [ALMSTATUS] -Texturspeicher: [TEXTUREMEMORY] MB ([TEXTUREMEMORYMULTIPLIER]) -VFS (Cache) Erstellungszeit: [VFS_DATE] + + + Texturspeicher: [TEXTUREMEMORY] MB ([TEXTUREMEMORYMULTIPLIER]) + + + Texturspeicher: Dynamisch ([TEXTUREMEMORYMIN] MB min. / [TEXTUREMEMORYCACHERESERVE]% Cache / [TEXTUREMEMORYGPURESERVE]% VRAM) + + + VFS (Cache) Erstellungszeit: [VFS_DATE] HiDPI-Anzeigemodus: [HIDPI] diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 9315bb70a2..a3d42f8ec3 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -70,7 +70,14 @@ Bandwidth: [BANDWIDTH] kbit/s LOD factor: [LOD] Render quality: [RENDERQUALITY] Advanced Lighting Model: [ALMSTATUS] + + Texture memory: [TEXTUREMEMORY] MB ([TEXTUREMEMORYMULTIPLIER]) + + +Texture memory: Dynamic ([TEXTUREMEMORYMIN] MB min / [TEXTUREMEMORYCACHERESERVE]% Cache / [TEXTUREMEMORYGPURESERVE]% VRAM) + + VFS (cache) creation time (UTC): [VFS_DATE] diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index 1d3d092315..0f30e3aa16 100644 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -67,8 +67,12 @@ Banda (Bandwidth): [BANDWIDTH] kbit/s Fattore LOD (LOD factor): [LOD] Qualità resa (Render quality): [RENDERQUALITY] Stato illuminazione (Advanced Lighting Model): [ALMSTATUS] -Memoria texture (Texture memory): [TEXTUREMEMORY] MB ([TEXTUREMEMORYMULTIPLIER]) -VFS (cache) creation time (UTC): [VFS_DATE] + + + Memoria texture (Texture memory): [TEXTUREMEMORY] MB ([TEXTUREMEMORYMULTIPLIER]) + + + VFS (cache) creation time (UTC): [VFS_DATE] Modalità display HiDPI: [HIDPI] diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml index 80af6cc55a..5891ce295d 100644 --- a/indra/newview/skins/default/xui/pl/strings.xml +++ b/indra/newview/skins/default/xui/pl/strings.xml @@ -67,8 +67,12 @@ Przepustowość (Bandwidth): [BANDWIDTH] kbit/s Mnożnik poziomu detali (LOD Factor): [LOD] Jakość wyświetlania (Render quality): [RENDERQUALITY] Zaawansowane oświetlenie (Advanced Lighting Model): [ALMSTATUS] -Pamięć tekstur (Texture memory): [TEXTUREMEMORY] MB ([TEXTUREMEMORYMULTIPLIER]) -Czas utworzenia VFS (cache) w UTC: [VFS_DATE] + + + Pamięć tekstur (Texture memory): [TEXTUREMEMORY] MB ([TEXTUREMEMORYMULTIPLIER]) + + + Czas utworzenia VFS (cache) w UTC: [VFS_DATE] Tryb obrazu HiDPI: [HIDPI] diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml index a5fe002e63..9c9afd2e44 100644 --- a/indra/newview/skins/default/xui/ru/strings.xml +++ b/indra/newview/skins/default/xui/ru/strings.xml @@ -87,8 +87,12 @@ SLURL: <nolink>[SLURL]</nolink> Уровень детализации: [LOD] Качество графики: [RENDERQUALITY] Модель улучшенного освещения: [ALMSTATUS] -Графическая память: [TEXTUREMEMORY] MB ([TEXTUREMEMORYMULTIPLIER]) -Время создания VFS (кэш) (UTC): [VFS_DATE] + + + Графическая память: [TEXTUREMEMORY] MB ([TEXTUREMEMORYMULTIPLIER]) + + + Время создания VFS (кэш) (UTC): [VFS_DATE] Режим отображения HiDPI: [HIDPI]