Merge branch 'BOMforOS'

meow-7.2.2
Beq 2020-01-11 21:16:58 +00:00
commit c93fac05be
10 changed files with 156 additions and 59 deletions

View File

@ -38,6 +38,7 @@
#include "llagentui.h"
#include "llappearancemgr.h"
#include "llanimationstates.h"
#include "llavatarappearancedefines.h"
#include "llcallingcard.h"
#include "llchannelmanager.h"
#include "llchicletbar.h"
@ -5540,10 +5541,7 @@ LLAgentQueryManager::LLAgentQueryManager() :
mNumPendingQueries(0),
mUpdateSerialNum(0)
{
//<FS:Beq> BOM fallback legacy opensim
// for (U32 i = 0; i < BAKED_NUM_INDICES; i++)
for (U32 i = 0; i < LLVOAvatar::sMaxBakes; i++)
// </FS:Beq>
for (U32 i = 0; i < BAKED_NUM_INDICES; i++)
{
mActiveCacheQueries[i] = 0;
}
@ -5952,7 +5950,7 @@ void LLAgent::sendAgentSetAppearance()
BOOL textures_current = gAgentAvatarp->areTexturesCurrent();
//<FS:Beq> BOM fallback legacy opensim
// for(U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++ )
for(U8 baked_index = 0; baked_index < LLVOAvatar::sMaxBakes; baked_index++ )
for(U8 baked_index = 0; baked_index < gAgentAvatarp->getNumBakes(); baked_index++ )
//</FS:Beq>
{
const ETextureIndex texture_index = LLAvatarAppearanceDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)baked_index);
@ -5988,7 +5986,7 @@ void LLAgent::sendAgentSetAppearance()
LL_DEBUGS("Avatar") << gAgentAvatarp->avString() << "TAT: Sending cached texture data" << LL_ENDL;
//<FS:Beq> BOM fallback for legacy opensim
// for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)
for (U8 baked_index = 0; baked_index < LLVOAvatar::sMaxBakes; baked_index++)
for (U8 baked_index = 0; baked_index < gAgentAvatarp->getNumBakes(); baked_index++)
//</FS:Beq>
{
BOOL generate_valid_hash = TRUE;
@ -5997,6 +5995,13 @@ void LLAgent::sendAgentSetAppearance()
generate_valid_hash = FALSE;
LL_DEBUGS("Avatar") << gAgentAvatarp->avString() << "Not caching baked texture upload for " << (U32)baked_index << " due to being uploaded at low resolution." << LL_ENDL;
}
// <FS:Beq> Exclude BAKED_SKIRT from being sent if no skirt is worn (should only reach here if it were already baked)
if (baked_index == BAKED_SKIRT && !gAgentAvatarp->isWearingWearableType(LLWearableType::WT_SKIRT))
{
LL_DEBUGS("Avatar") << "Not caching baked texture for unworn skirt." << LL_ENDL;
generate_valid_hash = FALSE;
}
// </FS:Beq>
const LLUUID hash = gAgentWearables.computeBakedTextureHash((EBakedTextureIndex) baked_index, generate_valid_hash);
if (hash.notNull())
@ -6008,6 +6013,7 @@ void LLAgent::sendAgentSetAppearance()
}
}
msg->nextBlockFast(_PREHASH_ObjectData);
// gAgentAvatarp->dumpAvatarTEs("sendAppearance"); // <FS:Beq> useful when debugging appeanrce updates
gAgentAvatarp->sendAppearanceMessage( gMessageSystem );
}
else

View File

@ -2142,7 +2142,7 @@ void LLAgentWearables::queryWearableCache()
S32 num_queries = 0;
// <FS:Beq> BOM fallback for legacy opensim
// for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)
for (U8 baked_index = 0; baked_index < LLVOAvatar::sMaxBakes; baked_index++)
for (U8 baked_index = 0; baked_index < gAgentAvatarp->getNumBakes(); baked_index++)
// </FS:Beq>
{
LLUUID hash_id = computeBakedTextureHash((EBakedTextureIndex) baked_index);

View File

@ -46,6 +46,7 @@
#include "llagentcamera.h"
#include "llappviewer.h"
#include "llavatarrenderinfoaccountant.h"
#include "llavatarappearancedefines.h"
#include "llcallingcard.h"
#include "llcommandhandler.h"
#include "lldir.h"
@ -580,6 +581,14 @@ LLViewerRegion::LLViewerRegion(const U64 &handle,
mPaused(FALSE),
mRegionCacheHitCount(0),
mRegionCacheMissCount(0),
// <FS:Beq> BOM tests for OS
mMaxBakes(LLGridManager::getInstance()->isInSecondLife()?
LLAvatarAppearanceDefines::EBakedTextureIndex::BAKED_NUM_INDICES:
LLAvatarAppearanceDefines::EBakedTextureIndex::BAKED_LEFT_ARM),
mMaxTEs(LLGridManager::getInstance()->isInSecondLife()?
LLAvatarAppearanceDefines::ETextureIndex::TEX_NUM_INDICES:
LLAvatarAppearanceDefines::ETextureIndex::TEX_HEAD_UNIVERSAL_TATTOO),
// </FS:Beq>
// <FS:CR> Aurora Sim
mWidth(region_width_meters),
mWidthScaleFactor(region_width_meters / REGION_WIDTH_METERS) // <FS:Ansariel> FIRE-19563: Scaling for OpenSim VarRegions
@ -2411,6 +2420,23 @@ void LLViewerRegion::setSimulatorFeatures(const LLSD& sim_features)
}
#endif // OPENSIM
// </FS:CR>
// <FS:Beq> limit num bakes by region support
#ifdef OPENSIM
if (mSimulatorFeatures.has("BakesOnMeshEnabled") && (mSimulatorFeatures["BakesOnMeshEnabled"].asBoolean()==true))
{
mMaxBakes = LLAvatarAppearanceDefines::EBakedTextureIndex::BAKED_NUM_INDICES;
mMaxTEs = LLAvatarAppearanceDefines::ETextureIndex::TEX_NUM_INDICES;
}
else
{
mMaxBakes = LLAvatarAppearanceDefines::EBakedTextureIndex::BAKED_LEFT_ARM;
mMaxTEs = LLAvatarAppearanceDefines::ETextureIndex::TEX_HEAD_UNIVERSAL_TATTOO;
}
#else
mMaxBakes = LLAvatarAppearanceDefines::EBakedTextureIndex::BAKED_NUM_INDICES;
mMaxTEs = LLAvatarAppearanceDefines::ETextureIndex::TEX_NUM_INDICES;
#endif // OPENSIM
// </FS:Beq>
}
//this is called when the parent is not cacheable.

View File

@ -242,6 +242,8 @@ public:
F32 getWidth() const { return mWidth; }
F32 getWidthScaleFactor() const { return mWidthScaleFactor; } // <FS:Ansariel> FIRE-19563: Scaling for OpenSim VarRegions
S32 getRegionMaxBakes() const { return mMaxBakes; } // <FS:Beq/> FS BOM for OS max bakes restriction
S32 getRegionMaxTEs() const { return mMaxTEs; } // <FS:Beq/> FS BOM for OS max TEs restriction
void idleUpdate(F32 max_update_time);
void lightIdleUpdate();
bool addVisibleGroup(LLViewerOctreeGroup* group);
@ -503,7 +505,8 @@ private:
F32 mTimeDilation; // time dilation of physics simulation on simulator
S32 mLastUpdate; //last time called idleUpdate()
F32 mWidthScaleFactor; // <FS:Ansariel> FIRE-19563: Scaling for OpenSim VarRegions
S32 mMaxBakes; // <FS:Beq/> store max bakes on the region
S32 mMaxTEs; // <FS:Beq/> store max bakes on the region
// simulator name
std::string mName;
std::string mZoning;

View File

@ -209,8 +209,9 @@ void LLViewerTexLayerSetBuffer::midRenderTexLayerSet(BOOL success)
{
//<FS:Beq> OpenSim BOM fallback
// layer_set->getAvatar()->debugBakedTextureUpload(layer_set->getBakedTexIndex(), FALSE); // FALSE for start of upload, TRUE for finish.
// doUpload();
auto bakedTexIdx = layer_set->getBakedTexIndex();
if(bakedTexIdx <= LLVOAvatar::sMaxBakes)
if(bakedTexIdx <= layer_set->getAvatar()->getNumBakes())
{
layer_set->getAvatar()->debugBakedTextureUpload(bakedTexIdx, FALSE); // FALSE for start of upload, TRUE for finish.
doUpload();
@ -219,6 +220,7 @@ void LLViewerTexLayerSetBuffer::midRenderTexLayerSet(BOOL success)
{
LL_DEBUGS("Avatar") << "Skipping bake for unsupported layer on this region" << LL_ENDL;
}
// <FS:Beq>
}
else
{

View File

@ -51,7 +51,7 @@ public:
{
//<FS:Beq> OpenSim BOM fallback
// U32 num_bakes = (U32) LLAvatarAppearanceDefines::BAKED_NUM_INDICES;
U32 num_bakes = (U32) LLVOAvatar::sMaxBakes;
U32 num_bakes = (U32) gAgentAvatarp->getNumBakes();
//</FS:Beq>
for( U32 index = 0; index < num_bakes; ++index )
{
@ -64,7 +64,7 @@ public:
{
//<FS:Beq> OpenSim BOM fallback
// U32 num_bakes = (U32) LLAvatarAppearanceDefines::BAKED_NUM_INDICES;
U32 num_bakes = (U32) LLVOAvatar::sMaxBakes;
U32 num_bakes = (U32) gAgentAvatarp->getNumBakes();
//</FS:Beq>
for( U32 index = 0; index < num_bakes; ++index )
{

View File

@ -624,9 +624,6 @@ F32 LLVOAvatar::sUnbakedTime = 0.f;
F32 LLVOAvatar::sUnbakedUpdateTime = 0.f;
F32 LLVOAvatar::sGreyTime = 0.f;
F32 LLVOAvatar::sGreyUpdateTime = 0.f;
//<FS:Beq> BOM bake limits
S32 LLVOAvatar::sMaxBakes;
//</FS:Beq>
//-----------------------------------------------------------------------------
// Helper functions
//-----------------------------------------------------------------------------
@ -737,12 +734,7 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
mImpostorDistance = 0;
mImpostorPixelArea = 0;
//<FS:Beq> BOM constrain number of bake requests when BOM not supported
// BAKED_LEFT_ARM is equal to the pre-BOM BAKED_NUM_INDICES
sMaxBakes = gAgent.getRegion()->bakesOnMeshEnabled()?BAKED_NUM_INDICES:BAKED_LEFT_ARM;
//</FS:Beq>
setNumTEs(TEX_NUM_INDICES);
mbCanSelect = TRUE;
mSignaledAnimations.clear();
@ -783,6 +775,47 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
mVisuallyMuteSetting = FSAvatarRenderPersistence::instance().getAvatarRenderSettings(id);
}
//<FS:Beq> BOM constrain number of bake requests when BOM not supported
S32 LLVOAvatar::getNumBakes() const
{
#ifdef OPENSIM
// BAKED_LEFT_ARM is equal to the pre-BOM BAKED_NUM_INDICES
if(getRegion())
{
// LL_INFOS("BOMOS")
// << getFullname()
// << "Using avatar region settings [" << getRegion()->getName() << "]"
// << " bakesOnMesh = " << static_cast<const char *>(getRegion()->bakesOnMeshEnabled()?"True":"False")
// << LL_ENDL;
return getRegion()->getRegionMaxBakes();
}
// LL_INFOS("BOMOS")
// << " Using fallback settings"
// << " bakesOnMesh = " << static_cast<const char *>(LLGridManager::instance().isInSecondLife()?"True":"False")
// << LL_ENDL;
// fallback, in SL assume BOM, elsewhere assume not.
return LLGridManager::instance().isInSecondLife()?BAKED_NUM_INDICES:BAKED_LEFT_ARM;
#else
return BAKED_NUM_INDICES;
#endif
}
// U8 LLVOAvatar::getNumTEs() const
// {
// #ifdef OPENSIM
// // TEX_HEAD_UNIVERSAL_TATTOO is equal to the pre-BOM TEX_NUM_INDICES
// if(!mTEImages){return 0;}
// if(getRegion())
// {
// return getRegion()->getRegionMaxTEs();
// }
// // fallback, in SL assume BOM, elsewhere assume not.
// return LLGridManager::instance().isInSecondLife()?TEX_NUM_INDICES:TEX_HEAD_UNIVERSAL_TATTOO;
// #else
// return TEX_NUM_INDICES;
// #endif
// }
//</FS:Beq>
std::string LLVOAvatar::avString() const
{
if (isControlAvatar())
@ -870,8 +903,9 @@ BOOL LLVOAvatar::isFullyBaked()
{
if (mIsDummy) return TRUE;
if (getNumTEs() == 0) return FALSE;
for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
// <FS:Beq> OS BOM limit the tests to avoid "invalid face error"
// for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
for (U32 i = 0; i < getNumBakes(); i++)
{
if (!isTextureDefined(mBakedTextureDatas[i].mTextureIndex)
&& ((i != BAKED_SKIRT) || isWearingWearableType(LLWearableType::WT_SKIRT))
@ -9000,7 +9034,9 @@ void LLVOAvatar::updateMeshTextures()
mBakedTextureDebugText += llformat("%06d\n",update_counter++);
mBakedTextureDebugText += "indx layerset linvld ltda ilb ulkg ltid\n";
for (U32 i=0; i < mBakedTextureDatas.size(); i++)
// <FS:Beq> BOM OS
// for (U32 i=0; i < mBakedTextureDatas.size(); i++)
for (U32 i=0; i < getNumBakes(); i++)
{
is_layer_baked[i] = isTextureDefined(mBakedTextureDatas[i].mTextureIndex);
LLViewerTexLayerSet* layerset = NULL;
@ -9048,8 +9084,10 @@ void LLVOAvatar::updateMeshTextures()
use_lkg_baked_layer[i],
last_id_string.c_str());
}
for (U32 i=0; i < mBakedTextureDatas.size(); i++)
// <FS:Beq> BOM OS
// for (U32 i=0; i < mBakedTextureDatas.size(); i++)
for (U32 i=0; i < getNumBakes(); i++)
// </FS:Beq>
{
debugColorizeSubMeshes(i, LLColor4::white);
@ -9329,7 +9367,7 @@ void LLVOAvatar::releaseComponentTextures()
//<FS:Beq> BOM constrain number of bake requests when BOM not supported
// for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)
for (U8 baked_index = 0; baked_index < sMaxBakes; baked_index++)
for (U8 baked_index = 0; baked_index < getNumBakes(); baked_index++)
//</FS:Beq>
{
const LLAvatarAppearanceDictionary::BakedEntry * bakedDicEntry = LLAvatarAppearanceDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)baked_index);
@ -9912,7 +9950,12 @@ void LLVOAvatar::applyParsedAppearanceMessage(LLAppearanceMessageContents& conte
// prevent the overwriting of valid baked textures with invalid baked textures
for (U8 baked_index = 0; baked_index < mBakedTextureDatas.size(); baked_index++)
{
if (!isTextureDefined(mBakedTextureDatas[baked_index].mTextureIndex)
// <FS:Beq> refactor a little to help debug
// if (!isTextureDefined(mBakedTextureDatas[baked_index].mTextureIndex)
auto isDefined = isTextureDefined(mBakedTextureDatas[baked_index].mTextureIndex);
LL_DEBUGS("Avatar") << avString() << "sb " << (S32) isUsingServerBakes() << " baked_index " << (S32) baked_index << " textureDefined= " << isDefined << LL_ENDL;
if (!isDefined
// </FS:Beq>
&& mBakedTextureDatas[baked_index].mLastTextureID != IMG_DEFAULT
&& baked_index != BAKED_SKIRT && baked_index != BAKED_LEFT_ARM && baked_index != BAKED_LEFT_LEG && baked_index != BAKED_AUX1 && baked_index != BAKED_AUX2 && baked_index != BAKED_AUX3)
{
@ -9937,8 +9980,8 @@ void LLVOAvatar::applyParsedAppearanceMessage(LLAppearanceMessageContents& conte
BOOL is_first_appearance_message = !mFirstAppearanceMessageReceived;
mFirstAppearanceMessageReceived = TRUE;
//LL_DEBUGS("Avatar") << avString() << "processAvatarAppearance start " << mID
// << " first? " << is_first_appearance_message << " self? " << isSelf() << LL_ENDL;
// LL_DEBUGS("Avatar") << avString() << "processAvatarAppearance start " << mID
// << " first? " << is_first_appearance_message << " self? " << isSelf() << LL_ENDL;
if (is_first_appearance_message )
{
@ -10066,7 +10109,7 @@ LLViewerTexture* LLVOAvatar::getBakedTexture(const U8 te)
//<FS:Beq> BOM constrain number of bake requests when BOM not supported
// prior to BOM BAKES beyond BAKED_HAIR were not supported.
// if (te < 0 || te >= BAKED_NUM_INDICES)
if (te < 0 || te >= sMaxBakes)
if (te < 0 || te >= getNumBakes())
//</FS:Beq>
{
return NULL;
@ -10768,26 +10811,6 @@ void LLVOAvatar::removeMissingBakedTextures()
//virtual
void LLVOAvatar::updateRegion(LLViewerRegion *regionp)
{
//<FS:Beq> BOM constrain number of bake requests when BOM not supported,
// TEX_HEAD_TATTOO and BAKED_LEFT_ARM are the first new entries
if (gAgent.getRegion())
{
sMaxBakes = gAgent.getRegion()->bakesOnMeshEnabled() ? BAKED_NUM_INDICES : BAKED_LEFT_ARM;
if (!gSavedSettings.getBOOL("CurrentlyUsingBakesOnMesh") != getRegion()->bakesOnMeshEnabled())
{
// force a rebake when the last grid we were on (including previous login) had different BOM support
// This replicates forceAppearanceUpdate rather than pulling in the whole of llavatarself.
if (!LLGridManager::instance().isInSecondLife())
{
doAfterInterval(boost::bind(&LLVOAvatarSelf::forceBakeAllTextures, gAgentAvatarp.get(), true), 5.f);
}
// update the setting even if we are in SL so that switch SL to OS and back
gSavedSettings.setBOOL("CurrentlyUsingBakesOnMesh", getRegion()->bakesOnMeshEnabled());
}
}
//</FS:Beq>
LLViewerObject::updateRegion(regionp);
}
@ -11444,7 +11467,7 @@ void LLVOAvatar::calculateUpdateRenderComplexity()
hud_complexity_list_t hud_complexity_list;
//<FS:Beq> BOM constrain number of bake requests when BOM not supported
// for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)
for (U8 baked_index = 0; baked_index < sMaxBakes; baked_index++)
for (U8 baked_index = 0; baked_index < getNumBakes(); baked_index++)
//</FS:Beq>
{
const LLAvatarAppearanceDictionary::BakedEntry *baked_dict

View File

@ -346,9 +346,6 @@ public:
static BOOL sJointDebug; // output total number of joints being touched for each avatar
static BOOL sDebugAvatarRotation;
static LLPartSysData sCloud;
//<FS:Beq> BOM bake limits
static S32 sMaxBakes;
//</FS:Beq>
//--------------------------------------------------------------------
// Region state
@ -368,6 +365,8 @@ public:
BOOL hasGray() const;
S32 getRezzedStatus() const; // 0 = cloud, 1 = gray, 2 = textured, 3 = textured and fully downloaded.
void updateRezzedStatusTimers(S32 status);
S32 getNumBakes() const;//<FS:Beq/> BOM bake limits
// U8 getNumTEs() const override;//<FS:Beq/> BOM bake limits
S32 mLastRezzedStatus;

View File

@ -1258,11 +1258,32 @@ void LLVOAvatarSelf::removeMissingBakedTextures()
// </FS:Ansariel> [Legacy Bake]
}
}
// <FS:Beq> Check whether the BOM capability is different to last time we changed region (even across login)
void LLVOAvatarSelf::checkBOMRebakeRequired()
{
if(!getRegion())
{
auto newBOMStatus = getRegion()->bakesOnMeshEnabled();
if(!gSavedSettings.getBOOL("CurrentlyUsingBakesOnMesh") != newBOMStatus)
{
// force a rebake when the last grid we were on (including previous login) had different BOM support
// This replicates forceAppearanceUpdate rather than pulling in the whole of llavatarself.
if(!LLGridManager::instance().isInSecondLife())
{
doAfterInterval(boost::bind(&LLVOAvatarSelf::forceBakeAllTextures, gAgentAvatarp.get(), true), 5.0);
}
// update the setting even if we are in SL so that switch SL to OS and back
gSavedSettings.setBOOL("CurrentlyUsingBakesOnMesh", newBOMStatus);
}
}
}
// </FS:Beq>
void LLVOAvatarSelf::onSimulatorFeaturesReceived(const LLUUID& region_id)
{
LL_INFOS("Avatar") << "simulator features received, setting hover based on region props" << LL_ENDL;
setHoverIfRegionEnabled();
checkBOMRebakeRequired();// <FS:Beq/> BOM we may have stale cache, rebake may be needed
}
//virtual
@ -1289,6 +1310,7 @@ void LLVOAvatarSelf::updateRegion(LLViewerRegion *regionp)
if (regionp->simulatorFeaturesReceived())
{
setHoverIfRegionEnabled();
checkBOMRebakeRequired();// <FS:Beq/> BOM we may have stale cache, rebake may be needed
}
else
{
@ -3186,7 +3208,7 @@ LLViewerTexLayerSet* LLVOAvatarSelf::getLayerSet(EBakedTextureIndex baked_index)
return mHeadLayerSet; */
// <FS:Beq> BOM fallback support for OpenSim legacy
// if (baked_index >= 0 && baked_index < BAKED_NUM_INDICES)
if (baked_index >= 0 && baked_index < LLVOAvatar::sMaxBakes)
if (baked_index >= 0 && baked_index < getNumBakes())
//</FS:Beq>
{
return getTexLayerSet(baked_index);
@ -3278,7 +3300,18 @@ bool LLVOAvatarSelf::sendAppearanceMessage(LLMessageSystem *mesgsys) const
{
const ETextureIndex index = iter->first;
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
if (!texture_dict->mIsBakedTexture)
// <FS:Beq> hide the surplus bakes and universals from non-BOM
// if (!texture_dict->mIsBakedTexture)
if( (index == TEX_SKIRT || index == TEX_SKIRT_TATTOO) && !gAgentAvatarp->isWearingWearableType(LLWearableType::WT_SKIRT) )
{
// TODO(BEQ): combine this with clause below once proven it works.
LL_DEBUGS("Avatar") << "Ignoring skirt related texture at index=" << index << LL_ENDL;
LLTextureEntry &entry = getTEref((U8) index);
texture_id[index] = entry.getID();
entry.setID(IMG_DEFAULT_AVATAR);
}
if (!texture_dict->mIsBakedTexture || index >= getRegion()->getRegionMaxTEs())
// </FS:Beq>
{
LLTextureEntry &entry = getTEref((U8) index);
texture_id[index] = entry.getID();
@ -3311,7 +3344,7 @@ bool LLVOAvatarSelf::sendAppearanceMessage(LLMessageSystem *mesgsys) const
//}
// </ClientTag>
bool success = packTEMessage(mesgsys);
// unpack TEs to make sure we don't re-trigger a bake
@ -3321,7 +3354,10 @@ bool LLVOAvatarSelf::sendAppearanceMessage(LLMessageSystem *mesgsys) const
{
const ETextureIndex index = iter->first;
const LLAvatarAppearanceDictionary::TextureEntry *texture_dict = iter->second;
if (!texture_dict->mIsBakedTexture)
// <FS:Beq> hide the surplus bakes and universals from non-BOM
// if (!texture_dict->mIsBakedTexture)
if (!texture_dict->mIsBakedTexture || index >= getRegion()->getRegionMaxTEs())
// </FS:Beq>
{
LLTextureEntry &entry = getTEref((U8) index);
entry.setID(texture_id[index]);
@ -3513,7 +3549,9 @@ void LLVOAvatarSelf::requestLayerSetUpload(LLAvatarAppearanceDefines::EBakedText
// virtual
bool LLVOAvatarSelf::hasPendingBakedUploads() const
{
for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
// <FS:Beq> BOMOS constrain uploads for non-BOM.
// for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
for (U32 i = 0; i < getNumBakes(); i++)
{
LLViewerTexLayerSet* layerset = getTexLayerSet(i);
if (layerset && layerset->getViewerComposite() && layerset->getViewerComposite()->uploadPending())

View File

@ -449,7 +449,7 @@ private:
F32 mDebugTextureLoadTimes[LLAvatarAppearanceDefines::TEX_NUM_INDICES][MAX_DISCARD_LEVEL+1]; // load time for each texture at each discard level
F32 mDebugBakedTextureTimes[LLAvatarAppearanceDefines::BAKED_NUM_INDICES][2]; // time to start upload and finish upload of each baked texture
void debugTimingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata);
void checkBOMRebakeRequired();
void appearanceChangeMetricsCoro(std::string url);
bool mInitialMetric;
S32 mMetricSequence;