diff --git a/indra/newview/daeexport.cpp b/indra/newview/daeexport.cpp
index 4f29268e11..4fa44bac23 100644
--- a/indra/newview/daeexport.cpp
+++ b/indra/newview/daeexport.cpp
@@ -428,6 +428,8 @@ void ColladaExportFloater::CacheReadResponder::completed(bool success)
// For other formats we need to decode first
if (mFormattedImage->updateData() && ( (mFormattedImage->getWidth() * mFormattedImage->getHeight() * mFormattedImage->getComponents()) != 0 ) )
{
+ mFormattedImage->setDiscardLevel(0); // [FIRE-35292] Fix for textures getting downscaled and compressed
+
LLPointer raw = new LLImageRaw;
raw->resize(mFormattedImage->getWidth(), mFormattedImage->getHeight(), mFormattedImage->getComponents());
@@ -503,7 +505,15 @@ void ColladaExportFloater::CacheReadResponder::saveTexturesWorker(void* data)
std::string name = gDirUtilp->getDirName(me->mFilename);
name += gDirUtilp->getDirDelimiter() + me->mTexturesToSave[id];
CacheReadResponder* responder = new CacheReadResponder(id, img, name, img_type);
- LLAppViewer::getTextureCache()->readFromCache(id, 0, 999999, responder);
+ // [FIRE-35292] Fix for textures getting downscaled and compressed
+ //LLAppViewer::getTextureCache()->readFromCache(id, 0, 999999, responder);
+ // The above line hard coded the size of data to read from the cached version of the texture as 999999,
+ // where now we will calcuate the correct value based upon the texture's full width, height and # of components (3=RGB, 4=RGBA) and
+ // the discard level (0)). There is a choice to change the rate, but we seem to use the value of 1/8 compression level
+ S32 texture_size = LLImageJ2C::calcDataSizeJ2C(imagep->getFullWidth(), imagep->getFullHeight(), imagep->getComponents(), 0);// , F32 rate) rate = const F32 DEFAULT_COMPRESSION_RATE = 1.f/8.f;
+ // Use calculated texture_size (from LLTextureFetch::createRequest see "else if (w*h*c > 0)" statement for more info)
+ LLAppViewer::getTextureCache()->readFromCache(id, 0, texture_size, responder);
+ // [FIRE-35292]
me->mTexturesToSave.erase(id);
me->updateTitleProgress();
me->mTimer.reset();
diff --git a/indra/newview/fsfloaterexport.cpp b/indra/newview/fsfloaterexport.cpp
index 0b60e8b00b..a8f81eccaa 100644
--- a/indra/newview/fsfloaterexport.cpp
+++ b/indra/newview/fsfloaterexport.cpp
@@ -690,7 +690,14 @@ void FSFloaterObjectExport::fetchTextureFromCache(LLViewerFetchedTexture* src_vi
const LLUUID& texture_id = src_vi->getID();
LLImageJ2C* mFormattedImage = new LLImageJ2C;
FSFloaterObjectExport::FSExportCacheReadResponder* responder = new FSFloaterObjectExport::FSExportCacheReadResponder(texture_id, mFormattedImage, this);
- LLAppViewer::getTextureCache()->readFromCache(texture_id, 0, 999999, responder);
+ // [FIRE-35292] Fix for textures getting downscaled and compressed
+ //LLAppViewer::getTextureCache()->readFromCache(id, 0, 999999, responder);
+ // The above line hard coded the size of data to read from the cached version of the texture as 999999,
+ // where now we will calcuate the correct value based upon the texture's full width, height and # of components (3=RGB, 4=RGBA) and
+ // the discard level (0)). There is a choice to change the rate, but we seem to use the value of 1/8 compression level
+ S32 texture_size = LLImageJ2C::calcDataSizeJ2C(src_vi->getFullWidth(), src_vi->getFullHeight(), src_vi->getComponents(), 0);// , F32 rate) rate = const F32 DEFAULT_COMPRESSION_RATE = 1.f/8.f;
+ // Use calculated texture_size (from LLTextureFetch::createRequest see "else if (w*h*c > 0)" statement for more info)
+ LLAppViewer::getTextureCache()->readFromCache(texture_id, 0, texture_size, responder);
LL_DEBUGS("export") << "Fetching " << texture_id << " from the TextureCache" << LL_ENDL;
}
diff --git a/indra/newview/llagentbenefits.cpp b/indra/newview/llagentbenefits.cpp
index 5b737e35f3..01a701094d 100644
--- a/indra/newview/llagentbenefits.cpp
+++ b/indra/newview/llagentbenefits.cpp
@@ -220,7 +220,7 @@ S32 LLAgentBenefits::getPicksLimit() const
}
else
{
- constexpr S32 MAX_OPENSIM_PICKS_FALLBACK = 20; // [FIRE-35276] Freeze on OpenSim (default agreed with Ubit Umarov) (originally by Haklezz)
+ constexpr S32 MAX_OPENSIM_PICKS_FALLBACK = 20; // [FIRE-35276] Freeze on OpenSim (default agreed with Ubit Umarov) (originally by Hecklezz)
S32 max_profile_picks = MAX_OPENSIM_PICKS_FALLBACK;
@@ -234,7 +234,7 @@ S32 LLAgentBenefits::getPicksLimit() const
}
}
return max_profile_picks;
- }
+ }
//
}
diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp
index 4eeab0d8d3..3de843627f 100644
--- a/indra/newview/llnetmap.cpp
+++ b/indra/newview/llnetmap.cpp
@@ -91,6 +91,8 @@
#include "fscommon.h"
#include "llstartup.h"
+#include "llviewernetwork.h" // Access to GridManager
+
static LLDefaultChildRegistry::Register r1("net_map");
constexpr F32 LLNetMap::MAP_SCALE_MIN = 32;
@@ -454,26 +456,75 @@ void LLNetMap::draw()
gGL.color4f(1.f, 0.5f, 0.5f, 1.f);
}
- // Draw using texture.
- gGL.getTexUnit(0)->bind(regionp->getLand().getSTexture());
- gGL.begin(LLRender::TRIANGLES);
+ // [FIRE-35147] OpenSim regions can be greater than 256x256 and need to be accounted for
+ if (!LLGridManager::getInstance()->isInSecondLife())
{
- gGL.texCoord2f(0.f, 1.f);
- gGL.vertex2f(left, top);
- gGL.texCoord2f(0.f, 0.f);
- gGL.vertex2f(left, bottom);
- gGL.texCoord2f(1.f, 0.f);
- gGL.vertex2f(right, bottom);
+ // Fixes OpenSim race condition on grid change not having updated Grid Info yet
+ bool isAgentTeleporting = gAgent.getTeleportState() != LLAgent::TELEPORT_NONE;
+ if (!isAgentTeleporting)
+ {
+ const LLViewerRegion::tex_matrix_t& tiles(regionp->getWorldMapTiles());
+ for (S32 i(0), scaled_width((S32)(real_width / region_width)), square_width(scaled_width * scaled_width);
+ i < square_width; ++i)
+ {
+ const F32 y = (F32)(i / scaled_width);
+ const F32 x = (F32)(i - y * scaled_width);
+ const F32 local_left(left + x * mScale);
+ const F32 local_right(local_left + mScale);
+ const F32 local_bottom(bottom + y * mScale);
+ const F32 local_top(local_bottom + mScale);
+ LLPointer pRegionImage = tiles[(U64)(x * scaled_width + y)];
+ if (pRegionImage.isNull())
+ continue;
- gGL.texCoord2f(0.f, 1.f);
- gGL.vertex2f(left, top);
- gGL.texCoord2f(1.f, 0.f);
- gGL.vertex2f(right, bottom);
- gGL.texCoord2f(1.f, 1.f);
- gGL.vertex2f(right, top);
+ if (pRegionImage->hasGLTexture())
+ {
+ gGL.getTexUnit(0)->bind(pRegionImage);
+ gGL.begin(LLRender::TRIANGLES);
+ {
+ gGL.texCoord2f(0.f, 1.f);
+ gGL.vertex2f(local_left, local_top);
+ gGL.texCoord2f(0.f, 0.f);
+ gGL.vertex2f(local_left, local_bottom);
+ gGL.texCoord2f(1.f, 0.f);
+ gGL.vertex2f(local_right, local_bottom);
+
+ gGL.texCoord2f(0.f, 1.f);
+ gGL.vertex2f(local_left, local_top);
+ gGL.texCoord2f(1.f, 0.f);
+ gGL.vertex2f(local_right, local_bottom);
+ gGL.texCoord2f(1.f, 1.f);
+ gGL.vertex2f(local_right, local_top);
+ }
+ gGL.end();
+ }
+ pRegionImage->setBoostLevel(LLViewerTexture::BOOST_MAP_VISIBLE);
+ }
+ }
}
- gGL.end();
+ //
+ else
+ {
+ // Draw using texture.
+ gGL.getTexUnit(0)->bind(regionp->getLand().getSTexture());
+ gGL.begin(LLRender::TRIANGLES);
+ {
+ gGL.texCoord2f(0.f, 1.f);
+ gGL.vertex2f(left, top);
+ gGL.texCoord2f(0.f, 0.f);
+ gGL.vertex2f(left, bottom);
+ gGL.texCoord2f(1.f, 0.f);
+ gGL.vertex2f(right, bottom);
+ gGL.texCoord2f(0.f, 1.f);
+ gGL.vertex2f(left, top);
+ gGL.texCoord2f(1.f, 0.f);
+ gGL.vertex2f(right, bottom);
+ gGL.texCoord2f(1.f, 1.f);
+ gGL.vertex2f(right, top);
+ }
+ gGL.end();
+ }
gGL.flush();
}
diff --git a/indra/newview/skins/default/xui/de/floater_vj_local_mesh.xml b/indra/newview/skins/default/xui/de/floater_vj_local_mesh.xml
index 9557b17a71..9602c16041 100644
--- a/indra/newview/skins/default/xui/de/floater_vj_local_mesh.xml
+++ b/indra/newview/skins/default/xui/de/floater_vj_local_mesh.xml
@@ -11,6 +11,7 @@
+
LOD-Suffixe:
diff --git a/indra/newview/skins/default/xui/en/floater_vj_local_mesh.xml b/indra/newview/skins/default/xui/en/floater_vj_local_mesh.xml
index 1ba0da24a9..0c96154bfc 100644
--- a/indra/newview/skins/default/xui/en/floater_vj_local_mesh.xml
+++ b/indra/newview/skins/default/xui/en/floater_vj_local_mesh.xml
@@ -114,7 +114,7 @@
width="300"
label="Assume scale is in meters."
tool_tip="Ignore the cm scale units used by tools such as Maya" />
-
+
Suffixes LOD :
diff --git a/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml b/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml
index 567ee88a2d..cf4b35d88e 100644
--- a/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml
@@ -9,6 +9,7 @@
+
diff --git a/indra/newview/skins/default/xui/pl/floater_vj_local_mesh.xml b/indra/newview/skins/default/xui/pl/floater_vj_local_mesh.xml
index 327d19e288..2f2008fe79 100644
--- a/indra/newview/skins/default/xui/pl/floater_vj_local_mesh.xml
+++ b/indra/newview/skins/default/xui/pl/floater_vj_local_mesh.xml
@@ -10,6 +10,7 @@
+
Sufiksy LOD:
diff --git a/indra/newview/skins/default/xui/pl/menu_hide_navbar.xml b/indra/newview/skins/default/xui/pl/menu_hide_navbar.xml
index 14975e0d6e..fb223e4e14 100644
--- a/indra/newview/skins/default/xui/pl/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/pl/menu_hide_navbar.xml
@@ -1,15 +1,16 @@
diff --git a/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml b/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml
index 07c5f12172..aaf1c3f7b5 100644
--- a/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml
@@ -9,6 +9,7 @@
+
diff --git a/indra/newview/skins/default/xui/zh/floater_model_preview.xml b/indra/newview/skins/default/xui/zh/floater_model_preview.xml
index f6f5c02a26..9325f3567a 100644
--- a/indra/newview/skins/default/xui/zh/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/zh/floater_model_preview.xml
@@ -397,7 +397,7 @@
- 細節層次字尾:
+ 細節層次後綴:
選擇標準或手動編輯...
@@ -408,23 +408,23 @@
最低:
-
+
較低:
-
+
中等:
-
+
高:
-
+
物理:
-
+
使用者自訂物理設定:
diff --git a/indra/newview/skins/default/xui/zh/floater_phototools.xml b/indra/newview/skins/default/xui/zh/floater_phototools.xml
index d592efeaab..c629ea81ae 100644
--- a/indra/newview/skins/default/xui/zh/floater_phototools.xml
+++ b/indra/newview/skins/default/xui/zh/floater_phototools.xml
@@ -397,7 +397,7 @@
-
+
使用者界面輔助
diff --git a/indra/newview/skins/default/xui/zh/floater_vj_local_mesh.xml b/indra/newview/skins/default/xui/zh/floater_vj_local_mesh.xml
index 8b77c683ba..e20b3c6496 100644
--- a/indra/newview/skins/default/xui/zh/floater_vj_local_mesh.xml
+++ b/indra/newview/skins/default/xui/zh/floater_vj_local_mesh.xml
@@ -12,10 +12,11 @@
+
- 細節層次字尾:
+ 細節層次後綴:
-
+
當前的
SL標準
遊戲引擎標準
@@ -24,23 +25,23 @@
最低:
-
+
較低:
-
+
中等:
-
+
較高:
-
+
物理:
-
+
diff --git a/indra/newview/skins/default/xui/zh/menu_hide_navbar.xml b/indra/newview/skins/default/xui/zh/menu_hide_navbar.xml
index 9532c7ae2f..071e036171 100644
--- a/indra/newview/skins/default/xui/zh/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/zh/menu_hide_navbar.xml
@@ -8,7 +8,8 @@
-
+
+
diff --git a/indra/newview/skins/default/xui/zh/notifications.xml b/indra/newview/skins/default/xui/zh/notifications.xml
index 8446f07c4c..e678fa8273 100644
--- a/indra/newview/skins/default/xui/zh/notifications.xml
+++ b/indra/newview/skins/default/xui/zh/notifications.xml
@@ -4353,7 +4353,7 @@ https://wiki.firestormviewer.org/fs_voice
記事卡的第[LINE]行沒有有效的「[」狀態字首。
- 記事卡的第[LINE]行沒有有效的「[」狀態字尾。
+ 記事卡的第[LINE]行沒有有效的「[」狀態後綴。
狀態[NAME]不存在。
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_UI.xml b/indra/newview/skins/default/xui/zh/panel_preferences_UI.xml
index 814b03f8eb..c9acda82d1 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_UI.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_UI.xml
@@ -31,7 +31,7 @@
-
+
顯示懸停文字背景:
diff --git a/indra/newview/skins/default/xui/zh/panel_status_bar.xml b/indra/newview/skins/default/xui/zh/panel_status_bar.xml
index 5e5174ab2a..2e6b29879a 100644
--- a/indra/newview/skins/default/xui/zh/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/zh/panel_status_bar.xml
@@ -33,7 +33,7 @@
-
+
200.0