diff --git a/autobuild.xml b/autobuild.xml index c342ffddaa..743f4b47bc 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -922,11 +922,11 @@ archive hash - ff3057e8763bdbe87a478a3d77067b5a + 19e40aa358c1784b49eccd547e704647 hash_algorithm md5 url - file:///opt/firestorm/fmodstudio-2.02.26-darwin64-243641704.tar.bz2 + file:///opt/firestorm/fmodstudio-2.03.07-darwin64-251121740.tar.bz2 name darwin64 @@ -936,11 +936,11 @@ archive hash - 41265f539399e365601a22d108287e91 + a459e2967306ff56a835a321dc00718c hash_algorithm md5 url - file:///opt/firestorm/fmodstudio-2.02.26-linux64-243641703.tar.bz2 + file:///opt/firestorm/fmodstudio-2.03.07-linux64-251121739.tar.bz2 name linux64 @@ -950,11 +950,9 @@ archive hash - 595e7aa51f2161b8d11c3afcc88e2197 - hash_algorithm - md5 + 4a0da36b4a31332df62dadf6438f935e url - file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.26-windows64-243641704.tar.bz2 + file:///c:/cygwin/opt/firestorm/fmodstudio-2.03.07-windows64-251121127.tar.bz2 name windows64 diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h index 3617ce2bb6..25a51da03d 100644 --- a/indra/llappearance/llavatarappearance.h +++ b/indra/llappearance/llavatarappearance.h @@ -140,10 +140,9 @@ public: LLVector3 mHeadOffset{}; // current head position LLAvatarJoint* mRoot{ nullptr }; - // This map gets queried a huge amount of time. + // Joint-lookup improvements // typedef std::map joint_map_t; - typedef std::unordered_map joint_map_t; - // + typedef std::map> joint_map_t; joint_map_t mJointMap; diff --git a/indra/llaudio/llaudioengine_fmodstudio.cpp b/indra/llaudio/llaudioengine_fmodstudio.cpp index 02d3408497..e9996b93e0 100644 --- a/indra/llaudio/llaudioengine_fmodstudio.cpp +++ b/indra/llaudio/llaudioengine_fmodstudio.cpp @@ -44,9 +44,9 @@ #include "sound_ids.h" -const U32 EXTRA_SOUND_CHANNELS = 10; +constexpr U32 EXTRA_SOUND_CHANNELS = 10; -FMOD_RESULT F_CALLBACK windCallback(FMOD_DSP_STATE *dsp_state, float *inbuffer, float *outbuffer, unsigned int length, int inchannels, int *outchannels); +FMOD_RESULT F_CALL windCallback(FMOD_DSP_STATE *dsp_state, float *inbuffer, float *outbuffer, unsigned int length, int inchannels, int *outchannels); FMOD::ChannelGroup *LLAudioEngine_FMODSTUDIO::mChannelGroups[LLAudioEngine::AUDIO_TYPE_COUNT] = {0}; @@ -69,13 +69,13 @@ static inline bool Check_FMOD_Error(FMOD_RESULT result, const char *string) return true; } -LLUUID FMOD_GUID_to_LLUUID(FMOD_GUID guid) +static LLUUID FMOD_GUID_to_LLUUID(FMOD_GUID guid) { return LLUUID(llformat("%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", guid.Data1, guid.Data2, guid.Data3, guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7])); } -void set_device(FMOD::System* system, const LLUUID& device_uuid) +static void set_device(FMOD::System* system, const LLUUID& device_uuid) { LL_INFOS() << "LLAudioEngine_FMODSTUDIO::setDevice with device_uuid=" << device_uuid << LL_ENDL; @@ -113,7 +113,7 @@ void set_device(FMOD::System* system, const LLUUID& device_uuid) } } -FMOD_RESULT F_CALLBACK systemCallback(FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK_TYPE type, void *commanddata1, void *commanddata2, void* userdata) +FMOD_RESULT F_CALL systemCallback(FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK_TYPE type, void *commanddata1, void *commanddata2, void* userdata) { FMOD::System* sys = (FMOD::System*)system; LLAudioEngine_FMODSTUDIO* audio_engine = (LLAudioEngine_FMODSTUDIO*)userdata; @@ -881,7 +881,7 @@ void LLAudioChannelFMODSTUDIO::set3DMode(bool use3d) // not the main thread. May have implications for callees or audio // engine shutdown. -FMOD_RESULT F_CALLBACK windCallback(FMOD_DSP_STATE *dsp_state, float *inbuffer, float *outbuffer, unsigned int length, int inchannels, int *outchannels) +FMOD_RESULT F_CALL windCallback(FMOD_DSP_STATE *dsp_state, float *inbuffer, float *outbuffer, unsigned int length, int inchannels, int *outchannels) { // inbuffer = fmod's original mixbuffer. // outbuffer = the buffer passed from the previous DSP unit. diff --git a/indra/llcharacter/llcharacter.cpp b/indra/llcharacter/llcharacter.cpp index b1648397e0..65c70c2ce1 100644 --- a/indra/llcharacter/llcharacter.cpp +++ b/indra/llcharacter/llcharacter.cpp @@ -77,7 +77,9 @@ LLCharacter::~LLCharacter() //----------------------------------------------------------------------------- // getJoint() //----------------------------------------------------------------------------- -LLJoint *LLCharacter::getJoint( const std::string &name ) +// Joint-lookup improvements +//LLJoint *LLCharacter::getJoint( const std::string &name ) +LLJoint* LLCharacter::getJoint(std::string_view name) { LLJoint* joint = NULL; @@ -94,14 +96,6 @@ LLJoint *LLCharacter::getJoint( const std::string &name ) return joint; } -// Query by JointKey rather than just a string, the key can be a U32 index for faster lookup -// Default fallback is string. -LLJoint *LLCharacter::getJoint( const JointKey &name ) -{ - return getJoint( name.mName ); -} -// - //----------------------------------------------------------------------------- // registerMotion() //----------------------------------------------------------------------------- diff --git a/indra/llcharacter/llcharacter.h b/indra/llcharacter/llcharacter.h index 2f0cf1487e..53803bbb24 100644 --- a/indra/llcharacter/llcharacter.h +++ b/indra/llcharacter/llcharacter.h @@ -76,13 +76,9 @@ public: // get the specified joint // default implementation does recursive search, // subclasses may optimize/cache results. + // Joint-lookup improvements // virtual LLJoint *getJoint( const std::string &name ); - - // Query by JointKey rather than just a string, the key can be a U32 index for faster lookup - virtual LLJoint *getJoint( const JointKey &name ); - // - - LLJoint *getJoint( const std::string &name ); + virtual LLJoint* getJoint(std::string_view name); // get the position of the character virtual LLVector3 getCharacterPosition() = 0; diff --git a/indra/llcharacter/lljoint.cpp b/indra/llcharacter/lljoint.cpp index 91f33a73eb..7749e2748e 100644 --- a/indra/llcharacter/lljoint.cpp +++ b/indra/llcharacter/lljoint.cpp @@ -34,24 +34,6 @@ #include "llmath.h" #include -// Query by JointKey rather than just a string, the key can be a U32 index for faster lookup -#include - -std::unordered_map mpStringToKeys; - -JointKey JointKey::construct(const std::string& aName) -{ - if (const auto itr = mpStringToKeys.find(aName); itr != mpStringToKeys.end()) - { - return { aName, itr->second }; - } - - U32 size = static_cast(mpStringToKeys.size()) + 1; - mpStringToKeys.try_emplace(aName, size); - return { aName, size }; -} -// - S32 LLJoint::sNumUpdates = 0; S32 LLJoint::sNumTouches = 0; @@ -260,7 +242,9 @@ LLJoint *LLJoint::getRoot() //----------------------------------------------------------------------------- // findJoint() //----------------------------------------------------------------------------- -LLJoint *LLJoint::findJoint( const std::string &name ) +// Joint-lookup improvements +//LLJoint *LLJoint::findJoint( const std::string &name ) +LLJoint *LLJoint::findJoint(std::string_view name) { if (name == getName()) return this; diff --git a/indra/llcharacter/lljoint.h b/indra/llcharacter/lljoint.h index 8118752bfc..f2ceed5f55 100644 --- a/indra/llcharacter/lljoint.h +++ b/indra/llcharacter/lljoint.h @@ -40,31 +40,6 @@ #include "xform.h" #include "llmatrix4a.h" -// Query by JointKey rather than just a string, the key can be a U32 index for faster lookup -struct JointKey -{ - std::string mName; - U32 mKey; - - static JointKey construct(const std::string& aName); -}; - -inline bool operator==(JointKey const &aLHS, JointKey const &aRHS) -{ - return aLHS.mName == aRHS.mName; -} - -inline bool operator!=(JointKey const &aLHS, JointKey const &aRHS) -{ - return ! (aLHS == aRHS); -} - -inline std::ostream& operator<<(std::ostream &aLHS, JointKey const &aRHS) -{ - return aLHS << aRHS.mName << " (" << aRHS.mKey << ")"; -} -// - constexpr S32 LL_CHARACTER_MAX_JOINTS_PER_MESH = 15; // Need to set this to count of animate-able joints, // currently = #bones + #collision_volumes + #attachments + 2, @@ -247,7 +222,9 @@ public: LLJoint *getRoot(); // search for child joints by name - LLJoint *findJoint( const std::string &name ); + // Joint-lookup improvements + //LLJoint *findJoint( const std::string &name ); + LLJoint* findJoint(std::string_view name); // add/remove children void addChild( LLJoint *joint ); diff --git a/indra/llmath/llcamera.cpp b/indra/llmath/llcamera.cpp index 3103ce90dd..b3f0530af5 100644 --- a/indra/llmath/llcamera.cpp +++ b/indra/llmath/llcamera.cpp @@ -35,7 +35,7 @@ LLCamera::LLCamera() : LLCoordFrame(), mView(DEFAULT_FIELD_OF_VIEW), mAspect(DEFAULT_ASPECT_RATIO), - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings //mInverseAspect(1.0f / DEFAULT_ASPECT_RATIO), mDrawDistanceMultiplier(1.0f), // [FIRE-35081] @@ -67,14 +67,14 @@ LLCamera::LLCamera(F32 vertical_fov_rads, F32 aspect_ratio, S32 view_height_in_p } mAspect = llclamp(aspect_ratio, MIN_ASPECT_RATIO, MAX_ASPECT_RATIO); - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Store the inverse of the aspect ratio, so we can remove it from texture calculations //mInverseAspect = 1.0f / mAspect; // [FIRE-35081] mNearPlane = llclamp(near_plane, MIN_NEAR_PLANE, MAX_NEAR_PLANE); if(far_plane < 0) far_plane = DEFAULT_FAR_PLANE; mFarPlane = llclamp(far_plane, MIN_FAR_PLANE, MAX_FAR_PLANE); - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Store the draw distance multiplier based upon how much bigger/smaller the far plan is then the default (64.0f) mDrawDistanceMultiplier = mFarPlane / DEFAULT_FAR_PLANE; mDrawDistanceMultiplier = mDrawDistanceMultiplier < 1.0f ? 1.0f : mDrawDistanceMultiplier; @@ -141,7 +141,7 @@ void LLCamera::setViewHeightInPixels(S32 height) void LLCamera::setAspect(F32 aspect_ratio) { mAspect = llclamp(aspect_ratio, MIN_ASPECT_RATIO, MAX_ASPECT_RATIO); - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Store the inverse of the aspect ratio, so we can remove it from texture calculations //mInverseAspect = 1.0f / mAspect; // [FIRE-35081] @@ -159,7 +159,7 @@ void LLCamera::setNear(F32 near_plane) void LLCamera::setFar(F32 far_plane) { mFarPlane = llclamp(far_plane, MIN_FAR_PLANE, MAX_FAR_PLANE); - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Store the draw distance multiplier based upon how much bigger/smaller the far plan is then the default (64.0f) mDrawDistanceMultiplier = mFarPlane / DEFAULT_FAR_PLANE; mDrawDistanceMultiplier = mDrawDistanceMultiplier < 1.0f ? 1.0f : mDrawDistanceMultiplier; diff --git a/indra/llmath/llcamera.h b/indra/llmath/llcamera.h index cfe2227620..ea6a303032 100644 --- a/indra/llmath/llcamera.h +++ b/indra/llmath/llcamera.h @@ -127,7 +127,7 @@ private: F32 mView; // angle between top and bottom frustum planes in radians. F32 mAspect; // width/height - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Store the inverse of the aspect ratio, for the texture's sizes //F32 mInverseAspect; // height/width F32 mDrawDistanceMultiplier; // mFarPlane / DEFAULT_FAR_PLANE @@ -166,7 +166,7 @@ public: F32 getView() const { return mView; } // vertical FOV in radians S32 getViewHeightInPixels() const { return mViewHeightInPixels; } F32 getAspect() const { return mAspect; } // width / height - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings //F32 getInverseAspect() const { return mInverseAspect; } // width / height F32 getDrawDistanceMultiplier() const { return mDrawDistanceMultiplier; } // mFarPlane / DEFAULT_FAR_PLANE (could also include near plane as well) // [FIRE-35081] diff --git a/indra/llprimitive/lldaeloader.cpp b/indra/llprimitive/lldaeloader.cpp index c3c3f81ea2..8d5d02aff0 100644 --- a/indra/llprimitive/lldaeloader.cpp +++ b/indra/llprimitive/lldaeloader.cpp @@ -1467,10 +1467,7 @@ void LLDAELoader::processDomModel(LLModel* model, DAE* dae, daeElement* root, do { name = mJointMap[name]; } -// Query by JointKey rather than just a string, the key can be a U32 index for faster lookup -// model->mSkinInfo.mJointNames.push_back( name ); - model->mSkinInfo.mJointNames.push_back( JointKey::construct( name ) ); -// + model->mSkinInfo.mJointNames.push_back(name); model->mSkinInfo.mJointNums.push_back(-1); } } @@ -1488,10 +1485,7 @@ void LLDAELoader::processDomModel(LLModel* model, DAE* dae, daeElement* root, do { name = mJointMap[name]; } -// Query by JointKey rather than just a string, the key can be a U32 index for faster lookup -// model->mSkinInfo.mJointNames.push_back( name ); - model->mSkinInfo.mJointNames.push_back( JointKey::construct( name ) ); -// + model->mSkinInfo.mJointNames.push_back(name); model->mSkinInfo.mJointNums.push_back(-1); } } @@ -1533,10 +1527,7 @@ void LLDAELoader::processDomModel(LLModel* model, DAE* dae, daeElement* root, do //but does not use the skeleton). buildJointToNodeMappingFromScene( root ); -// Query by JointKey rather than just a string, the key can be a U32 index for faster lookup -// critiqueRigForUploadApplicability( model->mSkinInfo.mJointNames ); - critiqueRigForUploadApplicability( toStringVector( model->mSkinInfo.mJointNames ) ); -// + critiqueRigForUploadApplicability( model->mSkinInfo.mJointNames ); if ( !missingSkeletonOrScene ) { @@ -1589,11 +1580,7 @@ void LLDAELoader::processDomModel(LLModel* model, DAE* dae, daeElement* root, do //with the skeleton are not stored in the same order as they are in the exported joint buffer. //This remaps the skeletal joints to be in the same order as the joints stored in the model. -// Query by JointKey rather than just a string, the key can be a U32 index for faster lookup - // std::vector ::const_iterator jointIt = model->mSkinInfo.mJointNames.begin(); - std::vector< std::string > jointNames = toStringVector( model->mSkinInfo.mJointNames ); - std::vector ::const_iterator jointIt = jointNames.begin(); -// + std::vector ::const_iterator jointIt = model->mSkinInfo.mJointNames.begin(); const int jointCnt = static_cast(model->mSkinInfo.mJointNames.size()); for ( int i=0; i Query by JointKey rather than just a string, the key can be a U32 index for faster lookup -// mJointNames.push_back( skin[ "joint_names" ][ i ] ); - mJointNames.push_back( JointKey::construct( skin[ "joint_names" ][ i ] ) ); -// ND> + mJointNames.push_back( skin[ "joint_names" ][ i ] ); mJointNums.push_back(-1); } } @@ -1589,10 +1586,7 @@ LLSD LLMeshSkinInfo::asLLSD(bool include_joints, bool lock_scale_if_joint_positi for (U32 i = 0; i < mJointNames.size(); ++i) { -// Query by JointKey rather than just a string, the key can be a U32 index for faster lookup -// ret[ "joint_names" ][ i ] = mJointNames[ i ]; - ret[ "joint_names" ][ i ] = mJointNames[ i ].mName; -// + ret[ "joint_names" ][ i ] = mJointNames[ i ]; for (U32 j = 0; j < 4; j++) { @@ -1643,9 +1637,7 @@ void LLMeshSkinInfo::updateHash() //mJointNames for (auto& name : mJointNames) { - // Joint lookup speedup - //hash.update(name); - hash.update(name.mName); + hash.update(name); } //mJointNums @@ -1671,10 +1663,7 @@ U32 LLMeshSkinInfo::sizeBytes() const res += sizeof(std::vector) + sizeof(std::string) * static_cast(mJointNames.size()); for (U32 i = 0; i < mJointNames.size(); ++i) { - // Query by JointKey rather than just a string, the key can be a U32 index for faster lookup - //res += static_cast(mJointNames[i].size()); // actual size, not capacity - res += static_cast(mJointNames[i].mName.size()); // actual size, not capacity - // + res += static_cast(mJointNames[i].size()); // actual size, not capacity } res += sizeof(std::vector) + sizeof(S32) * static_cast(mJointNums.size()); diff --git a/indra/llprimitive/llmodel.h b/indra/llprimitive/llmodel.h index 816ca3d000..010b6d5d85 100644 --- a/indra/llprimitive/llmodel.h +++ b/indra/llprimitive/llmodel.h @@ -56,10 +56,7 @@ public: U32 sizeBytes() const; LLUUID mMeshID; -// Query by JointKey rather than just a string, the key can be a U32 index for faster lookup -// std::vector mJointNames; - std::vector< JointKey > mJointNames; -// + std::vector mJointNames; mutable std::vector mJointNums; typedef std::vector matrix_list_t; matrix_list_t mInvBindMatrix; diff --git a/indra/llprimitive/llmodelloader.cpp b/indra/llprimitive/llmodelloader.cpp index d3fa1767a5..39b6c81be9 100644 --- a/indra/llprimitive/llmodelloader.cpp +++ b/indra/llprimitive/llmodelloader.cpp @@ -257,10 +257,7 @@ bool LLModelLoader::loadFromSLM(const std::string& filename) if (!loaded_model->mSkinInfo.mJointNames.empty()) { //check to see if rig is valid -// Query by JointKey rather than just a string, the key can be a U32 index for faster lookup -// critiqueRigForUploadApplicability( loaded_model->mSkinInfo.mJointNames ); - critiqueRigForUploadApplicability( toStringVector( loaded_model->mSkinInfo.mJointNames ) ); -// + critiqueRigForUploadApplicability( loaded_model->mSkinInfo.mJointNames ); } else if (mCacheOnlyHitIfRigged) { diff --git a/indra/llprimitive/llmodelloader.h b/indra/llprimitive/llmodelloader.h index d04585bd2c..f5783515fa 100644 --- a/indra/llprimitive/llmodelloader.h +++ b/indra/llprimitive/llmodelloader.h @@ -196,18 +196,6 @@ public: void clearLog() { mWarningsArray.clear(); } protected: -// Query by JointKey rather than just a string, the key can be a U32 index for faster lookup - std::vector< std::string > toStringVector( std::vector< JointKey > const &aIn ) const - { - std::vector< std::string > out; - - for( std::vector< JointKey >::const_iterator itr = aIn.begin(); itr != aIn.end(); ++itr ) - out.push_back( itr->mName ); - - return out; - } -// - LLModelLoader::load_callback_t mLoadCallback; LLModelLoader::joint_lookup_func_t mJointLookupFunc; LLModelLoader::texture_load_func_t mTextureLoadFunc; diff --git a/indra/llrender/llgltexture.cpp b/indra/llrender/llgltexture.cpp index 5f645b9d76..377e453ba4 100644 --- a/indra/llrender/llgltexture.cpp +++ b/indra/llrender/llgltexture.cpp @@ -104,7 +104,7 @@ void LLGLTexture::setBoostLevel(S32 level) if(mBoostLevel != LLGLTexture::BOOST_NONE && mBoostLevel != LLGLTexture::BOOST_ICON && mBoostLevel != LLGLTexture::BOOST_THUMBNAIL - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Add the new grass, light and tree boosts && mBoostLevel != LLGLTexture::BOOST_GRASS && mBoostLevel != LLGLTexture::BOOST_LIGHT diff --git a/indra/llrender/llgltexture.h b/indra/llrender/llgltexture.h index 65911e92a7..4336039c1c 100644 --- a/indra/llrender/llgltexture.h +++ b/indra/llrender/llgltexture.h @@ -53,7 +53,7 @@ public: BOOST_AVATAR_BAKED , BOOST_TERRAIN , // Needed for minimap generation for now. Lower than BOOST_HIGH so the texture stats don't get forced, i.e. texture stats are manually managed by minimap/terrain instead. - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings BOOST_GRASS , // Grass has a alternative calculation for virtual and face sizes. BOOST_TREE , // Tree has a alternative calculation for virtual and face sizes. BOOST_LIGHT , // Light textures has a alternative calculation for virtual and face sizes. diff --git a/indra/llui/llconsole.cpp b/indra/llui/llconsole.cpp index d810d365bc..0842c90409 100644 --- a/indra/llui/llconsole.cpp +++ b/indra/llui/llconsole.cpp @@ -565,7 +565,7 @@ void LLConsole::Paragraph::updateLines(F32 screen_width, const LLFontGL* font, L { if ( !force_resize ) { - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // if ( mMaxWidth >= 0.0f //&& mMaxWidth < screen_width) // If viewer window was made as small as possible with the console enabled, it would cause an assert error diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp index 694007adb6..b8d2232264 100644 --- a/indra/llui/llurlentry.cpp +++ b/indra/llui/llurlentry.cpp @@ -1259,7 +1259,7 @@ void LLUrlEntryParcel::processParcelInfo(const LLParcelData& parcel_data) // LLUrlEntryPlace::LLUrlEntryPlace() { - mPattern = boost::regex("((hop://[-\\w\\.\\:\\@]+/)|((x-grid-location-info://[-\\w\\.]+/region/)|(secondlife://)))\\S+(?:/?(-?\\d+/-?\\d+/-?\\d+|-?\\d+/-?\\d+)/?)?", // + mPattern = boost::regex("((hop://[-\\w\\.\\:\\@]+/[^/]+/?)|((hop://[-\\w\\.\\:\\@]+/)|((x-grid-location-info://[-\\w\\.]+/region/)|(secondlife://)))\\S+/?(\\d+/\\d+/-?\\d+|\\d+/-?\\d+)/?)$", // boost::regex::perl|boost::regex::icase); mMenuName = "menu_url_slurl.xml"; mTooltip = LLTrans::getString("TooltipSLURL"); diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 834bf4595a..949c72d8b3 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -26286,5 +26286,16 @@ Change of this parameter will affect the layout of buttons in notification toast Value 0 + FSSnapshotLocalNamesWithTimestamps + + Comment + include a timestamp in the filename when saving snapshots locally + Persist + 1 + Type + Boolean + Value + 1 + diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt index 442fe4ce75..c2aeba6334 100644 --- a/indra/newview/featuretable.txt +++ b/indra/newview/featuretable.txt @@ -333,7 +333,7 @@ RenderReflectionProbeLevel 1 3 RenderMirrors 1 0 RenderHeroProbeResolution 1 1024 RenderHeroProbeDistance 1 16 -RenderHeroProbeUpdateRate 1 1 +RenderHeroProbeUpdateRate 1 2 RenderHeroProbeConservativeUpdateMultiplier 1 4 RenderCASSharpness 1 0.4 RenderExposure 1 1 @@ -375,7 +375,7 @@ RenderReflectionProbeLevel 1 3 RenderMirrors 1 0 RenderHeroProbeResolution 1 2048 RenderHeroProbeDistance 1 16 -RenderHeroProbeUpdateRate 1 1 +RenderHeroProbeUpdateRate 1 2 RenderHeroProbeConservativeUpdateMultiplier 1 4 RenderCASSharpness 1 0.4 RenderExposure 1 1 diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt index b1c2b3cf55..ecb1036c0b 100644 --- a/indra/newview/featuretable_linux.txt +++ b/indra/newview/featuretable_linux.txt @@ -333,7 +333,7 @@ RenderReflectionProbeLevel 1 3 RenderMirrors 1 0 RenderHeroProbeResolution 1 1024 RenderHeroProbeDistance 1 16 -RenderHeroProbeUpdateRate 1 1 +RenderHeroProbeUpdateRate 1 2 RenderHeroProbeConservativeUpdateMultiplier 1 4 RenderCASSharpness 1 0.4 RenderExposure 1 1 @@ -375,7 +375,7 @@ RenderReflectionProbeLevel 1 3 RenderMirrors 1 0 RenderHeroProbeResolution 1 2048 RenderHeroProbeDistance 1 16 -RenderHeroProbeUpdateRate 1 1 +RenderHeroProbeUpdateRate 1 2 RenderHeroProbeConservativeUpdateMultiplier 1 4 RenderCASSharpness 1 0.4 RenderExposure 1 1 diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt index 1d8ebdf6fb..05bd89e3f6 100644 --- a/indra/newview/featuretable_mac.txt +++ b/indra/newview/featuretable_mac.txt @@ -333,7 +333,7 @@ RenderReflectionProbeLevel 1 2 RenderMirrors 1 0 RenderHeroProbeResolution 1 512 RenderHeroProbeDistance 1 16 -RenderHeroProbeUpdateRate 1 1 +RenderHeroProbeUpdateRate 1 2 RenderHeroProbeConservativeUpdateMultiplier 1 4 RenderCASSharpness 1 0.4 RenderExposure 1 1 @@ -375,7 +375,7 @@ RenderReflectionProbeLevel 1 3 RenderMirrors 1 0 RenderHeroProbeResolution 1 1024 RenderHeroProbeDistance 1 16 -RenderHeroProbeUpdateRate 1 1 +RenderHeroProbeUpdateRate 1 2 RenderHeroProbeConservativeUpdateMultiplier 1 4 RenderCASSharpness 1 0.4 RenderExposure 1 1 diff --git a/indra/newview/fsfloaterposer.cpp b/indra/newview/fsfloaterposer.cpp index 5a5f04c7e6..f3d01fd6a9 100644 --- a/indra/newview/fsfloaterposer.cpp +++ b/indra/newview/fsfloaterposer.cpp @@ -1645,13 +1645,14 @@ std::vector FSFloaterPoser::getUiSelectedPoserJo return joints; } -void FSFloaterPoser::updateManipWithFirstSelectedJoint(std::vector joints) +void FSFloaterPoser::updateManipWithFirstSelectedJoint(std::vector joints) const { - if (!gAgentAvatarp || gAgentAvatarp.isNull()) + auto avatarp = getUiSelectedAvatar(); + if (!avatarp) return; if (joints.size() >= 1) - FSToolCompPose::getInstance()->setJoint(gAgentAvatarp->getJoint(JointKey::construct(joints[0]->jointName()))); + FSToolCompPose::getInstance()->setJoint(avatarp->getJoint(joints[0]->jointName())); else FSToolCompPose::getInstance()->setJoint(nullptr); } diff --git a/indra/newview/fsfloaterposer.h b/indra/newview/fsfloaterposer.h index 622577b0de..14c7d90615 100644 --- a/indra/newview/fsfloaterposer.h +++ b/indra/newview/fsfloaterposer.h @@ -136,7 +136,7 @@ public: /// Updates the visual with the first selected joint from the supplied collection, if any. /// /// The collection of selected joints. - static void updateManipWithFirstSelectedJoint(std::vector joints); + void updateManipWithFirstSelectedJoint(std::vector joints) const; /// /// Gets a detectable avatar by its UUID. diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index b92ee0becd..83782071b8 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -5989,7 +5989,7 @@ void LLAppViewer::idle() // objects and camera should be in sync, do LOD calculations now { LL_RECORD_BLOCK_TIME(FTM_LOD_UPDATE); - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Added a max time limit to the object list updates as these updates do affect the texture system //gObjectList.updateApparentAngles(gAgent); F32 max_update_apparent_angles = 0.025f * gFrameIntervalSeconds.value(); // 20 ms/second decode time diff --git a/indra/newview/llcallingcard.cpp b/indra/newview/llcallingcard.cpp index 5542a16b2e..961c103c22 100644 --- a/indra/newview/llcallingcard.cpp +++ b/indra/newview/llcallingcard.cpp @@ -516,7 +516,7 @@ void LLAvatarTracker::idleNotifyObservers() void LLAvatarTracker::notifyObservers() { - if (mIsNotifyObservers || (LLStartUp::getStartupState() <= STATE_INVENTORY_CALLBACKS)) + if (mIsNotifyObservers || (LLStartUp::getStartupState() <= STATE_INVENTORY_SEND2)) { // Don't allow multiple calls. // new masks and ids will be processed later from idle. @@ -835,7 +835,7 @@ void LLAvatarTracker::processNotify(LLMessageSystem* msg, bool online) mModifyMask |= LLFriendObserver::ONLINE; instance().notifyObservers(); // Skip if we had received the friends list before the inventory callbacks were properly initialized - if (LLStartUp::getStartupState() > STATE_INVENTORY_CALLBACKS) + if (LLStartUp::getStartupState() > STATE_INVENTORY_SEND2) { gInventory.notifyObservers(); } diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index ca997ff7aa..ef9b585423 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -75,7 +75,7 @@ static LLStaticHashedString sColorIn("color_in"); bool LLFace::sSafeRenderSelect = true; // false -// [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer +// [FIRE-35081] Blurry prims not changing with graphics settings // Moved to allow more code to access these values const S8 FACE_IMPORTANCE_LEVEL = 4 ; const F32 FACE_IMPORTANCE_TO_CAMERA_OVER_DISTANCE[FACE_IMPORTANCE_LEVEL][2] = //{distance, importance_weight} @@ -180,7 +180,7 @@ void LLFace::init(LLDrawable* drawablep, LLViewerObject* objp) mFaceColor = LLColor4(1,0,0,1); mImportanceToCamera = 1.f ; - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings mCloseToCamera = 1.0f; // [FIRE-35081] mBoundingSphereRadius = 0.0f ; @@ -1683,7 +1683,7 @@ bool LLFace::getGeometryVolume(const LLVolume& volume, xforms = XFORM_NONE; } - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Removed check for turning off animations //if (getVirtualSize() >= MIN_TEX_ANIM_SIZE) // || isState(LLFace::RIGGED)) // [FIRE-35081] @@ -2287,7 +2287,7 @@ F32 LLFace::getTextureVirtualSize() F32 radius; F32 cos_angle_to_view_dir; - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings //bool in_frustum = calcPixelArea(cos_angle_to_view_dir, radius); // The mInFrustum value is now updated in calcPixelArea, so no longer need to accss the value calcPixelArea(cos_angle_to_view_dir, radius); @@ -2325,7 +2325,7 @@ F32 LLFace::getTextureVirtualSize() } face_area = LLFace::adjustPixelArea(mImportanceToCamera, face_area); - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Remove the face area being affected by being partial off screen as close to screen textures can then become scaled down along with // animated textures. /* @@ -2423,7 +2423,7 @@ bool LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius) // no rigged extents, zero out bounding box and skip update mRiggedExtents[0] = mRiggedExtents[1] = LLVector4a(0.f, 0.f, 0.f); - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Set the face to be out of the frustum as the object is invalid mInFrustum = false; // [FIRE-35081] @@ -2473,7 +2473,7 @@ bool LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius) LLVector4a x_axis; x_axis.load3(camera->getXAxis().mV); cos_angle_to_view_dir = lookAt.dot3(x_axis).getF32(); - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Added close to camera (based upon the mImportanceToCamera) where any object that is within the FACE_IMPORTANCE_TO_CAMERA_OVER_DISTANCE (16.1f) // gets an extra texture scaling up. // Use positive distance to the camera and apply the multiplier based upon the texture scaled for increase in the default draw distance @@ -2488,7 +2488,7 @@ bool LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius) if(!camera->AABBInFrustum(center, size)) { mImportanceToCamera = 0.f ; - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Added real in frustum check value. Previous was only false for media textures off screen and invalid rig objects mInFrustum = false; // [FIRE-35081] @@ -2514,7 +2514,7 @@ bool LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius) { cos_angle_to_view_dir = 1.0f ; mImportanceToCamera = 1.0f ; - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings mInFrustum = true; // If the face is important to the camera, it is in the frustum mCloseToCamera = 1.0f; // [FIRE-35081] @@ -2561,7 +2561,7 @@ F32 LLFace::calcImportanceToCamera(F32 cos_angle_to_view_dir, F32 dist) { LL_PROFILE_ZONE_SCOPED_CATEGORY_FACE; F32 importance = 0.f ; - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Move camera out to use for the inital check for the distance to the face importance with the multiplier LLViewerCamera* camera = LLViewerCamera::getInstance(); @@ -2581,7 +2581,7 @@ F32 LLFace::calcImportanceToCamera(F32 cos_angle_to_view_dir, F32 dist) } S32 i = 0 ; - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Added draw distance multiplier to the distance for(i = 0; i < FACE_IMPORTANCE_LEVEL && dist > FACE_IMPORTANCE_TO_CAMERA_OVER_DISTANCE[i][0] * camera->getDrawDistanceMultiplier(); ++i); // [FIRE-35081] diff --git a/indra/newview/llface.h b/indra/newview/llface.h index a3bd935760..16cd4d6eb1 100644 --- a/indra/newview/llface.h +++ b/indra/newview/llface.h @@ -52,7 +52,7 @@ class LLDrawInfo; class LLMeshSkinInfo; const F32 MIN_ALPHA_SIZE = 1024.f; -// [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer +// [FIRE-35081] Blurry prims not changing with graphics settings //const F32 MIN_TEX_ANIM_SIZE = 512.f; // Change the min size to const F32 MIN_TEX_ANIM_SIZE = 10.f; diff --git a/indra/newview/llfloaterimnearbychathandler.cpp b/indra/newview/llfloaterimnearbychathandler.cpp index 75b9c0e052..4dc711fbe6 100644 --- a/indra/newview/llfloaterimnearbychathandler.cpp +++ b/indra/newview/llfloaterimnearbychathandler.cpp @@ -96,6 +96,13 @@ public: { ctrl->getSignal()->connect(boost::bind(&LLFloaterIMNearbyChatScreenChannel::updateToastFadingTime, this)); } + // [FIRE-35039 > FIRE-35294] Add flag to show/hide the on-screen console + ctrl = gSavedSettings.getControl("FSShowOnscreenConsole").get(); + if (ctrl) + { + ctrl->getSignal()->connect(boost::bind(&LLFloaterIMNearbyChatScreenChannel::removeToastsFromChannel, this)); + } + // [FIRE-35039 > FIRE-35294] Add flag to show/hide the on-screen console } void addChat (LLSD& chat); @@ -694,6 +701,14 @@ void LLFloaterIMNearbyChatHandler::processChat(const LLChat& chat_msg, } // + // [FIRE-35039 > FIRE-35294] Add flag to show/hide the on-screen console + static LLUICachedControl showOnscreenConsole("FSShowOnscreenConsole"); + if (!showOnscreenConsole) + { + return; + } + // [FIRE-35039 > FIRE-35294] + static LLCachedControl useChatBubbles(gSavedSettings, "UseChatBubbles"); static LLCachedControl fsBubblesHideConsoleAndToasts(gSavedSettings, "FSBubblesHideConsoleAndToasts"); // [FS communication UI] diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 8e301cb76c..0fcd96dd8b 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -1625,14 +1625,9 @@ void LLFloaterModelPreview::updateAvatarTab(bool highlight_overrides) for (U32 j = 0; j < joint_count; ++j) { const LLVector3& joint_pos = LLVector3(skin->mAlternateBindMatrix[j].getTranslation()); - // Query by JointKey rather than just a string, the key can be a U32 index for faster lookup - //LLJointOverrideData &data = mJointOverrides[display_lod][skin->mJointNames[j]]; + LLJointOverrideData &data = mJointOverrides[display_lod][skin->mJointNames[j]]; - //LLJoint* pJoint = LLModelPreview::lookupJointByName(skin->mJointNames[j], mModelPreview); - LLJointOverrideData &data = mJointOverrides[display_lod][skin->mJointNames[j].mName]; - - LLJoint* pJoint = LLModelPreview::lookupJointByName(skin->mJointNames[j].mName, mModelPreview); - // + LLJoint* pJoint = LLModelPreview::lookupJointByName(skin->mJointNames[j], mModelPreview); if (pJoint) { // see how voavatar uses aboveJointPosThreshold @@ -1661,9 +1656,7 @@ void LLFloaterModelPreview::updateAvatarTab(bool highlight_overrides) { for (U32 j = 0; j < joint_count; ++j) { - // Query by JointKey rather than just a string, the key can be a U32 index for faster lookup - //LLJointOverrideData &data = mJointOverrides[display_lod][skin->mJointNames[j]]; - LLJointOverrideData &data = mJointOverrides[display_lod][skin->mJointNames[j].mName]; + LLJointOverrideData &data = mJointOverrides[display_lod][skin->mJointNames[j]]; data.mModelsNoOverrides.insert(model->getName()); } } diff --git a/indra/newview/llfloaternewfeaturenotification.cpp b/indra/newview/llfloaternewfeaturenotification.cpp index 369727ff1e..9ea51451ad 100644 --- a/indra/newview/llfloaternewfeaturenotification.cpp +++ b/indra/newview/llfloaternewfeaturenotification.cpp @@ -45,10 +45,27 @@ bool LLFloaterNewFeatureNotification::postBuild() const std::string title_txt = "title_txt"; const std::string dsc_txt = "description_txt"; - std::string feature = "_" + getKey().asString(); - - getChild(title_txt)->setValue(getString(title_txt + feature)); - getChild(dsc_txt)->setValue(getString(dsc_txt + feature)); + // FIRE-35393 stop crashing just cos whirly does something daft and blames Atlas for it + std::string feature = getKey().asString(); + if(feature.empty() ) + { + LL_WARNS("FloaterNewFeature") << "Unexpected failure - No feature name NewFeatureNotification." << LL_ENDL; + return false; + } + if (!hasString( title_txt + "_" + feature ) ) + { + LL_WARNS("FloaterNewFeature") << "No string for " << title_txt + "_" + feature << LL_ENDL; + return false; + } + if (!hasString( dsc_txt + "_" + feature ) ) + { + LL_WARNS("FloaterNewFeature") << "No string for " << dsc_txt + "_" + feature << LL_ENDL; + return false; + } + // + + getChild(title_txt)->setValue(getString(title_txt + "_" + feature)); + getChild(dsc_txt)->setValue(getString(dsc_txt + "_" + feature)); if (getKey().asString() == "gltf") { diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp index bae3b9fb18..c4269ae352 100644 --- a/indra/newview/llfloaterworldmap.cpp +++ b/indra/newview/llfloaterworldmap.cpp @@ -1085,9 +1085,9 @@ void LLFloaterWorldMap::updateLocation() // mSLURL = LLSLURL(sim_name, pos_global); // [FIRE-35268] OpenSim support for when on other grids if (LLGridManager::getInstance()->isInSecondLife()) - mSLURL = LLSLURL(sim_info->getName(), gAgent.getPositionAgent()); + mSLURL = LLSLURL(sim_info->getName(), sim_info->getGlobalOrigin(), pos_global); else - mSLURL = LLSLURL(LFSimFeatureHandler::instance().hyperGridURL(), sim_info->getName(), gAgent.getPositionAgent()); + mSLURL = LLSLURL(LFSimFeatureHandler::instance().hyperGridURL(), sim_info->getName(), sim_info->getGlobalOrigin(), pos_global); // } // diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 4336dac460..428da07414 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1902,42 +1902,36 @@ bool LLMeshRepoThread::fetchMeshPhysicsShape(const LLUUID& mesh_id) //static void LLMeshRepoThread::incActiveLODRequests() { - LLMutexLock lock(gMeshRepo.mThread->mMutex); ++LLMeshRepoThread::sActiveLODRequests; } //static void LLMeshRepoThread::decActiveLODRequests() { - LLMutexLock lock(gMeshRepo.mThread->mMutex); --LLMeshRepoThread::sActiveLODRequests; } //static void LLMeshRepoThread::incActiveHeaderRequests() { - LLMutexLock lock(gMeshRepo.mThread->mMutex); ++LLMeshRepoThread::sActiveHeaderRequests; } //static void LLMeshRepoThread::decActiveHeaderRequests() { - LLMutexLock lock(gMeshRepo.mThread->mMutex); --LLMeshRepoThread::sActiveHeaderRequests; } //static void LLMeshRepoThread::incActiveSkinRequests() { - LLMutexLock lock(gMeshRepo.mThread->mMutex); ++LLMeshRepoThread::sActiveSkinRequests; } //static void LLMeshRepoThread::decActiveSkinRequests() { - LLMutexLock lock(gMeshRepo.mThread->mMutex); --LLMeshRepoThread::sActiveSkinRequests; } @@ -4659,13 +4653,20 @@ void LLMeshRepository::notifyLoadedMeshes() { LLMutexTrylock lock1(mMeshMutex); LLMutexTrylock lock2(mThread->mMutex); + LLMutexTrylock lock3(mThread->mHeaderMutex); + LLMutexTrylock lock4(mThread->mPendingMutex); static U32 hold_offs(0); - if (! lock1.isLocked() || ! lock2.isLocked()) + if (! lock1.isLocked() || ! lock2.isLocked() || ! lock3.isLocked() || ! lock4.isLocked()) { // If we can't get the locks, skip and pick this up later. + // Eventually thread queue will be free enough ++hold_offs; sMaxLockHoldoffs = llmax(sMaxLockHoldoffs, hold_offs); + if (hold_offs > 4) + { + LL_WARNS_ONCE() << "High mesh thread holdoff" << LL_ENDL; + } return; } hold_offs = 0; @@ -4726,6 +4727,7 @@ void LLMeshRepository::notifyLoadedMeshes() if (mPendingRequests.size() > push_count) { + LL_PROFILE_ZONE_NAMED("Mesh score_map"); // More requests than the high-water limit allows so // sort and forward the most important. @@ -4776,8 +4778,6 @@ void LLMeshRepository::notifyLoadedMeshes() std::partial_sort(mPendingRequests.begin(), mPendingRequests.begin() + push_count, mPendingRequests.end(), PendingRequestBase::CompareScoreGreater()); } - LLMutexTrylock lock3(mThread->mHeaderMutex); - LLMutexTrylock lock4(mThread->mPendingMutex); while (!mPendingRequests.empty() && push_count > 0) { std::unique_ptr& req_p = mPendingRequests.front(); diff --git a/indra/newview/llmodelpreview.cpp b/indra/newview/llmodelpreview.cpp index 7f43ddab7c..48bbcf4511 100644 --- a/indra/newview/llmodelpreview.cpp +++ b/indra/newview/llmodelpreview.cpp @@ -4183,10 +4183,7 @@ LLJoint* LLModelPreview::lookupJointByName(const std::string& str, void* opaque) LLModelPreview* pPreview = static_cast< LLModelPreview* >(opaque); if (pPreview) { -// Query by JointKey rather than just a string, the key can be a U32 index for faster lookup -// return pPreview->getPreviewAvatar()->getJoint(str); - return pPreview->getPreviewAvatar()->getJoint( JointKey::construct( str ) ); -// + return pPreview->getPreviewAvatar()->getJoint(str); } return NULL; } diff --git a/indra/newview/llmorphview.cpp b/indra/newview/llmorphview.cpp index 693915e813..cfbfa0ac27 100644 --- a/indra/newview/llmorphview.cpp +++ b/indra/newview/llmorphview.cpp @@ -131,10 +131,7 @@ void LLMorphView::updateCamera() { if (!mCameraTargetJoint) { -// Query by JointKey rather than just a string, the key can be a U32 index for faster lookup -// setCameraTargetJoint( gAgentAvatarp->getJoint( "mHead" ) ); - setCameraTargetJoint( gAgentAvatarp->getJoint( JointKey::construct( "mHead" ) ) ); -// + setCameraTargetJoint( gAgentAvatarp->getJoint( "mHead" ) ); } if (!isAgentAvatarValid()) return; diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index a7725d8899..07a168612a 100644 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -1316,15 +1316,11 @@ void LLPanelEditWearable::showWearable(LLViewerWearable* wearable, bool show, bo value_map_t sorted_params; getSortedParams(sorted_params, edit_group); - // Query by JointKey rather than just a string, the key can be a U32 index for faster lookup - //LLJoint* jointp = gAgentAvatarp->getJoint( subpart_entry->mTargetJoint ); - LLJoint* jointp = gAgentAvatarp->getJoint( JointKey::construct( subpart_entry->mTargetJoint ) ); + LLJoint* jointp = gAgentAvatarp->getJoint( subpart_entry->mTargetJoint ); if (!jointp) { - //jointp = gAgentAvatarp->getJoint( "mHead" ); - jointp = gAgentAvatarp->getJoint( JointKey::construct( "mHead" ) ); + jointp = gAgentAvatarp->getJoint( "mHead" ); } - // buildParamList(panel_list, sorted_params, tab, jointp); @@ -1440,11 +1436,7 @@ void LLPanelEditWearable::changeCamera(U8 subpart) } // Update the camera -// Query by JointKey rather than just a string, the key can be a U32 index for faster lookup - //gMorphView->setCameraTargetJoint( gAgentAvatarp->getJoint( subpart_entry->mTargetJoint ) ); - gMorphView->setCameraTargetJoint( gAgentAvatarp->getJoint( JointKey::construct( subpart_entry->mTargetJoint ) ) ); -// ND> - + gMorphView->setCameraTargetJoint( gAgentAvatarp->getJoint( subpart_entry->mTargetJoint ) ); gMorphView->setCameraTargetOffset( subpart_entry->mTargetOffset ); gMorphView->setCameraOffset( subpart_entry->mCameraOffset ); if (gSavedSettings.getBOOL("AppearanceCameraMovement")) diff --git a/indra/newview/llskinningutil.cpp b/indra/newview/llskinningutil.cpp index d9f16fe34f..59f8e866ad 100644 --- a/indra/newview/llskinningutil.cpp +++ b/indra/newview/llskinningutil.cpp @@ -54,10 +54,7 @@ void dump_avatar_and_skin_state(const std::string& reason, LLVOAvatar *avatar, c { LL_WARNS("Avatar") << "skin joint idx " << j << " name [" << skin->mJointNames[j] << "] num " << skin->mJointNums[j] << LL_ENDL; - // Query by JointKey rather than just a string, the key can be a U32 index for faster lookup - //const std::string& name = skin->mJointNames[j]; - const std::string& name = skin->mJointNames[j].mName; - // + const std::string& name = skin->mJointNames[j]; S32 joint_num = skin->mJointNums[j]; LLJoint *name_joint = avatar->getJoint(name); @@ -119,14 +116,9 @@ void LLSkinningUtil::scrubInvalidJoints(LLVOAvatar *avatar, LLMeshSkinInfo* skin // needed for handling of any legacy bad data. if (!avatar->getJoint(skin->mJointNames[j])) { - // Query by JointKey rather than just a string, the key can be a U32 index for faster lookup - //LL_DEBUGS("Avatar") << avatar->getFullname() << " mesh rigged to invalid joint " << skin->mJointNames[j] << LL_ENDL; - //LL_WARNS_ONCE("Avatar") << avatar->getFullname() << " mesh rigged to invalid joint" << skin->mJointNames[j] << LL_ENDL; - //skin->mJointNames[j] = "mPelvis"; - LL_DEBUGS("Avatar") << avatar->getFullname() << " mesh rigged to invalid joint " << skin->mJointNames[j].mName << LL_ENDL; - LL_WARNS_ONCE("Avatar") << avatar->getFullname() << " mesh rigged to invalid joint" << skin->mJointNames[j].mName << LL_ENDL; - skin->mJointNames[j] = JointKey::construct("mPelvis"); - // + LL_DEBUGS("Avatar") << avatar->getFullname() << " mesh rigged to invalid joint " << skin->mJointNames[j] << LL_ENDL; + LL_WARNS_ONCE("Avatar") << avatar->getFullname() << " mesh rigged to invalid joint" << skin->mJointNames[j] << LL_ENDL; + skin->mJointNames[j] = "mPelvis"; skin->mJointNumsInitialized = false; // force update after names change. } } diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 45af5f228d..e170d8fa19 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -835,7 +835,7 @@ void LLViewerObjectList::setAllObjectDefaultTextures(U32 nChannel, bool fShowDef } } // [/SL:KB] -// [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer +// [FIRE-35081] Blurry prims not changing with graphics settings //void LLViewerObjectList::updateApparentAngles(LLAgent &agent) // Added time limit on processing of objects as they affect the texture system (They also calcuate mMaxVirtualSize and mPixelArea) void LLViewerObjectList::updateApparentAngles(LLAgent &agent, F32 max_time) @@ -845,7 +845,7 @@ void LLViewerObjectList::updateApparentAngles(LLAgent &agent, F32 max_time) LLViewerObject *objectp; S32 num_updates, max_value; - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Remove the old code as it worked on fixed number of updates (Total # of Object / 128) per frame // and some objects had nothing to do while others were avatars or volumes and could t /* diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h index fe13d3a4ae..c4a8026f93 100644 --- a/indra/newview/llviewerobjectlist.h +++ b/indra/newview/llviewerobjectlist.h @@ -89,7 +89,7 @@ public: void processObjectUpdate(LLMessageSystem *mesgsys, void **user_data, EObjectUpdateType update_type, bool compressed=false); void processCompressedObjectUpdate(LLMessageSystem *mesgsys, void **user_data, EObjectUpdateType update_type); void processCachedObjectUpdate(LLMessageSystem *mesgsys, void **user_data, EObjectUpdateType update_type); - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings //void updateApparentAngles(LLAgent &agent); // Added time limit on processing of objects as they affect the texture system void updateApparentAngles(LLAgent &agent, F32 max_time); diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 0a460152d5..0a8029b26d 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -779,7 +779,7 @@ void LLViewerTexture::setBoostLevel(S32 level) mBoostLevel = level; if(mBoostLevel != LLViewerTexture::BOOST_NONE && mBoostLevel != LLViewerTexture::BOOST_SELECTED && - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Added the new boost levels mBoostLevel != LLViewerTexture::BOOST_GRASS && mBoostLevel != LLViewerTexture::BOOST_LIGHT && @@ -796,7 +796,7 @@ void LLViewerTexture::setBoostLevel(S32 level) if (mBoostLevel >= LLViewerTexture::BOOST_HIGH) { mMaxVirtualSize = 2048.f * 2048.f; - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Add additional for the important to camera and in frustum static LLCachedControl texture_camera_boost(gSavedSettings, "TextureCameraBoost", 7.f); mMaxVirtualSize = mMaxVirtualSize + (mMaxVirtualSize * 1.0f * texture_camera_boost); @@ -1208,7 +1208,7 @@ void LLViewerFetchedTexture::init(bool firstinit) mKeptSavedRawImageTime = 0.f; mLastCallBackActiveTime = 0.f; mForceCallbackFetch = false; - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings mCloseToCamera = 1.0f; // Store if the camera is close to the camera (0.0f or 1.0f) // [FIRE-35081] @@ -3086,13 +3086,13 @@ void LLViewerLODTexture::processTextureStats() 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 - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings //mDesiredDiscardLevel = llmin(mMinDesiredDiscardLevel, (S8)(MAX_DISCARD_LEVEL + 1)); // Off screen textures at 6 would not downscale. mDesiredDiscardLevel = llmin(mMinDesiredDiscardLevel, (S8)(MAX_DISCARD_LEVEL)); // [FIRE-35081] mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, (S32)mLoadedCallbackDesiredDiscardLevel); - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Add scale down here as the textures off screen were not getting scaled down properly S32 current_discard = getDiscardLevel(); if (mBoostLevel < LLGLTexture::BOOST_AVATAR_BAKED) @@ -3111,7 +3111,7 @@ void LLViewerLODTexture::processTextureStats() } else { - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings /* //static const F64 log_2 = log(2.0); static const F64 log_4 = log(4.0); @@ -3456,7 +3456,7 @@ void LLViewerMediaTexture::initVirtualSize() { return; } - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Add camera importance to the media textures as well static LLCachedControl texture_camera_boost(gSavedSettings, "TextureCameraBoost", 7.f); F32 vsize = 0.0f; @@ -3464,7 +3464,7 @@ void LLViewerMediaTexture::initVirtualSize() findFaces(); for(std::list< LLFace* >::iterator iter = mMediaFaceList.begin(); iter!= mMediaFaceList.end(); ++iter) { - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings //addTextureStats((*iter)->getVirtualSize()); // Add camera importance to the media textures as well vsize = (*iter)->getVirtualSize(); @@ -3532,7 +3532,7 @@ void LLViewerMediaTexture::addFace(U32 ch, LLFace* facep) } // [/SL:KB] - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Try to set the boost level to MEDIA to try to force the media to high quality tex->setBoostLevel(LLViewerTexture::MEDIA); // [FIRE-35081] @@ -3777,7 +3777,7 @@ F32 LLViewerMediaTexture::getMaxVirtualSize() { addTextureStats(0.f, false);//reset } - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings static LLCachedControl texture_camera_boost(gSavedSettings, "TextureCameraBoost", 7.f); F32 vsize = 0.0f; // [FIRE-35081] @@ -3791,7 +3791,7 @@ F32 LLViewerMediaTexture::getMaxVirtualSize() LLFace* facep = mFaceList[ch][i]; if(facep->getDrawable()->isRecentlyVisible()) { - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings //addTextureStats(facep->getVirtualSize()); // Add the importance to camera and close to camera to the media texture vsize = facep->getVirtualSize(); @@ -3815,7 +3815,7 @@ F32 LLViewerMediaTexture::getMaxVirtualSize() LLFace* facep = *iter; if(facep->getDrawable()->isRecentlyVisible()) { - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings //addTextureStats(facep->getVirtualSize()); // Add the importance to camera and close to camera to the media texture vsize = facep->getVirtualSize(); diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h index 13b6b6b883..812779c6d4 100644 --- a/indra/newview/llviewertexture.h +++ b/indra/newview/llviewertexture.h @@ -437,7 +437,7 @@ public: void setInFastCacheList(bool in_list) { mInFastCacheList = in_list; } bool isInFastCacheList() { return mInFastCacheList; } - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings F32 getCloseToCamera() const {return mCloseToCamera ;} // Get close to camera value void setCloseToCamera(F32 value) {mCloseToCamera = value ;} // Set the close to camera value (0.0f or 1.0f) // [FIRE-35081] @@ -542,7 +542,7 @@ protected: bool mForSculpt ; //a flag if the texture is used as sculpt data. bool mIsFetched ; //is loaded from remote or from cache, not generated locally. - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings F32 mCloseToCamera; // Float (0.0f or 1.0f) to indicate if the texture is close to the camera // [FIRE-35081] diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index dce5edaac5..dd0c77b482 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -372,7 +372,7 @@ void LLViewerTextureList::shutdown() mInitialized = false ; //prevent loading textures again. } -// [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer +// [FIRE-35081] Blurry prims not changing with graphics settings // static // Allows the menu to call the dump method of the texture list void LLViewerTextureList::dumpTexturelist() @@ -385,12 +385,13 @@ void LLViewerTextureList::dump() { LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE; LL_INFOS() << "LLViewerTextureList::dump()" << LL_ENDL; - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings S32 texture_count = 0; S32 textures_close_to_camera = 0; std::array image_counts{0}; // Double the size for higher discards from textures < 1024 (2048 can make a 7 and 4096 could make an 8) std::array size_counts{0}; // Track the 12 possible sizes (1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048) std::array discard_counts{0}; // Also need to an 1 additional as -1 is a valid discard level (not loaded by reported as a 1x1 texture) + std::array fullsize_discard_counts{0}; // Also need to an 1 additional as -1 is a valid discard level (not loaded by reported as a 1x1 texture) std::array boost_counts{0}; // Track the # of textures at boost levels by 12 possible sizes // Don't Init the buffers with 0's like it's the the 1980's... @@ -398,36 +399,30 @@ void LLViewerTextureList::dump() for (image_list_t::iterator it = mImageList.begin(); it != mImageList.end(); ++it) { LLViewerFetchedTexture* image = *it; - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer - std::string face_counts = ""; - std::string volume_counts = ""; - for (S32 index = 0; index < LLRender::NUM_TEXTURE_CHANNELS; index++) - { - face_counts += std::to_string(image->getNumFaces(index)) + " "; - } - - for (S32 index = 0; index < LLRender::NUM_VOLUME_TEXTURE_CHANNELS; index++) - { - volume_counts += std::to_string(image->getNumVolumes(index)) + " "; - } - // [FIRE-35081] - LL_INFOS() << "priority " << image->getMaxVirtualSize() << " boost " << image->getBoostLevel() << " size " << image->getWidth() << "x" << image->getHeight() << " discard " << image->getDiscardLevel() << " desired " << image->getDesiredDiscardLevel() - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings << " close to camera " << (image->getCloseToCamera() > 0.0f ? "Y" : "N") // Display the close to camera flag << " FFType " << fttype_to_string(image->getFTType()) // Display the FFType of the camera << " Type " << (S32)image->getType() // Display the type of the image (LOCAL_TEXTURE = 0, MEDIA_TEXTURE = 1, DYNAMIC_TEXTURE = 2, FETCHED_TEXTURE = 3,LOD_TEXTURE = 4) << " Sculpted " << (image->forSculpt() ? "Y" : "N") - << " # of Faces " << face_counts - << " # of Volumes " << volume_counts + << " # of Faces "; + for (S32 index = 0; index < LLRender::NUM_TEXTURE_CHANNELS; index++) + { + LL_CONT << image->getNumFaces(index) << " "; + } + LL_CONT << " # of Volumes "; + for (S32 index = 0; index < LLRender::NUM_VOLUME_TEXTURE_CHANNELS; index++) + { + LL_CONT << image->getNumVolumes(index) << " "; + } // [FIRE-35081] - << " http://asset.siva.lindenlab.com/" << image->getID() << ".texture" + LL_CONT << " http://asset.siva.lindenlab.com/" << image->getID() << ".texture" << LL_ENDL; - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings image_counts[(image->getDiscardLevel() + 1)] += 1; // Need to add +1 to make up for -1 being a possible value S32 x_index = (S32)log2(image->getWidth()); // Convert the width into a 0 based index by taking the Log2 of the size to get the exponent of the size. (1 = 2^0, 2 = 2^1, 4 = 2^2...) S32 y_index = (S32)log2(image->getHeight()); // Convert the height into a 0 based index by taking the Log2 of the size to get the exponent of the size. (1 = 2^0, 2 = 2^1, 4 = 2^2...) @@ -436,11 +431,15 @@ void LLViewerTextureList::dump() S32 max_dimension = (y_index > x_index ? y_index : x_index); discard_counts[(image->getDiscardLevel() + 1) + max_dimension * (MAX_DISCARD_LEVEL * 2 + 2)] += 1; boost_counts[image->getBoostLevel() + max_dimension * (LLViewerTexture::BOOST_MAX_LEVEL)] += 1; + S32 full_x_index = (S32)log2(image->getFullWidth()); + S32 full_y_index = (S32)log2(image->getFullHeight()); + S32 full_max_dimension = (full_y_index > full_x_index ? full_y_index : full_x_index); + fullsize_discard_counts[(image->getDiscardLevel() + 1) + full_max_dimension * (MAX_DISCARD_LEVEL * 2 + 2)] += 1; texture_count++; textures_close_to_camera += S32(image->getCloseToCamera()); // [FIRE-35081] } - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Add overal texture totals LL_INFOS() << "Texture Stats: Textures in Close to Camera " << textures_close_to_camera << " of " << texture_count << " : " << LL_ENDL; @@ -450,150 +449,108 @@ void LLViewerTextureList::dump() LL_INFOS() << " Discard Level: " << (index - 1) << " Number of Textures: " << image_counts[index] << LL_ENDL; } - // Create a header that for the Sizes - std::string header = "Size "; - for (S32 x = 0; x < 12; x++) - { - std::string newValue = std::to_string((S32)pow(2, x)); - header += newValue; - for (S32 tab = 0; tab <= 8 - newValue.length(); tab++) - { - header += " "; - } - } - // Create a line to break up the header from the content of the table - std::string header_break = ""; - for (S32 x = 0; x < header.length(); x++) - { - header_break += "-"; - } + std::string header_break(13 * 8, '-'); + LL_INFOS() << "Size vs Size" << LL_ENDL; LL_INFOS() << header_break << LL_ENDL; - LL_INFOS() << header << LL_ENDL; // Size vs Size counts header + // Create a header that for the Sizes + LL_INFOS() << std::setw(8) << "Size"; + for (S32 x = 1; x <= 2048; x <<= 1) + { + LL_CONT << std::setw(8) << x; + } + LL_CONT << LL_ENDL; LL_INFOS() << header_break << LL_ENDL; // Y Axis is the size of the height of the texture for (S32 y = 0; y < 12; y++) { - std::string newValue = std::to_string((S32)pow(2, y)); - std::string size_count_string = "" + newValue; - for (S32 tab = 0; tab <= 8 - newValue.length(); tab++) - { - size_count_string += " "; - } - + LL_INFOS() << std::setw(8) << (1 << y); //X Axis is the size of the width of the texture for (S32 x = 0; x < 12; x++) { - newValue = std::to_string(size_counts[x + y * 12]); - size_count_string += newValue; - for (S32 tab = 0; tab <= 8 - newValue.length(); tab++) - { - size_count_string += " "; - } - } - LL_INFOS() << size_count_string << LL_ENDL; - } - LL_INFOS() << header_break << LL_ENDL; - LL_INFOS() << header << LL_ENDL; // Size vs Size counts footer - LL_INFOS() << header_break << LL_ENDL; + LL_CONT << std::setw(8) << size_counts[x + y * 12]; - LL_INFOS() << "" << LL_ENDL; + } + LL_CONT << LL_ENDL; + } + LL_INFOS() << LL_ENDL; // This is the Discard Level Vs Size counts table - header = "Discard: "; + LL_INFOS() << "Discard Level Vs Size" << LL_ENDL; + LL_INFOS() << header_break << LL_ENDL; + LL_INFOS() << std::setw(8) << "Discard"; for (S32 x = 0; x < MAX_DISCARD_LEVEL * 2 + 2; x++) { - std::string newValue = std::to_string(x - 1); - header += newValue; - for (S32 tab = 0; tab <= 8 - newValue.length(); tab++) - { - header += " "; - } + LL_CONT << std::setw(8) << (x - 1); } - - header_break = ""; - for (S32 x = 0; x < header.length(); x++) - { - header_break += "-"; - } - - LL_INFOS() << header_break << LL_ENDL; - LL_INFOS() << header << LL_ENDL; // Discard Level Vs Size counts header + LL_CONT << LL_ENDL; LL_INFOS() << header_break << LL_ENDL; // Y Axis is the current possible max dimension of the textures (X or Y, which ever is larger is used) for (S32 y = 0; y < 12; y++) { - std::string newValue = std::to_string((S32)pow(2, y)); - std::string discard_count_string = "" + newValue; - for (S32 tab = 0; tab <= 8 - newValue.length(); tab++) - { - discard_count_string += " "; - } + LL_INFOS() << std::setw(8) << (1 << y); // X Axis is the discard level starging from -1 up to 10 (2 x MAX_DISCARD_LEVEL + 1 (for negative number) + 1 additional for the fact that the last value actuauly used on not < but <=) for (S32 x = 0; x < (MAX_DISCARD_LEVEL * 2 + 2); x++) { - std::string newValue = std::to_string(discard_counts[x + y * (MAX_DISCARD_LEVEL * 2 + 2)]); - discard_count_string += newValue; - for (S32 tab = 0; tab <= 8 - newValue.length(); tab++) - { - discard_count_string += " "; - } + LL_CONT << std::setw(8) << discard_counts[x + y * (MAX_DISCARD_LEVEL * 2 + 2)]; } - LL_INFOS() << discard_count_string << LL_ENDL; + LL_CONT << LL_ENDL; } - LL_INFOS() << header_break << LL_ENDL; - LL_INFOS() << header << LL_ENDL; // Discard Level Vs Size counts footer - LL_INFOS() << header_break << LL_ENDL; + LL_INFOS() << LL_ENDL; + - // This is the Boost Level Vs Size counts table - header = "Boost: "; - for (S32 x = 0; x < LLViewerTexture::BOOST_MAX_LEVEL; x++) + // This is the Discard Level Vs Full Size counts table + LL_INFOS() << "Discard Level Vs Full Size" << LL_ENDL; + LL_INFOS() << header_break << LL_ENDL; + LL_INFOS() << std::setw(8) << "Discard"; + for (S32 x = 0; x < MAX_DISCARD_LEVEL * 2 + 2; x++) { - std::string newValue = std::to_string(x); - header += newValue; - for (S32 tab = 0; tab <= 8 - newValue.length(); tab++) - { - header += " "; - } + LL_CONT << std::setw(8) << (x - 1); } - - header_break = ""; - for (S32 x = 0; x < header.length(); x++) - { - header_break += "-"; - } - - LL_INFOS() << header_break << LL_ENDL; - LL_INFOS() << header << LL_ENDL; // Boost Level Vs Size counts header + LL_CONT << LL_ENDL; LL_INFOS() << header_break << LL_ENDL; // Y Axis is the current possible max dimension of the textures (X or Y, which ever is larger is used) for (S32 y = 0; y < 12; y++) { - std::string newValue = std::to_string((S32)pow(2, y)); - std::string boost_count_string = "" + newValue; - for (S32 tab = 0; tab <= 8 - newValue.length(); tab++) + LL_INFOS() << std::setw(8) << (1 << y); + // X Axis is the discard level starging from -1 up to 10 (2 x MAX_DISCARD_LEVEL + 1 (for negative number) + 1 additional for the fact that the last value actuauly used on not < but <=) + for (S32 x = 0; x < (MAX_DISCARD_LEVEL * 2 + 2); x++) { - boost_count_string += " "; + LL_CONT << std::setw(8) << fullsize_discard_counts[x + y * (MAX_DISCARD_LEVEL * 2 + 2)]; } + LL_CONT << LL_ENDL; + } + LL_INFOS() << LL_ENDL; + + + // This is the Boost Level Vs Size counts table + LL_INFOS() << "Boost Level Vs Size" << LL_ENDL; + header_break.append((LLViewerTexture::BOOST_MAX_LEVEL * 8) - (12 * 8), '-'); + LL_INFOS() << header_break << LL_ENDL; + LL_INFOS() << std::setw(8) << "Discard"; + for (S32 x = 0; x < LLViewerTexture::BOOST_MAX_LEVEL; x++) + { + LL_CONT << std::setw(8) << x; + } + LL_CONT << LL_ENDL; + LL_INFOS() << header_break << LL_ENDL; + + // Y Axis is the current possible max dimension of the textures (X or Y, which ever is larger is used) + for (S32 y = 0; y < 12; y++) + { + LL_INFOS() << std::setw(8) << (1 << y); // X Axis is the boost level starging from BOOST_NONE up to BOOST_MAX_LEVEL for (S32 x = 0; x < (LLViewerTexture::BOOST_MAX_LEVEL); x++) { - std::string newValue = std::to_string(boost_counts[x + y * (LLViewerTexture::BOOST_MAX_LEVEL)]); - boost_count_string += newValue; - for (S32 tab = 0; tab <= 8 - newValue.length(); tab++) - { - boost_count_string += " "; - } + LL_CONT << std::setw(8) << boost_counts[x + y * (LLViewerTexture::BOOST_MAX_LEVEL)]; } - LL_INFOS() << boost_count_string << LL_ENDL; + LL_CONT << LL_ENDL; } - LL_INFOS() << header_break << LL_ENDL; - LL_INFOS() << header << LL_ENDL; // Boost Level Vs Size counts footer - LL_INFOS() << header_break << LL_ENDL; + LL_INFOS() << LL_ENDL; // [FIRE-35081] } @@ -1138,7 +1095,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag F32 bias = llclamp(max_discard - 2.f, 1.f, LLViewerTexture::sDesiredDiscardBias); // convert bias into a vsize scaler - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings //bias = (F32) llroundf(powf(4, bias - 1.f)); // Pre-divide the bias so you can just use multiply in the loop bias = (F32) 1.0f / llroundf(powf(4, bias - 1.f)); @@ -1180,7 +1137,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag if (face && face->getViewerObject()) { ++face_count; - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // No longer needed as we no longer re-calculate the face's virtual texture size, we use it directly from the face //F32 radius; //F32 cos_angle_to_view_dir; @@ -1199,7 +1156,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag } // Also moved allocation outside the loop - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings //F32 vsize = face->getPixelArea(); //on_screen |= face->mInFrustum; @@ -1214,7 +1171,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag animated += S64(face->hasMedia()); // Add has media for both local and parcel media animated += S64(imagep->hasParcelMedia()); - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer (It is) + // [FIRE-35081] Blurry prims not changing with graphics settings (It is) /* // Scale desired texture resolution higher or lower depending on texture scale // @@ -1275,7 +1232,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag } } - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings //if (max_vsize >= LLViewerFetchedTexture::sMaxVirtualSize // && (on_screen || LLViewerTexture::sDesiredDiscardBias <= BIAS_TRS_ON_SCREEN)) //{ @@ -1284,7 +1241,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag // } - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Replaced all the checks for this bool to be only in this 1 place instead of in the loop. // If the on screen counter is greater then 0, then there was at least 1 on screen texture on_screen = bool(on_screen_count); @@ -1312,7 +1269,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag } } - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings //imagep->addTextureStats(max_vsize); // New logic block for the bias system // Then depending on the type of texture, the higher resolution on_screen_max_vsize is applied. @@ -1439,7 +1396,7 @@ F32 LLViewerTextureList::updateImagesCreateTextures(F32 max_time) mCreateTextureList.pop(); if (imagep->hasGLTexture() && imagep->getDiscardLevel() < imagep->getDesiredDiscardLevel() && - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings //(imagep->getDesiredDiscardLevel() <= MAX_DISCARD_LEVEL)) // Add additional restrictions on scaling down (only BOOST_NONE LOD Textures (Also skip media) (imagep->getDesiredDiscardLevel() <= MAX_DISCARD_LEVEL) && imagep->getBoostLevel() == LLViewerTexture::BOOST_NONE && imagep->getType() == LLViewerTexture::LOD_TEXTURE && !imagep->hasParcelMedia() && !imagep->isViewerMediaTexture()) diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h index c8e9693c58..e2f9c15a5a 100644 --- a/indra/newview/llviewertexturelist.h +++ b/indra/newview/llviewertexturelist.h @@ -111,7 +111,7 @@ public: static void receiveImageHeader(LLMessageSystem *msg, void **user_data); static void receiveImagePacket(LLMessageSystem *msg, void **user_data); // - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings static void dumpTexturelist(); // Added code to handle dumping texture information // [FIRE-35081] diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index ce4b184eee..9c508e0c26 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -5430,6 +5430,14 @@ LLPickInfo LLViewerWindow::pickImmediate(S32 x, S32 y_from_bot, bool pick_transp pick_transparent = true; } + // Pick from center of screen in mouselook + if (gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK) + { + x = gViewerWindow->getWorldViewRectScaled().getWidth() / 2; + y_from_bot = gViewerWindow->getWorldViewRectScaled().getHeight() / 2; + } + // + // shortcut queueing in mPicks and just update mLastPick in place MASK key_mask = gKeyboard->currentMask(true); mLastPick = LLPickInfo(LLCoordGL(x, y_from_bot), key_mask, pick_transparent, pick_rigged, pick_particle, pick_reflection_probe, true, false, NULL); @@ -5928,8 +5936,15 @@ void LLViewerWindow::saveImageLocal(LLImageFormatted *image, const snapshot_save filepath = sSnapshotDir; filepath += gDirUtilp->getDirDelimiter(); filepath += sSnapshotBaseName; - filepath += now.toLocalDateString("_%Y-%m-%d_%H%M%S"); - filepath += llformat("%.2d", i); +// FIRE-35391 - Restore ability for snapshots saving with simple index number +// filepath += now.toLocalDateString("_%Y-%m-%d_%H%M%S"); +// filepath += llformat("%.2d", i); + if (gSavedSettings.getBOOL("FSSnapshotLocalNamesWithTimestamps")) + { + filepath += now.toLocalDateString("_%Y-%m-%d_%H%M%S"); + } + filepath += llformat("_%.3d", i); +// filepath += extension; llstat stat_info; diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 7c152012df..6956990734 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -2976,7 +2976,7 @@ LLViewerFetchedTexture *LLVOAvatar::getBakedTextureImage(const U8 te, const LLUU LL_DEBUGS("Avatar") << avString() << "get old-bake image from host " << uuid << LL_ENDL; LLHost host = getObjectHost(); result = LLViewerTextureManager::getFetchedTexture( - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings //uuid, FTT_HOST_BAKE, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host); uuid, FTT_HOST_BAKE, true, LLGLTexture::BOOST_AVATAR_BAKED, LLViewerTexture::LOD_TEXTURE, 0, 0, host); // [FIRE-35081] @@ -7268,69 +7268,44 @@ const LLUUID& LLVOAvatar::getID() const // getJoint() //----------------------------------------------------------------------------- // RN: avatar joints are multi-rooted to include screen-based attachments -// Query by JointKey rather than just a string, the key can be a U32 index for faster lookup -//LLJoint *LLVOAvatar::getJoint( const std::string &name ) -LLJoint *LLVOAvatar::getJoint( const JointKey &name ) -// +// Joint-lookup improvements +//LLJoint *LLVOAvatar::getJoint(const std::string &name) +LLJoint *LLVOAvatar::getJoint(std::string_view name) { LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR; -// Query by JointKey rather than just a string, the key can be a U32 index for faster lookup + // Joint-lookup improvements //joint_map_t::iterator iter = mJointMap.find( name ); - - //LLJoint* jointp = NULL; - - //if( iter == mJointMap.end() || iter->second == NULL ) - //{ //search for joint and cache found joint in lookup table - // if (mJointAliasMap.empty()) - // { - // getJointAliases(); - // } - // joint_alias_map_t::const_iterator alias_iter = mJointAliasMap.find(name); - // std::string canonical_name; - // if (alias_iter != mJointAliasMap.end()) - // { - // canonical_name = alias_iter->second; - // } - // else - // { - // canonical_name = name; - // } - // jointp = mRoot->findJoint(canonical_name); - // mJointMap[name] = jointp; - //} - //else - //{ //return cached pointer - // jointp = iter->second; - //} - - joint_map_t::iterator iter = mJointMap.find( name.mKey ); + joint_map_t::iterator iter = mJointMap.find(name.data()); LLJoint* jointp = NULL; - if (iter == mJointMap.end() || iter->second == NULL) - { //search for joint and cache found joint in lookup table - if (mJointAliasMap.empty()) - { - getJointAliases(); - } - joint_alias_map_t::const_iterator alias_iter = mJointAliasMap.find(name.mName); - std::string canonical_name; - if (alias_iter != mJointAliasMap.end()) - { - canonical_name = alias_iter->second; - } - else - { - canonical_name = name.mName; - } - jointp = mRoot->findJoint(canonical_name); - mJointMap[name.mKey] = jointp; + if( iter == mJointMap.end() || iter->second == NULL ) + { //search for joint and cache found joint in lookup table + if (mJointAliasMap.empty()) + { + getJointAliases(); + } + // Joint-lookup improvements + //joint_alias_map_t::const_iterator alias_iter = mJointAliasMap.find(name); + joint_alias_map_t::const_iterator alias_iter = mJointAliasMap.find(std::string(name)); + std::string canonical_name; + if (alias_iter != mJointAliasMap.end()) + { + canonical_name = alias_iter->second; + } + else + { + canonical_name = name; + } + jointp = mRoot->findJoint(canonical_name); + // Joint-lookup improvements + //mJointMap[name] = jointp; + mJointMap[std::string(name)] = jointp; } else - { //return cached pointer - jointp = iter->second; + { //return cached pointer + jointp = iter->second; } -// #ifndef LL_RELEASE_FOR_DOWNLOAD if (jointp && jointp->getName()!="mScreen" && jointp->getName()!="mRoot") @@ -7371,6 +7346,16 @@ LLJoint *LLVOAvatar::getJoint( S32 joint_num ) return pJoint; } +void LLVOAvatar::initAllJoints() +{ + getJointAliases(); + for (auto& alias : mJointAliasMap) + { + mJointMap[alias.first] = mRoot->findJoint(alias.second); + } + // ignore mScreen and mRoot +} + //----------------------------------------------------------------------------- // getRiggedMeshID // @@ -7696,11 +7681,7 @@ void LLVOAvatar::addAttachmentOverridesForObject(LLViewerObject *vo, std::set Query by JointKey rather than just a string, the key can be a U32 index for faster lookup -// std::string lookingForJoint = pSkinData->mJointNames[ i ].c_str(); - JointKey lookingForJoint = pSkinData->mJointNames[ i ]; -// - + std::string lookingForJoint = pSkinData->mJointNames[i].c_str(); LLJoint* pJoint = getJoint( lookingForJoint ); if (pJoint) { @@ -7713,10 +7694,7 @@ void LLVOAvatar::addAttachmentOverridesForObject(LLViewerObject *vo, std::set Query by JointKey rather than just a string, the key can be a U32 index for faster lookup -// if( lookingForJoint == "mPelvis" ) - if( lookingForJoint.mName == "mPelvis" ) -// + if( lookingForJoint == "mPelvis" ) { pelvisGotSet = true; } @@ -7907,10 +7885,7 @@ void LLVOAvatar::removeAttachmentOverridesForObject(LLViewerObject *vo) //----------------------------------------------------------------------------- void LLVOAvatar::removeAttachmentOverridesForObject(const LLUUID& mesh_id) { -// Query by JointKey rather than just a string, the key can be a U32 index for faster lookup -// LLJoint* pJointPelvis = getJoint( "mPelvis" ); - LLJoint* pJointPelvis = getJoint( JointKey::construct( "mPelvis" ) ); -// + LLJoint* pJointPelvis = getJoint( "mPelvis" ); const std::string av_string = avString(); for (S32 joint_num = 0; joint_num < LL_CHARACTER_MAX_ANIMATED_JOINTS; joint_num++) @@ -8098,10 +8073,7 @@ void LLVOAvatar::initAttachmentPoints(bool ignore_hud_joints) attachment->setName(info->mName); -// Query by JointKey rather than just a string, the key can be a U32 index for faster lookup -// LLJoint *parent_joint = getJoint(info->mJointName); - LLJoint *parent_joint = getJoint( JointKey::construct( info->mJointName ) ); -// + LLJoint *parent_joint = getJoint(info->mJointName); if (!parent_joint) { @@ -10996,7 +10968,7 @@ void LLVOAvatar::applyParsedAppearanceMessage(LLAppearanceMessageContents& conte //LL_DEBUGS("Avatar") << avString() << " baked_index " << (S32) baked_index << " using mLastTextureID " << mBakedTextureDatas[baked_index].mLastTextureID << LL_ENDL; LL_DEBUGS("Avatar") << avString() << "sb " << (S32) isUsingServerBakes() << " baked_index " << (S32) baked_index << " using mLastTextureID " << mBakedTextureDatas[baked_index].mLastTextureID << LL_ENDL; setTEImage(mBakedTextureDatas[baked_index].mTextureIndex, - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings //LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[baked_index].mLastTextureID, FTT_DEFAULT, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE)); //Texture will use baked textures, so it should also use that for the boost. LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[baked_index].mLastTextureID, FTT_DEFAULT, true, LLGLTexture::BOOST_AVATAR_BAKED, LLViewerTexture::LOD_TEXTURE)); diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index 5909012c80..b9e60ecf78 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -204,12 +204,11 @@ public: void startDefaultMotions(); void dumpAnimationState(); -// Query by JointKey rather than just a string, the key can be a U32 index for faster lookup - //virtual LLJoint* getJoint( const std::string &name ); - virtual LLJoint* getJoint( const JointKey &name ); - LLJoint* getJoint( const std::string &name ) { return getJoint( JointKey::construct( name ) ); } -// + // Joint-lookup improvements + //virtual LLJoint* getJoint(const std::string &name); + virtual LLJoint* getJoint(std::string_view name); LLJoint* getJoint(S32 num); + void initAllJoints(); //if you KNOW joint_num is a valid animated joint index, use getSkeletonJoint for efficiency inline LLJoint* getSkeletonJoint(S32 joint_num) { return mSkeleton[joint_num]; } diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index bd0405e37f..9dae1846ca 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -272,6 +272,8 @@ void LLVOAvatarSelf::initInstance() doPeriodically(check_for_unsupported_baked_appearance, 120.0); doPeriodically(boost::bind(&LLVOAvatarSelf::checkStuckAppearance, this), 30.0); + initAllJoints(); // mesh thread uses LLVOAvatarSelf as a joint source + mInitFlags |= 1<<2; } @@ -1027,27 +1029,22 @@ void LLVOAvatarSelf::idleUpdate(LLAgent &agent, const F64 &time) } // virtual -// Query by JointKey rather than just a string, the key can be a U32 index for faster lookup -//LLJoint *LLVOAvatarSelf::getJoint( const std::string &name ) -LLJoint *LLVOAvatarSelf::getJoint( const JointKey &name ) -// +// Joint-lookup improvements +//LLJoint *LLVOAvatarSelf::getJoint(const std::string &name) +LLJoint* LLVOAvatarSelf::getJoint(std::string_view name) { std::lock_guard lock(mJointMapMutex); LLJoint *jointp = NULL; jointp = LLVOAvatar::getJoint(name); if (!jointp && mScreenp) { - // Query by JointKey rather than just a string, the key can be a U32 index for faster lookup - //jointp = mScreenp->findJoint(name); - jointp = mScreenp->findJoint(name.mName); - // + jointp = mScreenp->findJoint(name); if (jointp) { - // Query by JointKey rather than just a string, the key can be a U32 index for faster lookup + // Joint-lookup improvements //mJointMap[name] = jointp; - mJointMap[name.mKey] = jointp; - // - } + mJointMap[std::string(name)] = jointp; + } } if (jointp && jointp != mScreenp && jointp != mRoot) { diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h index de8a435be9..688891eb68 100644 --- a/indra/newview/llvoavatarself.h +++ b/indra/newview/llvoavatarself.h @@ -91,10 +91,9 @@ public: /*virtual*/ void stopMotionFromSource(const LLUUID& source_id); /*virtual*/ void requestStopMotion(LLMotion* motion); -// Query by JointKey rather than just a string, the key can be a U32 index for faster lookup -// /*virtual*/ LLJoint* getJoint( const std::string &name ); - /*virtual*/ LLJoint* getJoint( const JointKey &name ); -// + // Joint-lookup improvements +// /*virtual*/ LLJoint* getJoint(const std::string &name); + /*virtual*/ LLJoint* getJoint(std::string_view name); /*virtual*/ void renderJoints(); diff --git a/indra/newview/llvograss.cpp b/indra/newview/llvograss.cpp index ccdc38a332..3551492a77 100644 --- a/indra/newview/llvograss.cpp +++ b/indra/newview/llvograss.cpp @@ -99,7 +99,7 @@ void LLVOGrass::updateSpecies() SpeciesMap::const_iterator it = sSpeciesTable.begin(); mSpecies = (*it).first; } - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings //setTEImage(0, LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, FTT_DEFAULT, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE)); // Added new boost Grass as it forces a fixed size on updates setTEImage(0, LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, FTT_DEFAULT, true, LLGLTexture::BOOST_GRASS, LLViewerTexture::LOD_TEXTURE)); diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp index 954faa5572..deaa952f0a 100644 --- a/indra/newview/llvotree.cpp +++ b/indra/newview/llvotree.cpp @@ -330,7 +330,7 @@ U32 LLVOTree::processUpdateMessage(LLMessageSystem *mesgsys, // Load Species-Specific data // static const S32 MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL = 32 ; //frames. - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings //mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, FTT_DEFAULT, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE); // Set boost level for Tree as it overrides the normal texture sizes mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, FTT_DEFAULT, true, LLGLTexture::BOOST_TREE, LLViewerTexture::LOD_TEXTURE); diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 5144f95101..ba8fb0438a 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -742,7 +742,7 @@ void LLVOVolume::animateTextures() { LLFace* facep = mDrawable->getFace(i); if (!facep) continue; - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Removed check for turning off animations //if(facep->getVirtualSize() <= MIN_TEX_ANIM_SIZE && facep->mTextureMatrix) continue; // [FIRE-35081] @@ -770,7 +770,7 @@ void LLVOVolume::animateTextures() if (!facep->mTextureMatrix) { facep->mTextureMatrix = new LLMatrix4(); - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Removed check for turning off animations //if (facep->getVirtualSize() > MIN_TEX_ANIM_SIZE) // [FIRE-35081] @@ -926,7 +926,7 @@ void LLVOVolume::updateTextureVirtualSize(bool forced) F32 min_vsize=999999999.f, max_vsize=0.f; LLViewerCamera* camera = LLViewerCamera::getInstance(); std::stringstream debug_text; - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Use this flag to indicate that there was a legit change to 0.0 for the mPixelArea (All faces off screen) bool changed = false; // [FIRE-35081] @@ -978,7 +978,7 @@ void LLVOVolume::updateTextureVirtualSize(bool forced) mPixelArea = llmax(mPixelArea, face->getPixelArea()); - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // If the new area is changed from the old area, then accept it. if (mPixelArea != old_area) { @@ -1073,7 +1073,7 @@ void LLVOVolume::updateTextureVirtualSize(bool forced) { LLLightImageParams* params = (LLLightImageParams*) getParameterEntry(LLNetworkData::PARAMS_LIGHT_IMAGE); LLUUID id = params->getLightTexture(); - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Light textures should be treaded not the same as normal LOD textures mLightTexture = LLViewerTextureManager::getFetchedTexture(id, FTT_DEFAULT, true, LLGLTexture::BOOST_LIGHT); // [FIRE-35081] @@ -1126,7 +1126,7 @@ void LLVOVolume::updateTextureVirtualSize(bool forced) setDebugText(output); } - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings //if (mPixelArea == 0) // If there is a legit change to 0.0, don't dismiss it. if (mPixelArea == 0 && !changed) @@ -5462,7 +5462,7 @@ bool can_batch_texture(LLFace* facep) return false; } - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Removed check for turning off animations if (facep->isState(LLFace::TEXTURE_ANIM))//&& facep->getVirtualSize() > MIN_TEX_ANIM_SIZE) // [FIRE-35081] @@ -5612,7 +5612,7 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep, } const LLMatrix4* tex_mat = NULL; - // [FIRE-35081] Blurry prims not changing with graphics settings, not happening with SL Viewer + // [FIRE-35081] Blurry prims not changing with graphics settings // Removed check for turning off animations if (facep->isState(LLFace::TEXTURE_ANIM)) //&& facep->getVirtualSize() > MIN_TEX_ANIM_SIZE) // [FIRE-35081] diff --git a/indra/newview/skins/default/xui/az/notifications.xml b/indra/newview/skins/default/xui/az/notifications.xml index 70e7a08b6b..7a0d6e7743 100644 --- a/indra/newview/skins/default/xui/az/notifications.xml +++ b/indra/newview/skins/default/xui/az/notifications.xml @@ -5128,7 +5128,7 @@ Bu əməliyyatı geri qaytara bilməzsiniz. Flickr doğrulaması alınmadı. Zəhmət olmasa, yenidən cəhd edin və doğrulama kodunu iki dəfə yoxladığınızdan əmin olun. - Şəkiliniz indi [http://www.flickr.com/photos/upload/edit/?ids=[ID] burada] baxıla bilər. + Şəkiliniz indi [https://www.flickr.com/photos/me/[ID] burada] baxıla bilər. "[REGION]" üçün diff --git a/indra/newview/skins/default/xui/az/panel_preferences_colors.xml b/indra/newview/skins/default/xui/az/panel_preferences_colors.xml index ccb5a158f9..fd002c1a7a 100644 --- a/indra/newview/skins/default/xui/az/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/az/panel_preferences_colors.xml @@ -202,9 +202,16 @@ - Seçim axtarışının rəngi: - - + Seçim axtarışının rəngləri: + + + Fon: + + + + Şrift: + + Axtarış zonasının işarənin rəngi: diff --git a/indra/newview/skins/default/xui/de/floater_fs_poser.xml b/indra/newview/skins/default/xui/de/floater_fs_poser.xml index d2dd90388f..18c0a59cb1 100644 --- a/indra/newview/skins/default/xui/de/floater_fs_poser.xml +++ b/indra/newview/skins/default/xui/de/floater_fs_poser.xml @@ -145,7 +145,10 @@ Linke Brustmuskeln Rechte Brustmuskeln Pose laden + Pose speichern Diff. laden + Diff. speichern + Überschreiben? @@ -192,8 +195,8 @@ -