Merge branch 'release/2024.12-ForeverFPS' of https://github.com/secondlife/viewer
# Conflicts: # indra/newview/llviewercontrol.cpp # indra/newview/llviewertexture.cpp # indra/newview/skins/default/xui/en/menu_viewer.xmlmaster
commit
83d74614cf
|
|
@ -39,7 +39,7 @@ LLStyle::Params::Params()
|
||||||
readonly_color("readonly_color", LLColor4::black),
|
readonly_color("readonly_color", LLColor4::black),
|
||||||
selected_color("selected_color", LLColor4::black),
|
selected_color("selected_color", LLColor4::black),
|
||||||
alpha("alpha", 1.f),
|
alpha("alpha", 1.f),
|
||||||
font("font", LLFontGL::getFontMonospace()),
|
font("font", LLStyle::getDefaultFont()),
|
||||||
image("image"),
|
image("image"),
|
||||||
link_href("href"),
|
link_href("href"),
|
||||||
is_link("is_link"),
|
is_link("is_link"),
|
||||||
|
|
@ -74,6 +74,11 @@ const LLFontGL* LLStyle::getFont() const
|
||||||
return mFont;
|
return mFont;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const LLFontGL* LLStyle::getDefaultFont()
|
||||||
|
{
|
||||||
|
return LLFontGL::getFontMonospace();
|
||||||
|
}
|
||||||
|
|
||||||
void LLStyle::setLinkHREF(const std::string& href)
|
void LLStyle::setLinkHREF(const std::string& href)
|
||||||
{
|
{
|
||||||
mLink = href;
|
mLink = href;
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,7 @@ public:
|
||||||
|
|
||||||
void setFont(const LLFontGL* font);
|
void setFont(const LLFontGL* font);
|
||||||
const LLFontGL* getFont() const;
|
const LLFontGL* getFont() const;
|
||||||
|
static const LLFontGL* getDefaultFont();
|
||||||
|
|
||||||
const std::string& getLinkHREF() const { return mLink; }
|
const std::string& getLinkHREF() const { return mLink; }
|
||||||
void setLinkHREF(const std::string& href);
|
void setLinkHREF(const std::string& href);
|
||||||
|
|
|
||||||
|
|
@ -1604,7 +1604,8 @@ void LLTextBase::onVisibilityChange( bool new_visibility )
|
||||||
//virtual
|
//virtual
|
||||||
void LLTextBase::setValue(const LLSD& value )
|
void LLTextBase::setValue(const LLSD& value )
|
||||||
{
|
{
|
||||||
setText(value.asString());
|
static const LLStyle::Params input_params = LLStyle::Params();
|
||||||
|
setText(value.asString(), input_params);
|
||||||
}
|
}
|
||||||
|
|
||||||
//virtual
|
//virtual
|
||||||
|
|
@ -4246,8 +4247,7 @@ bool LLInlineViewSegment::getDimensionsF32(S32 first_char, S32 num_chars, F32& w
|
||||||
if (mForceNewLine)
|
if (mForceNewLine)
|
||||||
{
|
{
|
||||||
// Chat, string can't be smaller then font height even if it is empty
|
// Chat, string can't be smaller then font height even if it is empty
|
||||||
LLStyleSP s(new LLStyle(LLStyle::Params().visible(true)));
|
height = LLStyle::getDefaultFont()->getLineHeight();
|
||||||
height = s->getFont()->getLineHeight();
|
|
||||||
|
|
||||||
return true; // new line
|
return true; // new line
|
||||||
}
|
}
|
||||||
|
|
@ -4311,9 +4311,7 @@ void LLInlineViewSegment::linkToDocument(LLTextBase* editor)
|
||||||
|
|
||||||
LLLineBreakTextSegment::LLLineBreakTextSegment(S32 pos):LLTextSegment(pos,pos+1)
|
LLLineBreakTextSegment::LLLineBreakTextSegment(S32 pos):LLTextSegment(pos,pos+1)
|
||||||
{
|
{
|
||||||
LLStyleSP s( new LLStyle(LLStyle::Params().visible(true)));
|
mFontHeight = LLStyle::getDefaultFont()->getLineHeight();
|
||||||
|
|
||||||
mFontHeight = s->getFont()->getLineHeight();
|
|
||||||
}
|
}
|
||||||
LLLineBreakTextSegment::LLLineBreakTextSegment(LLStyleConstSP style,S32 pos):LLTextSegment(pos,pos+1)
|
LLLineBreakTextSegment::LLLineBreakTextSegment(LLStyleConstSP style,S32 pos):LLTextSegment(pos,pos+1)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -165,7 +165,8 @@ LLSD LLTextBox::getValue() const
|
||||||
bool LLTextBox::setTextArg( const std::string& key, const LLStringExplicit& text )
|
bool LLTextBox::setTextArg( const std::string& key, const LLStringExplicit& text )
|
||||||
{
|
{
|
||||||
mText.setArg(key, text);
|
mText.setArg(key, text);
|
||||||
LLTextBase::setText(mText.getString());
|
static const LLStyle::Params input_params = LLStyle::Params();
|
||||||
|
LLTextBase::setText(mText.getString(), input_params);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25706,28 +25706,6 @@ Change of this parameter will affect the layout of buttons in notification toast
|
||||||
<key>Value</key>
|
<key>Value</key>
|
||||||
<integer>1</integer>
|
<integer>1</integer>
|
||||||
</map>
|
</map>
|
||||||
<key>FSRestrictMaxTextureSize</key>
|
|
||||||
<map>
|
|
||||||
<key>Comment</key>
|
|
||||||
<string>If enabled, the maximum resolution for fetched textures will be restricted to FSRestrictMaxTexturePixels pixels (64bit versions only; requires restart)</string>
|
|
||||||
<key>Persist</key>
|
|
||||||
<integer>1</integer>
|
|
||||||
<key>Type</key>
|
|
||||||
<string>Boolean</string>
|
|
||||||
<key>Value</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
</map>
|
|
||||||
<key>FSRestrictMaxTexturePixels</key>
|
|
||||||
<map>
|
|
||||||
<key>Comment</key>
|
|
||||||
<string>Maximum texture resolution when FSRestrictMaxTextureSize is enabled. Must be a power of 2 and at least 512 pixels.</string>
|
|
||||||
<key>Persist</key>
|
|
||||||
<integer>1</integer>
|
|
||||||
<key>Type</key>
|
|
||||||
<string>U32</string>
|
|
||||||
<key>Value</key>
|
|
||||||
<integer>512</integer>
|
|
||||||
</map>
|
|
||||||
<key>FSScriptInfoExtended</key>
|
<key>FSScriptInfoExtended</key>
|
||||||
<map>
|
<map>
|
||||||
<key>Comment</key>
|
<key>Comment</key>
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,7 @@ RenderExposure 1 4
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 1
|
RenderTonemapMix 1 1
|
||||||
RenderDisableVintageMode 1 1
|
RenderDisableVintageMode 1 1
|
||||||
|
RenderMaxTextureResolution 1 2048
|
||||||
|
|
||||||
//
|
//
|
||||||
// Low Graphics Settings
|
// Low Graphics Settings
|
||||||
|
|
@ -126,6 +127,7 @@ RenderExposure 1 1
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 0.7
|
RenderTonemapMix 1 0.7
|
||||||
RenderDisableVintageMode 1 0
|
RenderDisableVintageMode 1 0
|
||||||
|
RenderMaxTextureResolution 1 512
|
||||||
|
|
||||||
//
|
//
|
||||||
// Medium Low Graphics Settings
|
// Medium Low Graphics Settings
|
||||||
|
|
@ -167,6 +169,7 @@ RenderExposure 1 1
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 0.7
|
RenderTonemapMix 1 0.7
|
||||||
RenderDisableVintageMode 1 0
|
RenderDisableVintageMode 1 0
|
||||||
|
RenderMaxTextureResolution 1 1024
|
||||||
|
|
||||||
//
|
//
|
||||||
// Medium Graphics Settings (standard)
|
// Medium Graphics Settings (standard)
|
||||||
|
|
@ -207,6 +210,7 @@ RenderCASSharpness 1 0
|
||||||
RenderExposure 1 1
|
RenderExposure 1 1
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 0.7
|
RenderTonemapMix 1 0.7
|
||||||
|
RenderMaxTextureResolution 1 2048
|
||||||
|
|
||||||
//
|
//
|
||||||
// Medium High Graphics Settings
|
// Medium High Graphics Settings
|
||||||
|
|
@ -247,6 +251,7 @@ RenderCASSharpness 1 0
|
||||||
RenderExposure 1 1
|
RenderExposure 1 1
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 0.7
|
RenderTonemapMix 1 0.7
|
||||||
|
RenderMaxTextureResolution 1 2048
|
||||||
|
|
||||||
//
|
//
|
||||||
// High Graphics Settings (SSAO + sun shadows)
|
// High Graphics Settings (SSAO + sun shadows)
|
||||||
|
|
@ -287,6 +292,7 @@ RenderCASSharpness 1 0.4
|
||||||
RenderExposure 1 1
|
RenderExposure 1 1
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 0.7
|
RenderTonemapMix 1 0.7
|
||||||
|
RenderMaxTextureResolution 1 2048
|
||||||
|
|
||||||
//
|
//
|
||||||
// High Ultra Graphics Settings (deferred + SSAO + all shadows)
|
// High Ultra Graphics Settings (deferred + SSAO + all shadows)
|
||||||
|
|
@ -327,6 +333,7 @@ RenderCASSharpness 1 0.4
|
||||||
RenderExposure 1 1
|
RenderExposure 1 1
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 0.7
|
RenderTonemapMix 1 0.7
|
||||||
|
RenderMaxTextureResolution 1 2048
|
||||||
|
|
||||||
//
|
//
|
||||||
// Ultra graphics (REALLY PURTY!)
|
// Ultra graphics (REALLY PURTY!)
|
||||||
|
|
@ -367,6 +374,7 @@ RenderCASSharpness 1 0.4
|
||||||
RenderExposure 1 1
|
RenderExposure 1 1
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 0.7
|
RenderTonemapMix 1 0.7
|
||||||
|
RenderMaxTextureResolution 1 2048
|
||||||
|
|
||||||
//
|
//
|
||||||
// Class Unknown Hardware (unknown)
|
// Class Unknown Hardware (unknown)
|
||||||
|
|
@ -399,6 +407,7 @@ RenderShadowDetail 0 0
|
||||||
RenderReflectionProbeDetail 0 -1
|
RenderReflectionProbeDetail 0 -1
|
||||||
RenderMirrors 0 0
|
RenderMirrors 0 0
|
||||||
RenderDisableVintageMode 1 0
|
RenderDisableVintageMode 1 0
|
||||||
|
RenderMaxTextureResolution 1 2048
|
||||||
|
|
||||||
list Intel
|
list Intel
|
||||||
RenderAnisotropic 1 0
|
RenderAnisotropic 1 0
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,7 @@ RenderExposure 1 4
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 1
|
RenderTonemapMix 1 1
|
||||||
RenderDisableVintageMode 1 1
|
RenderDisableVintageMode 1 1
|
||||||
|
RenderMaxTextureResolution 1 2048
|
||||||
|
|
||||||
//
|
//
|
||||||
// Low Graphics Settings
|
// Low Graphics Settings
|
||||||
|
|
@ -126,6 +127,7 @@ RenderExposure 1 1
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 0.7
|
RenderTonemapMix 1 0.7
|
||||||
RenderDisableVintageMode 1 0
|
RenderDisableVintageMode 1 0
|
||||||
|
RenderMaxTextureResolution 1 512
|
||||||
|
|
||||||
//
|
//
|
||||||
// Medium Low Graphics Settings
|
// Medium Low Graphics Settings
|
||||||
|
|
@ -167,6 +169,7 @@ RenderExposure 1 1
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 0.7
|
RenderTonemapMix 1 0.7
|
||||||
RenderDisableVintageMode 1 0
|
RenderDisableVintageMode 1 0
|
||||||
|
RenderMaxTextureResolution 1 1024
|
||||||
|
|
||||||
//
|
//
|
||||||
// Medium Graphics Settings (standard)
|
// Medium Graphics Settings (standard)
|
||||||
|
|
@ -207,6 +210,7 @@ RenderCASSharpness 1 0
|
||||||
RenderExposure 1 1
|
RenderExposure 1 1
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 0.7
|
RenderTonemapMix 1 0.7
|
||||||
|
RenderMaxTextureResolution 1 2048
|
||||||
|
|
||||||
//
|
//
|
||||||
// Medium High Graphics Settings
|
// Medium High Graphics Settings
|
||||||
|
|
@ -247,6 +251,7 @@ RenderCASSharpness 1 0
|
||||||
RenderExposure 1 1
|
RenderExposure 1 1
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 0.7
|
RenderTonemapMix 1 0.7
|
||||||
|
RenderMaxTextureResolution 1 2048
|
||||||
|
|
||||||
//
|
//
|
||||||
// High Graphics Settings (SSAO + sun shadows)
|
// High Graphics Settings (SSAO + sun shadows)
|
||||||
|
|
@ -287,6 +292,7 @@ RenderCASSharpness 1 0.4
|
||||||
RenderExposure 1 1
|
RenderExposure 1 1
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 0.7
|
RenderTonemapMix 1 0.7
|
||||||
|
RenderMaxTextureResolution 1 2048
|
||||||
|
|
||||||
//
|
//
|
||||||
// High Ultra Graphics Settings (deferred + SSAO + all shadows)
|
// High Ultra Graphics Settings (deferred + SSAO + all shadows)
|
||||||
|
|
@ -327,6 +333,7 @@ RenderCASSharpness 1 0.4
|
||||||
RenderExposure 1 1
|
RenderExposure 1 1
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 0.7
|
RenderTonemapMix 1 0.7
|
||||||
|
RenderMaxTextureResolution 1 2048
|
||||||
|
|
||||||
//
|
//
|
||||||
// Ultra graphics (REALLY PURTY!)
|
// Ultra graphics (REALLY PURTY!)
|
||||||
|
|
@ -367,6 +374,7 @@ RenderCASSharpness 1 0.4
|
||||||
RenderExposure 1 1
|
RenderExposure 1 1
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 0.7
|
RenderTonemapMix 1 0.7
|
||||||
|
RenderMaxTextureResolution 1 2048
|
||||||
|
|
||||||
//
|
//
|
||||||
// Class Unknown Hardware (unknown)
|
// Class Unknown Hardware (unknown)
|
||||||
|
|
@ -399,6 +407,7 @@ RenderShadowDetail 0 0
|
||||||
RenderReflectionProbeDetail 0 -1
|
RenderReflectionProbeDetail 0 -1
|
||||||
RenderMirrors 0 0
|
RenderMirrors 0 0
|
||||||
RenderDisableVintageMode 1 0
|
RenderDisableVintageMode 1 0
|
||||||
|
RenderMaxTextureResolution 1 2048
|
||||||
|
|
||||||
list Intel
|
list Intel
|
||||||
RenderAnisotropic 1 0
|
RenderAnisotropic 1 0
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,7 @@ RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 1
|
RenderTonemapMix 1 1
|
||||||
RenderDisableVintageMode 1 1
|
RenderDisableVintageMode 1 1
|
||||||
RenderDownScaleMethod 1 0
|
RenderDownScaleMethod 1 0
|
||||||
|
RenderMaxTextureResolution 1 2048
|
||||||
|
|
||||||
//
|
//
|
||||||
// Low Graphics Settings
|
// Low Graphics Settings
|
||||||
|
|
@ -126,6 +127,7 @@ RenderExposure 1 1
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 0.7
|
RenderTonemapMix 1 0.7
|
||||||
RenderDisableVintageMode 1 0
|
RenderDisableVintageMode 1 0
|
||||||
|
RenderMaxTextureResolution 1 512
|
||||||
|
|
||||||
//
|
//
|
||||||
// Medium Low Graphics Settings
|
// Medium Low Graphics Settings
|
||||||
|
|
@ -167,6 +169,7 @@ RenderExposure 1 1
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 0.7
|
RenderTonemapMix 1 0.7
|
||||||
RenderDisableVintageMode 1 0
|
RenderDisableVintageMode 1 0
|
||||||
|
RenderMaxTextureResolution 1 1024
|
||||||
|
|
||||||
//
|
//
|
||||||
// Medium Graphics Settings (standard)
|
// Medium Graphics Settings (standard)
|
||||||
|
|
@ -207,6 +210,7 @@ RenderCASSharpness 1 0
|
||||||
RenderExposure 1 1
|
RenderExposure 1 1
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 0.7
|
RenderTonemapMix 1 0.7
|
||||||
|
RenderMaxTextureResolution 1 2048
|
||||||
|
|
||||||
//
|
//
|
||||||
// Medium High Graphics Settings
|
// Medium High Graphics Settings
|
||||||
|
|
@ -247,6 +251,7 @@ RenderCASSharpness 1 0
|
||||||
RenderExposure 1 1
|
RenderExposure 1 1
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 0.7
|
RenderTonemapMix 1 0.7
|
||||||
|
RenderMaxTextureResolution 1 2048
|
||||||
|
|
||||||
//
|
//
|
||||||
// High Graphics Settings (SSAO + sun shadows)
|
// High Graphics Settings (SSAO + sun shadows)
|
||||||
|
|
@ -287,6 +292,7 @@ RenderCASSharpness 1 0
|
||||||
RenderExposure 1 1
|
RenderExposure 1 1
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 0.7
|
RenderTonemapMix 1 0.7
|
||||||
|
RenderMaxTextureResolution 1 2048
|
||||||
|
|
||||||
//
|
//
|
||||||
// High Ultra Graphics Settings (SSAO + all shadows)
|
// High Ultra Graphics Settings (SSAO + all shadows)
|
||||||
|
|
@ -327,6 +333,7 @@ RenderCASSharpness 1 0.4
|
||||||
RenderExposure 1 1
|
RenderExposure 1 1
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 0.7
|
RenderTonemapMix 1 0.7
|
||||||
|
RenderMaxTextureResolution 1 2048
|
||||||
|
|
||||||
//
|
//
|
||||||
// Ultra graphics (REALLY PURTY!)
|
// Ultra graphics (REALLY PURTY!)
|
||||||
|
|
@ -367,6 +374,7 @@ RenderCASSharpness 1 0.4
|
||||||
RenderExposure 1 1
|
RenderExposure 1 1
|
||||||
RenderTonemapType 1 1
|
RenderTonemapType 1 1
|
||||||
RenderTonemapMix 1 0.7
|
RenderTonemapMix 1 0.7
|
||||||
|
RenderMaxTextureResolution 1 2048
|
||||||
|
|
||||||
//
|
//
|
||||||
// Class Unknown Hardware (unknown)
|
// Class Unknown Hardware (unknown)
|
||||||
|
|
@ -398,6 +406,7 @@ RenderDeferredSSAO 0 0
|
||||||
RenderShadowDetail 0 0
|
RenderShadowDetail 0 0
|
||||||
RenderMirrors 0 0
|
RenderMirrors 0 0
|
||||||
RenderDisableVintageMode 1 0
|
RenderDisableVintageMode 1 0
|
||||||
|
RenderMaxTextureResolution 1 2048
|
||||||
|
|
||||||
list TexUnit8orLess
|
list TexUnit8orLess
|
||||||
RenderDeferredSSAO 0 0
|
RenderDeferredSSAO 0 0
|
||||||
|
|
|
||||||
|
|
@ -1600,7 +1600,8 @@ void FSFloaterIM::updateMessages()
|
||||||
chat.mText = message;
|
chat.mText = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
mChatHistory->appendMessage(chat, chat_args);
|
static const LLStyle::Params input_append_params = LLStyle::Params();
|
||||||
|
mChatHistory->appendMessage(chat, chat_args, input_append_params);
|
||||||
mLastMessageIndex = msg["index"].asInteger();
|
mLastMessageIndex = msg["index"].asInteger();
|
||||||
|
|
||||||
// if it is a notification - next message is a notification history log, so skip it
|
// if it is a notification - next message is a notification history log, so skip it
|
||||||
|
|
|
||||||
|
|
@ -243,10 +243,11 @@ void FSFloaterNearbyChat::addMessage(const LLChat& chat,bool archive,const LLSD
|
||||||
chat_args["use_plain_text_chat_history"] = use_plain_text_chat_history;
|
chat_args["use_plain_text_chat_history"] = use_plain_text_chat_history;
|
||||||
chat_args["show_time"] = show_timestamps_nearby_chat;
|
chat_args["show_time"] = show_timestamps_nearby_chat;
|
||||||
chat_args["is_local"] = true;
|
chat_args["is_local"] = true;
|
||||||
mChatHistoryMuted->appendMessage(chat, chat_args);
|
static const LLStyle::Params input_append_params = LLStyle::Params();
|
||||||
|
mChatHistoryMuted->appendMessage(chat, chat_args, input_append_params);
|
||||||
if (!chat.mMuted)
|
if (!chat.mMuted)
|
||||||
{
|
{
|
||||||
mChatHistory->appendMessage(chat, chat_args);
|
mChatHistory->appendMessage(chat, chat_args, input_append_params);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (archive)
|
if (archive)
|
||||||
|
|
|
||||||
|
|
@ -5978,13 +5978,22 @@ void LLAgent::parseTeleportMessages(const std::string& xml_filename)
|
||||||
LLXMLNodePtr root;
|
LLXMLNodePtr root;
|
||||||
bool success = LLUICtrlFactory::getLayeredXMLNode(xml_filename, root);
|
bool success = LLUICtrlFactory::getLayeredXMLNode(xml_filename, root);
|
||||||
|
|
||||||
if (!success || !root || !root->hasName( "teleport_messages" ))
|
if (!success)
|
||||||
{
|
{
|
||||||
|
LLError::LLUserWarningMsg::showMissingFiles();
|
||||||
LL_ERRS() << "Problem reading teleport string XML file: "
|
LL_ERRS() << "Problem reading teleport string XML file: "
|
||||||
<< xml_filename << LL_ENDL;
|
<< xml_filename << LL_ENDL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!root || !root->hasName("teleport_messages"))
|
||||||
|
{
|
||||||
|
LLError::LLUserWarningMsg::showMissingFiles();
|
||||||
|
LL_ERRS() << "Invalid teleport string XML file: "
|
||||||
|
<< xml_filename << LL_ENDL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (LLXMLNode* message_set = root->getFirstChild();
|
for (LLXMLNode* message_set = root->getFirstChild();
|
||||||
message_set != NULL;
|
message_set != NULL;
|
||||||
message_set = message_set->getNextSibling())
|
message_set = message_set->getNextSibling())
|
||||||
|
|
|
||||||
|
|
@ -689,15 +689,7 @@ void LLAppViewerWin32::bugsplatAddStaticAttributes(const LLSD& info)
|
||||||
#if LL_DARWIN
|
#if LL_DARWIN
|
||||||
bugSplatMap.setAttribute("HiDPI", info["HIDPI"].asBoolean() ? "Enabled" : "Disabled");
|
bugSplatMap.setAttribute("HiDPI", info["HIDPI"].asBoolean() ? "Enabled" : "Disabled");
|
||||||
#endif
|
#endif
|
||||||
|
bugSplatMap.setAttribute("Max Texture Size", gSavedSettings.getString("RenderMaxTextureResolution"));
|
||||||
if (gSavedSettings.getBOOL("FSRestrictMaxTextureSize"))
|
|
||||||
{
|
|
||||||
bugSplatMap.setAttribute("Max Texture Size", gSavedSettings.getString("FSRestrictMaxTexturePixels"));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
bugSplatMap.setAttribute("Max Texture Size", gSavedSettings.getString("Unlimited"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// These attributes are potentially dynamic
|
// These attributes are potentially dynamic
|
||||||
|
|
|
||||||
|
|
@ -635,7 +635,8 @@ void LLFloaterIMSessionTab::appendMessage(const LLChat& chat, const LLSD& args)
|
||||||
chat_args["show_names_for_p2p_conv"] = !mIsP2PChat ||
|
chat_args["show_names_for_p2p_conv"] = !mIsP2PChat ||
|
||||||
gSavedSettings.getBOOL("IMShowNamesForP2PConv");
|
gSavedSettings.getBOOL("IMShowNamesForP2PConv");
|
||||||
|
|
||||||
mChatHistory->appendMessage(chat, chat_args);
|
static const LLStyle::Params input_append_params = LLStyle::Params();
|
||||||
|
mChatHistory->appendMessage(chat, chat_args, input_append_params);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLFloaterIMSessionTab::updateUsedEmojis(LLWStringView text)
|
void LLFloaterIMSessionTab::updateUsedEmojis(LLWStringView text)
|
||||||
|
|
|
||||||
|
|
@ -2162,10 +2162,6 @@ void LLFloaterPreference::onUpdatePopupFilter()
|
||||||
|
|
||||||
void LLFloaterPreference::refreshEnabledState()
|
void LLFloaterPreference::refreshEnabledState()
|
||||||
{
|
{
|
||||||
#if ADDRESS_SIZE == 32
|
|
||||||
childSetEnabled("FSRestrictMaxTextureSize", false);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (!LLFeatureManager::getInstance()->isFeatureAvailable("RenderCompressTextures"))
|
if (!LLFeatureManager::getInstance()->isFeatureAvailable("RenderCompressTextures"))
|
||||||
{
|
{
|
||||||
getChildView("texture compression")->setEnabled(false);
|
getChildView("texture compression")->setEnabled(false);
|
||||||
|
|
|
||||||
|
|
@ -3229,11 +3229,15 @@ void LLPanelMainInventory::updateCombinationVisibility()
|
||||||
|
|
||||||
mCombinationGalleryLayoutPanel->setVisible(!is_gallery_empty);
|
mCombinationGalleryLayoutPanel->setVisible(!is_gallery_empty);
|
||||||
mCombinationListLayoutPanel->setVisible(show_inv_pane);
|
mCombinationListLayoutPanel->setVisible(show_inv_pane);
|
||||||
mCombinationInventoryPanel->getRootFolder()->setForceArrange(!show_inv_pane);
|
LLFolderView* root_folder = mCombinationInventoryPanel->getRootFolder();
|
||||||
if(mCombinationInventoryPanel->hasVisibleItems())
|
if (root_folder)
|
||||||
|
{
|
||||||
|
root_folder->setForceArrange(!show_inv_pane);
|
||||||
|
if (mCombinationInventoryPanel->hasVisibleItems())
|
||||||
{
|
{
|
||||||
mForceShowInvLayout = false;
|
mForceShowInvLayout = false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if(is_gallery_empty)
|
if(is_gallery_empty)
|
||||||
{
|
{
|
||||||
mCombinationGalleryPanel->handleModifiedFilter();
|
mCombinationGalleryPanel->handleModifiedFilter();
|
||||||
|
|
|
||||||
|
|
@ -1241,9 +1241,9 @@ LLPointer<LLControlVariable> setting_get_control(LLControlGroup& group, const st
|
||||||
LLPointer<LLControlVariable> cntrl_ptr = group.getControl(setting);
|
LLPointer<LLControlVariable> cntrl_ptr = group.getControl(setting);
|
||||||
if (cntrl_ptr.isNull())
|
if (cntrl_ptr.isNull())
|
||||||
{
|
{
|
||||||
|
LLError::LLUserWarningMsg::showMissingFiles();
|
||||||
LL_ERRS() << "Unable to set up setting listener for " << setting
|
LL_ERRS() << "Unable to set up setting listener for " << setting
|
||||||
<< ". Please reinstall viewer from https://www.firestormviewer.org/choose-your-platform/ and contact https://www.firestormviewer.org/support if issue persists after reinstall."
|
<< "." << LL_ENDL;
|
||||||
<< LL_ENDL;
|
|
||||||
}
|
}
|
||||||
return cntrl_ptr;
|
return cntrl_ptr;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -748,6 +748,9 @@ public:
|
||||||
// index into LLViewerObjectList::mActiveObjects or -1 if not in list
|
// index into LLViewerObjectList::mActiveObjects or -1 if not in list
|
||||||
S32 mListIndex;
|
S32 mListIndex;
|
||||||
|
|
||||||
|
// last index data for mIndexAndLocalIDToUUID
|
||||||
|
U32 mRegionIndex;
|
||||||
|
|
||||||
LLPointer<LLViewerTexture> *mTEImages;
|
LLPointer<LLViewerTexture> *mTEImages;
|
||||||
LLPointer<LLViewerTexture> *mTENormalMaps;
|
LLPointer<LLViewerTexture> *mTENormalMaps;
|
||||||
LLPointer<LLViewerTexture> *mTESpecularMaps;
|
LLPointer<LLViewerTexture> *mTESpecularMaps;
|
||||||
|
|
|
||||||
|
|
@ -173,21 +173,14 @@ U64 LLViewerObjectList::getIndex(const U32 local_id,
|
||||||
return (((U64)index) << 32) | (U64)local_id;
|
return (((U64)index) << 32) | (U64)local_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LLViewerObjectList::removeFromLocalIDTable(const LLViewerObject* objectp)
|
bool LLViewerObjectList::removeFromLocalIDTable(LLViewerObject* objectp)
|
||||||
{
|
{
|
||||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_NETWORK;
|
LL_PROFILE_ZONE_SCOPED_CATEGORY_NETWORK;
|
||||||
|
|
||||||
if(objectp && objectp->getRegion())
|
if(objectp && objectp->mRegionIndex != 0)
|
||||||
{
|
{
|
||||||
U32 local_id = objectp->mLocalID;
|
U32 local_id = objectp->mLocalID;
|
||||||
U32 ip = objectp->getRegion()->getHost().getAddress();
|
U64 indexid = (((U64)objectp->mRegionIndex) << 32) | (U64)local_id;
|
||||||
U32 port = objectp->getRegion()->getHost().getPort();
|
|
||||||
U64 ipport = (((U64)ip) << 32) | (U64)port;
|
|
||||||
U32 index = mIPAndPortToIndex[ipport];
|
|
||||||
|
|
||||||
// LL_INFOS() << "Removing object from table, local ID " << local_id << ", ip " << ip << ":" << port << LL_ENDL;
|
|
||||||
|
|
||||||
U64 indexid = (((U64)index) << 32) | (U64)local_id;
|
|
||||||
|
|
||||||
std::map<U64, LLUUID>::iterator iter = mIndexAndLocalIDToUUID.find(indexid);
|
std::map<U64, LLUUID>::iterator iter = mIndexAndLocalIDToUUID.find(indexid);
|
||||||
if (iter == mIndexAndLocalIDToUUID.end())
|
if (iter == mIndexAndLocalIDToUUID.end())
|
||||||
|
|
@ -199,6 +192,7 @@ bool LLViewerObjectList::removeFromLocalIDTable(const LLViewerObject* objectp)
|
||||||
if (iter->second == objectp->getID())
|
if (iter->second == objectp->getID())
|
||||||
{ // Full UUIDs match, so remove the entry
|
{ // Full UUIDs match, so remove the entry
|
||||||
mIndexAndLocalIDToUUID.erase(iter);
|
mIndexAndLocalIDToUUID.erase(iter);
|
||||||
|
objectp->mRegionIndex = 0;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// UUIDs did not match - this would zap a valid entry, so don't erase it
|
// UUIDs did not match - this would zap a valid entry, so don't erase it
|
||||||
|
|
@ -212,7 +206,8 @@ bool LLViewerObjectList::removeFromLocalIDTable(const LLViewerObject* objectp)
|
||||||
void LLViewerObjectList::setUUIDAndLocal(const LLUUID &id,
|
void LLViewerObjectList::setUUIDAndLocal(const LLUUID &id,
|
||||||
const U32 local_id,
|
const U32 local_id,
|
||||||
const U32 ip,
|
const U32 ip,
|
||||||
const U32 port)
|
const U32 port,
|
||||||
|
LLViewerObject* objectp)
|
||||||
{
|
{
|
||||||
U64 ipport = (((U64)ip) << 32) | (U64)port;
|
U64 ipport = (((U64)ip) << 32) | (U64)port;
|
||||||
|
|
||||||
|
|
@ -224,6 +219,7 @@ void LLViewerObjectList::setUUIDAndLocal(const LLUUID &id,
|
||||||
mIPAndPortToIndex[ipport] = index;
|
mIPAndPortToIndex[ipport] = index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
objectp->mRegionIndex = index; // should never be zero, sSimulatorMachineIndex starts from 1
|
||||||
U64 indexid = (((U64)index) << 32) | (U64)local_id;
|
U64 indexid = (((U64)index) << 32) | (U64)local_id;
|
||||||
|
|
||||||
mIndexAndLocalIDToUUID[indexid] = id;
|
mIndexAndLocalIDToUUID[indexid] = id;
|
||||||
|
|
@ -382,7 +378,8 @@ LLViewerObject* LLViewerObjectList::processObjectUpdateFromCache(LLVOCacheEntry*
|
||||||
removeFromLocalIDTable(objectp);
|
removeFromLocalIDTable(objectp);
|
||||||
setUUIDAndLocal(fullid, entry->getLocalID(),
|
setUUIDAndLocal(fullid, entry->getLocalID(),
|
||||||
regionp->getHost().getAddress(),
|
regionp->getHost().getAddress(),
|
||||||
regionp->getHost().getPort());
|
regionp->getHost().getPort(),
|
||||||
|
objectp);
|
||||||
|
|
||||||
if (objectp->mLocalID != entry->getLocalID())
|
if (objectp->mLocalID != entry->getLocalID())
|
||||||
{ // Update local ID in object with the one sent from the region
|
{ // Update local ID in object with the one sent from the region
|
||||||
|
|
@ -630,7 +627,8 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys,
|
||||||
setUUIDAndLocal(fullid,
|
setUUIDAndLocal(fullid,
|
||||||
local_id,
|
local_id,
|
||||||
gMessageSystem->getSenderIP(),
|
gMessageSystem->getSenderIP(),
|
||||||
gMessageSystem->getSenderPort());
|
gMessageSystem->getSenderPort(),
|
||||||
|
objectp);
|
||||||
|
|
||||||
if (objectp->mLocalID != local_id)
|
if (objectp->mLocalID != local_id)
|
||||||
{ // Update local ID in object with the one sent from the region
|
{ // Update local ID in object with the one sent from the region
|
||||||
|
|
@ -1582,11 +1580,20 @@ void LLViewerObjectList::killObjects(LLViewerRegion *regionp)
|
||||||
void LLViewerObjectList::killAllObjects()
|
void LLViewerObjectList::killAllObjects()
|
||||||
{
|
{
|
||||||
// Used only on global destruction.
|
// Used only on global destruction.
|
||||||
LLViewerObject *objectp;
|
|
||||||
|
|
||||||
|
// Mass cleanup to not clear lists one item at a time
|
||||||
|
mIndexAndLocalIDToUUID.clear();
|
||||||
|
mActiveObjects.clear();
|
||||||
|
mMapObjects.clear();
|
||||||
|
|
||||||
|
LLViewerObject *objectp;
|
||||||
for (vobj_list_t::iterator iter = mObjects.begin(); iter != mObjects.end(); ++iter)
|
for (vobj_list_t::iterator iter = mObjects.begin(); iter != mObjects.end(); ++iter)
|
||||||
{
|
{
|
||||||
objectp = *iter;
|
objectp = *iter;
|
||||||
|
objectp->setOnActiveList(false);
|
||||||
|
objectp->setListIndex(-1);
|
||||||
|
objectp->mRegionIndex = 0;
|
||||||
|
objectp->mOnMap = false;
|
||||||
killObject(objectp);
|
killObject(objectp);
|
||||||
// Object must be dead, or it's the LLVOAvatarSelf which never dies.
|
// Object must be dead, or it's the LLVOAvatarSelf which never dies.
|
||||||
llassert((objectp == gAgentAvatarp) || objectp->isDead());
|
llassert((objectp == gAgentAvatarp) || objectp->isDead());
|
||||||
|
|
@ -1599,18 +1606,6 @@ void LLViewerObjectList::killAllObjects()
|
||||||
LL_WARNS() << "LLViewerObjectList::killAllObjects still has entries in mObjects: " << mObjects.size() << LL_ENDL;
|
LL_WARNS() << "LLViewerObjectList::killAllObjects still has entries in mObjects: " << mObjects.size() << LL_ENDL;
|
||||||
mObjects.clear();
|
mObjects.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mActiveObjects.empty())
|
|
||||||
{
|
|
||||||
LL_WARNS() << "Some objects still on active object list!" << LL_ENDL;
|
|
||||||
mActiveObjects.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!mMapObjects.empty())
|
|
||||||
{
|
|
||||||
LL_WARNS() << "Some objects still on map object list!" << LL_ENDL;
|
|
||||||
mMapObjects.clear();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLViewerObjectList::cleanDeadObjects(bool use_timer)
|
void LLViewerObjectList::cleanDeadObjects(bool use_timer)
|
||||||
|
|
@ -2169,7 +2164,8 @@ LLViewerObject *LLViewerObjectList::createObjectFromCache(const LLPCode pcode, L
|
||||||
setUUIDAndLocal(uuid,
|
setUUIDAndLocal(uuid,
|
||||||
local_id,
|
local_id,
|
||||||
regionp->getHost().getAddress(),
|
regionp->getHost().getAddress(),
|
||||||
regionp->getHost().getPort());
|
regionp->getHost().getPort(),
|
||||||
|
objectp);
|
||||||
mObjects.push_back(objectp);
|
mObjects.push_back(objectp);
|
||||||
|
|
||||||
updateActive(objectp);
|
updateActive(objectp);
|
||||||
|
|
@ -2221,7 +2217,8 @@ LLViewerObject *LLViewerObjectList::createObject(const LLPCode pcode, LLViewerRe
|
||||||
setUUIDAndLocal(fullid,
|
setUUIDAndLocal(fullid,
|
||||||
local_id,
|
local_id,
|
||||||
gMessageSystem->getSenderIP(),
|
gMessageSystem->getSenderIP(),
|
||||||
gMessageSystem->getSenderPort());
|
gMessageSystem->getSenderPort(),
|
||||||
|
objectp);
|
||||||
|
|
||||||
mObjects.push_back(objectp);
|
mObjects.push_back(objectp);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -191,9 +191,10 @@ public:
|
||||||
void setUUIDAndLocal(const LLUUID &id,
|
void setUUIDAndLocal(const LLUUID &id,
|
||||||
const U32 local_id,
|
const U32 local_id,
|
||||||
const U32 ip,
|
const U32 ip,
|
||||||
const U32 port); // Requires knowledge of message system info!
|
const U32 port,
|
||||||
|
LLViewerObject* objectp); // Requires knowledge of message system info!
|
||||||
|
|
||||||
bool removeFromLocalIDTable(const LLViewerObject* objectp);
|
bool removeFromLocalIDTable(LLViewerObject* objectp);
|
||||||
// Used ONLY by the orphaned object code.
|
// Used ONLY by the orphaned object code.
|
||||||
U64 getIndex(const U32 local_id, const U32 ip, const U32 port);
|
U64 getIndex(const U32 local_id, const U32 ip, const U32 port);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1896,6 +1896,16 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
|
||||||
S32 bitmap_size = parcel_mgr.mParcelsPerEdge
|
S32 bitmap_size = parcel_mgr.mParcelsPerEdge
|
||||||
* parcel_mgr.mParcelsPerEdge
|
* parcel_mgr.mParcelsPerEdge
|
||||||
/ 8;
|
/ 8;
|
||||||
|
S32 size = msg->getSizeFast(_PREHASH_ParcelData, _PREHASH_Bitmap);
|
||||||
|
if (size != bitmap_size)
|
||||||
|
{
|
||||||
|
// Might be better to ignore bitmap and drop highlights
|
||||||
|
LL_WARNS("ParcelMgr") << "Parcel Bitmap size expected: " << bitmap_size
|
||||||
|
<< " actual " << size
|
||||||
|
<< ". Bitmap might be corrupted!" << LL_ENDL;
|
||||||
|
bitmap_size = size;
|
||||||
|
}
|
||||||
|
|
||||||
U8* bitmap = new U8[ bitmap_size ];
|
U8* bitmap = new U8[ bitmap_size ];
|
||||||
msg->getBinaryDataFast(_PREHASH_ParcelData, _PREHASH_Bitmap, bitmap, bitmap_size);
|
msg->getBinaryDataFast(_PREHASH_ParcelData, _PREHASH_Bitmap, bitmap, bitmap_size);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -111,8 +111,6 @@ LLViewerTexture::EDebugTexels LLViewerTexture::sDebugTexelsMode = LLViewerTextur
|
||||||
|
|
||||||
const F64 log_2 = log(2.0);
|
const F64 log_2 = log(2.0);
|
||||||
|
|
||||||
/*const*/ U32 DESIRED_NORMAL_TEXTURE_SIZE = (U32)LLViewerFetchedTexture::MAX_IMAGE_SIZE_DEFAULT; // <FS:Ansariel> Max texture resolution
|
|
||||||
|
|
||||||
LLUUID LLViewerTexture::sInvisiprimTexture1 = LLUUID::null;
|
LLUUID LLViewerTexture::sInvisiprimTexture1 = LLUUID::null;
|
||||||
LLUUID LLViewerTexture::sInvisiprimTexture2 = LLUUID::null;
|
LLUUID LLViewerTexture::sInvisiprimTexture2 = LLUUID::null;
|
||||||
#define TEX_INVISIPRIM1 "e97cf410-8e61-7005-ec06-629eba4cd1fb"
|
#define TEX_INVISIPRIM1 "e97cf410-8e61-7005-ec06-629eba4cd1fb"
|
||||||
|
|
@ -1761,6 +1759,16 @@ void LLViewerFetchedTexture::processTextureStats()
|
||||||
|
|
||||||
static LLCachedControl<bool> textures_fullres(gSavedSettings,"TextureLoadFullRes", false);
|
static LLCachedControl<bool> textures_fullres(gSavedSettings,"TextureLoadFullRes", false);
|
||||||
|
|
||||||
|
U32 max_tex_res = MAX_IMAGE_SIZE_DEFAULT;
|
||||||
|
if (mBoostLevel < LLGLTexture::BOOST_HIGH)
|
||||||
|
{
|
||||||
|
// restrict texture resolution to download based on RenderMaxTextureResolution
|
||||||
|
static LLCachedControl<U32> max_texture_resolution(gSavedSettings, "RenderMaxTextureResolution", 2048);
|
||||||
|
// sanity clamp debug setting to avoid settings hack shenanigans
|
||||||
|
max_tex_res = (U32)llclamp((U32)max_texture_resolution, 512, MAX_IMAGE_SIZE_DEFAULT);
|
||||||
|
mMaxVirtualSize = llmin(mMaxVirtualSize, (F32)(max_tex_res * max_tex_res));
|
||||||
|
}
|
||||||
|
|
||||||
if (textures_fullres)
|
if (textures_fullres)
|
||||||
{
|
{
|
||||||
mDesiredDiscardLevel = 0;
|
mDesiredDiscardLevel = 0;
|
||||||
|
|
@ -1782,16 +1790,9 @@ void LLViewerFetchedTexture::processTextureStats()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
U32 desired_size = MAX_IMAGE_SIZE_DEFAULT; // MAX_IMAGE_SIZE_DEFAULT = 2048 and max size ever is 4096
|
|
||||||
// <FS:Ansariel> Keep restriction on "fetched" (seems to be HUD) textures as well
|
|
||||||
if (mBoostLevel <= LLGLTexture::BOOST_SCULPTED)
|
|
||||||
{
|
|
||||||
desired_size = DESIRED_NORMAL_TEXTURE_SIZE;
|
|
||||||
}
|
|
||||||
// </FS:Ansariel>
|
|
||||||
if(!mKnownDrawWidth || !mKnownDrawHeight || (S32)mFullWidth <= mKnownDrawWidth || (S32)mFullHeight <= mKnownDrawHeight)
|
if(!mKnownDrawWidth || !mKnownDrawHeight || (S32)mFullWidth <= mKnownDrawWidth || (S32)mFullHeight <= mKnownDrawHeight)
|
||||||
{
|
{
|
||||||
if (mFullWidth > desired_size || mFullHeight > desired_size)
|
if (mFullWidth > max_tex_res || mFullHeight > max_tex_res)
|
||||||
{
|
{
|
||||||
mDesiredDiscardLevel = 1;
|
mDesiredDiscardLevel = 1;
|
||||||
}
|
}
|
||||||
|
|
@ -3030,12 +3031,14 @@ void LLViewerLODTexture::processTextureStats()
|
||||||
|
|
||||||
static LLCachedControl<bool> textures_fullres(gSavedSettings,"TextureLoadFullRes", false);
|
static LLCachedControl<bool> textures_fullres(gSavedSettings,"TextureLoadFullRes", false);
|
||||||
|
|
||||||
{ // restrict texture resolution to download based on RenderMaxTextureResolution
|
F32 max_tex_res = MAX_IMAGE_SIZE_DEFAULT;
|
||||||
|
if (mBoostLevel < LLGLTexture::BOOST_HIGH)
|
||||||
|
{
|
||||||
|
// restrict texture resolution to download based on RenderMaxTextureResolution
|
||||||
static LLCachedControl<U32> max_texture_resolution(gSavedSettings, "RenderMaxTextureResolution", 2048);
|
static LLCachedControl<U32> max_texture_resolution(gSavedSettings, "RenderMaxTextureResolution", 2048);
|
||||||
// sanity clamp debug setting to avoid settings hack shenanigans
|
// sanity clamp debug setting to avoid settings hack shenanigans
|
||||||
F32 tex_res = (F32)llclamp((S32)max_texture_resolution, 512, 2048);
|
max_tex_res = (F32)llclamp((S32)max_texture_resolution, 512, MAX_IMAGE_SIZE_DEFAULT);
|
||||||
tex_res *= tex_res;
|
mMaxVirtualSize = llmin(mMaxVirtualSize, max_tex_res * max_tex_res);
|
||||||
mMaxVirtualSize = llmin(mMaxVirtualSize, tex_res);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (textures_fullres)
|
if (textures_fullres)
|
||||||
|
|
@ -3091,12 +3094,7 @@ void LLViewerLODTexture::processTextureStats()
|
||||||
discard_level = floorf(discard_level);
|
discard_level = floorf(discard_level);
|
||||||
|
|
||||||
F32 min_discard = 0.f;
|
F32 min_discard = 0.f;
|
||||||
U32 desired_size = MAX_IMAGE_SIZE_DEFAULT; // MAX_IMAGE_SIZE_DEFAULT = 2048 and max size ever is 4096
|
if (mFullWidth > max_tex_res || mFullHeight > max_tex_res)
|
||||||
if (mBoostLevel <= LLGLTexture::BOOST_SCULPTED)
|
|
||||||
{
|
|
||||||
desired_size = DESIRED_NORMAL_TEXTURE_SIZE;
|
|
||||||
}
|
|
||||||
if (mFullWidth > desired_size || mFullHeight > desired_size)
|
|
||||||
min_discard = 1.f;
|
min_discard = 1.f;
|
||||||
|
|
||||||
discard_level = llclamp(discard_level, min_discard, (F32)MAX_DISCARD_LEVEL);
|
discard_level = llclamp(discard_level, min_discard, (F32)MAX_DISCARD_LEVEL);
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,6 @@
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
// <FS:Ansariel> Max texture resolution
|
// <FS:Ansariel> Max texture resolution
|
||||||
extern U32 DESIRED_NORMAL_TEXTURE_SIZE;
|
|
||||||
constexpr F32 MIN_VRAM_BUDGET = 768.f; // <FS:Ansariel> Expose max texture VRAM setting
|
constexpr F32 MIN_VRAM_BUDGET = 768.f; // <FS:Ansariel> Expose max texture VRAM setting
|
||||||
|
|
||||||
class LLFace;
|
class LLFace;
|
||||||
|
|
|
||||||
|
|
@ -2095,33 +2095,6 @@ LLViewerWindow::LLViewerWindow(const Params& p)
|
||||||
gSavedSettings.setU32("RenderQualityPerformance", 0);
|
gSavedSettings.setU32("RenderQualityPerformance", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// <FS:Ansariel> Max texture resolution / Zi: changed this to accept pixel values so we are independent from maximum texture size
|
|
||||||
if (gSavedSettings.getBOOL("FSRestrictMaxTextureSize"))
|
|
||||||
{
|
|
||||||
// fallback value if no matching pixel size is found (i.e. someone fiddled with the debugs)
|
|
||||||
DESIRED_NORMAL_TEXTURE_SIZE = 512;
|
|
||||||
|
|
||||||
// clamp pixels between 512 and half the current maximum texture size
|
|
||||||
U32 pixels = llclamp(gSavedSettings.getU32("FSRestrictMaxTexturePixels"), 512, (U32)LLViewerFetchedTexture::MAX_IMAGE_SIZE_DEFAULT / 2);
|
|
||||||
|
|
||||||
// check pixel value against powers of 2 up to (not including) current maximum texture size
|
|
||||||
U32 pow_of_2 = 512;
|
|
||||||
while(pow_of_2 < (U32)LLViewerFetchedTexture::MAX_IMAGE_SIZE_DEFAULT)
|
|
||||||
{
|
|
||||||
// power of 2 matches, save it
|
|
||||||
if (pixels == pow_of_2)
|
|
||||||
{
|
|
||||||
DESIRED_NORMAL_TEXTURE_SIZE = pixels;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// next power of 2
|
|
||||||
pow_of_2 <<= 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
LL_INFOS() << "Maximum fetched texture size: " << DESIRED_NORMAL_TEXTURE_SIZE << "px" << LL_ENDL;
|
|
||||||
// </FS:Ansariel>
|
|
||||||
|
|
||||||
// Init the image list. Must happen after GL is initialized and before the images that
|
// Init the image list. Must happen after GL is initialized and before the images that
|
||||||
// LLViewerWindow needs are requested, as well as before LLViewerMedia starts updating images.
|
// LLViewerWindow needs are requested, as well as before LLViewerMedia starts updating images.
|
||||||
LLImageGL::initClass(mWindow, LLViewerTexture::MAX_GL_IMAGE_CATEGORY, false, gSavedSettings.getBOOL("RenderGLMultiThreadedTextures"), gSavedSettings.getBOOL("RenderGLMultiThreadedMedia"));
|
LLImageGL::initClass(mWindow, LLViewerTexture::MAX_GL_IMAGE_CATEGORY, false, gSavedSettings.getBOOL("RenderGLMultiThreadedTextures"), gSavedSettings.getBOOL("RenderGLMultiThreadedMedia"));
|
||||||
|
|
|
||||||
|
|
@ -4022,7 +4022,12 @@ void LLPipeline::renderSelectedFaces(const LLColor4& color)
|
||||||
|
|
||||||
for (auto facep : mSelectedFaces)
|
for (auto facep : mSelectedFaces)
|
||||||
{
|
{
|
||||||
if (!facep || facep->getDrawable()->isDead())
|
if (!facep || !facep->getViewerObject())
|
||||||
|
{
|
||||||
|
LLSelectMgr::getInstance()->clearSelections();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!facep->getDrawable() || facep->getDrawable()->isDead())
|
||||||
{
|
{
|
||||||
LL_ERRS() << "Bad face on selection" << LL_ENDL;
|
LL_ERRS() << "Bad face on selection" << LL_ENDL;
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -199,22 +199,19 @@
|
||||||
</text>
|
</text>
|
||||||
<check_box label="Minimale Texturen laden" tool_tip="Diese Einstellung setzt den 'TextureDisable'-Parameter - lädt Texturen extrem langsam, eventuell nützlich für Computer mit langsamer GPU" name="TexturesLoaded"/>
|
<check_box label="Minimale Texturen laden" tool_tip="Diese Einstellung setzt den 'TextureDisable'-Parameter - lädt Texturen extrem langsam, eventuell nützlich für Computer mit langsamer GPU" name="TexturesLoaded"/>
|
||||||
<check_box label="HTTP für Laden von Texturen verwenden" tool_tip="Aktiviert das Laden von Texturen über das HTTP-Protokoll - deaktivieren wenn es Probleme mit schlecht oder nicht korrekt ladenden Texturen gibt und das veraltete UDP-Protokoll verwendet werden soll." name="TexturesHTTP"/>
|
<check_box label="HTTP für Laden von Texturen verwenden" tool_tip="Aktiviert das Laden von Texturen über das HTTP-Protokoll - deaktivieren wenn es Probleme mit schlecht oder nicht korrekt ladenden Texturen gibt und das veraltete UDP-Protokoll verwendet werden soll." name="TexturesHTTP"/>
|
||||||
<check_box label="Maximale Auflösung für Texturen:" tool_tip="Beschränkt die maximale Auflösung für Inworld-Texturen. Dies erlaubt die Darstellung von mehreren Texturen bevor der vorhandene Texturspeicher aufgebraucht ist und unscharfe Texturen dargestellt werden." name="FSRestrictMaxTextureSize"/>
|
<text name="FSRestrictMaxTextureSize">
|
||||||
<combo_box name="FSRestrictMaxTexturePixels">
|
Maximale Auflösung für Texturen:
|
||||||
|
</text>
|
||||||
|
<combo_box tool_tip="Beschränkt die maximale Auflösung für Inworld-Texturen. Dies erlaubt die Darstellung von mehreren Texturen bevor der vorhandene Texturspeicher aufgebraucht ist und unscharfe Texturen dargestellt werden." name="FSRestrictMaxTexturePixels">
|
||||||
<combo_box.item label="512 Pixel" name="512"/>
|
<combo_box.item label="512 Pixel" name="512"/>
|
||||||
<combo_box.item label="1024 Pixel" name="1024"/>
|
<combo_box.item label="1024 Pixel" name="1024"/>
|
||||||
<!-- 2048 is the current maximum, so this only becomes important if we get 4096 pixel textures
|
|
||||||
<combo_box.item label="2048 Pixel" name="2048"/>
|
<combo_box.item label="2048 Pixel" name="2048"/>
|
||||||
-->
|
|
||||||
</combo_box>
|
</combo_box>
|
||||||
<text name="FSRestrictMaxTextureSizeRestartText">
|
|
||||||
(erfordert Neustart)
|
|
||||||
</text>
|
|
||||||
<slider label="Max. Anzahl gleichzeitiger HTTP-GET-Anfragen" name="HTTPFetchMaxRequests"/>
|
<slider label="Max. Anzahl gleichzeitiger HTTP-GET-Anfragen" name="HTTPFetchMaxRequests"/>
|
||||||
<text name="TextureDetailLabel" width="215" tool_tip="Qualitätslevel, auf das Texturen geladen werden. Beeinflusst die Einstellung TextureDiscardLevel">
|
<text name="TextureDetailLabel" width="215">
|
||||||
Maximales Qualitätslevel für Texturen:
|
Maximales Qualitätslevel für Texturen:
|
||||||
</text>
|
</text>
|
||||||
<combo_box name="TextureDetail">
|
<combo_box tool_tip="Qualitätslevel, auf das Texturen geladen werden. Beeinflusst die Einstellung TextureDiscardLevel" name="TextureDetail">
|
||||||
<combo_box.item label="Normale (0) Qualität" name="0"/>
|
<combo_box.item label="Normale (0) Qualität" name="0"/>
|
||||||
<combo_box.item label="Mittlere (3) Qualität" name="3"/>
|
<combo_box.item label="Mittlere (3) Qualität" name="3"/>
|
||||||
<combo_box.item label="Geringe (4) Qualität" name="4"/>
|
<combo_box.item label="Geringe (4) Qualität" name="4"/>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||||
<floater
|
<floater
|
||||||
height="430"
|
height="452"
|
||||||
layout="topleft"
|
layout="topleft"
|
||||||
name="prefs_graphics_advanced"
|
name="prefs_graphics_advanced"
|
||||||
help_topic="Preferences_Graphics_Advanced"
|
help_topic="Preferences_Graphics_Advanced"
|
||||||
|
|
@ -118,6 +118,41 @@
|
||||||
name="MaxLights"
|
name="MaxLights"
|
||||||
top_delta="16"
|
top_delta="16"
|
||||||
width="336" />
|
width="336" />
|
||||||
|
<text
|
||||||
|
type="string"
|
||||||
|
length="1"
|
||||||
|
follows="left|top"
|
||||||
|
height="16"
|
||||||
|
layout="topleft"
|
||||||
|
top_delta="16"
|
||||||
|
left="30"
|
||||||
|
width="130"
|
||||||
|
name="MaxTextureResolutionLabel"
|
||||||
|
text_readonly_color="LabelDisabledColor">
|
||||||
|
Maximum LOD resolution:
|
||||||
|
</text>
|
||||||
|
<combo_box
|
||||||
|
control_name="RenderMaxTextureResolution"
|
||||||
|
height="19"
|
||||||
|
layout="topleft"
|
||||||
|
left_pad="40"
|
||||||
|
top_delta="0"
|
||||||
|
name="MaxTextureResolution"
|
||||||
|
tool_tip="Maximum resolution for 'level of detail' textures"
|
||||||
|
width="90">
|
||||||
|
<combo_box.item
|
||||||
|
label="512"
|
||||||
|
name="512"
|
||||||
|
value="512"/>
|
||||||
|
<combo_box.item
|
||||||
|
label="1024"
|
||||||
|
name="1024"
|
||||||
|
value="1024"/>
|
||||||
|
<combo_box.item
|
||||||
|
label="2048"
|
||||||
|
name="2048"
|
||||||
|
value="2048"/>
|
||||||
|
</combo_box>
|
||||||
|
|
||||||
<check_box
|
<check_box
|
||||||
control_name="RenderVSyncEnable"
|
control_name="RenderVSyncEnable"
|
||||||
|
|
@ -152,7 +187,7 @@
|
||||||
layout="topleft"
|
layout="topleft"
|
||||||
left="30"
|
left="30"
|
||||||
top_delta="16"
|
top_delta="16"
|
||||||
width="128"
|
width="130"
|
||||||
name="AvatarComplexityModeLabel"
|
name="AvatarComplexityModeLabel"
|
||||||
text_readonly_color="LabelDisabledColor">
|
text_readonly_color="LabelDisabledColor">
|
||||||
Avatar display:
|
Avatar display:
|
||||||
|
|
@ -160,10 +195,10 @@
|
||||||
|
|
||||||
<combo_box
|
<combo_box
|
||||||
control_name="RenderAvatarComplexityMode"
|
control_name="RenderAvatarComplexityMode"
|
||||||
height="18"
|
height="19"
|
||||||
layout="topleft"
|
layout="topleft"
|
||||||
left_delta="130"
|
left_pad="40"
|
||||||
top_delta="0"
|
top_delta="-1"
|
||||||
name="AvatarComplexityMode"
|
name="AvatarComplexityMode"
|
||||||
width="150">
|
width="150">
|
||||||
<combo_box.item
|
<combo_box.item
|
||||||
|
|
@ -195,7 +230,7 @@
|
||||||
max_val="101"
|
max_val="101"
|
||||||
name="IndirectMaxComplexity"
|
name="IndirectMaxComplexity"
|
||||||
show_text="false"
|
show_text="false"
|
||||||
top_delta="16"
|
top_delta="19"
|
||||||
width="300">
|
width="300">
|
||||||
<slider.commit_callback
|
<slider.commit_callback
|
||||||
function="Pref.UpdateIndirectMaxComplexity"
|
function="Pref.UpdateIndirectMaxComplexity"
|
||||||
|
|
@ -368,7 +403,7 @@
|
||||||
left="30"
|
left="30"
|
||||||
name="antialiasing label"
|
name="antialiasing label"
|
||||||
top_delta="20"
|
top_delta="20"
|
||||||
width="120">
|
width="130">
|
||||||
Antialiasing:
|
Antialiasing:
|
||||||
</text>
|
</text>
|
||||||
<combo_box
|
<combo_box
|
||||||
|
|
@ -403,7 +438,7 @@
|
||||||
left="30"
|
left="30"
|
||||||
name="antialiasing quality label"
|
name="antialiasing quality label"
|
||||||
top_delta="20"
|
top_delta="20"
|
||||||
width="120">
|
width="130">
|
||||||
Antialiasing Quality:
|
Antialiasing Quality:
|
||||||
</text>
|
</text>
|
||||||
<combo_box
|
<combo_box
|
||||||
|
|
@ -1015,7 +1050,7 @@
|
||||||
layout="topleft"
|
layout="topleft"
|
||||||
left="13"
|
left="13"
|
||||||
name="horiz_border"
|
name="horiz_border"
|
||||||
top="393"
|
top="415"
|
||||||
top_delta="5"
|
top_delta="5"
|
||||||
width="774"/>
|
width="774"/>
|
||||||
<button
|
<button
|
||||||
|
|
|
||||||
|
|
@ -111,19 +111,12 @@
|
||||||
parameter="https://support.secondlife.com/"/>
|
parameter="https://support.secondlife.com/"/>
|
||||||
</menu_item_call>
|
</menu_item_call>
|
||||||
<menu_item_separator/>
|
<menu_item_separator/>
|
||||||
<menu_item_call
|
|
||||||
label="[SECOND_LIFE] News"
|
|
||||||
name="Second Life News">
|
|
||||||
<menu_item_call.on_click
|
|
||||||
function="Advanced.ShowURL"
|
|
||||||
parameter="http://community.secondlife.com/t5/Featured-News/bg-p/blog_feature_news"/>
|
|
||||||
</menu_item_call>
|
|
||||||
<menu_item_call
|
<menu_item_call
|
||||||
label="[SECOND_LIFE] Blogs"
|
label="[SECOND_LIFE] Blogs"
|
||||||
name="Second Life Blogs">
|
name="Second Life Blogs">
|
||||||
<menu_item_call.on_click
|
<menu_item_call.on_click
|
||||||
function="Advanced.ShowURL"
|
function="Advanced.ShowURL"
|
||||||
parameter="http://community.secondlife.com/t5/Blogs/ct-p/Blogs"/>
|
parameter="https://community.secondlife.com/news/"/>
|
||||||
</menu_item_call>
|
</menu_item_call>
|
||||||
<menu_item_separator/>
|
<menu_item_separator/>
|
||||||
-->
|
-->
|
||||||
|
|
|
||||||
|
|
@ -2640,19 +2640,12 @@
|
||||||
parameter="https://support.secondlife.com/"/>
|
parameter="https://support.secondlife.com/"/>
|
||||||
</menu_item_call>
|
</menu_item_call>
|
||||||
<menu_item_separator/>
|
<menu_item_separator/>
|
||||||
<menu_item_call
|
|
||||||
label="[SECOND_LIFE] News"
|
|
||||||
name="Second Life News">
|
|
||||||
<menu_item_call.on_click
|
|
||||||
function="Advanced.ShowURL"
|
|
||||||
parameter="http://community.secondlife.com/t5/Featured-News/bg-p/blog_feature_news"/>
|
|
||||||
</menu_item_call>
|
|
||||||
<menu_item_call
|
<menu_item_call
|
||||||
label="[SECOND_LIFE] Blogs"
|
label="[SECOND_LIFE] Blogs"
|
||||||
name="Second Life Blogs">
|
name="Second Life Blogs">
|
||||||
<menu_item_call.on_click
|
<menu_item_call.on_click
|
||||||
function="Advanced.ShowURL"
|
function="Advanced.ShowURL"
|
||||||
parameter="http://community.secondlife.com/t5/Blogs/ct-p/Blogs"/>
|
parameter="https://community.secondlife.com/news/"/>
|
||||||
</menu_item_call>-->
|
</menu_item_call>-->
|
||||||
<menu_item_separator/>
|
<menu_item_separator/>
|
||||||
<menu_item_call
|
<menu_item_call
|
||||||
|
|
|
||||||
|
|
@ -1320,23 +1320,24 @@ If you do not understand the distinction then leave this control alone."
|
||||||
Texture Rendering:
|
Texture Rendering:
|
||||||
</text>
|
</text>
|
||||||
|
|
||||||
<check_box
|
<text
|
||||||
control_name="FSRestrictMaxTextureSize"
|
type="string"
|
||||||
|
follows="left|top"
|
||||||
height="16"
|
height="16"
|
||||||
label="Restrict maximum texture resolution to:"
|
|
||||||
tool_tip="Set this restrict the maximum display resolution for inworld textures. This allows displaying more textures before exceeding the available texture memory and observing blurry textures."
|
|
||||||
layout="topleft"
|
layout="topleft"
|
||||||
left_delta="10"
|
left_delta="10"
|
||||||
name="FSRestrictMaxTextureSize"
|
name="FSRestrictMaxTextureSize"
|
||||||
top_pad="4"
|
top_pad="4"
|
||||||
width="250"/>
|
width="250">
|
||||||
|
Restrict maximum texture resolution to:
|
||||||
|
</text>
|
||||||
|
|
||||||
<combo_box
|
<combo_box
|
||||||
control_name="FSRestrictMaxTexturePixels"
|
control_name="RenderMaxTextureResolution"
|
||||||
enabled_control="FSRestrictMaxTextureSize"
|
|
||||||
height="20"
|
height="20"
|
||||||
layout="topleft"
|
layout="topleft"
|
||||||
left_pad="2"
|
left_pad="2"
|
||||||
|
tool_tip="Sets the maximum display resolution for inworld textures. This allows displaying more textures before exceeding the available texture memory and observing blurry textures."
|
||||||
top_delta="-2"
|
top_delta="-2"
|
||||||
name="FSRestrictMaxTexturePixels"
|
name="FSRestrictMaxTexturePixels"
|
||||||
width="100">
|
width="100">
|
||||||
|
|
@ -1348,28 +1349,12 @@ If you do not understand the distinction then leave this control alone."
|
||||||
label="1024 pixels"
|
label="1024 pixels"
|
||||||
name="1024"
|
name="1024"
|
||||||
value="1024"/>
|
value="1024"/>
|
||||||
<!-- 2048 is the current maximum, so this only becomes important if we get 4096 pixel textures
|
|
||||||
<combo_box.item
|
<combo_box.item
|
||||||
label="2048 pixels"
|
label="2048 pixels"
|
||||||
name="2048"
|
name="2048"
|
||||||
value="2048"/>
|
value="2048"/>
|
||||||
-->
|
|
||||||
</combo_box>
|
</combo_box>
|
||||||
|
|
||||||
<text
|
|
||||||
name="FSRestrictMaxTextureSizeRestartText"
|
|
||||||
type="string"
|
|
||||||
text_color="White_50"
|
|
||||||
length="1"
|
|
||||||
follows="left|top"
|
|
||||||
height="12"
|
|
||||||
layout="topleft"
|
|
||||||
left_pad="10"
|
|
||||||
top_delta="2"
|
|
||||||
width="150">
|
|
||||||
(requires restart)
|
|
||||||
</text>
|
|
||||||
|
|
||||||
<!-- New Texture detail 5 is lowest, 0 is highest -->
|
<!-- New Texture detail 5 is lowest, 0 is highest -->
|
||||||
<text
|
<text
|
||||||
type="string"
|
type="string"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue