Split gl-specific LLViewerTexture implementation into llrender/LLGLViewerTexture
parent
204be2ba52
commit
1f6e20c5bb
|
|
@ -30,7 +30,7 @@
|
|||
#include "llimage.h"
|
||||
#include "llrender.h"
|
||||
#include "lltexlayer.h"
|
||||
#include "lltexture.h"
|
||||
#include "llgltexture.h"
|
||||
#include "lluuid.h"
|
||||
#include "llwearable.h"
|
||||
|
||||
|
|
@ -42,7 +42,7 @@ LLLocalTextureObject::LLLocalTextureObject() :
|
|||
mImage = NULL;
|
||||
}
|
||||
|
||||
LLLocalTextureObject::LLLocalTextureObject(LLTexture* image, const LLUUID& id) :
|
||||
LLLocalTextureObject::LLLocalTextureObject(LLGLTexture* image, const LLUUID& id) :
|
||||
mIsBakedReady(FALSE),
|
||||
mDiscard(MAX_DISCARD_LEVEL+1)
|
||||
{
|
||||
|
|
@ -78,7 +78,7 @@ LLLocalTextureObject::~LLLocalTextureObject()
|
|||
{
|
||||
}
|
||||
|
||||
LLTexture* LLLocalTextureObject::getImage() const
|
||||
LLGLTexture* LLLocalTextureObject::getImage() const
|
||||
{
|
||||
return mImage;
|
||||
}
|
||||
|
|
@ -127,7 +127,7 @@ BOOL LLLocalTextureObject::getBakedReady() const
|
|||
return mIsBakedReady;
|
||||
}
|
||||
|
||||
void LLLocalTextureObject::setImage(LLTexture* new_image)
|
||||
void LLLocalTextureObject::setImage(LLGLTexture* new_image)
|
||||
{
|
||||
mImage = new_image;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
#include <boost/shared_ptr.hpp>
|
||||
|
||||
#include "llpointer.h"
|
||||
#include "lltexture.h"
|
||||
#include "llgltexture.h"
|
||||
|
||||
class LLUUID;
|
||||
class LLTexLayer;
|
||||
|
|
@ -44,11 +44,11 @@ class LLLocalTextureObject
|
|||
{
|
||||
public:
|
||||
LLLocalTextureObject();
|
||||
LLLocalTextureObject(LLTexture* image, const LLUUID& id);
|
||||
LLLocalTextureObject(LLGLTexture* image, const LLUUID& id);
|
||||
LLLocalTextureObject(const LLLocalTextureObject& lto);
|
||||
~LLLocalTextureObject();
|
||||
|
||||
LLTexture* getImage() const;
|
||||
LLGLTexture* getImage() const;
|
||||
LLTexLayer* getTexLayer(U32 index) const;
|
||||
LLTexLayer* getTexLayer(const std::string &name);
|
||||
U32 getNumTexLayers() const;
|
||||
|
|
@ -56,7 +56,7 @@ public:
|
|||
S32 getDiscard() const;
|
||||
BOOL getBakedReady() const;
|
||||
|
||||
void setImage(LLTexture* new_image);
|
||||
void setImage(LLGLTexture* new_image);
|
||||
BOOL setTexLayer(LLTexLayer *new_tex_layer, U32 index);
|
||||
BOOL addTexLayer(LLTexLayer *new_tex_layer, LLWearable *wearable);
|
||||
BOOL addTexLayer(LLTexLayerTemplate *new_tex_layer, LLWearable *wearable);
|
||||
|
|
@ -70,7 +70,7 @@ protected:
|
|||
|
||||
private:
|
||||
|
||||
LLPointer<LLTexture> mImage;
|
||||
LLPointer<LLGLTexture> mImage;
|
||||
// NOTE: LLLocalTextureObject should be the exclusive owner of mTexEntry and mTexLayer
|
||||
// using shared pointers here only for smart assignment & cleanup
|
||||
// do NOT create new shared pointers to these objects, or keep pointers to them around
|
||||
|
|
|
|||
|
|
@ -504,7 +504,7 @@ void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height,
|
|||
{
|
||||
gGL.flush();
|
||||
{
|
||||
LLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(info->mStaticAlphaFileName, TRUE);
|
||||
LLGLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(info->mStaticAlphaFileName, TRUE);
|
||||
if( tex )
|
||||
{
|
||||
LLGLSUIDefault gls_ui;
|
||||
|
|
@ -1087,7 +1087,7 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
|
|||
if( (getInfo()->mLocalTexture != -1) && !getInfo()->mUseLocalTextureAlphaOnly )
|
||||
{
|
||||
{
|
||||
LLTexture* tex = NULL;
|
||||
LLGLTexture* tex = NULL;
|
||||
if (mLocalTextureObject && mLocalTextureObject->getImage())
|
||||
{
|
||||
tex = mLocalTextureObject->getImage();
|
||||
|
|
@ -1137,7 +1137,7 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
|
|||
if( !getInfo()->mStaticImageFileName.empty() )
|
||||
{
|
||||
{
|
||||
LLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask);
|
||||
LLGLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask);
|
||||
if( tex )
|
||||
{
|
||||
gGL.getTexUnit(0)->bind(tex, TRUE);
|
||||
|
|
@ -1259,7 +1259,7 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
|
|||
|
||||
if( !getInfo()->mStaticImageFileName.empty() )
|
||||
{
|
||||
LLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture( getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask );
|
||||
LLGLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture( getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask );
|
||||
if( tex )
|
||||
{
|
||||
LLGLSNoAlphaTest gls_no_alpha_test;
|
||||
|
|
@ -1284,7 +1284,7 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
|
|||
{
|
||||
if (getInfo()->mLocalTexture >=0 && getInfo()->mLocalTexture < TEX_NUM_INDICES)
|
||||
{
|
||||
LLTexture* tex = mLocalTextureObject->getImage();
|
||||
LLGLTexture* tex = mLocalTextureObject->getImage();
|
||||
if (tex)
|
||||
{
|
||||
LLGLSNoAlphaTest gls_no_alpha_test;
|
||||
|
|
@ -1358,7 +1358,7 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
|
|||
// Accumulate the alpha component of the texture
|
||||
if( getInfo()->mLocalTexture != -1 )
|
||||
{
|
||||
LLTexture* tex = mLocalTextureObject->getImage();
|
||||
LLGLTexture* tex = mLocalTextureObject->getImage();
|
||||
if( tex && (tex->getComponents() == 4) )
|
||||
{
|
||||
LLGLSNoAlphaTest gls_no_alpha_test;
|
||||
|
|
@ -1376,7 +1376,7 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
|
|||
|
||||
if( !getInfo()->mStaticImageFileName.empty() )
|
||||
{
|
||||
LLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask);
|
||||
LLGLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask);
|
||||
if( tex )
|
||||
{
|
||||
if( (tex->getComponents() == 4) ||
|
||||
|
|
@ -1493,7 +1493,7 @@ LLUUID LLTexLayer::getUUID() const
|
|||
LLUUID uuid;
|
||||
if( getInfo()->mLocalTexture != -1 )
|
||||
{
|
||||
LLTexture* tex = mLocalTextureObject->getImage();
|
||||
LLGLTexture* tex = mLocalTextureObject->getImage();
|
||||
if (tex)
|
||||
{
|
||||
uuid = mLocalTextureObject->getID();
|
||||
|
|
@ -1501,7 +1501,7 @@ LLUUID LLTexLayer::getUUID() const
|
|||
}
|
||||
if( !getInfo()->mStaticImageFileName.empty() )
|
||||
{
|
||||
LLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask);
|
||||
LLGLTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask);
|
||||
if( tex )
|
||||
{
|
||||
uuid = tex->getID();
|
||||
|
|
@ -1821,9 +1821,9 @@ LLImageTGA* LLTexLayerStaticImageList::getImageTGA(const std::string& file_name)
|
|||
|
||||
// Returns a GL Image (without a backing ImageRaw) that contains the decoded data from a tga file named file_name.
|
||||
// Caches the result to speed identical subsequent requests.
|
||||
LLTexture* LLTexLayerStaticImageList::getTexture(const std::string& file_name, BOOL is_mask)
|
||||
LLGLTexture* LLTexLayerStaticImageList::getTexture(const std::string& file_name, BOOL is_mask)
|
||||
{
|
||||
LLPointer<LLTexture> tex;
|
||||
LLPointer<LLGLTexture> tex;
|
||||
const char *namekey = mImageNames.addString(file_name);
|
||||
|
||||
texture_map_t::const_iterator iter = mStaticImageList.find(namekey);
|
||||
|
|
@ -1844,7 +1844,7 @@ LLTexture* LLTexLayerStaticImageList::getTexture(const std::string& file_name, B
|
|||
// that once an image is a mask it's always a mask.
|
||||
tex->setExplicitFormat( GL_ALPHA8, GL_ALPHA );
|
||||
}
|
||||
tex->createGLTexture(0, image_raw, 0, TRUE, LLTexture::LOCAL);
|
||||
tex->createGLTexture(0, image_raw, 0, TRUE, LLGLTexture::LOCAL);
|
||||
|
||||
gGL.getTexUnit(0)->bind(tex);
|
||||
tex->setAddressMode(LLTexUnit::TAM_CLAMP);
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
#define LL_LLTEXLAYER_H
|
||||
|
||||
#include <deque>
|
||||
#include "lltexture.h"
|
||||
#include "llgltexture.h"
|
||||
#include "llframetimer.h"
|
||||
#include "llavatarappearancedefines.h"
|
||||
#include "lltexlayerparams.h"
|
||||
|
|
@ -287,7 +287,7 @@ class LLTexLayerStaticImageList : public LLSingleton<LLTexLayerStaticImageList>
|
|||
public:
|
||||
LLTexLayerStaticImageList();
|
||||
~LLTexLayerStaticImageList();
|
||||
LLTexture* getTexture(const std::string& file_name, BOOL is_mask);
|
||||
LLGLTexture* getTexture(const std::string& file_name, BOOL is_mask);
|
||||
LLImageTGA* getImageTGA(const std::string& file_name);
|
||||
void deleteCachedImages();
|
||||
void dumpByteCount() const;
|
||||
|
|
@ -295,7 +295,7 @@ protected:
|
|||
BOOL loadImageRaw(const std::string& file_name, LLImageRaw* image_raw);
|
||||
private:
|
||||
LLStringTable mImageNames;
|
||||
typedef std::map<const char*, LLPointer<LLTexture> > texture_map_t;
|
||||
typedef std::map<const char*, LLPointer<LLGLTexture> > texture_map_t;
|
||||
texture_map_t mStaticImageList;
|
||||
typedef std::map<const char*, LLPointer<LLImageTGA> > image_tga_map_t;
|
||||
image_tga_map_t mStaticImageListTGA;
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ void LLTexLayerParamAlpha::getCacheByteCount(S32* gl_bytes)
|
|||
iter != sInstances.end(); iter++)
|
||||
{
|
||||
LLTexLayerParamAlpha* instance = *iter;
|
||||
LLTexture* tex = instance->mCachedProcessedTexture;
|
||||
LLGLTexture* tex = instance->mCachedProcessedTexture;
|
||||
if (tex)
|
||||
{
|
||||
S32 bytes = (S32)tex->getWidth() * tex->getHeight() * tex->getComponents();
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ class LLImageRaw;
|
|||
class LLImageTGA;
|
||||
class LLTexLayer;
|
||||
class LLTexLayerInterface;
|
||||
class LLTexture;
|
||||
class LLGLTexture;
|
||||
class LLWearable;
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
|
@ -91,7 +91,7 @@ public:
|
|||
BOOL getMultiplyBlend() const;
|
||||
|
||||
private:
|
||||
LLPointer<LLTexture> mCachedProcessedTexture;
|
||||
LLPointer<LLGLTexture> mCachedProcessedTexture;
|
||||
LLPointer<LLImageTGA> mStaticImageTGA;
|
||||
LLPointer<LLImageRaw> mStaticImageRaw;
|
||||
BOOL mNeedsCreateTexture;
|
||||
|
|
|
|||
|
|
@ -28,15 +28,15 @@
|
|||
#define LL_TEXTUREMANAGERBRIDGE_H
|
||||
|
||||
#include "llpointer.h"
|
||||
#include "lltexture.h"
|
||||
#include "llgltexture.h"
|
||||
|
||||
// Abstract bridge interface
|
||||
class LLTextureManagerBridge
|
||||
{
|
||||
public:
|
||||
virtual LLPointer<LLTexture> getLocalTexture(BOOL usemipmaps = TRUE, BOOL generate_gl_tex = TRUE) = 0;
|
||||
virtual LLPointer<LLTexture> getLocalTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps, BOOL generate_gl_tex = TRUE) = 0;
|
||||
virtual LLTexture* getFetchedTexture(const LLUUID &image_id) = 0;
|
||||
virtual LLPointer<LLGLTexture> getLocalTexture(BOOL usemipmaps = TRUE, BOOL generate_gl_tex = TRUE) = 0;
|
||||
virtual LLPointer<LLGLTexture> getLocalTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps, BOOL generate_gl_tex = TRUE) = 0;
|
||||
virtual LLGLTexture* getFetchedTexture(const LLUUID &image_id) = 0;
|
||||
};
|
||||
|
||||
extern LLTextureManagerBridge* gTextureManagerBridgep;
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ set(llrender_SOURCE_FILES
|
|||
llfontregistry.cpp
|
||||
llgldbg.cpp
|
||||
llglslshader.cpp
|
||||
llgltexture.cpp
|
||||
llimagegl.cpp
|
||||
llpostprocess.cpp
|
||||
llrendernavprim.cpp
|
||||
|
|
@ -56,6 +57,7 @@ set(llrender_HEADER_FILES
|
|||
llglheaders.h
|
||||
llglslshader.h
|
||||
llglstates.h
|
||||
llgltexture.h
|
||||
llgltypes.h
|
||||
llimagegl.h
|
||||
llpostprocess.h
|
||||
|
|
|
|||
|
|
@ -0,0 +1,396 @@
|
|||
/**
|
||||
* @file llgltexture.cpp
|
||||
* @brief Opengl texture implementation
|
||||
*
|
||||
* $LicenseInfo:firstyear=2000&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 "llgltexture.h"
|
||||
|
||||
|
||||
// static
|
||||
S32 LLGLTexture::getTotalNumOfCategories()
|
||||
{
|
||||
return MAX_GL_IMAGE_CATEGORY - (BOOST_HIGH - BOOST_SCULPTED) + 2 ;
|
||||
}
|
||||
|
||||
// static
|
||||
//index starts from zero.
|
||||
S32 LLGLTexture::getIndexFromCategory(S32 category)
|
||||
{
|
||||
return (category < BOOST_HIGH) ? category : category - (BOOST_HIGH - BOOST_SCULPTED) + 1 ;
|
||||
}
|
||||
|
||||
//static
|
||||
S32 LLGLTexture::getCategoryFromIndex(S32 index)
|
||||
{
|
||||
return (index < BOOST_HIGH) ? index : index + (BOOST_HIGH - BOOST_SCULPTED) - 1 ;
|
||||
}
|
||||
|
||||
LLGLTexture::LLGLTexture(BOOL usemipmaps)
|
||||
{
|
||||
init();
|
||||
mUseMipMaps = usemipmaps;
|
||||
}
|
||||
|
||||
LLGLTexture::LLGLTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps)
|
||||
{
|
||||
init();
|
||||
mFullWidth = width ;
|
||||
mFullHeight = height ;
|
||||
mUseMipMaps = usemipmaps;
|
||||
mComponents = components ;
|
||||
setTexelsPerImage();
|
||||
}
|
||||
|
||||
LLGLTexture::LLGLTexture(const LLImageRaw* raw, BOOL usemipmaps)
|
||||
{
|
||||
init();
|
||||
mUseMipMaps = usemipmaps ;
|
||||
// Create an empty image of the specified size and width
|
||||
mGLTexturep = new LLImageGL(raw, usemipmaps) ;
|
||||
}
|
||||
|
||||
LLGLTexture::~LLGLTexture()
|
||||
{
|
||||
cleanup();
|
||||
}
|
||||
|
||||
void LLGLTexture::init()
|
||||
{
|
||||
mBoostLevel = LLGLTexture::BOOST_NONE;
|
||||
|
||||
mFullWidth = 0;
|
||||
mFullHeight = 0;
|
||||
mTexelsPerImage = 0 ;
|
||||
mUseMipMaps = FALSE ;
|
||||
mComponents = 0 ;
|
||||
|
||||
mTextureState = NO_DELETE ;
|
||||
mDontDiscard = FALSE;
|
||||
mNeedsGLTexture = FALSE ;
|
||||
}
|
||||
|
||||
void LLGLTexture::cleanup()
|
||||
{
|
||||
if(mGLTexturep)
|
||||
{
|
||||
mGLTexturep->cleanup();
|
||||
}
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLGLTexture::dump()
|
||||
{
|
||||
if(mGLTexturep)
|
||||
{
|
||||
mGLTexturep->dump();
|
||||
}
|
||||
}
|
||||
|
||||
void LLGLTexture::setBoostLevel(S32 level)
|
||||
{
|
||||
if(mBoostLevel != level)
|
||||
{
|
||||
mBoostLevel = level ;
|
||||
if(mBoostLevel != LLGLTexture::BOOST_NONE)
|
||||
{
|
||||
setNoDelete() ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LLGLTexture::forceActive()
|
||||
{
|
||||
mTextureState = ACTIVE ;
|
||||
}
|
||||
|
||||
void LLGLTexture::setActive()
|
||||
{
|
||||
if(mTextureState != NO_DELETE)
|
||||
{
|
||||
mTextureState = ACTIVE ;
|
||||
}
|
||||
}
|
||||
|
||||
//set the texture to stay in memory
|
||||
void LLGLTexture::setNoDelete()
|
||||
{
|
||||
mTextureState = NO_DELETE ;
|
||||
}
|
||||
|
||||
void LLGLTexture::generateGLTexture()
|
||||
{
|
||||
if(mGLTexturep.isNull())
|
||||
{
|
||||
mGLTexturep = new LLImageGL(mFullWidth, mFullHeight, mComponents, mUseMipMaps) ;
|
||||
}
|
||||
}
|
||||
|
||||
LLImageGL* LLGLTexture::getGLTexture() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep ;
|
||||
}
|
||||
|
||||
BOOL LLGLTexture::createGLTexture()
|
||||
{
|
||||
if(mGLTexturep.isNull())
|
||||
{
|
||||
generateGLTexture() ;
|
||||
}
|
||||
|
||||
return mGLTexturep->createGLTexture() ;
|
||||
}
|
||||
|
||||
BOOL LLGLTexture::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename, BOOL to_create, S32 category)
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
BOOL ret = mGLTexturep->createGLTexture(discard_level, imageraw, usename, to_create, category) ;
|
||||
|
||||
if(ret)
|
||||
{
|
||||
mFullWidth = mGLTexturep->getCurrentWidth() ;
|
||||
mFullHeight = mGLTexturep->getCurrentHeight() ;
|
||||
mComponents = mGLTexturep->getComponents() ;
|
||||
setTexelsPerImage();
|
||||
}
|
||||
|
||||
return ret ;
|
||||
}
|
||||
|
||||
void LLGLTexture::setExplicitFormat(LLGLint internal_format, LLGLenum primary_format, LLGLenum type_format, BOOL swap_bytes)
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
mGLTexturep->setExplicitFormat(internal_format, primary_format, type_format, swap_bytes) ;
|
||||
}
|
||||
void LLGLTexture::setAddressMode(LLTexUnit::eTextureAddressMode mode)
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
mGLTexturep->setAddressMode(mode) ;
|
||||
}
|
||||
void LLGLTexture::setFilteringOption(LLTexUnit::eTextureFilterOptions option)
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
mGLTexturep->setFilteringOption(option) ;
|
||||
}
|
||||
|
||||
//virtual
|
||||
S32 LLGLTexture::getWidth(S32 discard_level) const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
return mGLTexturep->getWidth(discard_level) ;
|
||||
}
|
||||
|
||||
//virtual
|
||||
S32 LLGLTexture::getHeight(S32 discard_level) const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
return mGLTexturep->getHeight(discard_level) ;
|
||||
}
|
||||
|
||||
S32 LLGLTexture::getMaxDiscardLevel() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
return mGLTexturep->getMaxDiscardLevel() ;
|
||||
}
|
||||
S32 LLGLTexture::getDiscardLevel() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
return mGLTexturep->getDiscardLevel() ;
|
||||
}
|
||||
S8 LLGLTexture::getComponents() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getComponents() ;
|
||||
}
|
||||
|
||||
LLGLuint LLGLTexture::getTexName() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getTexName() ;
|
||||
}
|
||||
|
||||
BOOL LLGLTexture::hasGLTexture() const
|
||||
{
|
||||
if(mGLTexturep.notNull())
|
||||
{
|
||||
return mGLTexturep->getHasGLTexture() ;
|
||||
}
|
||||
return FALSE ;
|
||||
}
|
||||
|
||||
BOOL LLGLTexture::getBoundRecently() const
|
||||
{
|
||||
if(mGLTexturep.notNull())
|
||||
{
|
||||
return mGLTexturep->getBoundRecently() ;
|
||||
}
|
||||
return FALSE ;
|
||||
}
|
||||
|
||||
LLTexUnit::eTextureType LLGLTexture::getTarget(void) const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
return mGLTexturep->getTarget() ;
|
||||
}
|
||||
|
||||
BOOL LLGLTexture::setSubImage(const LLImageRaw* imageraw, S32 x_pos, S32 y_pos, S32 width, S32 height)
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->setSubImage(imageraw, x_pos, y_pos, width, height) ;
|
||||
}
|
||||
|
||||
BOOL LLGLTexture::setSubImage(const U8* datap, S32 data_width, S32 data_height, S32 x_pos, S32 y_pos, S32 width, S32 height)
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->setSubImage(datap, data_width, data_height, x_pos, y_pos, width, height) ;
|
||||
}
|
||||
|
||||
void LLGLTexture::setGLTextureCreated (bool initialized)
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
mGLTexturep->setGLTextureCreated (initialized) ;
|
||||
}
|
||||
|
||||
void LLGLTexture::setCategory(S32 category)
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
mGLTexturep->setCategory(category) ;
|
||||
}
|
||||
|
||||
LLTexUnit::eTextureAddressMode LLGLTexture::getAddressMode(void) const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getAddressMode() ;
|
||||
}
|
||||
|
||||
S32 LLGLTexture::getTextureMemory() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->mTextureMemory ;
|
||||
}
|
||||
|
||||
LLGLenum LLGLTexture::getPrimaryFormat() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getPrimaryFormat() ;
|
||||
}
|
||||
|
||||
BOOL LLGLTexture::getIsAlphaMask() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getIsAlphaMask() ;
|
||||
}
|
||||
|
||||
BOOL LLGLTexture::getMask(const LLVector2 &tc)
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getMask(tc) ;
|
||||
}
|
||||
|
||||
F32 LLGLTexture::getTimePassedSinceLastBound()
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getTimePassedSinceLastBound() ;
|
||||
}
|
||||
BOOL LLGLTexture::getMissed() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getMissed() ;
|
||||
}
|
||||
|
||||
BOOL LLGLTexture::isJustBound() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->isJustBound() ;
|
||||
}
|
||||
|
||||
void LLGLTexture::forceUpdateBindStats(void) const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->forceUpdateBindStats() ;
|
||||
}
|
||||
|
||||
U32 LLGLTexture::getTexelsInAtlas() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getTexelsInAtlas() ;
|
||||
}
|
||||
|
||||
U32 LLGLTexture::getTexelsInGLTexture() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getTexelsInGLTexture() ;
|
||||
}
|
||||
|
||||
BOOL LLGLTexture::isGLTextureCreated() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->isGLTextureCreated() ;
|
||||
}
|
||||
|
||||
S32 LLGLTexture::getDiscardLevelInAtlas() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getDiscardLevelInAtlas() ;
|
||||
}
|
||||
|
||||
void LLGLTexture::destroyGLTexture()
|
||||
{
|
||||
if(mGLTexturep.notNull() && mGLTexturep->getHasGLTexture())
|
||||
{
|
||||
mGLTexturep->destroyGLTexture() ;
|
||||
mTextureState = DELETED ;
|
||||
}
|
||||
}
|
||||
|
||||
void LLGLTexture::setTexelsPerImage()
|
||||
{
|
||||
S32 fullwidth = llmin(mFullWidth,(S32)MAX_IMAGE_SIZE_DEFAULT);
|
||||
S32 fullheight = llmin(mFullHeight,(S32)MAX_IMAGE_SIZE_DEFAULT);
|
||||
mTexelsPerImage = (F32)fullwidth * fullheight;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,196 @@
|
|||
/**
|
||||
* @file llglviewertexture.h
|
||||
* @brief Object for managing opengl textures
|
||||
*
|
||||
* $LicenseInfo:firstyear=2012&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_GL_TEXTURE_H
|
||||
#define LL_GL_TEXTURE_H
|
||||
|
||||
#include "lltexture.h"
|
||||
#include "llgl.h"
|
||||
|
||||
class LLImageRaw;
|
||||
|
||||
//
|
||||
//this the parent for the class LLViewerTexture
|
||||
//through the following virtual functions, the class LLViewerTexture can be reached from /llrender.
|
||||
//
|
||||
class LLGLTexture : public LLTexture
|
||||
{
|
||||
public:
|
||||
enum
|
||||
{
|
||||
MAX_IMAGE_SIZE_DEFAULT = 1024,
|
||||
INVALID_DISCARD_LEVEL = 0x7fff
|
||||
};
|
||||
|
||||
enum EBoostLevel
|
||||
{
|
||||
BOOST_NONE = 0,
|
||||
BOOST_AVATAR_BAKED ,
|
||||
BOOST_AVATAR ,
|
||||
BOOST_CLOUDS ,
|
||||
BOOST_SCULPTED ,
|
||||
|
||||
BOOST_HIGH = 10,
|
||||
BOOST_BUMP ,
|
||||
BOOST_TERRAIN , // has to be high priority for minimap / low detail
|
||||
BOOST_SELECTED ,
|
||||
BOOST_AVATAR_BAKED_SELF ,
|
||||
BOOST_AVATAR_SELF , // needed for baking avatar
|
||||
BOOST_SUPER_HIGH , //textures higher than this need to be downloaded at the required resolution without delay.
|
||||
BOOST_HUD ,
|
||||
BOOST_ICON ,
|
||||
BOOST_UI ,
|
||||
BOOST_PREVIEW ,
|
||||
BOOST_MAP ,
|
||||
BOOST_MAP_VISIBLE ,
|
||||
BOOST_MAX_LEVEL,
|
||||
|
||||
//other texture Categories
|
||||
LOCAL = BOOST_MAX_LEVEL,
|
||||
AVATAR_SCRATCH_TEX,
|
||||
DYNAMIC_TEX,
|
||||
MEDIA,
|
||||
ATLAS,
|
||||
OTHER,
|
||||
MAX_GL_IMAGE_CATEGORY
|
||||
};
|
||||
|
||||
static S32 getTotalNumOfCategories() ;
|
||||
static S32 getIndexFromCategory(S32 category) ;
|
||||
static S32 getCategoryFromIndex(S32 index) ;
|
||||
|
||||
protected:
|
||||
virtual ~LLGLTexture();
|
||||
LOG_CLASS(LLGLTexture);
|
||||
|
||||
public:
|
||||
LLGLTexture(BOOL usemipmaps = TRUE);
|
||||
LLGLTexture(const LLImageRaw* raw, BOOL usemipmaps) ;
|
||||
LLGLTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps) ;
|
||||
|
||||
virtual void dump(); // debug info to llinfos
|
||||
|
||||
void setBoostLevel(S32 level);
|
||||
S32 getBoostLevel() { return mBoostLevel; }
|
||||
|
||||
S32 getFullWidth() const { return mFullWidth; }
|
||||
S32 getFullHeight() const { return mFullHeight; }
|
||||
|
||||
void generateGLTexture() ;
|
||||
void destroyGLTexture() ;
|
||||
|
||||
virtual const LLUUID& getID() const = 0;
|
||||
|
||||
//---------------------------------------------------------------------------------------------
|
||||
//functions to access LLImageGL
|
||||
//---------------------------------------------------------------------------------------------
|
||||
/*virtual*/S32 getWidth(S32 discard_level = -1) const;
|
||||
/*virtual*/S32 getHeight(S32 discard_level = -1) const;
|
||||
|
||||
BOOL hasGLTexture() const ;
|
||||
LLGLuint getTexName() const ;
|
||||
BOOL createGLTexture() ;
|
||||
BOOL createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename = 0, BOOL to_create = TRUE, S32 category = LLGLTexture::OTHER);
|
||||
|
||||
void setFilteringOption(LLTexUnit::eTextureFilterOptions option);
|
||||
void setExplicitFormat(LLGLint internal_format, LLGLenum primary_format, LLGLenum type_format = 0, BOOL swap_bytes = FALSE);
|
||||
void setAddressMode(LLTexUnit::eTextureAddressMode mode);
|
||||
BOOL setSubImage(const LLImageRaw* imageraw, S32 x_pos, S32 y_pos, S32 width, S32 height);
|
||||
BOOL setSubImage(const U8* datap, S32 data_width, S32 data_height, S32 x_pos, S32 y_pos, S32 width, S32 height);
|
||||
void setGLTextureCreated (bool initialized);
|
||||
void setCategory(S32 category) ;
|
||||
|
||||
LLTexUnit::eTextureAddressMode getAddressMode(void) const ;
|
||||
S32 getMaxDiscardLevel() const;
|
||||
S32 getDiscardLevel() const;
|
||||
S8 getComponents() const;
|
||||
BOOL getBoundRecently() const;
|
||||
S32 getTextureMemory() const ;
|
||||
LLGLenum getPrimaryFormat() const;
|
||||
BOOL getIsAlphaMask() const ;
|
||||
LLTexUnit::eTextureType getTarget(void) const ;
|
||||
BOOL getMask(const LLVector2 &tc);
|
||||
F32 getTimePassedSinceLastBound();
|
||||
BOOL getMissed() const ;
|
||||
BOOL isJustBound()const ;
|
||||
void forceUpdateBindStats(void) const;
|
||||
|
||||
U32 getTexelsInAtlas() const ;
|
||||
U32 getTexelsInGLTexture() const ;
|
||||
BOOL isGLTextureCreated() const ;
|
||||
S32 getDiscardLevelInAtlas() const ;
|
||||
//---------------------------------------------------------------------------------------------
|
||||
//end of functions to access LLImageGL
|
||||
//---------------------------------------------------------------------------------------------
|
||||
|
||||
//-----------------
|
||||
/*virtual*/ void setActive() ;
|
||||
void forceActive() ;
|
||||
void setNoDelete() ;
|
||||
void dontDiscard() { mDontDiscard = 1; mTextureState = NO_DELETE; }
|
||||
BOOL getDontDiscard() const { return mDontDiscard; }
|
||||
//-----------------
|
||||
|
||||
private:
|
||||
void cleanup();
|
||||
void init();
|
||||
|
||||
protected:
|
||||
void setTexelsPerImage();
|
||||
|
||||
//note: do not make this function public.
|
||||
/*virtual*/ LLImageGL* getGLTexture() const ;
|
||||
|
||||
protected:
|
||||
S32 mBoostLevel; // enum describing priority level
|
||||
S32 mFullWidth;
|
||||
S32 mFullHeight;
|
||||
BOOL mUseMipMaps;
|
||||
S8 mComponents;
|
||||
F32 mTexelsPerImage; // Texels per image.
|
||||
mutable S8 mNeedsGLTexture;
|
||||
|
||||
//GL texture
|
||||
LLPointer<LLImageGL> mGLTexturep ;
|
||||
S8 mDontDiscard; // Keep full res version of this image (for UI, etc)
|
||||
|
||||
protected:
|
||||
typedef enum
|
||||
{
|
||||
DELETED = 0, //removed from memory
|
||||
DELETION_CANDIDATE, //ready to be removed from memory
|
||||
INACTIVE, //not be used for the last certain period (i.e., 30 seconds).
|
||||
ACTIVE, //just being used, can become inactive if not being used for a certain time (10 seconds).
|
||||
NO_DELETE = 99 //stay in memory, can not be removed.
|
||||
} LLGLTextureState;
|
||||
LLGLTextureState mTextureState ;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif // LL_GL_TEXTURE_H
|
||||
|
||||
|
|
@ -32,18 +32,15 @@
|
|||
#ifndef LL_TEXTURE_H
|
||||
#define LL_TEXTURE_H
|
||||
|
||||
#include "llgltypes.h"
|
||||
#include "llrefcount.h"
|
||||
#include "llrender.h"
|
||||
|
||||
class LLImageGL ;
|
||||
class LLTexUnit ;
|
||||
class LLFontGL ;
|
||||
class LLImageRaw ;
|
||||
|
||||
//
|
||||
//this is an abstract class as the parent for the class LLViewerTexture
|
||||
//through the following virtual functions, the class LLViewerTexture can be reached from /llrender.
|
||||
//this is an abstract class as the parent for the class LLGLTexture
|
||||
//
|
||||
class LLTexture : public virtual LLRefCount
|
||||
class LLTexture : public LLRefCount
|
||||
{
|
||||
friend class LLTexUnit ;
|
||||
friend class LLFontGL ;
|
||||
|
|
@ -54,41 +51,8 @@ protected:
|
|||
public:
|
||||
LLTexture(){}
|
||||
|
||||
enum EBoostLevel
|
||||
{
|
||||
BOOST_NONE = 0,
|
||||
BOOST_AVATAR_BAKED ,
|
||||
BOOST_AVATAR ,
|
||||
BOOST_CLOUDS ,
|
||||
BOOST_SCULPTED ,
|
||||
|
||||
BOOST_HIGH = 10,
|
||||
BOOST_BUMP ,
|
||||
BOOST_TERRAIN , // has to be high priority for minimap / low detail
|
||||
BOOST_SELECTED ,
|
||||
BOOST_AVATAR_BAKED_SELF ,
|
||||
BOOST_AVATAR_SELF , // needed for baking avatar
|
||||
BOOST_SUPER_HIGH , //textures higher than this need to be downloaded at the required resolution without delay.
|
||||
BOOST_HUD ,
|
||||
BOOST_ICON ,
|
||||
BOOST_UI ,
|
||||
BOOST_PREVIEW ,
|
||||
BOOST_MAP ,
|
||||
BOOST_MAP_VISIBLE ,
|
||||
BOOST_MAX_LEVEL,
|
||||
|
||||
//other texture Categories
|
||||
LOCAL = BOOST_MAX_LEVEL,
|
||||
AVATAR_SCRATCH_TEX,
|
||||
DYNAMIC_TEX,
|
||||
MEDIA,
|
||||
ATLAS,
|
||||
OTHER,
|
||||
MAX_GL_IMAGE_CATEGORY
|
||||
};
|
||||
|
||||
//
|
||||
//interfaces to access LLViewerTexture
|
||||
//interfaces to access LLGLTexture
|
||||
//
|
||||
virtual S8 getType() const = 0 ;
|
||||
virtual void setKnownDrawSize(S32 width, S32 height) = 0 ;
|
||||
|
|
@ -97,13 +61,6 @@ public:
|
|||
virtual void setActive() = 0 ;
|
||||
virtual S32 getWidth(S32 discard_level = -1) const = 0 ;
|
||||
virtual S32 getHeight(S32 discard_level = -1) const = 0 ;
|
||||
virtual BOOL hasGLTexture() const = 0;
|
||||
virtual BOOL createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename = 0, BOOL to_create = TRUE, S32 category = LLTexture::OTHER) = 0;
|
||||
virtual void setExplicitFormat(LLGLint internal_format, LLGLenum primary_format, LLGLenum type_format = 0, BOOL swap_bytes = FALSE) = 0;
|
||||
virtual void setAddressMode(LLTexUnit::eTextureAddressMode mode) = 0;
|
||||
virtual LLTexUnit::eTextureAddressMode getAddressMode(void) const = 0;
|
||||
virtual S8 getComponents() const = 0;
|
||||
virtual const LLUUID& getID() const = 0;
|
||||
|
||||
private:
|
||||
//note: do not make this function public.
|
||||
|
|
|
|||
|
|
@ -242,7 +242,7 @@ void LLColorSwatchCtrl::draw()
|
|||
if (!mFallbackImageName.empty())
|
||||
{
|
||||
LLPointer<LLViewerFetchedTexture> fallback_image = LLViewerTextureManager::getFetchedTextureFromFile(mFallbackImageName, TRUE,
|
||||
LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
|
||||
LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
|
||||
if( fallback_image->getComponents() == 4 )
|
||||
{
|
||||
gl_rect_2d_checkerboard( interior );
|
||||
|
|
|
|||
|
|
@ -153,7 +153,7 @@ void LLStandardBumpmap::addstandard()
|
|||
gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mLabel = label;
|
||||
gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage =
|
||||
LLViewerTextureManager::getFetchedTexture(LLUUID(bump_image_id));
|
||||
gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage->setBoostLevel(LLViewerTexture::BOOST_BUMP) ;
|
||||
gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage->setBoostLevel(LLGLTexture::BOOST_BUMP) ;
|
||||
gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage->setLoadedCallback(LLBumpImageList::onSourceStandardLoaded, 0, TRUE, FALSE, NULL, NULL );
|
||||
gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage->forceToSaveRawImage(0) ;
|
||||
LLStandardBumpmap::sStandardBumpmapCount++;
|
||||
|
|
@ -1075,7 +1075,7 @@ LLViewerTexture* LLBumpImageList::getBrightnessDarknessImage(LLViewerFetchedText
|
|||
src_image->getHeight() != bump->getHeight())// ||
|
||||
//(LLPipeline::sRenderDeferred && bump->getComponents() != 4))
|
||||
{
|
||||
src_image->setBoostLevel(LLViewerTexture::BOOST_BUMP) ;
|
||||
src_image->setBoostLevel(LLGLTexture::BOOST_BUMP) ;
|
||||
src_image->setLoadedCallback( callback_func, 0, TRUE, FALSE, new LLUUID(src_image->getID()), NULL );
|
||||
src_image->forceToSaveRawImage(0) ;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ LLDrawPoolTerrain::LLDrawPoolTerrain(LLViewerTexture *texturep) :
|
|||
sDetailScale = 1.f/gSavedSettings.getF32("RenderTerrainScale");
|
||||
sDetailMode = gSavedSettings.getS32("RenderTerrainDetail");
|
||||
mAlphaRampImagep = LLViewerTextureManager::getFetchedTextureFromFile("alpha_gradient.tga",
|
||||
TRUE, LLViewerTexture::BOOST_UI,
|
||||
TRUE, LLGLTexture::BOOST_UI,
|
||||
LLViewerTexture::FETCHED_TEXTURE,
|
||||
format, int_format,
|
||||
LLUUID("e97cf410-8e61-7005-ec06-629eba4cd1fb"));
|
||||
|
|
@ -78,7 +78,7 @@ LLDrawPoolTerrain::LLDrawPoolTerrain(LLViewerTexture *texturep) :
|
|||
mAlphaRampImagep->setAddressMode(LLTexUnit::TAM_CLAMP);
|
||||
|
||||
m2DAlphaRampImagep = LLViewerTextureManager::getFetchedTextureFromFile("alpha_gradient_2d.j2c",
|
||||
TRUE, LLViewerTexture::BOOST_UI,
|
||||
TRUE, LLGLTexture::BOOST_UI,
|
||||
LLViewerTexture::FETCHED_TEXTURE,
|
||||
format, int_format,
|
||||
LLUUID("38b86f85-2575-52a9-a531-23108d8da837"));
|
||||
|
|
@ -86,7 +86,7 @@ LLDrawPoolTerrain::LLDrawPoolTerrain(LLViewerTexture *texturep) :
|
|||
//gGL.getTexUnit(0)->bind(m2DAlphaRampImagep.get());
|
||||
m2DAlphaRampImagep->setAddressMode(LLTexUnit::TAM_CLAMP);
|
||||
|
||||
mTexturep->setBoostLevel(LLViewerTexture::BOOST_TERRAIN);
|
||||
mTexturep->setBoostLevel(LLGLTexture::BOOST_TERRAIN);
|
||||
|
||||
//gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
|
||||
}
|
||||
|
|
@ -170,7 +170,7 @@ void LLDrawPoolTerrain::render(S32 pass)
|
|||
LLVLComposition *compp = regionp->getComposition();
|
||||
for (S32 i = 0; i < 4; i++)
|
||||
{
|
||||
compp->mDetailTextures[i]->setBoostLevel(LLViewerTexture::BOOST_TERRAIN);
|
||||
compp->mDetailTextures[i]->setBoostLevel(LLGLTexture::BOOST_TERRAIN);
|
||||
compp->mDetailTextures[i]->addTextureStats(1024.f*1024.f); // assume large pixel area
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -66,11 +66,11 @@ LLVector3 LLDrawPoolWater::sLightDir;
|
|||
LLDrawPoolWater::LLDrawPoolWater() :
|
||||
LLFacePool(POOL_WATER)
|
||||
{
|
||||
mHBTex[0] = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, LLViewerTexture::BOOST_UI);
|
||||
mHBTex[0] = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, LLGLTexture::BOOST_UI);
|
||||
gGL.getTexUnit(0)->bind(mHBTex[0]) ;
|
||||
mHBTex[0]->setAddressMode(LLTexUnit::TAM_CLAMP);
|
||||
|
||||
mHBTex[1] = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, LLViewerTexture::BOOST_UI);
|
||||
mHBTex[1] = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, LLGLTexture::BOOST_UI);
|
||||
gGL.getTexUnit(0)->bind(mHBTex[1]);
|
||||
mHBTex[1]->setAddressMode(LLTexUnit::TAM_CLAMP);
|
||||
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ void LLViewerDynamicTexture::generateGLTexture(LLGLint internal_format, LLGLenum
|
|||
{
|
||||
setExplicitFormat(internal_format, primary_format, type_format, swap_bytes);
|
||||
}
|
||||
createGLTexture(0, raw_image, 0, TRUE, LLViewerTexture::DYNAMIC_TEX);
|
||||
createGLTexture(0, raw_image, 0, TRUE, LLGLTexture::DYNAMIC_TEX);
|
||||
setAddressMode((mClamp) ? LLTexUnit::TAM_CLAMP : LLTexUnit::TAM_WRAP);
|
||||
mGLTexturep->setGLTextureCreated(false);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -560,8 +560,8 @@ void LLFace::renderSelected(LLViewerTexture *imagep, const LLColor4& color)
|
|||
/* removed in lieu of raycast uv detection
|
||||
void LLFace::renderSelectedUV()
|
||||
{
|
||||
LLViewerTexture* red_blue_imagep = LLViewerTextureManager::getFetchedTextureFromFile("uv_test1.j2c", TRUE, LLViewerTexture::BOOST_UI);
|
||||
LLViewerTexture* green_imagep = LLViewerTextureManager::getFetchedTextureFromFile("uv_test2.tga", TRUE, LLViewerTexture::BOOST_UI);
|
||||
LLViewerTexture* red_blue_imagep = LLViewerTextureManager::getFetchedTextureFromFile("uv_test1.j2c", TRUE, LLGLTexture::BOOST_UI);
|
||||
LLViewerTexture* green_imagep = LLViewerTextureManager::getFetchedTextureFromFile("uv_test2.tga", TRUE, LLGLTexture::BOOST_UI);
|
||||
|
||||
LLGLSUVSelect object_select;
|
||||
|
||||
|
|
|
|||
|
|
@ -2488,7 +2488,7 @@ void LLModelLoader::loadTextures()
|
|||
if(!material.mDiffuseMapFilename.empty())
|
||||
{
|
||||
material.mDiffuseMap =
|
||||
LLViewerTextureManager::getFetchedTextureFromUrl("file://" + material.mDiffuseMapFilename, TRUE, LLViewerTexture::BOOST_PREVIEW);
|
||||
LLViewerTextureManager::getFetchedTextureFromUrl("file://" + material.mDiffuseMapFilename, TRUE, LLGLTexture::BOOST_PREVIEW);
|
||||
material.mDiffuseMap->setLoadedCallback(LLModelPreview::textureLoadedCallback, 0, TRUE, FALSE, mPreview, NULL, FALSE);
|
||||
material.mDiffuseMap->forceToSaveRawImage(0, F32_MAX);
|
||||
mNumOfFetchingTextures++ ;
|
||||
|
|
|
|||
|
|
@ -765,8 +765,8 @@ void LLFloaterReporter::takeScreenshot()
|
|||
|
||||
// store in the image list so it doesn't try to fetch from the server
|
||||
LLPointer<LLViewerFetchedTexture> image_in_list =
|
||||
LLViewerTextureManager::getFetchedTexture(mResourceDatap->mAssetInfo.mUuid, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::FETCHED_TEXTURE);
|
||||
image_in_list->createGLTexture(0, raw, 0, TRUE, LLViewerTexture::OTHER);
|
||||
LLViewerTextureManager::getFetchedTexture(mResourceDatap->mAssetInfo.mUuid, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::FETCHED_TEXTURE);
|
||||
image_in_list->createGLTexture(0, raw, 0, TRUE, LLGLTexture::OTHER);
|
||||
|
||||
// the texture picker then uses that texture
|
||||
LLTexturePicker* texture = getChild<LLTextureCtrl>("screenshot");
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ void LLFloaterScriptDebug::addScriptLine(const std::string &utf8mesg, const std:
|
|||
|
||||
if (objectp)
|
||||
{
|
||||
objectp->setIcon(LLViewerTextureManager::getFetchedTextureFromFile("script_error.j2c", TRUE, LLViewerTexture::BOOST_UI));
|
||||
objectp->setIcon(LLViewerTextureManager::getFetchedTextureFromFile("script_error.j2c", TRUE, LLGLTexture::BOOST_UI));
|
||||
floater_label = llformat("%s(%.0f, %.0f, %.0f)",
|
||||
user_name.c_str(),
|
||||
objectp->getPositionRegion().mV[VX],
|
||||
|
|
|
|||
|
|
@ -440,7 +440,7 @@ void LLLocalBitmap::updateUserPrims(LLUUID old_id, LLUUID new_id)
|
|||
if (face && face->getTexture() && face->getTexture()->getID() == old_id)
|
||||
{
|
||||
object->setTEImage(face_iter, LLViewerTextureManager::getFetchedTexture
|
||||
(new_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
|
||||
(new_id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
|
||||
|
||||
update_obj = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ LLPreviewTexture::LLPreviewTexture(const LLSD& key)
|
|||
mAspectRatio(0.f),
|
||||
mPreviewToSave(FALSE),
|
||||
mImage(NULL),
|
||||
mImageOldBoostLevel(LLViewerTexture::BOOST_NONE)
|
||||
mImageOldBoostLevel(LLGLTexture::BOOST_NONE)
|
||||
{
|
||||
updateImageID();
|
||||
if (key.has("save_as"))
|
||||
|
|
@ -468,9 +468,9 @@ void LLPreviewTexture::onAspectRatioCommit(LLUICtrl* ctrl, void* userdata)
|
|||
|
||||
void LLPreviewTexture::loadAsset()
|
||||
{
|
||||
mImage = LLViewerTextureManager::getFetchedTexture(mImageID, MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
|
||||
mImage = LLViewerTextureManager::getFetchedTexture(mImageID, MIPMAP_TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
|
||||
mImageOldBoostLevel = mImage->getBoostLevel();
|
||||
mImage->setBoostLevel(LLViewerTexture::BOOST_PREVIEW);
|
||||
mImage->setBoostLevel(LLGLTexture::BOOST_PREVIEW);
|
||||
mImage->forceToSaveRawImage(0) ;
|
||||
mAssetStatus = PREVIEW_ASSET_LOADING;
|
||||
mUpdateDimensions = TRUE;
|
||||
|
|
|
|||
|
|
@ -1608,7 +1608,7 @@ void LLSelectMgr::selectionSetImage(const LLUUID& imageid)
|
|||
// Texture picker defaults aren't inventory items
|
||||
// * Don't need to worry about permissions for them
|
||||
// * Can just apply the texture and be done with it.
|
||||
objectp->setTEImage(te, LLViewerTextureManager::getFetchedTexture(mImageID, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
|
||||
objectp->setTEImage(te, LLViewerTextureManager::getFetchedTexture(mImageID, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
@ -1774,7 +1774,7 @@ BOOL LLSelectMgr::selectionRevertTextures()
|
|||
}
|
||||
else
|
||||
{
|
||||
object->setTEImage(te, LLViewerTextureManager::getFetchedTexture(id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
|
||||
object->setTEImage(te, LLViewerTextureManager::getFetchedTexture(id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -5198,7 +5198,7 @@ void LLSelectMgr::updateSilhouettes()
|
|||
|
||||
if (!mSilhouetteImagep)
|
||||
{
|
||||
mSilhouetteImagep = LLViewerTextureManager::getFetchedTextureFromFile("silhouette.j2c", TRUE, LLViewerTexture::BOOST_UI);
|
||||
mSilhouetteImagep = LLViewerTextureManager::getFetchedTextureFromFile("silhouette.j2c", TRUE, LLGLTexture::BOOST_UI);
|
||||
}
|
||||
|
||||
mHighlightedObjects->cleanupNodes();
|
||||
|
|
|
|||
|
|
@ -3574,9 +3574,9 @@ void renderTexturePriority(LLDrawable* drawable)
|
|||
drawBox(center, size);
|
||||
|
||||
/*S32 boost = imagep->getBoostLevel();
|
||||
if (boost>LLViewerTexture::BOOST_NONE)
|
||||
if (boost>LLGLTexture::BOOST_NONE)
|
||||
{
|
||||
F32 t = (F32) boost / (F32) (LLViewerTexture::BOOST_MAX_LEVEL-1);
|
||||
F32 t = (F32) boost / (F32) (LLGLTexture::BOOST_MAX_LEVEL-1);
|
||||
LLVector4 col = lerp(boost_cold, boost_hot, t);
|
||||
LLGLEnable blend_on(GL_BLEND);
|
||||
gGL.blendFunc(GL_SRC_ALPHA, GL_ONE);
|
||||
|
|
|
|||
|
|
@ -571,7 +571,7 @@ void LLFloaterTexturePicker::draw()
|
|||
if(mImageAssetID.notNull())
|
||||
{
|
||||
mTexturep = LLViewerTextureManager::getFetchedTexture(mImageAssetID, MIPMAP_YES);
|
||||
mTexturep->setBoostLevel(LLViewerTexture::BOOST_PREVIEW);
|
||||
mTexturep->setBoostLevel(LLGLTexture::BOOST_PREVIEW);
|
||||
}
|
||||
|
||||
if (mTentativeLabel)
|
||||
|
|
@ -1456,9 +1456,9 @@ void LLTextureCtrl::draw()
|
|||
}
|
||||
else if (!mImageAssetID.isNull())
|
||||
{
|
||||
LLPointer<LLViewerFetchedTexture> texture = LLViewerTextureManager::getFetchedTexture(mImageAssetID, MIPMAP_YES,LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
|
||||
LLPointer<LLViewerFetchedTexture> texture = LLViewerTextureManager::getFetchedTexture(mImageAssetID, MIPMAP_YES,LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
|
||||
|
||||
texture->setBoostLevel(LLViewerTexture::BOOST_PREVIEW);
|
||||
texture->setBoostLevel(LLGLTexture::BOOST_PREVIEW);
|
||||
texture->forceToSaveRawImage(0) ;
|
||||
|
||||
mTexturep = texture;
|
||||
|
|
|
|||
|
|
@ -170,7 +170,7 @@ void LLTextureBar::draw()
|
|||
{
|
||||
color = LLColor4::green4;
|
||||
}
|
||||
else if (mImagep->getBoostLevel() > LLViewerTexture::BOOST_NONE)
|
||||
else if (mImagep->getBoostLevel() > LLGLTexture::BOOST_NONE)
|
||||
{
|
||||
color = LLColor4::magenta;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3290,14 +3290,14 @@ void LLViewerObject::boostTexturePriority(BOOL boost_children /* = TRUE */)
|
|||
S32 tex_count = getNumTEs();
|
||||
for (i = 0; i < tex_count; i++)
|
||||
{
|
||||
getTEImage(i)->setBoostLevel(LLViewerTexture::BOOST_SELECTED);
|
||||
getTEImage(i)->setBoostLevel(LLGLTexture::BOOST_SELECTED);
|
||||
}
|
||||
|
||||
if (isSculpted() && !isMesh())
|
||||
{
|
||||
LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT);
|
||||
LLUUID sculpt_id = sculpt_params->getSculptTexture();
|
||||
LLViewerTextureManager::getFetchedTexture(sculpt_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE)->setBoostLevel(LLViewerTexture::BOOST_SELECTED);
|
||||
LLViewerTextureManager::getFetchedTexture(sculpt_id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE)->setBoostLevel(LLGLTexture::BOOST_SELECTED);
|
||||
}
|
||||
|
||||
if (boost_children)
|
||||
|
|
@ -4044,7 +4044,7 @@ void LLViewerObject::setTE(const U8 te, const LLTextureEntry &texture_entry)
|
|||
// if (mDrawable.notNull() && mDrawable->isVisible())
|
||||
// {
|
||||
const LLUUID& image_id = getTE(te)->getID();
|
||||
mTEImages[te] = LLViewerTextureManager::getFetchedTexture(image_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
|
||||
mTEImages[te] = LLViewerTextureManager::getFetchedTexture(image_id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
|
||||
// }
|
||||
}
|
||||
|
||||
|
|
@ -4070,7 +4070,7 @@ S32 LLViewerObject::setTETextureCore(const U8 te, const LLUUID& uuid, const std:
|
|||
uuid == LLUUID::null)
|
||||
{
|
||||
retval = LLPrimitive::setTETexture(te, uuid);
|
||||
mTEImages[te] = LLViewerTextureManager::getFetchedTextureFromUrl (url, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, uuid);
|
||||
mTEImages[te] = LLViewerTextureManager::getFetchedTextureFromUrl (url, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, uuid);
|
||||
setChanged(TEXTURE);
|
||||
if (mDrawable.notNull())
|
||||
{
|
||||
|
|
@ -4087,7 +4087,7 @@ S32 LLViewerObject::setTETextureCore(const U8 te, const LLUUID& uuid, LLHost hos
|
|||
uuid == LLUUID::null)
|
||||
{
|
||||
retval = LLPrimitive::setTETexture(te, uuid);
|
||||
mTEImages[te] = LLViewerTextureManager::getFetchedTexture(uuid, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host);
|
||||
mTEImages[te] = LLViewerTextureManager::getFetchedTexture(uuid, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host);
|
||||
setChanged(TEXTURE);
|
||||
if (mDrawable.notNull())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -564,7 +564,7 @@ F32 gWorstLandCompression = 0.f, gWorstWaterCompression = 0.f;
|
|||
U32 gTotalWorldBytes = 0, gTotalObjectBytes = 0, gTotalTextureBytes = 0, gSimPingCount = 0;
|
||||
U32 gObjectBits = 0;
|
||||
F32 gAvgSimPing = 0.f;
|
||||
U32 gTotalTextureBytesPerBoostLevel[LLViewerTexture::MAX_GL_IMAGE_CATEGORY] = {0};
|
||||
U32 gTotalTextureBytesPerBoostLevel[LLGLTexture::MAX_GL_IMAGE_CATEGORY] = {0};
|
||||
|
||||
extern U32 gVisCompared;
|
||||
extern U32 gVisTested;
|
||||
|
|
|
|||
|
|
@ -233,7 +233,7 @@ LLPointer<LLViewerTexture> LLViewerTextureManager::getLocalTexture(BOOL usemipma
|
|||
if(generate_gl_tex)
|
||||
{
|
||||
tex->generateGLTexture() ;
|
||||
tex->setCategory(LLViewerTexture::LOCAL) ;
|
||||
tex->setCategory(LLGLTexture::LOCAL) ;
|
||||
}
|
||||
return tex ;
|
||||
}
|
||||
|
|
@ -243,14 +243,14 @@ LLPointer<LLViewerTexture> LLViewerTextureManager::getLocalTexture(const LLUUID&
|
|||
if(generate_gl_tex)
|
||||
{
|
||||
tex->generateGLTexture() ;
|
||||
tex->setCategory(LLViewerTexture::LOCAL) ;
|
||||
tex->setCategory(LLGLTexture::LOCAL) ;
|
||||
}
|
||||
return tex ;
|
||||
}
|
||||
LLPointer<LLViewerTexture> LLViewerTextureManager::getLocalTexture(const LLImageRaw* raw, BOOL usemipmaps)
|
||||
{
|
||||
LLPointer<LLViewerTexture> tex = new LLViewerTexture(raw, usemipmaps) ;
|
||||
tex->setCategory(LLViewerTexture::LOCAL) ;
|
||||
tex->setCategory(LLGLTexture::LOCAL) ;
|
||||
return tex ;
|
||||
}
|
||||
LLPointer<LLViewerTexture> LLViewerTextureManager::getLocalTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps, BOOL generate_gl_tex)
|
||||
|
|
@ -259,7 +259,7 @@ LLPointer<LLViewerTexture> LLViewerTextureManager::getLocalTexture(const U32 wid
|
|||
if(generate_gl_tex)
|
||||
{
|
||||
tex->generateGLTexture() ;
|
||||
tex->setCategory(LLViewerTexture::LOCAL) ;
|
||||
tex->setCategory(LLGLTexture::LOCAL) ;
|
||||
}
|
||||
return tex ;
|
||||
}
|
||||
|
|
@ -309,17 +309,17 @@ LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromHost(const
|
|||
// Create a bridge to the viewer texture manager.
|
||||
class LLViewerTextureManagerBridge : public LLTextureManagerBridge
|
||||
{
|
||||
/*virtual*/ LLPointer<LLTexture> getLocalTexture(BOOL usemipmaps = TRUE, BOOL generate_gl_tex = TRUE)
|
||||
/*virtual*/ LLPointer<LLGLTexture> getLocalTexture(BOOL usemipmaps = TRUE, BOOL generate_gl_tex = TRUE)
|
||||
{
|
||||
return LLViewerTextureManager::getLocalTexture(usemipmaps, generate_gl_tex);
|
||||
}
|
||||
|
||||
/*virtual*/ LLPointer<LLTexture> getLocalTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps, BOOL generate_gl_tex = TRUE)
|
||||
/*virtual*/ LLPointer<LLGLTexture> getLocalTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps, BOOL generate_gl_tex = TRUE)
|
||||
{
|
||||
return LLViewerTextureManager::getLocalTexture(width, height, components, usemipmaps, generate_gl_tex);
|
||||
}
|
||||
|
||||
/*virtual*/ LLTexture* getFetchedTexture(const LLUUID &image_id)
|
||||
/*virtual*/ LLGLTexture* getFetchedTexture(const LLUUID &image_id)
|
||||
{
|
||||
return LLViewerTextureManager::getFetchedTexture(image_id);
|
||||
}
|
||||
|
|
@ -371,12 +371,12 @@ void LLViewerTextureManager::init()
|
|||
imagep->setCachedRawImage(0, image_raw) ;
|
||||
image_raw = NULL;
|
||||
#else
|
||||
LLViewerFetchedTexture::sDefaultImagep = LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLViewerTexture::BOOST_UI);
|
||||
LLViewerFetchedTexture::sDefaultImagep = LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLGLTexture::BOOST_UI);
|
||||
#endif
|
||||
LLViewerFetchedTexture::sDefaultImagep->dontDiscard();
|
||||
LLViewerFetchedTexture::sDefaultImagep->setCategory(LLViewerTexture::OTHER) ;
|
||||
LLViewerFetchedTexture::sDefaultImagep->setCategory(LLGLTexture::OTHER) ;
|
||||
|
||||
LLViewerFetchedTexture::sSmokeImagep = LLViewerTextureManager::getFetchedTexture(IMG_SMOKE, TRUE, LLViewerTexture::BOOST_UI);
|
||||
LLViewerFetchedTexture::sSmokeImagep = LLViewerTextureManager::getFetchedTexture(IMG_SMOKE, TRUE, LLGLTexture::BOOST_UI);
|
||||
LLViewerFetchedTexture::sSmokeImagep->setNoDelete() ;
|
||||
|
||||
image_raw = new LLImageRaw(32,32,3);
|
||||
|
|
@ -442,25 +442,6 @@ void LLViewerTexture::initClass()
|
|||
}
|
||||
}
|
||||
|
||||
// static
|
||||
S32 LLViewerTexture::getTotalNumOfCategories()
|
||||
{
|
||||
return MAX_GL_IMAGE_CATEGORY - (BOOST_HIGH - BOOST_SCULPTED) + 2 ;
|
||||
}
|
||||
|
||||
// static
|
||||
//index starts from zero.
|
||||
S32 LLViewerTexture::getIndexFromCategory(S32 category)
|
||||
{
|
||||
return (category < BOOST_HIGH) ? category : category - (BOOST_HIGH - BOOST_SCULPTED) + 1 ;
|
||||
}
|
||||
|
||||
//static
|
||||
S32 LLViewerTexture::getCategoryFromIndex(S32 index)
|
||||
{
|
||||
return (index < BOOST_HIGH) ? index : index + (BOOST_HIGH - BOOST_SCULPTED) - 1 ;
|
||||
}
|
||||
|
||||
// tuning params
|
||||
const F32 discard_bias_delta = .25f;
|
||||
const F32 discard_delta_time = 0.5f;
|
||||
|
|
@ -597,45 +578,38 @@ void LLViewerTexture::updateClass(const F32 velocity, const F32 angular_velocity
|
|||
//-------------------------------------------------------------------------------------------
|
||||
const U32 LLViewerTexture::sCurrentFileVersion = 1;
|
||||
|
||||
LLViewerTexture::LLViewerTexture(BOOL usemipmaps)
|
||||
LLViewerTexture::LLViewerTexture(BOOL usemipmaps) :
|
||||
LLGLTexture(usemipmaps)
|
||||
{
|
||||
init(true);
|
||||
mUseMipMaps = usemipmaps ;
|
||||
|
||||
mID.generate();
|
||||
sImageCount++;
|
||||
}
|
||||
|
||||
LLViewerTexture::LLViewerTexture(const LLUUID& id, BOOL usemipmaps)
|
||||
: mID(id)
|
||||
LLViewerTexture::LLViewerTexture(const LLUUID& id, BOOL usemipmaps) :
|
||||
LLGLTexture(usemipmaps),
|
||||
mID(id)
|
||||
{
|
||||
init(true);
|
||||
mUseMipMaps = usemipmaps ;
|
||||
|
||||
sImageCount++;
|
||||
}
|
||||
|
||||
LLViewerTexture::LLViewerTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps)
|
||||
LLViewerTexture::LLViewerTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps) :
|
||||
LLGLTexture(width, height, components, usemipmaps)
|
||||
{
|
||||
init(true);
|
||||
|
||||
mFullWidth = width ;
|
||||
mFullHeight = height ;
|
||||
mUseMipMaps = usemipmaps ;
|
||||
mComponents = components ;
|
||||
setTexelsPerImage();
|
||||
|
||||
mID.generate();
|
||||
sImageCount++;
|
||||
}
|
||||
|
||||
LLViewerTexture::LLViewerTexture(const LLImageRaw* raw, BOOL usemipmaps)
|
||||
LLViewerTexture::LLViewerTexture(const LLImageRaw* raw, BOOL usemipmaps) :
|
||||
LLGLTexture(raw, usemipmaps)
|
||||
{
|
||||
init(true);
|
||||
mUseMipMaps = usemipmaps ;
|
||||
mGLTexturep = new LLImageGL(raw, usemipmaps) ;
|
||||
|
||||
// Create an empty image of the specified size and width
|
||||
mID.generate();
|
||||
sImageCount++;
|
||||
}
|
||||
|
|
@ -646,20 +620,10 @@ LLViewerTexture::~LLViewerTexture()
|
|||
sImageCount--;
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLViewerTexture::init(bool firstinit)
|
||||
{
|
||||
mBoostLevel = LLViewerTexture::BOOST_NONE;
|
||||
|
||||
mFullWidth = 0;
|
||||
mFullHeight = 0;
|
||||
mTexelsPerImage = 0 ;
|
||||
mUseMipMaps = FALSE ;
|
||||
mComponents = 0 ;
|
||||
|
||||
mTextureState = NO_DELETE ;
|
||||
mDontDiscard = FALSE;
|
||||
mMaxVirtualSize = 0.f;
|
||||
mNeedsGLTexture = FALSE ;
|
||||
mMaxVirtualSizeResetInterval = 1;
|
||||
mMaxVirtualSizeResetCounter = mMaxVirtualSizeResetInterval ;
|
||||
mAdditionalDecodePriority = 0.f ;
|
||||
|
|
@ -680,38 +644,18 @@ void LLViewerTexture::cleanup()
|
|||
{
|
||||
mFaceList.clear() ;
|
||||
mVolumeList.clear();
|
||||
if(mGLTexturep)
|
||||
{
|
||||
mGLTexturep->cleanup();
|
||||
}
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLViewerTexture::dump()
|
||||
{
|
||||
if(mGLTexturep)
|
||||
{
|
||||
mGLTexturep->dump();
|
||||
}
|
||||
LLGLTexture::dump();
|
||||
|
||||
llinfos << "LLViewerTexture"
|
||||
<< " mID " << mID
|
||||
<< llendl;
|
||||
}
|
||||
|
||||
void LLViewerTexture::setBoostLevel(S32 level)
|
||||
{
|
||||
if(mBoostLevel != level)
|
||||
{
|
||||
mBoostLevel = level ;
|
||||
if(mBoostLevel != LLViewerTexture::BOOST_NONE)
|
||||
{
|
||||
setNoDelete() ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool LLViewerTexture::bindDefaultImage(S32 stage)
|
||||
{
|
||||
if (stage < 0) return false;
|
||||
|
|
@ -904,294 +848,18 @@ void LLViewerTexture::reorganizeVolumeList()
|
|||
mVolumeList.erase(mVolumeList.begin() + mNumVolumes, mVolumeList.end());
|
||||
}
|
||||
|
||||
|
||||
|
||||
//virtual
|
||||
void LLViewerTexture::switchToCachedImage()
|
||||
{
|
||||
//nothing here.
|
||||
}
|
||||
|
||||
void LLViewerTexture::forceActive()
|
||||
{
|
||||
mTextureState = ACTIVE ;
|
||||
}
|
||||
|
||||
void LLViewerTexture::setActive()
|
||||
{
|
||||
if(mTextureState != NO_DELETE)
|
||||
{
|
||||
mTextureState = ACTIVE ;
|
||||
}
|
||||
}
|
||||
|
||||
//set the texture to stay in memory
|
||||
void LLViewerTexture::setNoDelete()
|
||||
{
|
||||
mTextureState = NO_DELETE ;
|
||||
}
|
||||
|
||||
void LLViewerTexture::generateGLTexture()
|
||||
{
|
||||
if(mGLTexturep.isNull())
|
||||
{
|
||||
mGLTexturep = new LLImageGL(mFullWidth, mFullHeight, mComponents, mUseMipMaps) ;
|
||||
}
|
||||
}
|
||||
|
||||
LLImageGL* LLViewerTexture::getGLTexture() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep ;
|
||||
}
|
||||
|
||||
BOOL LLViewerTexture::createGLTexture()
|
||||
{
|
||||
if(mGLTexturep.isNull())
|
||||
{
|
||||
generateGLTexture() ;
|
||||
}
|
||||
|
||||
return mGLTexturep->createGLTexture() ;
|
||||
}
|
||||
|
||||
BOOL LLViewerTexture::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename, BOOL to_create, S32 category)
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
BOOL ret = mGLTexturep->createGLTexture(discard_level, imageraw, usename, to_create, category) ;
|
||||
|
||||
if(ret)
|
||||
{
|
||||
mFullWidth = mGLTexturep->getCurrentWidth() ;
|
||||
mFullHeight = mGLTexturep->getCurrentHeight() ;
|
||||
mComponents = mGLTexturep->getComponents() ;
|
||||
setTexelsPerImage();
|
||||
}
|
||||
|
||||
return ret ;
|
||||
}
|
||||
|
||||
//virtual
|
||||
void LLViewerTexture::setCachedRawImage(S32 discard_level, LLImageRaw* imageraw)
|
||||
{
|
||||
//nothing here.
|
||||
}
|
||||
|
||||
void LLViewerTexture::setExplicitFormat(LLGLint internal_format, LLGLenum primary_format, LLGLenum type_format, BOOL swap_bytes)
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
mGLTexturep->setExplicitFormat(internal_format, primary_format, type_format, swap_bytes) ;
|
||||
}
|
||||
void LLViewerTexture::setAddressMode(LLTexUnit::eTextureAddressMode mode)
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
mGLTexturep->setAddressMode(mode) ;
|
||||
}
|
||||
void LLViewerTexture::setFilteringOption(LLTexUnit::eTextureFilterOptions option)
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
mGLTexturep->setFilteringOption(option) ;
|
||||
}
|
||||
|
||||
//virtual
|
||||
S32 LLViewerTexture::getWidth(S32 discard_level) const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
return mGLTexturep->getWidth(discard_level) ;
|
||||
}
|
||||
|
||||
//virtual
|
||||
S32 LLViewerTexture::getHeight(S32 discard_level) const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
return mGLTexturep->getHeight(discard_level) ;
|
||||
}
|
||||
|
||||
S32 LLViewerTexture::getMaxDiscardLevel() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
return mGLTexturep->getMaxDiscardLevel() ;
|
||||
}
|
||||
S32 LLViewerTexture::getDiscardLevel() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
return mGLTexturep->getDiscardLevel() ;
|
||||
}
|
||||
S8 LLViewerTexture::getComponents() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getComponents() ;
|
||||
}
|
||||
|
||||
LLGLuint LLViewerTexture::getTexName() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getTexName() ;
|
||||
}
|
||||
|
||||
BOOL LLViewerTexture::hasGLTexture() const
|
||||
{
|
||||
if(mGLTexturep.notNull())
|
||||
{
|
||||
return mGLTexturep->getHasGLTexture() ;
|
||||
}
|
||||
return FALSE ;
|
||||
}
|
||||
|
||||
BOOL LLViewerTexture::getBoundRecently() const
|
||||
{
|
||||
if(mGLTexturep.notNull())
|
||||
{
|
||||
return mGLTexturep->getBoundRecently() ;
|
||||
}
|
||||
return FALSE ;
|
||||
}
|
||||
|
||||
LLTexUnit::eTextureType LLViewerTexture::getTarget(void) const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
return mGLTexturep->getTarget() ;
|
||||
}
|
||||
|
||||
BOOL LLViewerTexture::setSubImage(const LLImageRaw* imageraw, S32 x_pos, S32 y_pos, S32 width, S32 height)
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->setSubImage(imageraw, x_pos, y_pos, width, height) ;
|
||||
}
|
||||
|
||||
BOOL LLViewerTexture::setSubImage(const U8* datap, S32 data_width, S32 data_height, S32 x_pos, S32 y_pos, S32 width, S32 height)
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->setSubImage(datap, data_width, data_height, x_pos, y_pos, width, height) ;
|
||||
}
|
||||
|
||||
void LLViewerTexture::setGLTextureCreated (bool initialized)
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
mGLTexturep->setGLTextureCreated (initialized) ;
|
||||
}
|
||||
|
||||
void LLViewerTexture::setCategory(S32 category)
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
mGLTexturep->setCategory(category) ;
|
||||
}
|
||||
|
||||
LLTexUnit::eTextureAddressMode LLViewerTexture::getAddressMode(void) const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getAddressMode() ;
|
||||
}
|
||||
|
||||
S32 LLViewerTexture::getTextureMemory() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->mTextureMemory ;
|
||||
}
|
||||
|
||||
LLGLenum LLViewerTexture::getPrimaryFormat() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getPrimaryFormat() ;
|
||||
}
|
||||
|
||||
BOOL LLViewerTexture::getIsAlphaMask() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getIsAlphaMask() ;
|
||||
}
|
||||
|
||||
BOOL LLViewerTexture::getMask(const LLVector2 &tc)
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getMask(tc) ;
|
||||
}
|
||||
|
||||
F32 LLViewerTexture::getTimePassedSinceLastBound()
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getTimePassedSinceLastBound() ;
|
||||
}
|
||||
BOOL LLViewerTexture::getMissed() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getMissed() ;
|
||||
}
|
||||
|
||||
BOOL LLViewerTexture::isJustBound() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->isJustBound() ;
|
||||
}
|
||||
|
||||
void LLViewerTexture::forceUpdateBindStats(void) const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->forceUpdateBindStats() ;
|
||||
}
|
||||
|
||||
U32 LLViewerTexture::getTexelsInAtlas() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getTexelsInAtlas() ;
|
||||
}
|
||||
|
||||
U32 LLViewerTexture::getTexelsInGLTexture() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getTexelsInGLTexture() ;
|
||||
}
|
||||
|
||||
BOOL LLViewerTexture::isGLTextureCreated() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->isGLTextureCreated() ;
|
||||
}
|
||||
|
||||
S32 LLViewerTexture::getDiscardLevelInAtlas() const
|
||||
{
|
||||
llassert(mGLTexturep.notNull()) ;
|
||||
|
||||
return mGLTexturep->getDiscardLevelInAtlas() ;
|
||||
}
|
||||
|
||||
void LLViewerTexture::destroyGLTexture()
|
||||
{
|
||||
if(mGLTexturep.notNull() && mGLTexturep->getHasGLTexture())
|
||||
{
|
||||
mGLTexturep->destroyGLTexture() ;
|
||||
mTextureState = DELETED ;
|
||||
}
|
||||
}
|
||||
|
||||
void LLViewerTexture::setTexelsPerImage()
|
||||
{
|
||||
S32 fullwidth = llmin(mFullWidth,(S32)MAX_IMAGE_SIZE_DEFAULT);
|
||||
S32 fullheight = llmin(mFullHeight,(S32)MAX_IMAGE_SIZE_DEFAULT);
|
||||
mTexelsPerImage = (F32)fullwidth * fullheight;
|
||||
}
|
||||
|
||||
BOOL LLViewerTexture::isLargeImage()
|
||||
{
|
||||
return (S32)mTexelsPerImage > LLViewerTexture::sMinLargeImageSize ;
|
||||
|
|
@ -1775,7 +1443,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
|
|||
// Don't decode anything we don't need
|
||||
priority = -4.0f;
|
||||
}
|
||||
else if ((mBoostLevel == LLViewerTexture::BOOST_UI || mBoostLevel == LLViewerTexture::BOOST_ICON) && !have_all_data)
|
||||
else if ((mBoostLevel == LLGLTexture::BOOST_UI || mBoostLevel == LLGLTexture::BOOST_ICON) && !have_all_data)
|
||||
{
|
||||
priority = 1.f;
|
||||
}
|
||||
|
|
@ -2161,7 +1829,7 @@ bool LLViewerFetchedTexture::updateFetch()
|
|||
// Load the texture progressively: we try not to rush to the desired discard too fast.
|
||||
// If the camera is not moving, we do not tweak the discard level notch by notch but go to the desired discard with larger boosted steps
|
||||
// This mitigates the "textures stay blurry" problem when loading while not killing the texture memory while moving around
|
||||
S32 delta_level = (mBoostLevel > LLViewerTexture::BOOST_NONE) ? 2 : 1 ;
|
||||
S32 delta_level = (mBoostLevel > LLGLTexture::BOOST_NONE) ? 2 : 1 ;
|
||||
if (current_discard < 0)
|
||||
{
|
||||
desired_discard = llmax(desired_discard, getMaxDiscardLevel() - delta_level);
|
||||
|
|
@ -2412,7 +2080,7 @@ void LLViewerFetchedTexture::deleteCallbackEntry(const LLLoadedCallbackEntry::so
|
|||
destroySavedRawImage() ;
|
||||
}
|
||||
}
|
||||
else if(needsToSaveRawImage() && mBoostLevel != LLViewerTexture::BOOST_PREVIEW)
|
||||
else if(needsToSaveRawImage() && mBoostLevel != LLGLTexture::BOOST_PREVIEW)
|
||||
{
|
||||
if(desired_raw_discard != INVALID_DISCARD_LEVEL)
|
||||
{
|
||||
|
|
@ -2870,7 +2538,7 @@ void LLViewerFetchedTexture::setCachedRawImage()
|
|||
S32 h = mRawImage->getHeight() ;
|
||||
|
||||
S32 max_size = MAX_CACHED_RAW_IMAGE_AREA ;
|
||||
if(LLViewerTexture::BOOST_TERRAIN == mBoostLevel)
|
||||
if(LLGLTexture::BOOST_TERRAIN == mBoostLevel)
|
||||
{
|
||||
max_size = MAX_CACHED_RAW_TERRAIN_IMAGE_AREA ;
|
||||
}
|
||||
|
|
@ -3243,7 +2911,7 @@ void LLViewerLODTexture::processTextureStats()
|
|||
if (mFullWidth > MAX_IMAGE_SIZE_DEFAULT || mFullHeight > MAX_IMAGE_SIZE_DEFAULT)
|
||||
mDesiredDiscardLevel = 1; // MAX_IMAGE_SIZE_DEFAULT = 1024 and max size ever is 2048
|
||||
}
|
||||
else if (mBoostLevel < LLViewerTexture::BOOST_HIGH && mMaxVirtualSize <= 10.f)
|
||||
else if (mBoostLevel < LLGLTexture::BOOST_HIGH && mMaxVirtualSize <= 10.f)
|
||||
{
|
||||
// If the image has not been significantly visible in a while, we don't want it
|
||||
mDesiredDiscardLevel = llmin(mMinDesiredDiscardLevel, (S8)(MAX_DISCARD_LEVEL + 1));
|
||||
|
|
@ -3293,7 +2961,7 @@ void LLViewerLODTexture::processTextureStats()
|
|||
mCalculatedDiscardLevel = discard_level;
|
||||
}
|
||||
}
|
||||
if (mBoostLevel < LLViewerTexture::BOOST_SCULPTED)
|
||||
if (mBoostLevel < LLGLTexture::BOOST_SCULPTED)
|
||||
{
|
||||
discard_level += sDesiredDiscardBias;
|
||||
discard_level *= sDesiredDiscardScale; // scale
|
||||
|
|
@ -3319,7 +2987,7 @@ void LLViewerLODTexture::processTextureStats()
|
|||
//
|
||||
|
||||
S32 current_discard = getDiscardLevel();
|
||||
if (sDesiredDiscardBias > 0.0f && mBoostLevel < LLViewerTexture::BOOST_SCULPTED && current_discard >= 0)
|
||||
if (sDesiredDiscardBias > 0.0f && mBoostLevel < LLGLTexture::BOOST_SCULPTED && current_discard >= 0)
|
||||
{
|
||||
if(desired_discard_bias_max <= sDesiredDiscardBias && !mForceToSaveRawImage)
|
||||
{
|
||||
|
|
@ -3462,7 +3130,7 @@ LLViewerMediaTexture::LLViewerMediaTexture(const LLUUID& id, BOOL usemipmaps, LL
|
|||
|
||||
setMediaImpl() ;
|
||||
|
||||
setCategory(LLViewerTexture::MEDIA) ;
|
||||
setCategory(LLGLTexture::MEDIA) ;
|
||||
|
||||
LLViewerTexture* tex = gTextureList.findImage(mID) ;
|
||||
if(tex) //this media is a parcel media for tex.
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
#ifndef LL_LLVIEWERTEXTURE_H
|
||||
#define LL_LLVIEWERTEXTURE_H
|
||||
|
||||
#include "lltexture.h"
|
||||
#include "llgltexture.h"
|
||||
#include "lltimer.h"
|
||||
#include "llframetimer.h"
|
||||
#include "llhost.h"
|
||||
|
|
@ -88,14 +88,9 @@ public:
|
|||
|
||||
class LLTextureBar;
|
||||
|
||||
class LLViewerTexture : public LLTexture
|
||||
class LLViewerTexture : public LLGLTexture
|
||||
{
|
||||
public:
|
||||
enum
|
||||
{
|
||||
MAX_IMAGE_SIZE_DEFAULT = 1024,
|
||||
INVALID_DISCARD_LEVEL = 0x7fff
|
||||
};
|
||||
enum
|
||||
{
|
||||
LOCAL_TEXTURE,
|
||||
|
|
@ -107,10 +102,6 @@ public:
|
|||
INVALID_TEXTURE_TYPE
|
||||
};
|
||||
|
||||
static S32 getTotalNumOfCategories() ;
|
||||
static S32 getIndexFromCategory(S32 category) ;
|
||||
static S32 getCategoryFromIndex(S32 index) ;
|
||||
|
||||
typedef std::vector<LLFace*> ll_face_list_t;
|
||||
typedef std::vector<LLVOVolume*> ll_volume_list_t;
|
||||
|
||||
|
|
@ -137,9 +128,6 @@ public:
|
|||
|
||||
/*virtual*/ const LLUUID& getID() const { return mID; }
|
||||
|
||||
void setBoostLevel(S32 level);
|
||||
S32 getBoostLevel() { return mBoostLevel; }
|
||||
|
||||
void addTextureStats(F32 virtual_size, BOOL needs_gltexture = TRUE) const;
|
||||
void resetTextureStats();
|
||||
void setMaxVirtualSizeResetInterval(S32 interval)const {mMaxVirtualSizeResetInterval = interval;}
|
||||
|
|
@ -149,8 +137,6 @@ public:
|
|||
|
||||
LLFrameTimer* getLastReferencedTimer() {return &mLastReferencedTimer ;}
|
||||
|
||||
S32 getFullWidth() const { return mFullWidth; }
|
||||
S32 getFullHeight() const { return mFullHeight; }
|
||||
/*virtual*/ void setKnownDrawSize(S32 width, S32 height);
|
||||
|
||||
virtual void addFace(LLFace* facep) ;
|
||||
|
|
@ -163,60 +149,8 @@ public:
|
|||
S32 getNumVolumes() const;
|
||||
const ll_volume_list_t* getVolumeList() const { return &mVolumeList; }
|
||||
|
||||
void generateGLTexture() ;
|
||||
void destroyGLTexture() ;
|
||||
|
||||
//---------------------------------------------------------------------------------------------
|
||||
//functions to access LLImageGL
|
||||
//---------------------------------------------------------------------------------------------
|
||||
/*virtual*/S32 getWidth(S32 discard_level = -1) const;
|
||||
/*virtual*/S32 getHeight(S32 discard_level = -1) const;
|
||||
|
||||
/*virtual*/BOOL hasGLTexture() const ;
|
||||
LLGLuint getTexName() const ;
|
||||
BOOL createGLTexture() ;
|
||||
/*virtual*/ BOOL createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename = 0, BOOL to_create = TRUE, S32 category = LLTexture::OTHER);
|
||||
virtual void setCachedRawImage(S32 discard_level, LLImageRaw* imageraw) ;
|
||||
|
||||
void setFilteringOption(LLTexUnit::eTextureFilterOptions option);
|
||||
/*virtual*/ void setExplicitFormat(LLGLint internal_format, LLGLenum primary_format, LLGLenum type_format = 0, BOOL swap_bytes = FALSE);
|
||||
/*virtual*/ void setAddressMode(LLTexUnit::eTextureAddressMode mode);
|
||||
BOOL setSubImage(const LLImageRaw* imageraw, S32 x_pos, S32 y_pos, S32 width, S32 height);
|
||||
BOOL setSubImage(const U8* datap, S32 data_width, S32 data_height, S32 x_pos, S32 y_pos, S32 width, S32 height);
|
||||
void setGLTextureCreated (bool initialized);
|
||||
void setCategory(S32 category) ;
|
||||
|
||||
/*virtual*/ LLTexUnit::eTextureAddressMode getAddressMode(void) const ;
|
||||
S32 getMaxDiscardLevel() const;
|
||||
S32 getDiscardLevel() const;
|
||||
/*virtual*/ S8 getComponents() const;
|
||||
BOOL getBoundRecently() const;
|
||||
S32 getTextureMemory() const ;
|
||||
LLGLenum getPrimaryFormat() const;
|
||||
BOOL getIsAlphaMask() const ;
|
||||
LLTexUnit::eTextureType getTarget(void) const ;
|
||||
BOOL getMask(const LLVector2 &tc);
|
||||
F32 getTimePassedSinceLastBound();
|
||||
BOOL getMissed() const ;
|
||||
BOOL isJustBound()const ;
|
||||
void forceUpdateBindStats(void) const;
|
||||
|
||||
U32 getTexelsInAtlas() const ;
|
||||
U32 getTexelsInGLTexture() const ;
|
||||
BOOL isGLTextureCreated() const ;
|
||||
S32 getDiscardLevelInAtlas() const ;
|
||||
//---------------------------------------------------------------------------------------------
|
||||
//end of functions to access LLImageGL
|
||||
//---------------------------------------------------------------------------------------------
|
||||
|
||||
//-----------------
|
||||
/*virtual*/ void setActive() ;
|
||||
void forceActive() ;
|
||||
void setNoDelete() ;
|
||||
void dontDiscard() { mDontDiscard = 1; mTextureState = NO_DELETE; }
|
||||
BOOL getDontDiscard() const { return mDontDiscard; }
|
||||
//-----------------
|
||||
|
||||
BOOL isLargeImage() ;
|
||||
|
||||
void setParcelMedia(LLViewerMediaTexture* media) {mParcelMedia = media;}
|
||||
|
|
@ -229,35 +163,21 @@ protected:
|
|||
void init(bool firstinit) ;
|
||||
void reorganizeFaceList() ;
|
||||
void reorganizeVolumeList() ;
|
||||
void setTexelsPerImage();
|
||||
private:
|
||||
friend class LLBumpImageList;
|
||||
friend class LLUIImageList;
|
||||
|
||||
//note: do not make this function public.
|
||||
/*virtual*/ LLImageGL* getGLTexture() const ;
|
||||
virtual void switchToCachedImage();
|
||||
|
||||
static bool isMemoryForTextureLow() ;
|
||||
protected:
|
||||
LLUUID mID;
|
||||
S32 mBoostLevel; // enum describing priority level
|
||||
S32 mFullWidth;
|
||||
S32 mFullHeight;
|
||||
BOOL mUseMipMaps ;
|
||||
S8 mComponents;
|
||||
F32 mTexelsPerImage; // Texels per image.
|
||||
mutable S8 mNeedsGLTexture;
|
||||
mutable F32 mMaxVirtualSize; // The largest virtual size of the image, in pixels - how much data to we need?
|
||||
mutable S32 mMaxVirtualSizeResetCounter ;
|
||||
mutable S32 mMaxVirtualSizeResetInterval;
|
||||
mutable F32 mAdditionalDecodePriority; // priority add to mDecodePriority.
|
||||
LLFrameTimer mLastReferencedTimer;
|
||||
|
||||
//GL texture
|
||||
LLPointer<LLImageGL> mGLTexturep ;
|
||||
S8 mDontDiscard; // Keep full res version of this image (for UI, etc)
|
||||
|
||||
ll_face_list_t mFaceList ; //reverse pointer pointing to the faces using this image as texture
|
||||
U32 mNumFaces ;
|
||||
LLFrameTimer mLastFaceListUpdateTimer ;
|
||||
|
|
@ -269,17 +189,6 @@ protected:
|
|||
//do not use LLPointer here.
|
||||
LLViewerMediaTexture* mParcelMedia ;
|
||||
|
||||
protected:
|
||||
typedef enum
|
||||
{
|
||||
DELETED = 0, //removed from memory
|
||||
DELETION_CANDIDATE, //ready to be removed from memory
|
||||
INACTIVE, //not be used for the last certain period (i.e., 30 seconds).
|
||||
ACTIVE, //just being used, can become inactive if not being used for a certain time (10 seconds).
|
||||
NO_DELETE = 99 //stay in memory, can not be removed.
|
||||
} LLGLTextureState;
|
||||
LLGLTextureState mTextureState ;
|
||||
|
||||
static F32 sTexelPixelRatio;
|
||||
public:
|
||||
static const U32 sCurrentFileVersion;
|
||||
|
|
@ -475,7 +384,7 @@ protected:
|
|||
S32 getCurrentDiscardLevelForFetching() ;
|
||||
|
||||
private:
|
||||
void init(bool firstinit) ;
|
||||
void init(bool firstinit) ;
|
||||
void cleanup() ;
|
||||
|
||||
void saveRawImage() ;
|
||||
|
|
@ -698,7 +607,7 @@ public:
|
|||
|
||||
static LLViewerFetchedTexture* getFetchedTexture(const LLUUID &image_id,
|
||||
BOOL usemipmap = TRUE,
|
||||
LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_NONE, // Get the requested level immediately upon creation.
|
||||
LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE, // Get the requested level immediately upon creation.
|
||||
S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
|
||||
LLGLint internal_format = 0,
|
||||
LLGLenum primary_format = 0,
|
||||
|
|
@ -707,7 +616,7 @@ public:
|
|||
|
||||
static LLViewerFetchedTexture* getFetchedTextureFromFile(const std::string& filename,
|
||||
BOOL usemipmap = TRUE,
|
||||
LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_NONE,
|
||||
LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE,
|
||||
S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
|
||||
LLGLint internal_format = 0,
|
||||
LLGLenum primary_format = 0,
|
||||
|
|
@ -716,7 +625,7 @@ public:
|
|||
|
||||
static LLViewerFetchedTexture* getFetchedTextureFromUrl(const std::string& url,
|
||||
BOOL usemipmap = TRUE,
|
||||
LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_NONE,
|
||||
LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE,
|
||||
S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
|
||||
LLGLint internal_format = 0,
|
||||
LLGLenum primary_format = 0,
|
||||
|
|
|
|||
|
|
@ -198,7 +198,7 @@ void LLViewerTextureList::doPrefetchImages()
|
|||
|
||||
if(LLViewerTexture::FETCHED_TEXTURE == texture_type || LLViewerTexture::LOD_TEXTURE == texture_type)
|
||||
{
|
||||
LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture(uuid, MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, texture_type);
|
||||
LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture(uuid, MIPMAP_TRUE, LLGLTexture::BOOST_NONE, texture_type);
|
||||
if (image)
|
||||
{
|
||||
image->addTextureStats((F32)pixel_area);
|
||||
|
|
@ -339,7 +339,7 @@ LLViewerFetchedTexture* LLViewerTextureList::getImageFromFile(const std::string&
|
|||
if (full_path.empty())
|
||||
{
|
||||
llwarns << "Failed to find local image file: " << filename << llendl;
|
||||
return LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLViewerTexture::BOOST_UI);
|
||||
return LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLGLTexture::BOOST_UI);
|
||||
}
|
||||
|
||||
std::string url = "file://" + full_path;
|
||||
|
|
@ -430,7 +430,7 @@ LLViewerFetchedTexture* LLViewerTextureList::getImage(const LLUUID &image_id,
|
|||
|
||||
if ((&image_id == NULL) || image_id.isNull())
|
||||
{
|
||||
return (LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLViewerTexture::BOOST_UI));
|
||||
return (LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLGLTexture::BOOST_UI));
|
||||
}
|
||||
|
||||
LLPointer<LLViewerFetchedTexture> imagep = findImage(image_id);
|
||||
|
|
@ -1361,7 +1361,7 @@ void LLViewerTextureList::receiveImageHeader(LLMessageSystem *msg, void **user_d
|
|||
U8 *data = new U8[data_size];
|
||||
msg->getBinaryDataFast(_PREHASH_ImageData, _PREHASH_Data, data, data_size);
|
||||
|
||||
LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
|
||||
LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
|
||||
if (!image)
|
||||
{
|
||||
delete [] data;
|
||||
|
|
@ -1434,7 +1434,7 @@ void LLViewerTextureList::receiveImagePacket(LLMessageSystem *msg, void **user_d
|
|||
U8 *data = new U8[data_size];
|
||||
msg->getBinaryDataFast(_PREHASH_ImageData, _PREHASH_Data, data, data_size);
|
||||
|
||||
LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
|
||||
LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
|
||||
if (!image)
|
||||
{
|
||||
delete [] data;
|
||||
|
|
@ -1534,9 +1534,9 @@ LLUIImagePtr LLUIImageList::getUIImage(const std::string& image_name, S32 priori
|
|||
LLUIImagePtr LLUIImageList::loadUIImageByName(const std::string& name, const std::string& filename,
|
||||
BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLViewerTexture::EBoostLevel boost_priority )
|
||||
{
|
||||
if (boost_priority == LLViewerTexture::BOOST_NONE)
|
||||
if (boost_priority == LLGLTexture::BOOST_NONE)
|
||||
{
|
||||
boost_priority = LLViewerTexture::BOOST_UI;
|
||||
boost_priority = LLGLTexture::BOOST_UI;
|
||||
}
|
||||
LLViewerFetchedTexture* imagep = LLViewerTextureManager::getFetchedTextureFromFile(filename, MIPMAP_NO, boost_priority);
|
||||
return loadUIImage(imagep, name, use_mips, scale_rect, clip_rect);
|
||||
|
|
@ -1545,9 +1545,9 @@ LLUIImagePtr LLUIImageList::loadUIImageByName(const std::string& name, const std
|
|||
LLUIImagePtr LLUIImageList::loadUIImageByID(const LLUUID& id,
|
||||
BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLViewerTexture::EBoostLevel boost_priority)
|
||||
{
|
||||
if (boost_priority == LLViewerTexture::BOOST_NONE)
|
||||
if (boost_priority == LLGLTexture::BOOST_NONE)
|
||||
{
|
||||
boost_priority = LLViewerTexture::BOOST_UI;
|
||||
boost_priority = LLGLTexture::BOOST_UI;
|
||||
}
|
||||
LLViewerFetchedTexture* imagep = LLViewerTextureManager::getFetchedTexture(id, MIPMAP_NO, boost_priority);
|
||||
return loadUIImage(imagep, id.asString(), use_mips, scale_rect, clip_rect);
|
||||
|
|
@ -1572,7 +1572,7 @@ LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const st
|
|||
//Note:
|
||||
//Some other textures such as ICON also through this flow to be fetched.
|
||||
//But only UI textures need to set this callback.
|
||||
if(imagep->getBoostLevel() == LLViewerTexture::BOOST_UI)
|
||||
if(imagep->getBoostLevel() == LLGLTexture::BOOST_UI)
|
||||
{
|
||||
LLUIImageLoadData* datap = new LLUIImageLoadData;
|
||||
datap->mImageName = name;
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ private:
|
|||
|
||||
LLViewerFetchedTexture * getImage(const LLUUID &image_id,
|
||||
BOOL usemipmap = TRUE,
|
||||
LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_NONE, // Get the requested level immediately upon creation.
|
||||
LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE, // Get the requested level immediately upon creation.
|
||||
S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
|
||||
LLGLint internal_format = 0,
|
||||
LLGLenum primary_format = 0,
|
||||
|
|
@ -140,7 +140,7 @@ private:
|
|||
|
||||
LLViewerFetchedTexture * getImageFromFile(const std::string& filename,
|
||||
BOOL usemipmap = TRUE,
|
||||
LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_NONE, // Get the requested level immediately upon creation.
|
||||
LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE, // Get the requested level immediately upon creation.
|
||||
S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
|
||||
LLGLint internal_format = 0,
|
||||
LLGLenum primary_format = 0,
|
||||
|
|
@ -149,7 +149,7 @@ private:
|
|||
|
||||
LLViewerFetchedTexture* getImageFromUrl(const std::string& url,
|
||||
BOOL usemipmap = TRUE,
|
||||
LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_NONE, // Get the requested level immediately upon creation.
|
||||
LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE, // Get the requested level immediately upon creation.
|
||||
S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
|
||||
LLGLint internal_format = 0,
|
||||
LLGLenum primary_format = 0,
|
||||
|
|
@ -158,7 +158,7 @@ private:
|
|||
|
||||
LLViewerFetchedTexture* createImage(const LLUUID &image_id,
|
||||
BOOL usemipmap = TRUE,
|
||||
LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_NONE, // Get the requested level immediately upon creation.
|
||||
LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE, // Get the requested level immediately upon creation.
|
||||
S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
|
||||
LLGLint internal_format = 0,
|
||||
LLGLenum primary_format = 0,
|
||||
|
|
@ -168,7 +168,7 @@ private:
|
|||
// Request image from a specific host, used for baked avatar textures.
|
||||
// Implemented in header in case someone changes default params above. JC
|
||||
LLViewerFetchedTexture* getImageFromHost(const LLUUID& image_id, LLHost host)
|
||||
{ return getImage(image_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host); }
|
||||
{ return getImage(image_id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host); }
|
||||
|
||||
public:
|
||||
typedef std::set<LLPointer<LLViewerFetchedTexture> > image_list_t;
|
||||
|
|
@ -233,11 +233,11 @@ private:
|
|||
LLPointer<LLUIImage> loadUIImageByName(const std::string& name, const std::string& filename,
|
||||
BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null,
|
||||
const LLRect& clip_rect = LLRect::null,
|
||||
LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_UI);
|
||||
LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_UI);
|
||||
LLPointer<LLUIImage> loadUIImageByID(const LLUUID& id,
|
||||
BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null,
|
||||
const LLRect& clip_rect = LLRect::null,
|
||||
LLViewerTexture::EBoostLevel boost_priority = LLViewerTexture::BOOST_UI);
|
||||
LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_UI);
|
||||
|
||||
LLPointer<LLUIImage> loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null, const LLRect& clip_rect = LLRect::null);
|
||||
|
||||
|
|
|
|||
|
|
@ -401,7 +401,7 @@ void LLViewerWearable::writeToAvatar()
|
|||
{
|
||||
image_id = getDefaultTextureImageID((ETextureIndex) te);
|
||||
}
|
||||
LLViewerTexture* image = LLViewerTextureManager::getFetchedTexture( image_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE );
|
||||
LLViewerTexture* image = LLViewerTextureManager::getFetchedTexture( image_id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE );
|
||||
// MULTI-WEARABLE: assume index 0 will be used when writing to avatar. TODO: eliminate the need for this.
|
||||
gAgentAvatarp->setLocalTextureTE(te, image, 0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -729,7 +729,7 @@ public:
|
|||
if(log_texture_traffic)
|
||||
{
|
||||
U32 old_y = ypos ;
|
||||
for(S32 i = LLViewerTexture::BOOST_NONE; i < LLViewerTexture::MAX_GL_IMAGE_CATEGORY; i++)
|
||||
for(S32 i = LLGLTexture::BOOST_NONE; i < LLGLTexture::MAX_GL_IMAGE_CATEGORY; i++)
|
||||
{
|
||||
if(gTotalTextureBytesPerBoostLevel[i] > 0)
|
||||
{
|
||||
|
|
@ -1678,7 +1678,7 @@ LLViewerWindow::LLViewerWindow(const Params& p)
|
|||
|
||||
// Init the image list. Must happen after GL is initialized and before the images that
|
||||
// LLViewerWindow needs are requested.
|
||||
LLImageGL::initClass(LLViewerTexture::MAX_GL_IMAGE_CATEGORY) ;
|
||||
LLImageGL::initClass(LLGLTexture::MAX_GL_IMAGE_CATEGORY) ;
|
||||
gTextureList.init();
|
||||
LLViewerTextureManager::init() ;
|
||||
gBumpImageList.init();
|
||||
|
|
|
|||
|
|
@ -223,7 +223,7 @@ BOOL LLVLComposition::generateComposition()
|
|||
{
|
||||
if (mDetailTextures[i]->getDiscardLevel() < 0)
|
||||
{
|
||||
mDetailTextures[i]->setBoostLevel(LLViewerTexture::BOOST_TERRAIN); // in case we are at low detail
|
||||
mDetailTextures[i]->setBoostLevel(LLGLTexture::BOOST_TERRAIN); // in case we are at low detail
|
||||
mDetailTextures[i]->addTextureStats(BASE_SIZE*BASE_SIZE);
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -240,7 +240,7 @@ BOOL LLVLComposition::generateComposition()
|
|||
ddiscard++;
|
||||
min_dim /= 2;
|
||||
}
|
||||
mDetailTextures[i]->setBoostLevel(LLViewerTexture::BOOST_TERRAIN); // in case we are at low detail
|
||||
mDetailTextures[i]->setBoostLevel(LLGLTexture::BOOST_TERRAIN); // in case we are at low detail
|
||||
mDetailTextures[i]->setMinDiscardLevel(ddiscard);
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -463,7 +463,7 @@ BOOL LLVLComposition::generateTexture(const F32 x, const F32 y,
|
|||
for (S32 i = 0; i < 4; i++)
|
||||
{
|
||||
// Un-boost detatil textures (will get re-boosted if rendering in high detail)
|
||||
mDetailTextures[i]->setBoostLevel(LLViewerTexture::BOOST_NONE);
|
||||
mDetailTextures[i]->setBoostLevel(LLGLTexture::BOOST_NONE);
|
||||
mDetailTextures[i]->setMinDiscardLevel(MAX_DISCARD_LEVEL + 1);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4698,7 +4698,7 @@ void LLVOAvatar::addBakedTextureStats( LLViewerFetchedTexture* imagep, F32 pixel
|
|||
imagep->addTextureStats(pixel_area / texel_area_ratio);
|
||||
imagep->setBoostLevel(boost_level);
|
||||
|
||||
if(boost_level != LLViewerTexture::BOOST_AVATAR_BAKED_SELF)
|
||||
if(boost_level != LLGLTexture::BOOST_AVATAR_BAKED_SELF)
|
||||
{
|
||||
imagep->setAdditionalDecodePriority(ADDITIONAL_PRI) ;
|
||||
}
|
||||
|
|
@ -6748,7 +6748,7 @@ void LLVOAvatar::updateMeshTextures()
|
|||
const std::string url = getImageURL(i, mBakedTextureDatas[i].mLastTextureIndex);
|
||||
if (!url.empty())
|
||||
{
|
||||
baked_img = LLViewerTextureManager::getFetchedTextureFromUrl(url, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, mBakedTextureDatas[i].mLastTextureIndex);
|
||||
baked_img = LLViewerTextureManager::getFetchedTextureFromUrl(url, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, mBakedTextureDatas[i].mLastTextureIndex);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -7289,7 +7289,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
|
|||
&& baked_index != BAKED_SKIRT)
|
||||
{
|
||||
setTEImage(mBakedTextureDatas[baked_index].mTextureIndex,
|
||||
LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[baked_index].mLastTextureIndex, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
|
||||
LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[baked_index].mLastTextureIndex, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -563,8 +563,8 @@ private:
|
|||
// Constants
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
virtual LLViewerTexture::EBoostLevel getAvatarBoostLevel() const { return LLViewerTexture::BOOST_AVATAR; }
|
||||
virtual LLViewerTexture::EBoostLevel getAvatarBakedBoostLevel() const { return LLViewerTexture::BOOST_AVATAR_BAKED; }
|
||||
virtual LLViewerTexture::EBoostLevel getAvatarBoostLevel() const { return LLGLTexture::BOOST_AVATAR; }
|
||||
virtual LLViewerTexture::EBoostLevel getAvatarBakedBoostLevel() const { return LLGLTexture::BOOST_AVATAR_BAKED; }
|
||||
virtual S32 getTexImageSize() const;
|
||||
virtual S32 getTexImageArea() const { return getTexImageSize()*getTexImageSize(); }
|
||||
|
||||
|
|
|
|||
|
|
@ -177,8 +177,8 @@ private:
|
|||
// LLVOAvatar Constants
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
/*virtual*/ LLViewerTexture::EBoostLevel getAvatarBoostLevel() const { return LLViewerTexture::BOOST_AVATAR_SELF; }
|
||||
/*virtual*/ LLViewerTexture::EBoostLevel getAvatarBakedBoostLevel() const { return LLViewerTexture::BOOST_AVATAR_BAKED_SELF; }
|
||||
/*virtual*/ LLViewerTexture::EBoostLevel getAvatarBoostLevel() const { return LLGLTexture::BOOST_AVATAR_SELF; }
|
||||
/*virtual*/ LLViewerTexture::EBoostLevel getAvatarBakedBoostLevel() const { return LLGLTexture::BOOST_AVATAR_BAKED_SELF; }
|
||||
/*virtual*/ S32 getTexImageSize() const { return LLVOAvatar::getTexImageSize()*4; }
|
||||
|
||||
/** Rendering
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ void LLVOGrass::updateSpecies()
|
|||
SpeciesMap::const_iterator it = sSpeciesTable.begin();
|
||||
mSpecies = (*it).first;
|
||||
}
|
||||
setTEImage(0, LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
|
||||
setTEImage(0, LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ LLVoiceVisualizer::LLVoiceVisualizer( const U8 type )
|
|||
for (int i=0; i<NUM_VOICE_SYMBOL_WAVES; i++)
|
||||
{
|
||||
mSoundSymbol.mWaveFadeOutStartTime [i] = mCurrentTime;
|
||||
mSoundSymbol.mTexture [i] = LLViewerTextureManager::getFetchedTextureFromFile(sound_level_img[i], FALSE, LLViewerTexture::BOOST_UI);
|
||||
mSoundSymbol.mTexture [i] = LLViewerTextureManager::getFetchedTextureFromFile(sound_level_img[i], FALSE, LLGLTexture::BOOST_UI);
|
||||
mSoundSymbol.mWaveActive [i] = false;
|
||||
mSoundSymbol.mWaveOpacity [i] = 1.0f;
|
||||
mSoundSymbol.mWaveExpansion [i] = 1.0f;
|
||||
|
|
|
|||
|
|
@ -298,7 +298,7 @@ void LLSkyTex::create(const F32 brightness)
|
|||
|
||||
void LLSkyTex::createGLImage(S32 which)
|
||||
{
|
||||
mTexture[which]->createGLTexture(0, mImageRaw[which], 0, TRUE, LLViewerTexture::LOCAL);
|
||||
mTexture[which]->createGLTexture(0, mImageRaw[which], 0, TRUE, LLGLTexture::LOCAL);
|
||||
mTexture[which]->setAddressMode(LLTexUnit::TAM_CLAMP);
|
||||
}
|
||||
|
||||
|
|
@ -384,9 +384,9 @@ LLVOSky::LLVOSky(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp)
|
|||
mSun.setIntensity(SUN_INTENSITY);
|
||||
mMoon.setIntensity(0.1f * SUN_INTENSITY);
|
||||
|
||||
mSunTexturep = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, LLViewerTexture::BOOST_UI);
|
||||
mSunTexturep = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, LLGLTexture::BOOST_UI);
|
||||
mSunTexturep->setAddressMode(LLTexUnit::TAM_CLAMP);
|
||||
mMoonTexturep = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, LLViewerTexture::BOOST_UI);
|
||||
mMoonTexturep = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, LLGLTexture::BOOST_UI);
|
||||
mMoonTexturep->setAddressMode(LLTexUnit::TAM_CLAMP);
|
||||
mBloomTexturep = LLViewerTextureManager::getFetchedTexture(IMG_BLOOM1);
|
||||
mBloomTexturep->setNoDelete() ;
|
||||
|
|
@ -478,9 +478,9 @@ void LLVOSky::restoreGL()
|
|||
{
|
||||
mSkyTex[i].restoreGL();
|
||||
}
|
||||
mSunTexturep = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, LLViewerTexture::BOOST_UI);
|
||||
mSunTexturep = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, LLGLTexture::BOOST_UI);
|
||||
mSunTexturep->setAddressMode(LLTexUnit::TAM_CLAMP);
|
||||
mMoonTexturep = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, LLViewerTexture::BOOST_UI);
|
||||
mMoonTexturep = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, LLGLTexture::BOOST_UI);
|
||||
mMoonTexturep->setAddressMode(LLTexUnit::TAM_CLAMP);
|
||||
mBloomTexturep = LLViewerTextureManager::getFetchedTexture(IMG_BLOOM1);
|
||||
mBloomTexturep->setNoDelete() ;
|
||||
|
|
|
|||
|
|
@ -316,7 +316,7 @@ U32 LLVOTree::processUpdateMessage(LLMessageSystem *mesgsys,
|
|||
// Load Species-Specific data
|
||||
//
|
||||
static const S32 MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL = 32 ; //frames.
|
||||
mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
|
||||
mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
|
||||
mTreeImagep->setMaxVirtualSizeResetInterval(MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL); //allow to wait for at most 16 frames to reset virtual size.
|
||||
|
||||
mBranchLength = sSpeciesTable[mSpecies]->mBranchLength;
|
||||
|
|
|
|||
|
|
@ -747,7 +747,7 @@ void LLVOVolume::updateTextureVirtualSize(bool forced)
|
|||
{
|
||||
F32 area = (F32) camera->getScreenPixelArea();
|
||||
vsize = area;
|
||||
imagep->setBoostLevel(LLViewerTexture::BOOST_HUD);
|
||||
imagep->setBoostLevel(LLGLTexture::BOOST_HUD);
|
||||
face->setPixelArea(area); // treat as full screen
|
||||
face->setVirtualSize(vsize);
|
||||
}
|
||||
|
|
@ -803,7 +803,7 @@ void LLVOVolume::updateTextureVirtualSize(bool forced)
|
|||
if (mSculptTexture.notNull())
|
||||
{
|
||||
mSculptTexture->setBoostLevel(llmax((S32)mSculptTexture->getBoostLevel(),
|
||||
(S32)LLViewerTexture::BOOST_SCULPTED));
|
||||
(S32)LLGLTexture::BOOST_SCULPTED));
|
||||
mSculptTexture->setForSculpt() ;
|
||||
|
||||
if(!mSculptTexture->isCachedRawImageReady())
|
||||
|
|
@ -1006,7 +1006,7 @@ BOOL LLVOVolume::setVolume(const LLVolumeParams ¶ms_in, const S32 detail, bo
|
|||
|
||||
if (is404)
|
||||
{
|
||||
setIcon(LLViewerTextureManager::getFetchedTextureFromFile("icons/Inv_Mesh.png", TRUE, LLViewerTexture::BOOST_UI));
|
||||
setIcon(LLViewerTextureManager::getFetchedTextureFromFile("icons/Inv_Mesh.png", TRUE, LLGLTexture::BOOST_UI));
|
||||
//render prim proxy when mesh loading attempts give up
|
||||
volume_params.setSculptID(LLUUID::null, LL_SCULPT_TYPE_NONE);
|
||||
|
||||
|
|
@ -1090,7 +1090,7 @@ void LLVOVolume::updateSculptTexture()
|
|||
LLUUID id = sculpt_params->getSculptTexture();
|
||||
if (id.notNull())
|
||||
{
|
||||
mSculptTexture = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
|
||||
mSculptTexture = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -2698,7 +2698,7 @@ void LLVOVolume::updateSpotLightPriority()
|
|||
if (mLightTexture.notNull())
|
||||
{
|
||||
mLightTexture->addTextureStats(mSpotLightPriority);
|
||||
mLightTexture->setBoostLevel(LLViewerTexture::BOOST_CLOUDS);
|
||||
mLightTexture->setBoostLevel(LLGLTexture::BOOST_CLOUDS);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ void LLSimInfo::setLandForSaleImage (LLUUID image_id)
|
|||
// Fetch the image
|
||||
if (mMapImageID.notNull())
|
||||
{
|
||||
mOverlayImage = LLViewerTextureManager::getFetchedTexture(mMapImageID, MIPMAP_TRUE, LLViewerTexture::BOOST_MAP, LLViewerTexture::LOD_TEXTURE);
|
||||
mOverlayImage = LLViewerTextureManager::getFetchedTexture(mMapImageID, MIPMAP_TRUE, LLGLTexture::BOOST_MAP, LLViewerTexture::LOD_TEXTURE);
|
||||
mOverlayImage->setAddressMode(LLTexUnit::TAM_CLAMP);
|
||||
}
|
||||
else
|
||||
|
|
@ -92,13 +92,13 @@ LLPointer<LLViewerFetchedTexture> LLSimInfo::getLandForSaleImage ()
|
|||
if (mOverlayImage.isNull() && mMapImageID.notNull())
|
||||
{
|
||||
// Fetch the image if it hasn't been done yet (unlikely but...)
|
||||
mOverlayImage = LLViewerTextureManager::getFetchedTexture(mMapImageID, MIPMAP_TRUE, LLViewerTexture::BOOST_MAP, LLViewerTexture::LOD_TEXTURE);
|
||||
mOverlayImage = LLViewerTextureManager::getFetchedTexture(mMapImageID, MIPMAP_TRUE, LLGLTexture::BOOST_MAP, LLViewerTexture::LOD_TEXTURE);
|
||||
mOverlayImage->setAddressMode(LLTexUnit::TAM_CLAMP);
|
||||
}
|
||||
if (!mOverlayImage.isNull())
|
||||
{
|
||||
// Boost the fetch level when we try to access that image
|
||||
mOverlayImage->setBoostLevel(LLViewerTexture::BOOST_MAP);
|
||||
mOverlayImage->setBoostLevel(LLGLTexture::BOOST_MAP);
|
||||
}
|
||||
return mOverlayImage;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,21 +74,21 @@ void LLWorldMipmap::equalizeBoostLevels()
|
|||
{
|
||||
LLPointer<LLViewerFetchedTexture> img = iter->second;
|
||||
S32 current_boost_level = img->getBoostLevel();
|
||||
if (current_boost_level == LLViewerTexture::BOOST_MAP_VISIBLE)
|
||||
if (current_boost_level == LLGLTexture::BOOST_MAP_VISIBLE)
|
||||
{
|
||||
// If level was BOOST_MAP_VISIBLE, the tile has been used in the last draw so keep it high
|
||||
img->setBoostLevel(LLViewerTexture::BOOST_MAP);
|
||||
img->setBoostLevel(LLGLTexture::BOOST_MAP);
|
||||
}
|
||||
else
|
||||
{
|
||||
// If level was BOOST_MAP only (or anything else...), the tile wasn't used in the last draw
|
||||
// so we drop its boost level to BOOST_NONE.
|
||||
img->setBoostLevel(LLViewerTexture::BOOST_NONE);
|
||||
img->setBoostLevel(LLGLTexture::BOOST_NONE);
|
||||
}
|
||||
#if DEBUG_TILES_STAT
|
||||
// Increment some stats if compile option on
|
||||
nb_tiles++;
|
||||
if (current_boost_level == LLViewerTexture::BOOST_MAP_VISIBLE)
|
||||
if (current_boost_level == LLGLTexture::BOOST_MAP_VISIBLE)
|
||||
{
|
||||
nb_visible++;
|
||||
}
|
||||
|
|
@ -115,7 +115,7 @@ void LLWorldMipmap::dropBoostLevels()
|
|||
for (sublevel_tiles_t::iterator iter = level_mipmap.begin(); iter != level_mipmap.end(); iter++)
|
||||
{
|
||||
LLPointer<LLViewerFetchedTexture> img = iter->second;
|
||||
img->setBoostLevel(LLViewerTexture::BOOST_NONE);
|
||||
img->setBoostLevel(LLGLTexture::BOOST_NONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -172,7 +172,7 @@ LLPointer<LLViewerFetchedTexture> LLWorldMipmap::getObjectsTile(U32 grid_x, U32
|
|||
// Boost the tile level so to mark it's in use *if* load on
|
||||
if (load)
|
||||
{
|
||||
img->setBoostLevel(LLViewerTexture::BOOST_MAP_VISIBLE);
|
||||
img->setBoostLevel(LLGLTexture::BOOST_MAP_VISIBLE);
|
||||
}
|
||||
return img;
|
||||
}
|
||||
|
|
@ -189,8 +189,8 @@ LLPointer<LLViewerFetchedTexture> LLWorldMipmap::loadObjectsTile(U32 grid_x, U32
|
|||
// END DEBUG
|
||||
//LL_INFOS("World Map") << "LLWorldMipmap::loadObjectsTile(), URL = " << imageurl << LL_ENDL;
|
||||
|
||||
LLPointer<LLViewerFetchedTexture> img = LLViewerTextureManager::getFetchedTextureFromUrl(imageurl, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
|
||||
img->setBoostLevel(LLViewerTexture::BOOST_MAP);
|
||||
LLPointer<LLViewerFetchedTexture> img = LLViewerTextureManager::getFetchedTextureFromUrl(imageurl, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
|
||||
img->setBoostLevel(LLGLTexture::BOOST_MAP);
|
||||
|
||||
// Return the smart pointer
|
||||
return img;
|
||||
|
|
|
|||
|
|
@ -47,9 +47,9 @@
|
|||
// * A simulator for a class can be implemented here. Please comment and document thoroughly.
|
||||
|
||||
// Stub image calls
|
||||
void LLViewerTexture::setBoostLevel(S32 ) { }
|
||||
void LLViewerTexture::setAddressMode(LLTexUnit::eTextureAddressMode ) { }
|
||||
LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTexture(const LLUUID&, BOOL, LLViewerTexture::EBoostLevel, S8,
|
||||
void LLGLTexture::setBoostLevel(S32 ) { }
|
||||
void LLGLTexture::setAddressMode(LLTexUnit::eTextureAddressMode ) { }
|
||||
LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTexture(const LLUUID&, BOOL, LLGLTexture::EBoostLevel, S8,
|
||||
LLGLint, LLGLenum, LLHost ) { return NULL; }
|
||||
|
||||
// Stub related map calls
|
||||
|
|
|
|||
|
|
@ -42,8 +42,8 @@
|
|||
// * Do not make any assumption as to how those classes or methods work (i.e. don't copy/paste code)
|
||||
// * A simulator for a class can be implemented here. Please comment and document thoroughly.
|
||||
|
||||
void LLViewerTexture::setBoostLevel(S32 ) { }
|
||||
LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromUrl(const std::string&, BOOL, LLViewerTexture::EBoostLevel, S8,
|
||||
void LLGLTexture::setBoostLevel(S32 ) { }
|
||||
LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromUrl(const std::string&, BOOL, LLGLTexture::EBoostLevel, S8,
|
||||
LLGLint, LLGLenum, const LLUUID& ) { return NULL; }
|
||||
|
||||
LLControlGroup::LLControlGroup(const std::string& name) : LLInstanceTracker<LLControlGroup, std::string>(name) { }
|
||||
|
|
|
|||
Loading…
Reference in New Issue