Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts: # indra/llcommon/llallocator_heap_profile.cpp # indra/llui/lllayoutstack.cpp # indra/newview/app_settings/settings.xml # indra/newview/llappviewer.cpp # indra/newview/llappviewer.h # indra/newview/llfloaterpreference.cpp # indra/newview/llfloaterpreferencesgraphicsadvanced.cpp # indra/newview/llpanelmaininventory.cpp # indra/newview/llpanelmaininventory.h # indra/newview/lltextureview.cpp # indra/newview/pipeline.cpp # indra/newview/skins/default/xui/en/panel_preferences_colors.xmlmaster
commit
01f9dbc4e3
|
|
@ -18,8 +18,6 @@ set(llcommon_SOURCE_FILES
|
|||
commoncontrol.cpp
|
||||
indra_constants.cpp
|
||||
lazyeventapi.cpp
|
||||
llallocator.cpp
|
||||
llallocator_heap_profile.cpp
|
||||
llapp.cpp
|
||||
llapr.cpp
|
||||
llassettype.cpp
|
||||
|
|
@ -127,8 +125,6 @@ set(llcommon_HEADER_FILES
|
|||
lazyeventapi.h
|
||||
linden_common.h
|
||||
llalignedarray.h
|
||||
llallocator.h
|
||||
llallocator_heap_profile.h
|
||||
llapp.h
|
||||
llapr.h
|
||||
llassettype.h
|
||||
|
|
|
|||
|
|
@ -1,58 +0,0 @@
|
|||
/**
|
||||
* @file llallocator.cpp
|
||||
* @brief Implementation of the LLAllocator class.
|
||||
*
|
||||
* $LicenseInfo:firstyear=2009&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2010, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#include "linden_common.h"
|
||||
#include "llallocator.h"
|
||||
|
||||
//
|
||||
// stub implementations for when tcmalloc is disabled
|
||||
//
|
||||
|
||||
void LLAllocator::setProfilingEnabled(bool should_enable)
|
||||
{
|
||||
}
|
||||
|
||||
// static
|
||||
bool LLAllocator::isProfiling()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string LLAllocator::getRawProfile()
|
||||
{
|
||||
return std::string();
|
||||
}
|
||||
|
||||
LLAllocatorHeapProfile const & LLAllocator::getProfile()
|
||||
{
|
||||
mProf.mLines.clear();
|
||||
|
||||
// *TODO - avoid making all these extra copies of things...
|
||||
std::string prof_text = getRawProfile();
|
||||
//std::cout << prof_text << std::endl;
|
||||
mProf.parse(prof_text);
|
||||
return mProf;
|
||||
}
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
/**
|
||||
* @file llallocator.h
|
||||
* @brief Declaration of the LLAllocator class.
|
||||
*
|
||||
* $LicenseInfo:firstyear=2009&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2010, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifndef LL_LLALLOCATOR_H
|
||||
#define LL_LLALLOCATOR_H
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "llallocator_heap_profile.h"
|
||||
|
||||
class LL_COMMON_API LLAllocator {
|
||||
friend class LLMemoryView;
|
||||
|
||||
public:
|
||||
void setProfilingEnabled(bool should_enable);
|
||||
|
||||
static bool isProfiling();
|
||||
|
||||
LLAllocatorHeapProfile const & getProfile();
|
||||
|
||||
private:
|
||||
std::string getRawProfile();
|
||||
|
||||
private:
|
||||
LLAllocatorHeapProfile mProf;
|
||||
};
|
||||
|
||||
#endif // LL_LLALLOCATOR_H
|
||||
|
|
@ -1,149 +0,0 @@
|
|||
/**
|
||||
* @file llallocator_heap_profile.cpp
|
||||
* @brief Implementation of the parser for tcmalloc heap profile data.
|
||||
* @author Brad Kittenbrink
|
||||
*
|
||||
* $LicenseInfo:firstyear=2009&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2010, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
// <FS:ND> Disable some warnings on newer GCC versions.
|
||||
// This might also trigger on something like 4.8, but I did not such a GCC to test anything lower than 4.9 and higher than 4.6
|
||||
//<FS:TS> It does trigger on 4.8. Not sure about 4.7.
|
||||
#if LL_LINUX
|
||||
#pragma GCC diagnostic ignored "-Wuninitialized"
|
||||
#if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__ ) >= 40800
|
||||
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||
#endif
|
||||
#endif
|
||||
// </FS:ND>
|
||||
|
||||
#include "linden_common.h"
|
||||
#include "llallocator_heap_profile.h"
|
||||
|
||||
#include <boost/algorithm/string/split.hpp>
|
||||
#include <boost/bind.hpp>
|
||||
#include <boost/lexical_cast.hpp>
|
||||
#include <boost/range/iterator_range.hpp>
|
||||
|
||||
static const std::string HEAP_PROFILE_MAGIC_STR = "heap profile:";
|
||||
|
||||
static bool is_separator(char c)
|
||||
{
|
||||
return isspace(c) || c == '[' || c == ']' || c == ':';
|
||||
}
|
||||
|
||||
void LLAllocatorHeapProfile::parse(std::string const & prof_text)
|
||||
{
|
||||
// a typedef for handling a token in the string buffer
|
||||
// it's a begin/end pair of string::const_iterators
|
||||
typedef boost::iterator_range<std::string::const_iterator> range_t;
|
||||
|
||||
mLines.clear();
|
||||
|
||||
if(prof_text.compare(0, HEAP_PROFILE_MAGIC_STR.length(), HEAP_PROFILE_MAGIC_STR) != 0)
|
||||
{
|
||||
// *TODO - determine if there should be some better error state than
|
||||
// mLines being empty. -brad
|
||||
LL_WARNS() << "invalid heap profile data passed into parser." << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector< range_t > prof_lines;
|
||||
|
||||
std::string::const_iterator prof_begin = prof_text.begin() + HEAP_PROFILE_MAGIC_STR.length();
|
||||
|
||||
range_t prof_range(prof_begin, prof_text.end());
|
||||
boost::algorithm::split(prof_lines,
|
||||
prof_range,
|
||||
boost::bind(std::equal_to<llwchar>(), '\n', _1));
|
||||
|
||||
std::vector< range_t >::const_iterator i;
|
||||
for(i = prof_lines.begin(); i != prof_lines.end() && !i->empty(); ++i)
|
||||
{
|
||||
range_t const & line_text = *i;
|
||||
|
||||
std::vector<range_t> line_elems;
|
||||
|
||||
boost::algorithm::split(line_elems,
|
||||
line_text,
|
||||
is_separator);
|
||||
|
||||
std::vector< range_t >::iterator j;
|
||||
j = line_elems.begin();
|
||||
|
||||
while(j != line_elems.end() && j->empty()) { ++j; } // skip any separator tokens
|
||||
llassert_always(j != line_elems.end());
|
||||
U32 live_count = boost::lexical_cast<U32>(*j);
|
||||
++j;
|
||||
|
||||
while(j != line_elems.end() && j->empty()) { ++j; } // skip any separator tokens
|
||||
llassert_always(j != line_elems.end());
|
||||
U64 live_size = boost::lexical_cast<U64>(*j);
|
||||
++j;
|
||||
|
||||
while(j != line_elems.end() && j->empty()) { ++j; } // skip any separator tokens
|
||||
llassert_always(j != line_elems.end());
|
||||
U32 tot_count = boost::lexical_cast<U32>(*j);
|
||||
++j;
|
||||
|
||||
while(j != line_elems.end() && j->empty()) { ++j; } // skip any separator tokens
|
||||
llassert_always(j != line_elems.end());
|
||||
U64 tot_size = boost::lexical_cast<U64>(*j);
|
||||
++j;
|
||||
|
||||
while(j != line_elems.end() && j->empty()) { ++j; } // skip any separator tokens
|
||||
llassert(j != line_elems.end());
|
||||
if (j != line_elems.end())
|
||||
{
|
||||
++j; // skip the '@'
|
||||
|
||||
mLines.push_back(line(live_count, live_size, tot_count, tot_size));
|
||||
line & current_line = mLines.back();
|
||||
|
||||
for(; j != line_elems.end(); ++j)
|
||||
{
|
||||
if(!j->empty())
|
||||
{
|
||||
U32 marker = boost::lexical_cast<U32>(*j);
|
||||
current_line.mTrace.push_back(marker);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// *TODO - parse MAPPED_LIBRARIES section here if we're ever interested in it
|
||||
}
|
||||
|
||||
void LLAllocatorHeapProfile::dump(std::ostream & out) const
|
||||
{
|
||||
for (const LLAllocatorHeapProfile::line& line : mLines)
|
||||
{
|
||||
out << line.mLiveCount << ": " << line.mLiveSize << '[' << line.mTotalCount << ": " << line.mTotalSize << "] @";
|
||||
|
||||
for (const stack_marker marker : line.mTrace)
|
||||
{
|
||||
out << ' ' << marker;
|
||||
}
|
||||
out << '\n';
|
||||
}
|
||||
out.flush();
|
||||
}
|
||||
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
/**
|
||||
* @file llallocator_heap_profile.h
|
||||
* @brief Declaration of the parser for tcmalloc heap profile data.
|
||||
* @author Brad Kittenbrink
|
||||
*
|
||||
* $LicenseInfo:firstyear=2009&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2010, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifndef LL_LLALLOCATOR_HEAP_PROFILE_H
|
||||
#define LL_LLALLOCATOR_HEAP_PROFILE_H
|
||||
|
||||
#include "stdtypes.h"
|
||||
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
class LLAllocatorHeapProfile
|
||||
{
|
||||
public:
|
||||
typedef int stack_marker;
|
||||
|
||||
typedef std::vector<stack_marker> stack_trace;
|
||||
|
||||
struct line {
|
||||
line(U32 live_count, U64 live_size, U32 tot_count, U64 tot_size) :
|
||||
mLiveSize(live_size),
|
||||
mTotalSize(tot_size),
|
||||
mLiveCount(live_count),
|
||||
mTotalCount(tot_count)
|
||||
{
|
||||
}
|
||||
U64 mLiveSize, mTotalSize;
|
||||
U32 mLiveCount, mTotalCount;
|
||||
stack_trace mTrace;
|
||||
};
|
||||
|
||||
typedef std::vector<line> lines_t;
|
||||
|
||||
LLAllocatorHeapProfile()
|
||||
{
|
||||
}
|
||||
|
||||
void parse(std::string const & prof_text);
|
||||
|
||||
void dump(std::ostream & out) const;
|
||||
|
||||
public:
|
||||
lines_t mLines;
|
||||
};
|
||||
|
||||
|
||||
#endif // LL_LLALLOCATOR_HEAP_PROFILE_H
|
||||
|
|
@ -86,10 +86,6 @@ void LLLayoutPanel::initFromParams(const Params& p)
|
|||
|
||||
LLLayoutPanel::~LLLayoutPanel()
|
||||
{
|
||||
// probably not necessary, but...
|
||||
delete mResizeBar;
|
||||
mResizeBar = NULL;
|
||||
|
||||
gFocusMgr.removeKeyboardFocusWithoutCallback(this);
|
||||
}
|
||||
|
||||
|
|
@ -279,12 +275,9 @@ LLLayoutStack::~LLLayoutStack()
|
|||
LLUI::getInstance()->mSettingGroups["account"]->setLLSD(mSizeControlName, mSavedSizes);
|
||||
}
|
||||
// </FS:Zi>
|
||||
|
||||
e_panel_list_t panels = mPanels; // copy list of panel pointers
|
||||
mPanels.clear(); // clear so that removeChild() calls don't cause trouble
|
||||
std::for_each(panels.begin(), panels.end(), DeletePointer());
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLLayoutStack::draw()
|
||||
{
|
||||
updateLayout();
|
||||
|
|
@ -322,8 +315,14 @@ void LLLayoutStack::draw()
|
|||
}
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLLayoutStack::deleteAllChildren()
|
||||
{
|
||||
for (LLLayoutPanel* p : mPanels)
|
||||
{
|
||||
p->mResizeBar = nullptr;
|
||||
}
|
||||
|
||||
mPanels.clear();
|
||||
LLView::deleteAllChildren();
|
||||
|
||||
|
|
@ -333,29 +332,47 @@ void LLLayoutStack::deleteAllChildren()
|
|||
mNeedsLayout = true;
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLLayoutStack::removeChild(LLView* view)
|
||||
{
|
||||
LLLayoutPanel* embedded_panelp = findEmbeddedPanel(dynamic_cast<LLPanel*>(view));
|
||||
if (LLLayoutPanel* embedded_panelp = dynamic_cast<LLLayoutPanel*>(view))
|
||||
{
|
||||
auto it = std::find(mPanels.begin(), mPanels.end(), embedded_panelp);
|
||||
if (it != mPanels.end())
|
||||
{
|
||||
mPanels.erase(it);
|
||||
}
|
||||
if (embedded_panelp->mResizeBar)
|
||||
{
|
||||
LLView::removeChild(embedded_panelp->mResizeBar);
|
||||
embedded_panelp->mResizeBar = nullptr;
|
||||
}
|
||||
}
|
||||
else if (LLResizeBar* resize_bar = dynamic_cast<LLResizeBar*>(view))
|
||||
{
|
||||
for (LLLayoutPanel* p : mPanels)
|
||||
{
|
||||
if (p->mResizeBar == resize_bar)
|
||||
{
|
||||
p->mResizeBar = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (embedded_panelp)
|
||||
{
|
||||
mPanels.erase(std::find(mPanels.begin(), mPanels.end(), embedded_panelp));
|
||||
LLView::removeChild(view);
|
||||
updateFractionalSizes();
|
||||
mNeedsLayout = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
LLView::removeChild(view);
|
||||
}
|
||||
LLView::removeChild(view);
|
||||
|
||||
updateFractionalSizes();
|
||||
mNeedsLayout = true;
|
||||
}
|
||||
|
||||
// virtual
|
||||
bool LLLayoutStack::postBuild()
|
||||
{
|
||||
updateLayout();
|
||||
return true;
|
||||
}
|
||||
|
||||
// virtual
|
||||
bool LLLayoutStack::addChild(LLView* child, S32 tab_group)
|
||||
{
|
||||
LLLayoutPanel* panelp = dynamic_cast<LLLayoutPanel*>(child);
|
||||
|
|
@ -1051,6 +1068,7 @@ void LLLayoutStack::updatePanelRect( LLLayoutPanel* resized_panel, const LLRect&
|
|||
//normalizeFractionalSizes();
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLLayoutStack::reshape(S32 width, S32 height, bool called_from_parent)
|
||||
{
|
||||
mNeedsLayout = true;
|
||||
|
|
|
|||
|
|
@ -2208,6 +2208,7 @@
|
|||
<key>Value</key>
|
||||
<integer>2</integer>
|
||||
</map>
|
||||
<!--AvatarBakedTextureUploadTimeout is in use by QA-->
|
||||
<key>AvatarBakedTextureUploadTimeout</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
|
|||
|
|
@ -250,7 +250,7 @@ RenderReflectionsEnabled 1 1
|
|||
RenderReflectionProbeDetail 1 1
|
||||
RenderScreenSpaceReflections 1 0
|
||||
RenderReflectionProbeLevel 1 3
|
||||
RenderMirrors 1 1
|
||||
RenderMirrors 1 0
|
||||
RenderHeroProbeResolution 1 512
|
||||
RenderHeroProbeDistance 1 8
|
||||
RenderHeroProbeUpdateRate 1 2
|
||||
|
|
@ -285,7 +285,7 @@ RenderReflectionsEnabled 1 1
|
|||
RenderReflectionProbeDetail 1 1
|
||||
RenderScreenSpaceReflections 1 0
|
||||
RenderReflectionProbeLevel 1 3
|
||||
RenderMirrors 1 1
|
||||
RenderMirrors 1 0
|
||||
RenderHeroProbeResolution 1 1024
|
||||
RenderHeroProbeDistance 1 16
|
||||
RenderHeroProbeUpdateRate 1 1
|
||||
|
|
@ -320,7 +320,7 @@ RenderReflectionsEnabled 1 1
|
|||
RenderReflectionProbeDetail 1 1
|
||||
RenderScreenSpaceReflections 1 0
|
||||
RenderReflectionProbeLevel 1 3
|
||||
RenderMirrors 1 1
|
||||
RenderMirrors 1 0
|
||||
RenderHeroProbeResolution 1 2048
|
||||
RenderHeroProbeDistance 1 16
|
||||
RenderHeroProbeUpdateRate 1 1
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@ version 48
|
|||
//
|
||||
list all
|
||||
RenderAnisotropic 1 1
|
||||
RenderAvatarCloth 0 0
|
||||
RenderAvatarLODFactor 1 1.0
|
||||
RenderAvatarPhysicsLODFactor 1 1.0
|
||||
RenderAvatarMaxNonImpostors 1 16
|
||||
|
|
@ -65,7 +64,6 @@ RenderShaderLightingMaxLevel 1 3
|
|||
RenderReflectionProbeLevel 1 3
|
||||
RenderDeferred 1 1
|
||||
RenderDeferredSSAO 1 1
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 2
|
||||
RenderUseStreamVBO 1 1
|
||||
RenderFSAASamples 1 16
|
||||
|
|
@ -76,6 +74,10 @@ RenderGLMultiThreadedMedia 1 1
|
|||
RenderReflectionProbeResolution 1 128
|
||||
RenderScreenSpaceReflections 1 1
|
||||
RenderMirrors 1 1
|
||||
RenderHeroProbeResolution 1 2048
|
||||
RenderHeroProbeDistance 1 16
|
||||
RenderHeroProbeUpdateRate 1 4
|
||||
RenderHeroProbeConservativeUpdateMultiplier 1 16
|
||||
RenderDownScaleMethod 1 1
|
||||
|
||||
|
||||
|
|
@ -103,7 +105,6 @@ RenderTerrainPBRPlanarSampleCount 1 1
|
|||
RenderTreeLODFactor 1 0
|
||||
RenderVolumeLODFactor 1 1.5
|
||||
RenderDeferredSSAO 1 0
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 0
|
||||
WLSkyDetail 1 96
|
||||
RenderFSAASamples 1 0
|
||||
|
|
@ -139,7 +140,6 @@ RenderTerrainPBRPlanarSampleCount 1 1
|
|||
RenderTreeLODFactor 1 0.5
|
||||
RenderVolumeLODFactor 1 2.0
|
||||
RenderDeferredSSAO 1 0
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 0
|
||||
WLSkyDetail 1 96
|
||||
RenderFSAASamples 1 0
|
||||
|
|
@ -173,7 +173,6 @@ RenderTerrainPBRPlanarSampleCount 1 1
|
|||
RenderTreeLODFactor 1 0.5
|
||||
RenderVolumeLODFactor 1 2.0
|
||||
RenderDeferredSSAO 1 0
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 0
|
||||
WLSkyDetail 1 96
|
||||
RenderFSAASamples 1 2
|
||||
|
|
@ -209,7 +208,6 @@ RenderTerrainPBRPlanarSampleCount 1 1
|
|||
RenderTreeLODFactor 1 0.5
|
||||
RenderVolumeLODFactor 1 2.0
|
||||
RenderDeferredSSAO 1 0
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 0
|
||||
WLSkyDetail 1 96
|
||||
RenderFSAASamples 1 2
|
||||
|
|
@ -245,7 +243,6 @@ RenderTerrainPBRPlanarSampleCount 1 3
|
|||
RenderTreeLODFactor 1 0.5
|
||||
RenderVolumeLODFactor 1 2.0
|
||||
RenderDeferredSSAO 1 1
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 1
|
||||
WLSkyDetail 1 96
|
||||
RenderFSAASamples 1 2
|
||||
|
|
@ -253,7 +250,7 @@ RenderReflectionsEnabled 1 1
|
|||
RenderReflectionProbeDetail 1 1
|
||||
RenderScreenSpaceReflections 1 0
|
||||
RenderReflectionProbeLevel 1 3
|
||||
RenderMirrors 1 1
|
||||
RenderMirrors 1 0
|
||||
RenderHeroProbeResolution 1 512
|
||||
RenderHeroProbeDistance 1 8
|
||||
RenderHeroProbeUpdateRate 1 2
|
||||
|
|
@ -281,7 +278,6 @@ RenderTransparentWater 1 1
|
|||
RenderTreeLODFactor 1 0.5
|
||||
RenderVolumeLODFactor 1 2.0
|
||||
RenderDeferredSSAO 1 1
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 2
|
||||
WLSkyDetail 1 96
|
||||
RenderFSAASamples 1 2
|
||||
|
|
@ -289,7 +285,7 @@ RenderReflectionsEnabled 1 1
|
|||
RenderReflectionProbeDetail 1 1
|
||||
RenderScreenSpaceReflections 1 0
|
||||
RenderReflectionProbeLevel 1 3
|
||||
RenderMirrors 1 1
|
||||
RenderMirrors 1 0
|
||||
RenderHeroProbeResolution 1 1024
|
||||
RenderHeroProbeDistance 1 16
|
||||
RenderHeroProbeUpdateRate 1 1
|
||||
|
|
@ -318,14 +314,13 @@ RenderVolumeLODFactor 1 3.0
|
|||
WindLightUseAtmosShaders 1 1
|
||||
WLSkyDetail 1 128
|
||||
RenderDeferredSSAO 1 1
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 2
|
||||
RenderFSAASamples 1 2
|
||||
RenderReflectionsEnabled 1 1
|
||||
RenderReflectionProbeDetail 1 1
|
||||
RenderScreenSpaceReflections 1 0
|
||||
RenderReflectionProbeLevel 1 3
|
||||
RenderMirrors 1 1
|
||||
RenderMirrors 1 0
|
||||
RenderHeroProbeResolution 1 2048
|
||||
RenderHeroProbeDistance 1 16
|
||||
RenderHeroProbeUpdateRate 1 1
|
||||
|
|
@ -337,7 +332,6 @@ RenderHeroProbeConservativeUpdateMultiplier 1 4
|
|||
list Unknown
|
||||
RenderShadowDetail 1 0
|
||||
RenderDeferredSSAO 1 0
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderMirrors 1 0
|
||||
|
||||
//
|
||||
|
|
|
|||
|
|
@ -282,7 +282,7 @@ RenderReflectionsEnabled 1 1
|
|||
RenderReflectionProbeDetail 1 1
|
||||
RenderScreenSpaceReflections 1 0
|
||||
RenderReflectionProbeLevel 1 2
|
||||
RenderMirrors 1 1
|
||||
RenderMirrors 1 0
|
||||
RenderHeroProbeResolution 1 512
|
||||
RenderHeroProbeDistance 1 16
|
||||
RenderHeroProbeUpdateRate 1 1
|
||||
|
|
@ -317,7 +317,7 @@ RenderReflectionsEnabled 1 1
|
|||
RenderReflectionProbeDetail 1 1
|
||||
RenderScreenSpaceReflections 1 0
|
||||
RenderReflectionProbeLevel 1 3
|
||||
RenderMirrors 1 1
|
||||
RenderMirrors 1 0
|
||||
RenderHeroProbeResolution 1 1024
|
||||
RenderHeroProbeDistance 1 16
|
||||
RenderHeroProbeUpdateRate 1 1
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@
|
|||
#include "llfocusmgr.h"
|
||||
#include "llurlfloaterdispatchhandler.h"
|
||||
#include "llviewerjoystick.h"
|
||||
#include "llallocator.h"
|
||||
#include "llcalc.h"
|
||||
#include "llconversationlog.h"
|
||||
#if LL_WINDOWS
|
||||
|
|
@ -940,9 +939,6 @@ bool LLAppViewer::init()
|
|||
LLError::setFatalFunction([rc](const std::string&){ _exit(rc); });
|
||||
}
|
||||
|
||||
// <FS:Ansariel> Get rid of unused LLAllocator
|
||||
//mAlloc.setProfilingEnabled(gSavedSettings.getBOOL("MemProfiling"));
|
||||
|
||||
// Initialize the non-LLCurl libcurl library. Should be called
|
||||
// before consumers (LLTextureFetch).
|
||||
mAppCoreHttp.init();
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@
|
|||
#define LL_LLAPPVIEWER_H
|
||||
|
||||
#include "llapp.h"
|
||||
#include "llallocator.h"
|
||||
#include "llapr.h"
|
||||
#include "llcontrol.h"
|
||||
#include "llsys.h" // for LLOSInfo
|
||||
|
|
@ -206,9 +205,6 @@ public:
|
|||
// *NOTE:Mani Fix this for login abstraction!!
|
||||
void handleLoginComplete();
|
||||
|
||||
// <FS:Ansariel> Get rid of unused LLAllocator
|
||||
//LLAllocator & getAllocator() { return mAlloc; }
|
||||
|
||||
// On LoginCompleted callback
|
||||
typedef boost::signals2::signal<void (void)> login_completed_signal_t;
|
||||
login_completed_signal_t mOnLoginCompleted;
|
||||
|
|
@ -361,9 +357,6 @@ private:
|
|||
bool mAgentRegionLastAlive;
|
||||
LLUUID mAgentRegionLastID;
|
||||
|
||||
// <FS:Ansariel> Get rid of unused LLAllocator
|
||||
//LLAllocator mAlloc;
|
||||
|
||||
// llcorehttp library init/shutdown helper
|
||||
LLAppCoreHttp mAppCoreHttp;
|
||||
|
||||
|
|
|
|||
|
|
@ -116,6 +116,18 @@ LLFloaterIMContainer::~LLFloaterIMContainer()
|
|||
{
|
||||
LLIMMgr::getInstance()->removeSessionObserver(this);
|
||||
}
|
||||
|
||||
for (auto& session : mConversationsItems)
|
||||
{
|
||||
LLConversationItemSession* session_model = dynamic_cast<LLConversationItemSession*>(session.second.get());
|
||||
if (session_model)
|
||||
{
|
||||
// Models have overcomplicated double ownership, clear
|
||||
// and resolve '0 references' ownership now, before owned
|
||||
// part of the models gets deleted by their owners
|
||||
session_model->clearAndDeparentModels();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterIMContainer::sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id, bool has_offline_msg)
|
||||
|
|
|
|||
|
|
@ -154,7 +154,6 @@ void LLFloaterPreferenceGraphicsAdvanced::refresh()
|
|||
updateSliderText(getChild<LLSliderCtrl>("TerrainMeshDetail", true), getChild<LLTextBox>("TerrainMeshDetailText", true));
|
||||
updateSliderText(getChild<LLSliderCtrl>("RenderPostProcess", true), getChild<LLTextBox>("PostProcessText", true));
|
||||
updateSliderText(getChild<LLSliderCtrl>("SkyMeshDetail", true), getChild<LLTextBox>("SkyMeshDetailText", true));
|
||||
updateSliderText(getChild<LLSliderCtrl>("TerrainDetail", true), getChild<LLTextBox>("TerrainDetailText", true));
|
||||
LLAvatarComplexityControls::setIndirectControls();
|
||||
setMaxNonImpostorsText(
|
||||
gSavedSettings.getU32("RenderAvatarMaxNonImpostors"),
|
||||
|
|
@ -269,10 +268,6 @@ void LLFloaterPreferenceGraphicsAdvanced::setMaxNonImpostorsText(U32 value, LLTe
|
|||
|
||||
void LLFloaterPreferenceGraphicsAdvanced::disableUnavailableSettings()
|
||||
{
|
||||
LLComboBox* ctrl_reflections = getChild<LLComboBox>("Reflections");
|
||||
LLTextBox* reflections_text = getChild<LLTextBox>("ReflectionsText");
|
||||
LLCheckBoxCtrl* ctrl_wind_light = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders");
|
||||
LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders");
|
||||
LLComboBox* ctrl_shadows = getChild<LLComboBox>("ShadowDetail");
|
||||
LLTextBox* shadows_text = getChild<LLTextBox>("RenderShadowDetailText");
|
||||
LLCheckBoxCtrl* ctrl_ssao = getChild<LLCheckBoxCtrl>("UseSSAO");
|
||||
|
|
@ -283,9 +278,6 @@ void LLFloaterPreferenceGraphicsAdvanced::disableUnavailableSettings()
|
|||
// disabled windlight
|
||||
if (!LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders"))
|
||||
{
|
||||
ctrl_wind_light->setEnabled(false);
|
||||
ctrl_wind_light->setValue(false);
|
||||
|
||||
sky->setEnabled(false);
|
||||
sky_text->setEnabled(false);
|
||||
|
||||
|
|
@ -299,9 +291,6 @@ void LLFloaterPreferenceGraphicsAdvanced::disableUnavailableSettings()
|
|||
|
||||
ctrl_dof->setEnabled(false);
|
||||
ctrl_dof->setValue(false);
|
||||
|
||||
ctrl_deferred->setEnabled(false);
|
||||
ctrl_deferred->setValue(false);
|
||||
}
|
||||
|
||||
// disabled deferred
|
||||
|
|
@ -316,9 +305,6 @@ void LLFloaterPreferenceGraphicsAdvanced::disableUnavailableSettings()
|
|||
|
||||
ctrl_dof->setEnabled(false);
|
||||
ctrl_dof->setValue(false);
|
||||
|
||||
ctrl_deferred->setEnabled(false);
|
||||
ctrl_deferred->setValue(false);
|
||||
}
|
||||
|
||||
// disabled deferred SSAO
|
||||
|
|
@ -339,53 +325,13 @@ void LLFloaterPreferenceGraphicsAdvanced::disableUnavailableSettings()
|
|||
|
||||
void LLFloaterPreferenceGraphicsAdvanced::refreshEnabledState()
|
||||
{
|
||||
LLComboBox* ctrl_reflections = getChild<LLComboBox>("Reflections");
|
||||
LLTextBox* reflections_text = getChild<LLTextBox>("ReflectionsText");
|
||||
|
||||
// Reflections
|
||||
bool reflections = LLCubeMap::sUseCubeMaps;
|
||||
ctrl_reflections->setEnabled(reflections);
|
||||
reflections_text->setEnabled(reflections);
|
||||
|
||||
// Bump & Shiny
|
||||
LLCheckBoxCtrl* bumpshiny_ctrl = getChild<LLCheckBoxCtrl>("BumpShiny");
|
||||
bool bumpshiny = LLCubeMap::sUseCubeMaps && LLFeatureManager::getInstance()->isFeatureAvailable("RenderObjectBump");
|
||||
bumpshiny_ctrl->setEnabled(bumpshiny);
|
||||
|
||||
/* <FS:LO> remove orphaned code left over from EEP
|
||||
// Vertex Shaders, Global Shader Enable
|
||||
// SL-12594 Basic shaders are always enabled. DJH TODO clean up now-orphaned state handling code
|
||||
LLSliderCtrl* terrain_detail = getChild<LLSliderCtrl>("TerrainDetail"); // can be linked with control var
|
||||
LLTextBox* terrain_text = getChild<LLTextBox>("TerrainDetailText");
|
||||
|
||||
terrain_detail->setEnabled(false);
|
||||
terrain_text->setEnabled(false);
|
||||
*/
|
||||
|
||||
// WindLight
|
||||
//LLCheckBoxCtrl* ctrl_wind_light = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders");
|
||||
//ctrl_wind_light->setEnabled(true);
|
||||
LLSliderCtrl* sky = getChild<LLSliderCtrl>("SkyMeshDetail");
|
||||
LLTextBox* sky_text = getChild<LLTextBox>("SkyMeshDetailText");
|
||||
sky->setEnabled(true);
|
||||
sky_text->setEnabled(true);
|
||||
|
||||
bool enabled = true;
|
||||
#if 0 // deferred always on now
|
||||
//Deferred/SSAO/Shadows
|
||||
LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders");
|
||||
|
||||
enabled = LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
|
||||
bumpshiny_ctrl && bumpshiny_ctrl->get() &&
|
||||
ctrl_wind_light->get();
|
||||
|
||||
ctrl_deferred->setEnabled(enabled);
|
||||
#endif
|
||||
|
||||
LLCheckBoxCtrl* ctrl_pbr = getChild<LLCheckBoxCtrl>("UsePBRShaders");
|
||||
|
||||
//PBR
|
||||
ctrl_pbr->setEnabled(true);
|
||||
|
||||
LLCheckBoxCtrl* ctrl_ssao = getChild<LLCheckBoxCtrl>("UseSSAO");
|
||||
LLCheckBoxCtrl* ctrl_dof = getChild<LLCheckBoxCtrl>("UseDoF");
|
||||
|
|
@ -417,11 +363,6 @@ void LLFloaterPreferenceGraphicsAdvanced::refreshEnabledState()
|
|||
getChildView("texture compression")->setEnabled(false);
|
||||
}
|
||||
|
||||
// if no windlight shaders, turn off nighttime brightness, gamma, and fog distance
|
||||
LLUICtrl* gamma_ctrl = getChild<LLUICtrl>("gamma");
|
||||
gamma_ctrl->setEnabled(!gPipeline.canUseWindLightShaders());
|
||||
getChildView("(brightness, lower is brighter)")->setEnabled(!gPipeline.canUseWindLightShaders());
|
||||
getChildView("fog")->setEnabled(!gPipeline.canUseWindLightShaders());
|
||||
getChildView("antialiasing restart")->setVisible(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred"));
|
||||
|
||||
// now turn off any features that are unavailable
|
||||
|
|
|
|||
|
|
@ -602,7 +602,6 @@ void LLHeroProbeManager::cleanup()
|
|||
{
|
||||
mVertexBuffer = nullptr;
|
||||
mRenderTarget.release();
|
||||
mHeroRenderTarget.release();
|
||||
|
||||
mMipChain.clear();
|
||||
|
||||
|
|
@ -610,10 +609,7 @@ void LLHeroProbeManager::cleanup()
|
|||
|
||||
mProbes.clear();
|
||||
|
||||
mReflectionMaps.clear();
|
||||
|
||||
mDefaultProbe = nullptr;
|
||||
mUpdatingProbe = nullptr;
|
||||
}
|
||||
|
||||
void LLHeroProbeManager::doOcclusion()
|
||||
|
|
|
|||
|
|
@ -104,8 +104,6 @@ private:
|
|||
// used to generate mipmaps without doing a copy-to-texture
|
||||
LLRenderTarget mRenderTarget;
|
||||
|
||||
LLRenderTarget mHeroRenderTarget;
|
||||
|
||||
std::vector<LLRenderTarget> mMipChain;
|
||||
|
||||
// storage for reflection probe radiance maps (plus two scratch space cubemaps)
|
||||
|
|
@ -124,11 +122,6 @@ private:
|
|||
// list of active reflection maps
|
||||
std::vector<LLPointer<LLReflectionMap>> mProbes;
|
||||
|
||||
// list of maps being used for rendering
|
||||
std::vector<LLReflectionMap*> mReflectionMaps;
|
||||
|
||||
LLReflectionMap* mUpdatingProbe = nullptr;
|
||||
|
||||
LLPointer<LLReflectionMap> mDefaultProbe; // default reflection probe to fall back to for pixels with no probe influences (should always be at cube index 0)
|
||||
|
||||
// number of reflection probes to use for rendering
|
||||
|
|
|
|||
|
|
@ -353,13 +353,6 @@ bool LLPanelMainInventory::postBuild()
|
|||
}
|
||||
|
||||
}
|
||||
// <FS:Ansariel> Doesn't work
|
||||
//mParentSidepanel = getParentSidepanelInventory();
|
||||
//if (mParentSidepanel)
|
||||
//{
|
||||
// mInboxPanel = mParentSidepanel->getChild<LLPanelMarketplaceInbox>("marketplace_inbox");
|
||||
//}
|
||||
// </FS:Ansariel>
|
||||
|
||||
mFilterEditor = getChild<LLFilterEditor>("inventory search editor");
|
||||
if (mFilterEditor)
|
||||
|
|
@ -958,21 +951,10 @@ void LLPanelMainInventory::onClearSearch()
|
|||
}
|
||||
mFilterSubString = "";
|
||||
|
||||
// <FS:Ansariel> FIRE-22509: Only apply inbox filter on primary inventory window
|
||||
//if (mInboxPanel)
|
||||
//{
|
||||
// mInboxPanel->onClearSearch();
|
||||
//}
|
||||
LLSidepanelInventory * sidepanel_inventory = getParentByType<LLSidepanelInventory>();
|
||||
if (sidepanel_inventory && sidepanel_inventory->getInboxPanel())
|
||||
if (mInboxPanel)
|
||||
{
|
||||
LLPanelMarketplaceInbox* inbox_panel = sidepanel_inventory->getInboxPanel()->getParentByType<LLPanelMarketplaceInbox>();
|
||||
if (inbox_panel)
|
||||
{
|
||||
inbox_panel->onClearSearch();
|
||||
}
|
||||
mInboxPanel->onClearSearch();
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
|
||||
void LLPanelMainInventory::onFilterEdit(const std::string& search_string )
|
||||
|
|
@ -1043,21 +1025,10 @@ void LLPanelMainInventory::onFilterEdit(const std::string& search_string )
|
|||
}
|
||||
// </FS:Ansariel> Separate search for inventory tabs from Satomi Ahn (FIRE-913 & FIRE-6862)
|
||||
|
||||
// <FS:Ansariel> FIRE-22509: Only apply inbox filter on primary inventory window
|
||||
//if (mInboxPanel)
|
||||
//{
|
||||
// mInboxPanel->onFilterEdit(search_string);
|
||||
//}
|
||||
LLSidepanelInventory * sidepanel_inventory = getParentByType<LLSidepanelInventory>();
|
||||
if (sidepanel_inventory && sidepanel_inventory->getInboxPanel())
|
||||
if (mInboxPanel)
|
||||
{
|
||||
LLPanelMarketplaceInbox* inbox_panel = sidepanel_inventory->getInboxPanel()->getParentByType<LLPanelMarketplaceInbox>();
|
||||
if (inbox_panel)
|
||||
{
|
||||
inbox_panel->onFilterEdit(search_string);
|
||||
}
|
||||
mInboxPanel->onFilterEdit(search_string);
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
|
||||
// <FS:Zi> Filter dropdown
|
||||
|
|
@ -2050,31 +2021,17 @@ void LLPanelMainInventory::toggleViewMode()
|
|||
updateTitle();
|
||||
onFilterSelected();
|
||||
|
||||
// <FS:Ansariel> Doesn't work
|
||||
//if (mParentSidepanel)
|
||||
//{
|
||||
// if(mSingleFolderMode)
|
||||
// {
|
||||
// mParentSidepanel->hideInbox();
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// mParentSidepanel->toggleInbox();
|
||||
// }
|
||||
//}
|
||||
LLSidepanelInventory* sidepanel_inventory = getParentSidepanelInventory();
|
||||
if (sidepanel_inventory)
|
||||
if (mParentSidepanel)
|
||||
{
|
||||
if(mSingleFolderMode)
|
||||
{
|
||||
sidepanel_inventory->hideInbox();
|
||||
mParentSidepanel->hideInbox();
|
||||
}
|
||||
else
|
||||
{
|
||||
sidepanel_inventory->toggleInbox();
|
||||
mParentSidepanel->toggleInbox();
|
||||
}
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
|
||||
void LLPanelMainInventory::onViewModeClick()
|
||||
|
|
|
|||
|
|
@ -146,6 +146,9 @@ public:
|
|||
|
||||
LLInventoryFilter& getCurrentFilter();
|
||||
|
||||
void setParentSidepanel(LLSidepanelInventory* parent_sidepanel) { mParentSidepanel = parent_sidepanel; }
|
||||
void setInboxPanel(LLPanelMarketplaceInbox* inbox_panel) { mInboxPanel = inbox_panel; }
|
||||
|
||||
// <FS:Zi> Filter dropdown
|
||||
void onFilterTypeSelected(const std::string& filter_type_name);
|
||||
void updateFilterDropdown(const LLInventoryFilter* filter);
|
||||
|
|
|
|||
|
|
@ -1371,13 +1371,21 @@ void LLReflectionMapManager::initReflectionMaps()
|
|||
{
|
||||
U32 count = LL_MAX_REFLECTION_PROBE_COUNT;
|
||||
|
||||
if (mTexture.isNull() || mReflectionProbeCount != count || mReset)
|
||||
static LLCachedControl<U32> ref_probe_res(gSavedSettings, "RenderReflectionProbeResolution", 128U);
|
||||
U32 probe_resolution = nhpo2(llclamp(ref_probe_res(), (U32)64, (U32)512));
|
||||
if (mTexture.isNull() || mReflectionProbeCount != count || mProbeResolution != probe_resolution || mReset)
|
||||
{
|
||||
if(mProbeResolution != probe_resolution)
|
||||
{
|
||||
mRenderTarget.release();
|
||||
mMipChain.clear();
|
||||
}
|
||||
|
||||
gEXRImage = nullptr;
|
||||
|
||||
mReset = false;
|
||||
mReflectionProbeCount = count;
|
||||
mProbeResolution = nhpo2(llclamp(gSavedSettings.getU32("RenderReflectionProbeResolution"), (U32)64, (U32)512));
|
||||
mProbeResolution = probe_resolution;
|
||||
mMaxProbeLOD = log2f((F32)mProbeResolution) - 1.f; // number of mips - 1
|
||||
|
||||
if (mTexture.isNull() ||
|
||||
|
|
|
|||
|
|
@ -178,6 +178,8 @@ bool LLSidepanelInventory::postBuild()
|
|||
|
||||
mPanelMainInventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory");
|
||||
mPanelMainInventory->setSelectCallback(boost::bind(&LLSidepanelInventory::onSelectionChange, this, _1, _2));
|
||||
mPanelMainInventory->setParentSidepanel(this);
|
||||
//mPanelMainInventory->setInboxPanel(getChild<LLPanelMarketplaceInbox>("marketplace_inbox")); // <FS:Ansariel> FIRE-22509: Only apply inbox filter on primary inventory window
|
||||
//LLTabContainer* tabs = mPanelMainInventory->getChild<LLTabContainer>("inventory filter tabs");
|
||||
//tabs->setCommitCallback(boost::bind(&LLSidepanelInventory::updateVerbs, this));
|
||||
|
||||
|
|
@ -361,6 +363,9 @@ void LLSidepanelInventory::observeInboxModifications(const LLUUID& inboxID)
|
|||
LLPanelMarketplaceInbox * inbox = getChild<LLPanelMarketplaceInbox>(MARKETPLACE_INBOX_PANEL);
|
||||
LLInventoryPanel* inventory_panel = inbox->setupInventoryPanel();
|
||||
mInventoryPanelInbox = inventory_panel->getInventoryPanelHandle();
|
||||
|
||||
// <FS:Ansariel> FIRE-22509: Only apply inbox filter on primary inventory window
|
||||
mPanelMainInventory->setInboxPanel(inbox);
|
||||
}
|
||||
|
||||
void LLSidepanelInventory::enableInbox(bool enabled)
|
||||
|
|
|
|||
|
|
@ -435,16 +435,19 @@ void LLAvatarTexBar::draw()
|
|||
line_num++;
|
||||
}
|
||||
// <FS:Ansariel> Replace frequently called gSavedSettings
|
||||
//const U32 texture_timeout = gSavedSettings.getU32("AvatarBakedTextureUploadTimeout");
|
||||
//const U32 override_tex_discard_level = gSavedSettings.getU32("TextureDiscardLevel");
|
||||
static LLCachedControl<U32> sAvatarBakedTextureUploadTimeout(gSavedSettings, "AvatarBakedTextureUploadTimeout");
|
||||
static LLCachedControl<U32> sTextureDiscardLevel(gSavedSettings, "TextureDiscardLevel");
|
||||
const U32 texture_timeout = sAvatarBakedTextureUploadTimeout();
|
||||
const U32 override_tex_discard_level = sTextureDiscardLevel();
|
||||
// </FS:Ansariel>
|
||||
|
||||
LLColor4 header_color(1.f, 1.f, 1.f, 0.9f);
|
||||
|
||||
const std::string texture_timeout_str = texture_timeout ? llformat("%d", texture_timeout) : "Disabled";
|
||||
const std::string override_tex_discard_level_str = override_tex_discard_level ? llformat("%d",override_tex_discard_level) : "Disabled";
|
||||
std::string header_text = llformat("[ Timeout:60 ] [ LOD_Override('TextureDiscardLevel'):%s ]", override_tex_discard_level_str.c_str());
|
||||
std::string header_text = llformat("[ Timeout('AvatarBakedTextureUploadTimeout'):%s ] [ LOD_Override('TextureDiscardLevel'):%s ]", texture_timeout_str.c_str(), override_tex_discard_level_str.c_str());
|
||||
LLFontGL::getFontMonospace()->renderUTF8(header_text, 0, l_offset, v_offset + line_height*line_num,
|
||||
header_color, LLFontGL::LEFT, LLFontGL::TOP); //, LLFontGL::BOLD, LLFontGL::DROP_SHADOW_SOFT);
|
||||
line_num++;
|
||||
|
|
|
|||
|
|
@ -1754,7 +1754,7 @@ void render_ui_2d()
|
|||
LLView::sIsRectDirty = false;
|
||||
LLRect t_rect;
|
||||
|
||||
gPipeline.mRT->uiScreen.bindTarget();
|
||||
gPipeline.mUIScreen.bindTarget();
|
||||
gGL.setColorMask(true, true);
|
||||
{
|
||||
static const S32 pad = 8;
|
||||
|
|
@ -1791,7 +1791,7 @@ void render_ui_2d()
|
|||
gViewerWindow->draw();
|
||||
}
|
||||
|
||||
gPipeline.mRT->uiScreen.flush();
|
||||
gPipeline.mUIScreen.flush();
|
||||
gGL.setColorMask(true, false);
|
||||
|
||||
LLView::sDirtyRect = t_rect;
|
||||
|
|
@ -1801,7 +1801,7 @@ void render_ui_2d()
|
|||
LLGLDisable blend(GL_BLEND);
|
||||
S32 width = gViewerWindow->getWindowWidthScaled();
|
||||
S32 height = gViewerWindow->getWindowHeightScaled();
|
||||
gGL.getTexUnit(0)->bind(&gPipeline.mRT->uiScreen);
|
||||
gGL.getTexUnit(0)->bind(&gPipeline.mUIScreen);
|
||||
gGL.begin(LLRender::TRIANGLE_STRIP);
|
||||
gGL.color4f(1.f,1.f,1.f,1.f);
|
||||
gGL.texCoord2f(0.f, 0.f); gGL.vertex2i(0, 0);
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@
|
|||
// Library headers from llcommon project:
|
||||
#include "indra_constants.h"
|
||||
#include "llinitparam.h"
|
||||
#include "llallocator.h"
|
||||
#include "llapp.h"
|
||||
#include "llcriticaldamp.h"
|
||||
#include "lldefs.h"
|
||||
|
|
|
|||
|
|
@ -851,7 +851,7 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
|
|||
if (mRT == &mMainRT)
|
||||
{ // hacky -- allocate auxillary buffer
|
||||
|
||||
gCubeSnapshot = TRUE;
|
||||
gCubeSnapshot = true;
|
||||
|
||||
if (sReflectionProbesEnabled)
|
||||
{
|
||||
|
|
@ -911,17 +911,6 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
|
|||
}
|
||||
// [/SL:KB]
|
||||
|
||||
//water reflection texture (always needed as scratch space whether or not transparent water is enabled)
|
||||
mWaterDis.allocate(resX, resY, GL_RGBA16F, true);
|
||||
|
||||
if (RenderUIBuffer)
|
||||
{
|
||||
if (!mRT->uiScreen.allocate(resX,resY, GL_RGBA))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
S32 shadow_detail = RenderShadowDetail;
|
||||
bool ssao = RenderDeferredSSAO;
|
||||
|
||||
|
|
@ -935,15 +924,6 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
|
|||
|
||||
mRT->deferredScreen.shareDepthBuffer(mRT->screen);
|
||||
|
||||
if (samples > 0)
|
||||
{
|
||||
if (!mRT->fxaaBuffer.allocate(resX, resY, GL_RGBA)) return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
mRT->fxaaBuffer.release();
|
||||
}
|
||||
|
||||
// <FS:Beq> restore setSphere
|
||||
// if (shadow_detail > 0 || ssao || RenderDepthOfField || samples > 0))
|
||||
if (shadow_detail > 0 || ssao || RenderDepthOfField || samples > 0 || RlvActions::hasPostProcess())
|
||||
|
|
@ -958,19 +938,45 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
|
|||
|
||||
allocateShadowBuffer(resX, resY);
|
||||
|
||||
if (!gCubeSnapshot && RenderScreenSpaceReflections) // hack to not allocate mSceneMap for cube snapshots
|
||||
if (!gCubeSnapshot) // hack to not re-allocate various targets for cube snapshots
|
||||
{
|
||||
mSceneMap.allocate(resX, resY, GL_RGB, true);
|
||||
if (RenderUIBuffer)
|
||||
{
|
||||
if (!mUIScreen.allocate(resX, resY, GL_RGBA))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (samples > 0)
|
||||
{
|
||||
if (!mFXAAMap.allocate(resX, resY, GL_RGBA)) return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
mFXAAMap.release();
|
||||
}
|
||||
|
||||
//water reflection texture (always needed as scratch space whether or not transparent water is enabled)
|
||||
mWaterDis.allocate(resX, resY, GL_RGBA16F, true);
|
||||
|
||||
if(RenderScreenSpaceReflections)
|
||||
{
|
||||
mSceneMap.allocate(resX, resY, GL_RGB, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
mSceneMap.release();
|
||||
}
|
||||
|
||||
const bool post_hdr = gSavedSettings.getBOOL("RenderPostProcessingHDR");
|
||||
const U32 post_color_fmt = post_hdr ? GL_RGBA16F : GL_RGBA;
|
||||
mPostMap.allocate(resX, resY, post_color_fmt);
|
||||
|
||||
// used to scale down textures
|
||||
// See LLViwerTextureList::updateImagesCreateTextures and LLImageGL::scaleDown
|
||||
mDownResMap.allocate(4, 4, GL_RGBA);
|
||||
}
|
||||
|
||||
const bool post_hdr = gSavedSettings.getBOOL("RenderPostProcessingHDR");
|
||||
const U32 post_color_fmt = post_hdr ? GL_RGBA16F : GL_RGBA;
|
||||
mPostMap.allocate(resX, resY, post_color_fmt);
|
||||
|
||||
// used to scale down textures
|
||||
// See LLViwerTextureList::updateImagesCreateTextures and LLImageGL::scaleDown
|
||||
mDownResMap.allocate(4, 4, GL_RGBA);
|
||||
|
||||
//HACK make screenbuffer allocations start failing after 30 seconds
|
||||
if (gSavedSettings.getBOOL("SimulateFBOFailure"))
|
||||
{
|
||||
|
|
@ -992,7 +998,7 @@ bool LLPipeline::allocateShadowBuffer(U32 resX, U32 resY)
|
|||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DISPLAY;
|
||||
S32 shadow_detail = RenderShadowDetail;
|
||||
|
||||
F32 scale = llmax(0.f, RenderShadowResolutionScale);
|
||||
F32 scale = gCubeSnapshot ? 1.0f : llmax(0.f, RenderShadowResolutionScale); // Don't scale probe shadow maps
|
||||
U32 sun_shadow_map_width = BlurHappySize(resX, scale);
|
||||
U32 sun_shadow_map_height = BlurHappySize(resY, scale);
|
||||
|
||||
|
|
@ -1226,6 +1232,10 @@ void LLPipeline::releaseGLBuffers()
|
|||
|
||||
mPostMap.release();
|
||||
|
||||
mFXAAMap.release();
|
||||
|
||||
mUIScreen.release();
|
||||
|
||||
mDownResMap.release();
|
||||
|
||||
for (U32 i = 0; i < 3; i++)
|
||||
|
|
@ -1233,6 +1243,8 @@ void LLPipeline::releaseGLBuffers()
|
|||
mGlow[i].release();
|
||||
}
|
||||
|
||||
mHeroProbeManager.cleanup(); // release hero probes
|
||||
|
||||
releaseScreenBuffers();
|
||||
|
||||
gBumpImageList.destroyGL();
|
||||
|
|
@ -1263,22 +1275,20 @@ void LLPipeline::releaseShadowBuffers()
|
|||
|
||||
void LLPipeline::releaseScreenBuffers()
|
||||
{
|
||||
mRT->uiScreen.release();
|
||||
mRT->screen.release();
|
||||
mRT->fxaaBuffer.release();
|
||||
mRT->deferredScreen.release();
|
||||
mRT->deferredLight.release();
|
||||
|
||||
mHeroProbeRT.uiScreen.release();
|
||||
mAuxillaryRT.screen.release();
|
||||
mAuxillaryRT.deferredScreen.release();
|
||||
mAuxillaryRT.deferredLight.release();
|
||||
|
||||
mHeroProbeRT.screen.release();
|
||||
mHeroProbeRT.fxaaBuffer.release();
|
||||
mHeroProbeRT.deferredScreen.release();
|
||||
mHeroProbeRT.deferredLight.release();
|
||||
|
||||
// <FS:Ansariel> Auxillary render target pack for 1024px LLDynamicTexture
|
||||
mDynamicTextureRT.uiScreen.release();
|
||||
mDynamicTextureRT.screen.release();
|
||||
mDynamicTextureRT.fxaaBuffer.release();
|
||||
mDynamicTextureRT.deferredScreen.release();
|
||||
mDynamicTextureRT.deferredLight.release();
|
||||
// </FS:Ansariel>
|
||||
|
|
@ -7287,7 +7297,7 @@ void LLPipeline::applyFXAA(LLRenderTarget* src, LLRenderTarget* dst)
|
|||
{
|
||||
{
|
||||
llassert(!gCubeSnapshot);
|
||||
bool multisample = RenderFSAASamples > 1 && mRT->fxaaBuffer.isComplete();
|
||||
bool multisample = RenderFSAASamples > 1 && mFXAAMap.isComplete();
|
||||
LLGLSLShader* shader = &gGlowCombineProgram;
|
||||
|
||||
S32 width = dst->getWidth();
|
||||
|
|
@ -7298,7 +7308,7 @@ void LLPipeline::applyFXAA(LLRenderTarget* src, LLRenderTarget* dst)
|
|||
{
|
||||
LL_PROFILE_GPU_ZONE("aa");
|
||||
// bake out texture2D with RGBL for FXAA shader
|
||||
mRT->fxaaBuffer.bindTarget();
|
||||
mFXAAMap.bindTarget();
|
||||
|
||||
shader = &gGlowCombineFXAAProgram;
|
||||
shader->bind();
|
||||
|
|
@ -7318,16 +7328,16 @@ void LLPipeline::applyFXAA(LLRenderTarget* src, LLRenderTarget* dst)
|
|||
shader->disableTexture(LLShaderMgr::DEFERRED_DIFFUSE, src->getUsage());
|
||||
shader->unbind();
|
||||
|
||||
mRT->fxaaBuffer.flush();
|
||||
mFXAAMap.flush();
|
||||
|
||||
dst->bindTarget();
|
||||
shader = &gFXAAProgram;
|
||||
shader->bind();
|
||||
|
||||
channel = shader->enableTexture(LLShaderMgr::DIFFUSE_MAP, mRT->fxaaBuffer.getUsage());
|
||||
channel = shader->enableTexture(LLShaderMgr::DIFFUSE_MAP, mFXAAMap.getUsage());
|
||||
if (channel > -1)
|
||||
{
|
||||
mRT->fxaaBuffer.bindTexture(0, channel, LLTexUnit::TFO_BILINEAR);
|
||||
mFXAAMap.bindTexture(0, channel, LLTexUnit::TFO_BILINEAR);
|
||||
}
|
||||
|
||||
gGLViewport[0] = gViewerWindow->getWorldViewRectRaw().mLeft;
|
||||
|
|
@ -7337,8 +7347,8 @@ void LLPipeline::applyFXAA(LLRenderTarget* src, LLRenderTarget* dst)
|
|||
|
||||
glViewport(gGLViewport[0], gGLViewport[1], gGLViewport[2], gGLViewport[3]);
|
||||
|
||||
F32 scale_x = (F32)width / mRT->fxaaBuffer.getWidth();
|
||||
F32 scale_y = (F32)height / mRT->fxaaBuffer.getHeight();
|
||||
F32 scale_x = (F32)width / mFXAAMap.getWidth();
|
||||
F32 scale_y = (F32)height / mFXAAMap.getHeight();
|
||||
shader->uniform2f(LLShaderMgr::FXAA_TC_SCALE, scale_x, scale_y);
|
||||
shader->uniform2f(LLShaderMgr::FXAA_RCP_SCREEN_RES, 1.f / width * scale_x, 1.f / height * scale_y);
|
||||
shader->uniform4f(LLShaderMgr::FXAA_RCP_FRAME_OPT, -0.5f / width * scale_x, -0.5f / height * scale_y,
|
||||
|
|
@ -7630,7 +7640,7 @@ void LLPipeline::renderDoF(LLRenderTarget* src, LLRenderTarget* dst)
|
|||
{ // combine result based on alpha
|
||||
|
||||
dst->bindTarget();
|
||||
if (RenderFSAASamples > 1 && mRT->fxaaBuffer.isComplete())
|
||||
if (RenderFSAASamples > 1 && mFXAAMap.isComplete())
|
||||
{
|
||||
glViewport(0, 0, dst->getWidth(), dst->getHeight());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -700,10 +700,7 @@ public:
|
|||
|
||||
//screen texture
|
||||
LLRenderTarget screen;
|
||||
LLRenderTarget uiScreen;
|
||||
LLRenderTarget deferredScreen;
|
||||
LLRenderTarget fxaaBuffer;
|
||||
LLRenderTarget edgeMap;
|
||||
LLRenderTarget deferredLight;
|
||||
|
||||
//sun shadow map
|
||||
|
|
@ -742,6 +739,12 @@ public:
|
|||
// tonemapped and gamma corrected render ready for post
|
||||
LLRenderTarget mPostMap;
|
||||
|
||||
// FXAA helper target
|
||||
LLRenderTarget mFXAAMap;
|
||||
|
||||
// render ui to buffer target
|
||||
LLRenderTarget mUIScreen;
|
||||
|
||||
// downres scratch space for GPU downscaling of textures
|
||||
LLRenderTarget mDownResMap;
|
||||
|
||||
|
|
|
|||
|
|
@ -145,7 +145,6 @@
|
|||
control_name="RememberPassword"
|
||||
follows="left|top"
|
||||
font="SansSerifMedium"
|
||||
text_color="EmphasisColor"
|
||||
height="24"
|
||||
left="408"
|
||||
bottom_delta="0"
|
||||
|
|
|
|||
Loading…
Reference in New Issue