diff options
Diffstat (limited to 'indra/newview/lltextureview.cpp')
-rw-r--r-- | indra/newview/lltextureview.cpp | 265 |
1 files changed, 78 insertions, 187 deletions
diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp index 6a75e4b009..43913f3632 100644 --- a/indra/newview/lltextureview.cpp +++ b/indra/newview/lltextureview.cpp @@ -2,25 +2,31 @@ * @file lltextureview.cpp * @brief LLTextureView class implementation * - * $LicenseInfo:firstyear=2001&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. + * $LicenseInfo:firstyear=2001&license=viewergpl$ + * + * Copyright (c) 2001-2009, 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. + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 * - * 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. + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception * - * 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 + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. * $/LicenseInfo$ */ @@ -48,19 +54,12 @@ #include "llviewertexture.h" #include "llviewertexturelist.h" #include "llvovolume.h" - -// For avatar texture view -#include "llvoavatarself.h" -#include "lltexlayer.h" - extern F32 texmem_lower_bound_scale; LLTextureView *gTextureView = NULL; LLTextureSizeView *gTextureSizeView = NULL; LLTextureSizeView *gTextureCategoryView = NULL; -#define HIGH_PRIORITY 100000000.f - //static std::set<LLViewerFetchedTexture*> LLTextureView::sDebugImages; @@ -376,105 +375,6 @@ LLRect LLTextureBar::getRequiredRect() //////////////////////////////////////////////////////////////////////////// -class LLAvatarTexBar : public LLView -{ -public: - struct Params : public LLInitParam::Block<Params, LLView::Params> - { - Mandatory<LLTextureView*> texture_view; - Params() - : texture_view("texture_view") - { - S32 line_height = (S32)(LLFontGL::getFontMonospace()->getLineHeight() + .5f); - rect(LLRect(0,0,100,line_height * 4)); - } - }; - - LLAvatarTexBar(const Params& p) - : LLView(p), - mTextureView(p.texture_view) - {} - - virtual void draw(); - virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); - virtual LLRect getRequiredRect(); // Return the height of this object, given the set options. - -private: - LLTextureView* mTextureView; -}; - -void LLAvatarTexBar::draw() -{ - if (!gSavedSettings.getBOOL("DebugAvatarRezTime")) return; - - LLVOAvatarSelf* avatarp = gAgentAvatarp; - if (!avatarp) return; - - const S32 line_height = (S32)(LLFontGL::getFontMonospace()->getLineHeight() + .5f); - const S32 v_offset = 0; - const S32 l_offset = 3; - - //---------------------------------------------------------------------------- - LLGLSUIDefault gls_ui; - LLColor4 color; - - U32 line_num = 1; - for (LLVOAvatarDefines::LLVOAvatarDictionary::BakedTextures::const_iterator baked_iter = LLVOAvatarDefines::LLVOAvatarDictionary::getInstance()->getBakedTextures().begin(); - baked_iter != LLVOAvatarDefines::LLVOAvatarDictionary::getInstance()->getBakedTextures().end(); - ++baked_iter) - { - const LLVOAvatarDefines::EBakedTextureIndex baked_index = baked_iter->first; - const LLTexLayerSet *layerset = avatarp->debugGetLayerSet(baked_index); - if (!layerset) continue; - const LLTexLayerSetBuffer *layerset_buffer = layerset->getComposite(); - if (!layerset_buffer) continue; - - LLColor4 text_color = LLColor4::white; - - if (layerset_buffer->uploadNeeded()) - { - text_color = LLColor4::red; - } - if (layerset_buffer->uploadInProgress()) - { - text_color = LLColor4::magenta; - } - std::string text = layerset_buffer->dumpTextureInfo(); - LLFontGL::getFontMonospace()->renderUTF8(text, 0, l_offset, v_offset + line_height*line_num, - text_color, LLFontGL::LEFT, LLFontGL::TOP); //, LLFontGL::BOLD, LLFontGL::DROP_SHADOW_SOFT); - line_num++; - } - const U32 texture_timeout = gSavedSettings.getU32("AvatarBakedTextureUploadTimeout"); - const U32 override_tex_discard_level = gSavedSettings.getU32("TextureDiscardLevel"); - - 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('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++; - std::string section_text = "Avatar Textures Information:"; - LLFontGL::getFontMonospace()->renderUTF8(section_text, 0, 0, v_offset + line_height*line_num, - header_color, LLFontGL::LEFT, LLFontGL::TOP, LLFontGL::BOLD, LLFontGL::DROP_SHADOW_SOFT); -} - -BOOL LLAvatarTexBar::handleMouseDown(S32 x, S32 y, MASK mask) -{ - return FALSE; -} - -LLRect LLAvatarTexBar::getRequiredRect() -{ - LLRect rect; - rect.mTop = 100; - if (!gSavedSettings.getBOOL("DebugAvatarRezTime")) rect.mTop = 0; - return rect; -} - -//////////////////////////////////////////////////////////////////////////// - class LLGLTexMemBar : public LLView { public: @@ -512,17 +412,13 @@ void LLGLTexMemBar::draw() F32 cache_usage = (F32)BYTES_TO_MEGA_BYTES(LLAppViewer::getTextureCache()->getUsage()) ; F32 cache_max_usage = (F32)BYTES_TO_MEGA_BYTES(LLAppViewer::getTextureCache()->getMaxUsage()) ; S32 line_height = (S32)(LLFontGL::getFontMonospace()->getLineHeight() + .5f); - S32 v_offset = (S32)((texture_bar_height + 2.2f) * mTextureView->mNumTextureBars + 2.0f); + S32 v_offset = (S32)((texture_bar_height + 2.5f) * mTextureView->mNumTextureBars + 2.5f); //---------------------------------------------------------------------------- LLGLSUIDefault gls_ui; LLColor4 text_color(1.f, 1.f, 1.f, 0.75f); LLColor4 color; - std::string text = ""; - - LLFontGL::getFontMonospace()->renderUTF8(text, 0, 0, v_offset + line_height*6, - text_color, LLFontGL::LEFT, LLFontGL::TOP); - + std::string text; text = llformat("GL Tot: %d/%d MB Bound: %d/%d MB Raw Tot: %d MB Bias: %.2f Cache: %.1f/%.1f MB", total_mem, max_total_mem, @@ -664,8 +560,7 @@ BOOL LLGLTexMemBar::handleMouseDown(S32 x, S32 y, MASK mask) LLRect LLGLTexMemBar::getRequiredRect() { LLRect rect; - //rect.mTop = 50; - rect.mTop = 0; + rect.mTop = 8; return rect; } @@ -745,7 +640,6 @@ LLTextureView::LLTextureView(const LLTextureView::Params& p) setDisplayChildren(TRUE); mGLTexMemBar = 0; - mAvatarTexBar = 0; } LLTextureView::~LLTextureView() @@ -753,9 +647,6 @@ LLTextureView::~LLTextureView() // Children all cleaned up by default view destructor. delete mGLTexMemBar; mGLTexMemBar = 0; - - delete mAvatarTexBar; - mAvatarTexBar = 0; } typedef std::pair<F32,LLViewerFetchedTexture*> decode_pair_t; @@ -793,13 +684,6 @@ void LLTextureView::draw() mGLTexMemBar = 0; } - if (mAvatarTexBar) - { - removeChild(mAvatarTexBar); - mAvatarTexBar->die(); - mAvatarTexBar = 0; - } - typedef std::multiset<decode_pair_t, compare_decode_pair > display_list_t; display_list_t display_image_list; @@ -824,7 +708,7 @@ void LLTextureView::draw() { S32 tex_mem = imagep->hasGLTexture() ? imagep->getTextureMemory() : 0 ; llinfos << imagep->getID() - << "\t" << tex_mem + << "\t" << tex_mem << "\t" << imagep->getBoostLevel() << "\t" << imagep->getDecodePriority() << "\t" << imagep->getWidth() @@ -839,6 +723,19 @@ void LLTextureView::draw() ++debug_count; // for breakpoints } +#if 0 + if (imagep->getDontDiscard()) + { + continue; + } + + if (imagep->isMissingAsset()) + { + continue; + } +#endif + +#define HIGH_PRIORITY 100000000.f F32 pri; if (mOrderFetch) { @@ -857,55 +754,59 @@ void LLTextureView::draw() if (!mOrderFetch) { - if (pri < HIGH_PRIORITY && LLSelectMgr::getInstance()) +#if 1 + if (pri < HIGH_PRIORITY && LLSelectMgr::getInstance()) + { + struct f : public LLSelectedTEFunctor { - struct f : public LLSelectedTEFunctor + LLViewerFetchedTexture* mImage; + f(LLViewerFetchedTexture* image) : mImage(image) {} + virtual bool apply(LLViewerObject* object, S32 te) { - LLViewerFetchedTexture* mImage; - f(LLViewerFetchedTexture* image) : mImage(image) {} - virtual bool apply(LLViewerObject* object, S32 te) - { - return (mImage == object->getTEImage(te)); - } - } func(imagep); - const bool firstonly = true; - bool match = LLSelectMgr::getInstance()->getSelection()->applyToTEs(&func, firstonly); - if (match) - { - pri += 3*HIGH_PRIORITY; + return (mImage == object->getTEImage(te)); } + } func(imagep); + const bool firstonly = true; + bool match = LLSelectMgr::getInstance()->getSelection()->applyToTEs(&func, firstonly); + if (match) + { + pri += 3*HIGH_PRIORITY; } - - if (pri < HIGH_PRIORITY && (cur_discard< 0 || desired_discard < cur_discard)) + } +#endif +#if 1 + if (pri < HIGH_PRIORITY && (cur_discard< 0 || desired_discard < cur_discard)) + { + LLSelectNode* hover_node = LLSelectMgr::instance().getHoverNode(); + if (hover_node) { - LLSelectNode* hover_node = LLSelectMgr::instance().getHoverNode(); - if (hover_node) + LLViewerObject *objectp = hover_node->getObject(); + if (objectp) { - LLViewerObject *objectp = hover_node->getObject(); - if (objectp) + S32 tex_count = objectp->getNumTEs(); + for (S32 i = 0; i < tex_count; i++) { - S32 tex_count = objectp->getNumTEs(); - for (S32 i = 0; i < tex_count; i++) + if (imagep == objectp->getTEImage(i)) { - if (imagep == objectp->getTEImage(i)) - { - pri += 2*HIGH_PRIORITY; - break; - } + pri += 2*HIGH_PRIORITY; + break; } } } } - - if (pri > 0.f && pri < HIGH_PRIORITY) + } +#endif +#if 1 + if (pri > 0.f && pri < HIGH_PRIORITY) + { + if (imagep->mLastPacketTimer.getElapsedTimeF32() < 1.f || + imagep->mFetchDeltaTime < 0.25f) { - if (imagep->mLastPacketTimer.getElapsedTimeF32() < 1.f || - imagep->mFetchDeltaTime < 0.25f) - { - pri += 1*HIGH_PRIORITY; - } + pri += 1*HIGH_PRIORITY; } } +#endif + } if (pri > 0.0f) { @@ -946,21 +847,11 @@ void LLTextureView::draw() sortChildren(LLTextureBar::sort()); LLGLTexMemBar::Params tmbp; - LLRect tmbr; tmbp.name("gl texmem bar"); - tmbp.rect(tmbr); tmbp.texture_view(this); mGLTexMemBar = LLUICtrlFactory::create<LLGLTexMemBar>(tmbp); - addChildInBack(mGLTexMemBar); - - LLAvatarTexBar::Params atbp; - LLRect atbr; - atbp.name("gl avatartex bar"); - atbp.texture_view(this); - atbp.rect(atbr); - mAvatarTexBar = LLUICtrlFactory::create<LLAvatarTexBar>(atbp); - addChild(mAvatarTexBar); - + addChild(mGLTexMemBar); + reshape(getRect().getWidth(), getRect().getHeight(), TRUE); /* |