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]