Merge branch 'release/2024.09-ExtraFPS' of https://github.com/secondlife/viewer
# Conflicts: # indra/newview/skins/default/xui/en/panel_preferences_graphics1.xmlmaster
commit
2e4c9f73b4
|
|
@ -1085,7 +1085,27 @@ namespace tut
|
|||
return false;
|
||||
}
|
||||
|
||||
std::list<LLSD> mHistory;
|
||||
template <typename CALLABLE>
|
||||
void checkHistory(CALLABLE&& code)
|
||||
{
|
||||
try
|
||||
{
|
||||
// we expect this lambda to contain tut::ensure() calls
|
||||
std::forward<CALLABLE>(code)(mHistory);
|
||||
}
|
||||
catch (const failure&)
|
||||
{
|
||||
LL_INFOS() << "event history:" << LL_ENDL;
|
||||
for (const LLSD& item : mHistory)
|
||||
{
|
||||
LL_INFOS() << item << LL_ENDL;
|
||||
}
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
using Listory = std::list<LLSD>;
|
||||
Listory mHistory;
|
||||
LLTempBoundListener mConnection;
|
||||
};
|
||||
|
||||
|
|
@ -1136,23 +1156,26 @@ namespace tut
|
|||
// finish out the run
|
||||
waitfor(*py.mPy);
|
||||
// now verify history
|
||||
std::list<LLSD>::const_iterator li(listener.mHistory.begin()),
|
||||
lend(listener.mHistory.end());
|
||||
ensure("no events", li != lend);
|
||||
ensure_equals("history[0]", (*li)["data"].asString(), "abc");
|
||||
ensure_equals("history[0] len", (*li)["len"].asInteger(), 3);
|
||||
++li;
|
||||
ensure("only 1 event", li != lend);
|
||||
ensure_equals("history[1]", (*li)["data"].asString(), "abcdef");
|
||||
ensure_equals("history[0] len", (*li)["len"].asInteger(), 6);
|
||||
++li;
|
||||
ensure("only 2 events", li != lend);
|
||||
ensure_equals("history[2]", (*li)["data"].asString(), "abcdefghi" EOL);
|
||||
ensure_equals("history[0] len", (*li)["len"].asInteger(), 9 + sizeof(EOL) - 1);
|
||||
++li;
|
||||
// We DO NOT expect a whole new event for the second line because we
|
||||
// disconnected.
|
||||
ensure("more than 3 events", li == lend);
|
||||
listener.checkHistory(
|
||||
[](const EventListener::Listory& history)
|
||||
{
|
||||
auto li(history.begin()), lend(history.end());
|
||||
ensure("no events", li != lend);
|
||||
ensure_equals("history[0]", (*li)["data"].asString(), "abc");
|
||||
ensure_equals("history[0] len", (*li)["len"].asInteger(), 3);
|
||||
++li;
|
||||
ensure("only 1 event", li != lend);
|
||||
ensure_equals("history[1]", (*li)["data"].asString(), "abcdef");
|
||||
ensure_equals("history[0] len", (*li)["len"].asInteger(), 6);
|
||||
++li;
|
||||
ensure("only 2 events", li != lend);
|
||||
ensure_equals("history[2]", (*li)["data"].asString(), "abcdefghi" EOL);
|
||||
ensure_equals("history[0] len", (*li)["len"].asInteger(), 9 + sizeof(EOL) - 1);
|
||||
++li;
|
||||
// We DO NOT expect a whole new event for the second line because we
|
||||
// disconnected.
|
||||
ensure("more than 3 events", li == lend);
|
||||
});
|
||||
}
|
||||
|
||||
template<> template<>
|
||||
|
|
@ -1172,14 +1195,17 @@ namespace tut
|
|||
// (or any other intervening layer) does crazy buffering. What we want
|
||||
// to ensure is that there was exactly ONE event with "eof" true, and
|
||||
// that it was the LAST event.
|
||||
std::list<LLSD>::const_reverse_iterator rli(listener.mHistory.rbegin()),
|
||||
rlend(listener.mHistory.rend());
|
||||
ensure("no events", rli != rlend);
|
||||
ensure("last event not \"eof\"", (*rli)["eof"].asBoolean());
|
||||
while (++rli != rlend)
|
||||
{
|
||||
ensure("\"eof\" event not last", ! (*rli)["eof"].asBoolean());
|
||||
}
|
||||
listener.checkHistory(
|
||||
[](const EventListener::Listory& history)
|
||||
{
|
||||
auto rli(history.rbegin()), rlend(history.rend());
|
||||
ensure("no events", rli != rlend);
|
||||
ensure("last event not \"eof\"", (*rli)["eof"].asBoolean());
|
||||
while (++rli != rlend)
|
||||
{
|
||||
ensure("\"eof\" event not last", ! (*rli)["eof"].asBoolean());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
template<> template<>
|
||||
|
|
@ -1202,13 +1228,17 @@ namespace tut
|
|||
ensure_equals("getLimit() after setlimit(10)", childout.getLimit(), 10);
|
||||
// okay, pump I/O to pick up output from child
|
||||
waitfor(*py.mPy);
|
||||
ensure("no events", ! listener.mHistory.empty());
|
||||
// For all we know, that data could have arrived in several different
|
||||
// bursts... probably not, but anyway, only check the last one.
|
||||
ensure_equals("event[\"len\"]",
|
||||
listener.mHistory.back()["len"].asInteger(), abc.length());
|
||||
ensure_equals("length of setLimit(10) data",
|
||||
listener.mHistory.back()["data"].asString().length(), 10);
|
||||
listener.checkHistory(
|
||||
[abc](const EventListener::Listory& history)
|
||||
{
|
||||
ensure("no events", ! history.empty());
|
||||
// For all we know, that data could have arrived in several different
|
||||
// bursts... probably not, but anyway, only check the last one.
|
||||
ensure_equals("event[\"len\"]",
|
||||
history.back()["len"].asInteger(), abc.length());
|
||||
ensure_equals("length of setLimit(10) data",
|
||||
history.back()["data"].asString().length(), 10);
|
||||
});
|
||||
}
|
||||
|
||||
template<> template<>
|
||||
|
|
@ -1275,18 +1305,22 @@ namespace tut
|
|||
params.postend = pumpname;
|
||||
LLProcessPtr child = LLProcess::create(params);
|
||||
ensure("shouldn't have launched", ! child);
|
||||
ensure_equals("number of postend events", listener.mHistory.size(), 1);
|
||||
LLSD postend(listener.mHistory.front());
|
||||
ensure("has id", ! postend.has("id"));
|
||||
ensure_equals("desc", postend["desc"].asString(), std::string(params.desc));
|
||||
ensure_equals("state", postend["state"].asInteger(), LLProcess::UNSTARTED);
|
||||
ensure("has data", ! postend.has("data"));
|
||||
std::string error(postend["string"]);
|
||||
// All we get from canned parameter validation is a bool, so the
|
||||
// "validation failed" message we ourselves generate can't mention
|
||||
// "executable" by name. Just check that it's nonempty.
|
||||
//ensure_contains("error", error, "executable");
|
||||
ensure("string", ! error.empty());
|
||||
listener.checkHistory(
|
||||
[¶ms](const EventListener::Listory& history)
|
||||
{
|
||||
ensure_equals("number of postend events", history.size(), 1);
|
||||
LLSD postend(history.front());
|
||||
ensure("has id", ! postend.has("id"));
|
||||
ensure_equals("desc", postend["desc"].asString(), std::string(params.desc));
|
||||
ensure_equals("state", postend["state"].asInteger(), LLProcess::UNSTARTED);
|
||||
ensure("has data", ! postend.has("data"));
|
||||
std::string error(postend["string"]);
|
||||
// All we get from canned parameter validation is a bool, so the
|
||||
// "validation failed" message we ourselves generate can't mention
|
||||
// "executable" by name. Just check that it's nonempty.
|
||||
//ensure_contains("error", error, "executable");
|
||||
ensure("string", ! error.empty());
|
||||
});
|
||||
}
|
||||
|
||||
template<> template<>
|
||||
|
|
@ -1308,16 +1342,20 @@ namespace tut
|
|||
{
|
||||
yield();
|
||||
}
|
||||
ensure("no postend event", i < timeout);
|
||||
ensure_equals("number of postend events", listener.mHistory.size(), 1);
|
||||
LLSD postend(listener.mHistory.front());
|
||||
ensure_equals("id", postend["id"].asInteger(), childid);
|
||||
ensure("desc empty", ! postend["desc"].asString().empty());
|
||||
ensure_equals("state", postend["state"].asInteger(), LLProcess::EXITED);
|
||||
ensure_equals("data", postend["data"].asInteger(), 35);
|
||||
std::string str(postend["string"]);
|
||||
ensure_contains("string", str, "exited");
|
||||
ensure_contains("string", str, "35");
|
||||
listener.checkHistory(
|
||||
[i, timeout, childid](const EventListener::Listory& history)
|
||||
{
|
||||
ensure("no postend event", i < timeout);
|
||||
ensure_equals("number of postend events", history.size(), 1);
|
||||
LLSD postend(history.front());
|
||||
ensure_equals("id", postend["id"].asInteger(), childid);
|
||||
ensure("desc empty", ! postend["desc"].asString().empty());
|
||||
ensure_equals("state", postend["state"].asInteger(), LLProcess::EXITED);
|
||||
ensure_equals("data", postend["data"].asInteger(), 35);
|
||||
std::string str(postend["string"]);
|
||||
ensure_contains("string", str, "exited");
|
||||
ensure_contains("string", str, "35");
|
||||
});
|
||||
}
|
||||
|
||||
struct PostendListener
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
version 71
|
||||
version 72
|
||||
// The version number above should be incremented IF AND ONLY IF some
|
||||
// change has been made that is sufficiently important to justify
|
||||
// resetting the graphics preferences of all users to the recommended
|
||||
|
|
@ -127,8 +127,6 @@ RenderCASSharpness 1 0
|
|||
RenderExposure 1 1
|
||||
RenderTonemapType 1 1
|
||||
RenderTonemapMix 1 0.7
|
||||
RenderEnableEmissiveBuffer 1 0
|
||||
RenderHDREnabled 1 0
|
||||
RenderVintageMode 1 1
|
||||
|
||||
//
|
||||
|
|
@ -170,9 +168,7 @@ RenderCASSharpness 1 0
|
|||
RenderExposure 1 1
|
||||
RenderTonemapType 1 1
|
||||
RenderTonemapMix 1 0.7
|
||||
RenderEnableEmissiveBuffer 1 1
|
||||
RenderHDREnabled 1 1
|
||||
RenderVintageMode 1 0
|
||||
RenderVintageMode 1 1
|
||||
|
||||
//
|
||||
// Medium Graphics Settings (standard)
|
||||
|
|
@ -213,9 +209,6 @@ RenderCASSharpness 1 0
|
|||
RenderExposure 1 1
|
||||
RenderTonemapType 1 1
|
||||
RenderTonemapMix 1 0.7
|
||||
RenderEnableEmissiveBuffer 1 1
|
||||
RenderHDREnabled 1 1
|
||||
RenderVintageMode 1 0
|
||||
|
||||
//
|
||||
// Medium High Graphics Settings
|
||||
|
|
@ -256,9 +249,6 @@ RenderCASSharpness 1 0
|
|||
RenderExposure 1 1
|
||||
RenderTonemapType 1 1
|
||||
RenderTonemapMix 1 0.7
|
||||
RenderEnableEmissiveBuffer 1 1
|
||||
RenderHDREnabled 1 1
|
||||
RenderVintageMode 1 0
|
||||
|
||||
//
|
||||
// High Graphics Settings (SSAO + sun shadows)
|
||||
|
|
@ -299,9 +289,6 @@ RenderCASSharpness 1 0.4
|
|||
RenderExposure 1 1
|
||||
RenderTonemapType 1 1
|
||||
RenderTonemapMix 1 0.7
|
||||
RenderEnableEmissiveBuffer 1 1
|
||||
RenderHDREnabled 1 1
|
||||
RenderVintageMode 1 0
|
||||
|
||||
//
|
||||
// High Ultra Graphics Settings (deferred + SSAO + all shadows)
|
||||
|
|
@ -342,9 +329,6 @@ RenderCASSharpness 1 0.4
|
|||
RenderExposure 1 1
|
||||
RenderTonemapType 1 1
|
||||
RenderTonemapMix 1 0.7
|
||||
RenderEnableEmissiveBuffer 1 1
|
||||
RenderHDREnabled 1 1
|
||||
RenderVintageMode 1 0
|
||||
|
||||
//
|
||||
// Ultra graphics (REALLY PURTY!)
|
||||
|
|
@ -385,9 +369,6 @@ RenderCASSharpness 1 0.4
|
|||
RenderExposure 1 1
|
||||
RenderTonemapType 1 1
|
||||
RenderTonemapMix 1 0.7
|
||||
RenderEnableEmissiveBuffer 1 1
|
||||
RenderHDREnabled 1 1
|
||||
RenderVintageMode 1 0
|
||||
|
||||
//
|
||||
// Class Unknown Hardware (unknown)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
version 51
|
||||
version 52
|
||||
// The version number above should be incremented IF AND ONLY IF some
|
||||
// change has been made that is sufficiently important to justify
|
||||
// resetting the graphics preferences of all users to the recommended
|
||||
|
|
@ -127,8 +127,6 @@ RenderCASSharpness 1 0
|
|||
RenderExposure 1 1
|
||||
RenderTonemapType 1 1
|
||||
RenderTonemapMix 1 0.7
|
||||
RenderEnableEmissiveBuffer 1 0
|
||||
RenderHDREnabled 1 0
|
||||
RenderVintageMode 1 1
|
||||
|
||||
//
|
||||
|
|
@ -170,9 +168,7 @@ RenderCASSharpness 1 0
|
|||
RenderExposure 1 1
|
||||
RenderTonemapType 1 1
|
||||
RenderTonemapMix 1 0.7
|
||||
RenderEnableEmissiveBuffer 1 1
|
||||
RenderHDREnabled 1 1
|
||||
RenderVintageMode 1 0
|
||||
RenderVintageMode 1 1
|
||||
|
||||
//
|
||||
// Medium Graphics Settings (standard)
|
||||
|
|
@ -213,9 +209,6 @@ RenderCASSharpness 1 0
|
|||
RenderExposure 1 1
|
||||
RenderTonemapType 1 1
|
||||
RenderTonemapMix 1 0.7
|
||||
RenderEnableEmissiveBuffer 1 1
|
||||
RenderHDREnabled 1 1
|
||||
RenderVintageMode 1 0
|
||||
|
||||
//
|
||||
// Medium High Graphics Settings
|
||||
|
|
@ -256,9 +249,6 @@ RenderCASSharpness 1 0
|
|||
RenderExposure 1 1
|
||||
RenderTonemapType 1 1
|
||||
RenderTonemapMix 1 0.7
|
||||
RenderEnableEmissiveBuffer 1 1
|
||||
RenderHDREnabled 1 1
|
||||
RenderVintageMode 1 0
|
||||
|
||||
//
|
||||
// High Graphics Settings (SSAO + sun shadows)
|
||||
|
|
@ -299,9 +289,6 @@ RenderCASSharpness 1 0.4
|
|||
RenderExposure 1 1
|
||||
RenderTonemapType 1 1
|
||||
RenderTonemapMix 1 0.7
|
||||
RenderEnableEmissiveBuffer 1 1
|
||||
RenderHDREnabled 1 1
|
||||
RenderVintageMode 1 0
|
||||
|
||||
//
|
||||
// High Ultra Graphics Settings (deferred + SSAO + all shadows)
|
||||
|
|
@ -342,9 +329,6 @@ RenderCASSharpness 1 0.4
|
|||
RenderExposure 1 1
|
||||
RenderTonemapType 1 1
|
||||
RenderTonemapMix 1 0.7
|
||||
RenderEnableEmissiveBuffer 1 1
|
||||
RenderHDREnabled 1 1
|
||||
RenderVintageMode 1 0
|
||||
|
||||
//
|
||||
// Ultra graphics (REALLY PURTY!)
|
||||
|
|
@ -385,9 +369,6 @@ RenderCASSharpness 1 0.4
|
|||
RenderExposure 1 1
|
||||
RenderTonemapType 1 1
|
||||
RenderTonemapMix 1 0.7
|
||||
RenderEnableEmissiveBuffer 1 1
|
||||
RenderHDREnabled 1 1
|
||||
RenderVintageMode 1 0
|
||||
|
||||
//
|
||||
// Class Unknown Hardware (unknown)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
version 65
|
||||
version 66
|
||||
// The version number above should be incremented IF AND ONLY IF some
|
||||
// change has been made that is sufficiently important to justify
|
||||
// resetting the graphics preferences of all users to the recommended
|
||||
|
|
@ -165,7 +165,7 @@ RenderCASSharpness 1 0
|
|||
RenderExposure 1 1
|
||||
RenderTonemapType 1 1
|
||||
RenderTonemapMix 1 0.7
|
||||
RenderVintageMode 1 0
|
||||
RenderVintageMode 1 1
|
||||
|
||||
//
|
||||
// Medium Graphics Settings (standard)
|
||||
|
|
@ -206,7 +206,6 @@ RenderCASSharpness 1 0
|
|||
RenderExposure 1 1
|
||||
RenderTonemapType 1 1
|
||||
RenderTonemapMix 1 0.7
|
||||
RenderVintageMode 1 0
|
||||
|
||||
//
|
||||
// Medium High Graphics Settings
|
||||
|
|
@ -247,7 +246,6 @@ RenderCASSharpness 1 0
|
|||
RenderExposure 1 1
|
||||
RenderTonemapType 1 1
|
||||
RenderTonemapMix 1 0.7
|
||||
RenderVintageMode 1 0
|
||||
|
||||
//
|
||||
// High Graphics Settings (SSAO + sun shadows)
|
||||
|
|
@ -288,7 +286,6 @@ RenderCASSharpness 1 0
|
|||
RenderExposure 1 1
|
||||
RenderTonemapType 1 1
|
||||
RenderTonemapMix 1 0.7
|
||||
RenderVintageMode 1 0
|
||||
|
||||
//
|
||||
// High Ultra Graphics Settings (SSAO + all shadows)
|
||||
|
|
@ -329,7 +326,6 @@ RenderCASSharpness 1 0.4
|
|||
RenderExposure 1 1
|
||||
RenderTonemapType 1 1
|
||||
RenderTonemapMix 1 0.7
|
||||
RenderVintageMode 1 0
|
||||
|
||||
//
|
||||
// Ultra graphics (REALLY PURTY!)
|
||||
|
|
@ -370,7 +366,6 @@ RenderCASSharpness 1 0.4
|
|||
RenderExposure 1 1
|
||||
RenderTonemapType 1 1
|
||||
RenderTonemapMix 1 0.7
|
||||
RenderVintageMode 1 0
|
||||
|
||||
//
|
||||
// Class Unknown Hardware (unknown)
|
||||
|
|
|
|||
|
|
@ -727,6 +727,9 @@ void LLFeatureManager::applyBaseMasks()
|
|||
// make sure to disable background context activity in GL3 mode
|
||||
LLImageGLThread::sEnabledMedia = false;
|
||||
LLImageGLThread::sEnabledTextures = false;
|
||||
|
||||
// Make extra sure that vintage mode also gets enabled.
|
||||
gSavedSettings.setBOOL("RenderVintageMode", true);
|
||||
}
|
||||
|
||||
// now mask by gpu string
|
||||
|
|
|
|||
|
|
@ -2301,6 +2301,7 @@ void LLFloaterPreference::disableUnavailableSettings()
|
|||
{
|
||||
LLComboBox* ctrl_shadows = getChild<LLComboBox>("ShadowDetail");
|
||||
LLCheckBoxCtrl* ctrl_ssao = getChild<LLCheckBoxCtrl>("UseSSAO");
|
||||
LLSliderCtrl* cas_slider = getChild<LLSliderCtrl>("RenderSharpness");
|
||||
|
||||
// disabled deferred SSAO
|
||||
if (!LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferredSSAO"))
|
||||
|
|
@ -2315,6 +2316,20 @@ void LLFloaterPreference::disableUnavailableSettings()
|
|||
ctrl_shadows->setEnabled(false);
|
||||
ctrl_shadows->setValue(0);
|
||||
}
|
||||
|
||||
// Vintage mode
|
||||
LLCachedControl<bool> is_vintage(gSavedSettings, "RenderVintageMode");
|
||||
LLSliderCtrl* tonemapMix = getChild<LLSliderCtrl>("TonemapMix");
|
||||
LLComboBox* tonemapSelect = getChild<LLComboBox>("TonemapType");
|
||||
LLTextBox* tonemapLabel = getChild<LLTextBox>("TonemapTypeText");
|
||||
LLSliderCtrl* exposureSlider = getChild<LLSliderCtrl>("RenderExposure");
|
||||
|
||||
tonemapSelect->setEnabled(!is_vintage);
|
||||
tonemapLabel->setEnabled(!is_vintage);
|
||||
tonemapMix->setEnabled(!is_vintage);
|
||||
exposureSlider->setEnabled(!is_vintage);
|
||||
cas_slider->setEnabled(!is_vintage);
|
||||
|
||||
}
|
||||
|
||||
void LLFloaterPreference::refresh()
|
||||
|
|
|
|||
|
|
@ -272,6 +272,7 @@ void LLFloaterPreferenceGraphicsAdvanced::disableUnavailableSettings()
|
|||
LLCheckBoxCtrl* ctrl_dof = getChild<LLCheckBoxCtrl>("UseDoF");
|
||||
LLSliderCtrl* sky = getChild<LLSliderCtrl>("SkyMeshDetail");
|
||||
LLTextBox* sky_text = getChild<LLTextBox>("SkyMeshDetailText");
|
||||
LLSliderCtrl* cas_slider = getChild<LLSliderCtrl>("RenderSharpness");
|
||||
|
||||
// disabled windlight
|
||||
if (!LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders"))
|
||||
|
|
@ -331,6 +332,7 @@ void LLFloaterPreferenceGraphicsAdvanced::disableUnavailableSettings()
|
|||
tonemapLabel->setEnabled(!is_vintage);
|
||||
tonemapMix->setEnabled(!is_vintage);
|
||||
exposureSlider->setEnabled(!is_vintage);
|
||||
cas_slider->setEnabled(!is_vintage);
|
||||
}
|
||||
|
||||
void LLFloaterPreferenceGraphicsAdvanced::refreshEnabledState()
|
||||
|
|
|
|||
|
|
@ -754,6 +754,7 @@
|
|||
|
||||
<slider
|
||||
control_name="RenderExposure"
|
||||
disabled_control="RenderVintageMode"
|
||||
decimal_digits="1"
|
||||
follows="left|top"
|
||||
height="15"
|
||||
|
|
|
|||
Loading…
Reference in New Issue