summaryrefslogtreecommitdiff
path: root/indra/llcommon
AgeCommit message (Collapse)Author
2023-02-07SL-19110 Make HBXXH* classes no-copy. (#72)Henri Beauchamp
These classes are not trivially copyable because of the mState pointer on an internal XXH3 state that would have to be explicitely copied. While it would be possible to add custom copy constructor and operator for them, it does not really make sense to allow copying an instance of these classes, since all we care about storing and copying is the digest (which is either an U64 or an LLUUID).
2023-01-31SL-19110 Fix coding policyAndrey Kleshchev
2023-01-31SL-19110 Fix xxhash build link and properly register contributionAndrey Kleshchev
2023-01-31SL-19110 Fast hashing classes for use in place of the slow LLMD5, where ↵Henri Beauchamp
speed matters. (#64) This commit adds the HBXX64 and HBXX128 classes for use as a drop-in replacement for the slow LLMD5 hashing class, where speed matters and backward compatibility (with standard hashing algorithms) and/or cryptographic hashing qualities are not required. It also replaces LLMD5 with HBXX* in a few existing hot (well, ok, just "warm" for some) paths meeting the above requirements, while paving the way for future use cases, such as in the DRTVWR-559 and sibling branches where the slow LLMD5 is used (e.g. to hash materials and vertex buffer cache entries), and could be use such a (way) faster algorithm with very significant benefits and no negative impact. Here is the comment I added in indra/llcommon/hbxx.h: // HBXXH* classes are to be used where speed matters and cryptographic quality // is not required (no "one-way" guarantee, though they are likely not worst in // this respect than MD5 which got busted and is now considered too weak). The // xxHash code they are built upon is vectorized and about 50 times faster than // MD5. A 64 bits hash class is also provided for when 128 bits of entropy are // not needed. The hashes collision rate is similar to MD5's. // See https://github.com/Cyan4973/xxHash#readme for details.
2023-01-16SL-18893 OSX buildfixAndrey Lihatskiy
2023-01-16MacOS Build fixAndrey Kleshchev
2023-01-09Eliminate needless copiesFawrsk
2023-01-07Cleanup for loops in llcommon to use C++11 range based for loopsFawrsk
2022-12-12DRTVWR-565: Merge branch 'origin/contribute' into DRTVWR-565Nat Goodspeed
2022-12-06DRTVWR-575: Try to avoid comparison warnings in llclamp()Nat Goodspeed
2022-12-06DRTVWR-575: Defend unescape_string() against empty line.Nat Goodspeed
The unsigned index arithmetic was problematic in that case.
2022-12-06DRTVWR-575: Update a few more int lengths in llsdserialize.{h,cpp}.Nat Goodspeed
2022-12-06DRTVWR-575: Use llssize (signed size_t) for max_bytes parameters.Nat Goodspeed
Since LLSDSerialize::SIZE_UNLIMITED is negative, passing that through unsigned size_t parameters could result in peculiar behavior.
2022-12-06DRTVWR-575: Introduce LLKeyBind::endNonEmpty()Nat Goodspeed
and use it to replace dubious loops in asLLSD() and trimEmpty().
2022-11-13DRTVWR-575: Explain that NSInteger is really int64_t.Nat Goodspeed
2022-11-13DRTVWR-575: Merge brad's xcode-14.1 fixes with nat'sNat Goodspeed
2022-11-12DRTVWR-575: Address review comments on Xcode 14.1 type tweaks.Nat Goodspeed
Introduce LLSD template constructors and assignment operators to disambiguate construction or assignment from any integer type to Integer, likewise any floating point type to Real. Use new narrow() function to validate conversions. For LLSD method parameters converted from LLSD::Integer to size_t, where the method previously checked for a negative argument, make it now check for size_t converted from negative: in other words, more than S32_MAX. The risk of having a parameter forced from negative to unsigned exceeds the risk of a valid length or index over that max. In lltracerecording.cpp's PeriodicRecording, now that mCurPeriod and mNumRecordedPeriods are size_t instead of S32, defend against subtracting 1 from 0. Use narrow() to validate newly-introduced narrowing conversions. Make llclamp() return the type of the raw input value, even if the types of the boundary values differ. std::ostream::tellp() no longer returns a value we can directly report as a number. Cast to U64.
2022-11-11DRTVWR-575 fix LLGetDarwinOSInfo for xcode-14.1. NSInteger is now 64 bitsBrad Kittenbrink
2022-11-11DRTVWR-575 xcode-14.1 compatibility fix. add more overloads for stricter ↵Brad Kittenbrink
size_t conversions
2022-11-11DRTVWR-575 xcode-14.1 compatibility fix. add overloads for stricter integer ↵Brad Kittenbrink
conversions
2022-11-04DRTVWR-575: Introduce llssize (signed size_t) and narrow() function.Nat Goodspeed
llssize is for a function parameter that should accept a size or index (derived from size_t, which is 64 bits in a 64-bit viewer) but might need to go negative for flag values. We've historically used S32 for that purpose, but Xcode 14.1 complains about trying to pass size_t to S32. narrow() is a template function that casts a wider type (e.g. size_t or llssize) to a narrower type (e.g. S32 or U32), with validation in RelWithDebInfo builds. It verifies (using assert()) that the value being truncated can in fact fit into the target type.
2022-11-03DRTVWR-575: A few more tweaks addressing size_t wider than 32 bits.Nat Goodspeed
2022-11-03DRTVWR-575: Fix llcommon assumptions that size_t fits in 4 bytes.Nat Goodspeed
It's a little distressing how often we have historically coded S32 or U32 to pass a length or index. There are more such assumptions in other viewer subdirectories, but this is a start.
2022-10-20Merge branch 'master' into DRTVWR-565-maint-PAndrey Lihatskiy
2022-09-22Merge remote-tracking branch 'origin/SL-18119' into DRTVWR-548-maint-NAndrey Lihatskiy
2022-09-16SL-18119 - UIUsage logs for some common operationsBrad Payne (Vir Linden)
2022-09-15Merge branch 'master' into DRTVWR-548-maint-NAndrey Lihatskiy
# Conflicts: # indra/newview/llmodelpreview.h
2022-09-15Merge branch 'master' into DRTVWR-565-maint-PAndrey Lihatskiy
2022-08-01SL-17868 Fixed macos build issueAndrey Kleshchev
2022-07-30SL-17868 Crash at ThreadRecorder::bringUpToDateAndrey Kleshchev
According to bugsplat get_thread_recorder was null Replaced apr based LLThreadLocalPointer with thread_local
2022-06-29Merge branch 'master' into DRTVWR-548-maint-NAndrey Lihatskiy
# Conflicts: # doc/contributions.txt # indra/newview/llviewercontrol.cpp
2022-06-29Merge branch 'master' into DRTVWR-544-maintAndrey Lihatskiy
2022-06-22SL-17634 Replace deprecated carbon Gestalt callsMaxim Nikolenko
2022-06-14SL-16182: Offload audio decoding from the main thread to the general work queue.Cosmic Linden
The work queue callback binds "this". This is deemed safe due to current dependencies, but see the associated comment in the return callback. There was some trial and error to get a this-binded lambda to compile. Due to LLVorbisDecodeState writing to disk off-thread, limit audio decodes proportional to general worker thread count. Guess the thread count for now.
2022-06-14SL-17483: Make ThreadPool inherit LLInstanceTrackerCosmic Linden
(cherry picked from commit 41d6a0e222241606c317281e2f0b211e16813dd5)
2022-05-31Merge branch 'master' into DRTVWR-544-maintAndrey Lihatskiy
# Conflicts: # indra/llprimitive/llmodel.cpp # indra/llprimitive/llmodel.h # indra/newview/llappviewer.cpp # indra/newview/llappviewer.h
2022-05-27Merged in SL-15937 (pull request #991)Howard Stearns
SL-15937 - adjust memory limit / cache code Approved-by: Andrey Lihatskiy Approved-by: Vir Linden
2022-05-27Merge branch 'master' into DRTVWR-543-maintAndrey Lihatskiy
# Conflicts: # autobuild.xml # indra/cmake/LLCommon.cmake # indra/llcommon/CMakeLists.txt # indra/llrender/llgl.cpp # indra/newview/llappviewer.cpp # indra/newview/llface.cpp # indra/newview/llflexibleobject.cpp # indra/newview/llvovolume.cpp
2022-05-23SL-15937 - adjust memory limit / cache codeHoward Stearns
2022-05-18SL-17388 Add SSE version info to ViewerStatsAndrey Kleshchev
2022-04-18Merge branch master (D540) into DRTVWR-546Andrey Kleshchev
# Conflicts: # indra/llcommon/llsdutil.cpp # indra/newview/VIEWER_VERSION.txt # indra/newview/lldrawpoolalpha.cpp # indra/newview/lldrawpoolwater.cpp
2022-04-18Merge branch 'master' into DRTVWR-544-maintAndrey Lihatskiy
# Conflicts: # indra/newview/app_settings/settings.xml # indra/newview/llfloatersearch.cpp # indra/newview/llgroupactions.cpp # indra/newview/llvovolume.cpp
2022-04-18Merge branch 'master' into DRTVWR-543-maintAndrey Lihatskiy
2022-03-25SL-17077 Ensure profiling is disabled if gpu_benchmark fails. Log the ↵Dave Parks
source of the real crash for when the viewer inevitably crashes later.
2022-03-09SL-16972 Per feedback from Ansariel, only bump up max heap size on 64-bit ↵Dave Parks
builds.
2022-03-01Merge branch 'master' (DRTVWR-557) into DRTVWR-546Andrey Kleshchev
# Conflicts: # autobuild.xml # doc/contributions.txt # indra/cmake/GLOD.cmake # indra/llcommon/tests/llprocess_test.cpp # indra/newview/VIEWER_VERSION.txt # indra/newview/lldrawpoolavatar.cpp # indra/newview/llfloatermodelpreview.cpp # indra/newview/llmodelpreview.cpp # indra/newview/llviewertexturelist.cpp # indra/newview/llvovolume.cpp # indra/newview/viewer_manifest.py
2022-02-28Merge branch 'master' into DRTVWR-544-maintAndrey Lihatskiy
# Conflicts: # indra/llaudio/llstreamingaudio_fmodstudio.cpp # indra/newview/llviewerregion.cpp
2022-02-28Merge branch 'master' into DRTVWR-543-maintAndrey Lihatskiy
2022-02-28Merge branch 'master' into DRTVWR-540-maintAndrey Lihatskiy
# Conflicts: # autobuild.xml # indra/llcommon/llsys.cpp # indra/newview/app_settings/key_bindings.xml # indra/newview/llfloatereditextdaycycle.cpp
2022-02-23SL-16815 and SL-16906 Avoid redundant bumpmap generation, add some ↵Dave Parks
assertions around ref counting and (hack) fix crash on shutdown from dangling texture reference (reduced to 1 dangling texture from several hundred, can't find the remaining reference).