From bf7faa3267e549b01131c6746202a5b6cda8e68a Mon Sep 17 00:00:00 2001 From: Henri Beauchamp Date: Mon, 6 Feb 2023 11:30:23 +0100 Subject: Faster and simpler inventory category hashing. This commit changes inventory category hashing from slow LLMD5 to fast HBXX128 hashing, and allows to use a simple LLUUID for the hash, instead of an LLMD5 instance. It also removes some old cruft dealing with unused baked texture hashing. --- indra/llappearance/llwearable.h | 4 ---- indra/llappearance/llwearabledata.cpp | 40 ----------------------------------- indra/llappearance/llwearabledata.h | 9 -------- 3 files changed, 53 deletions(-) (limited to 'indra/llappearance') diff --git a/indra/llappearance/llwearable.h b/indra/llappearance/llwearable.h index 875c2932f1..d86db236a3 100644 --- a/indra/llappearance/llwearable.h +++ b/indra/llappearance/llwearable.h @@ -32,7 +32,6 @@ #include "llsaleinfo.h" #include "llwearabletype.h" -class LLMD5; class LLVisualParam; class LLTexGlobalColorInfo; class LLTexGlobalColor; @@ -110,9 +109,6 @@ public: // Something happened that requires the wearable to be updated (e.g. worn/unworn). virtual void setUpdated() const = 0; - // Update the baked texture hash. - virtual void addToBakedTextureHash(LLMD5& hash) const = 0; - typedef std::map visual_param_index_map_t; visual_param_index_map_t mVisualParamIndexMap; diff --git a/indra/llappearance/llwearabledata.cpp b/indra/llappearance/llwearabledata.cpp index 0eaeedb6ee..9fbbc57c87 100644 --- a/indra/llappearance/llwearabledata.cpp +++ b/indra/llappearance/llwearabledata.cpp @@ -31,7 +31,6 @@ #include "llavatarappearance.h" #include "llavatarappearancedefines.h" #include "lldriverparam.h" -#include "llmd5.h" LLWearableData::LLWearableData() : mAvatarAppearance(NULL) @@ -343,42 +342,3 @@ U32 LLWearableData::getWearableCount(const U32 tex_index) const const LLWearableType::EType wearable_type = LLAvatarAppearance::getDictionary()->getTEWearableType((LLAvatarAppearanceDefines::ETextureIndex)tex_index); return getWearableCount(wearable_type); } - -LLUUID LLWearableData::computeBakedTextureHash(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index, - BOOL generate_valid_hash) // Set to false if you want to upload the baked texture w/o putting it in the cache -{ - LLUUID hash_id; - bool hash_computed = false; - LLMD5 hash; - const LLAvatarAppearanceDictionary::BakedEntry *baked_dict = LLAvatarAppearance::getDictionary()->getBakedTexture(baked_index); - - for (U8 i=0; i < baked_dict->mWearables.size(); i++) - { - const LLWearableType::EType baked_type = baked_dict->mWearables[i]; - const U32 num_wearables = getWearableCount(baked_type); - for (U32 index = 0; index < num_wearables; ++index) - { - const LLWearable* wearable = getWearable(baked_type,index); - if (wearable) - { - wearable->addToBakedTextureHash(hash); - hash_computed = true; - } - } - } - if (hash_computed) - { - hash.update((const unsigned char*)baked_dict->mWearablesHashID.mData, UUID_BYTES); - - if (!generate_valid_hash) - { - invalidateBakedTextureHash(hash); - } - hash.finalize(); - hash.raw_digest(hash_id.mData); - } - - return hash_id; -} - - diff --git a/indra/llappearance/llwearabledata.h b/indra/llappearance/llwearabledata.h index a0c446ea9e..b8e0bf8bd1 100644 --- a/indra/llappearance/llwearabledata.h +++ b/indra/llappearance/llwearabledata.h @@ -85,15 +85,6 @@ protected: private: void pullCrossWearableValues(const LLWearableType::EType type); - //-------------------------------------------------------------------- - // Server Communication - //-------------------------------------------------------------------- -public: - LLUUID computeBakedTextureHash(LLAvatarAppearanceDefines::EBakedTextureIndex baked_index, - BOOL generate_valid_hash = TRUE); -protected: - virtual void invalidateBakedTextureHash(LLMD5& hash) const {} - //-------------------------------------------------------------------- // Member variables //-------------------------------------------------------------------- -- cgit v1.2.3 From 627c7de801bcf1f2a706c2c077a3fecf54a3bfe8 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Tue, 7 Feb 2023 12:36:20 +0200 Subject: SL-19134 Some texture related adjustments --- indra/llappearance/CMakeLists.txt | 2 -- indra/llappearance/lltexturemanagerbridge.cpp | 32 ------------------ indra/llappearance/lltexturemanagerbridge.h | 48 --------------------------- 3 files changed, 82 deletions(-) delete mode 100644 indra/llappearance/lltexturemanagerbridge.cpp delete mode 100644 indra/llappearance/lltexturemanagerbridge.h (limited to 'indra/llappearance') diff --git a/indra/llappearance/CMakeLists.txt b/indra/llappearance/CMakeLists.txt index 268849ad74..b3f6c7e32c 100644 --- a/indra/llappearance/CMakeLists.txt +++ b/indra/llappearance/CMakeLists.txt @@ -40,7 +40,6 @@ set(llappearance_SOURCE_FILES lltexglobalcolor.cpp lltexlayer.cpp lltexlayerparams.cpp - lltexturemanagerbridge.cpp llwearable.cpp llwearabledata.cpp llwearabletype.cpp @@ -63,7 +62,6 @@ set(llappearance_HEADER_FILES lltexglobalcolor.h lltexlayer.h lltexlayerparams.h - lltexturemanagerbridge.h llwearable.h llwearabledata.h llwearabletype.h diff --git a/indra/llappearance/lltexturemanagerbridge.cpp b/indra/llappearance/lltexturemanagerbridge.cpp deleted file mode 100644 index 33f2185e4f..0000000000 --- a/indra/llappearance/lltexturemanagerbridge.cpp +++ /dev/null @@ -1,32 +0,0 @@ - /** - * @file lltexturemanagerbridge.cpp - * @brief Defined a null texture manager bridge. Applications must provide their own bridge implementaton. - * - * $LicenseInfo:firstyear=2012&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#include "lltexturemanagerbridge.h" - -// Define a null texture manager bridge. Applications must provide their own bridge implementaton. -LLTextureManagerBridge* gTextureManagerBridgep = NULL; - - diff --git a/indra/llappearance/lltexturemanagerbridge.h b/indra/llappearance/lltexturemanagerbridge.h deleted file mode 100644 index 101704b162..0000000000 --- a/indra/llappearance/lltexturemanagerbridge.h +++ /dev/null @@ -1,48 +0,0 @@ -/** - * @file lltexturemanagerbridge.h - * @brief Bridge to an application-specific texture manager. - * - * $LicenseInfo:firstyear=2012&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#ifndef LL_TEXTUREMANAGERBRIDGE_H -#define LL_TEXTUREMANAGERBRIDGE_H - -#include "llavatarappearancedefines.h" -#include "llpointer.h" -#include "llgltexture.h" - -// Abstract bridge interface -class LLTextureManagerBridge -{ -public: - virtual ~LLTextureManagerBridge() {} - - virtual LLPointer getLocalTexture(BOOL usemipmaps = TRUE, BOOL generate_gl_tex = TRUE) = 0; - virtual LLPointer getLocalTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps, BOOL generate_gl_tex = TRUE) = 0; - virtual LLGLTexture* getFetchedTexture(const LLUUID &image_id) = 0; -}; - -extern LLTextureManagerBridge* gTextureManagerBridgep; - -#endif // LL_TEXTUREMANAGERBRIDGE_H - -- cgit v1.2.3 From a22dfc28a132c0cf888a7ee6e47b29f50b6193af Mon Sep 17 00:00:00 2001 From: Alexander Gavriliuk Date: Wed, 26 Jul 2023 17:53:45 +0200 Subject: SL-18619 Eyes not rendering in Shape floater thumbnails --- indra/llappearance/llavatarappearance.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'indra/llappearance') diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp index 7946a3e705..18b03c1f89 100644 --- a/indra/llappearance/llavatarappearance.cpp +++ b/indra/llappearance/llavatarappearance.cpp @@ -1050,7 +1050,6 @@ BOOL LLAvatarAppearance::loadSkeletonNode () mRoot->addChild(mMeshLOD[MESH_ID_UPPER_BODY]); mRoot->addChild(mMeshLOD[MESH_ID_LOWER_BODY]); mRoot->addChild(mMeshLOD[MESH_ID_SKIRT]); - mRoot->addChild(mMeshLOD[MESH_ID_HEAD]); LLAvatarJoint *skull = (LLAvatarJoint*)mRoot->findJoint("mSkull"); if (skull) -- cgit v1.2.3