summaryrefslogtreecommitdiff
path: root/indra/llcommon
AgeCommit message (Collapse)Author
2023-02-13SL-19110 revert LLUUID::combine() to old algorithm to match server code. (#75)Henri Beauchamp
As it happens, the change in the LLUUID::combine() algorithm introduced by one of my previous commits is causing invalid assets creation (seen with some clothing items, such as Shape and Universal types); obviously, the server is using the old algorithm for UUID validation purpose of these assets. This commit reverts LLUUID::combine() code to use LLMD5.
2023-02-02Merge remote-tracking branch 'origin/main' into DRTVWR-559Brad Linden
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-23SL-18869 Followup -- AMD optimization pass.Dave Parks
2022-12-13Merge branch 'DRTVWR-559' of github.com:secondlife/viewer into DRTVWR-559Nat Goodspeed
2022-12-13DRTVWR-559: Fix broken workqueue_test.cpp.Nat Goodspeed
Apparently Visual Studio and Xcode disagree on the intended lifespan of a certain temporary expression. Capturing it in a named variable works.
2022-12-12Merge remote-tracking branch 'origin/main' into DRTVWR-559Brad Linden
2022-12-12Merge branch 'main' into DRTVWR-570-maint-QAndrey Lihatskiy
# Conflicts: # doc/contributions.txt # indra/newview/app_settings/shaders/class1/deferred/materialF.glsl # indra/newview/llfloater360capture.cpp
2022-12-09SL-18809: Merge 'DRTVWR-559' of secondlife/viewer into sl-18809Nat Goodspeed
2022-12-09SL-18809: Add WorkSchedule; remove timestamps from WorkQueue.Nat Goodspeed
For work queues that don't need timestamped tasks, eliminate the overhead of a priority queue ordered by timestamp. Timestamped task support moves to WorkSchedule. WorkQueue is a simpler queue that just waits for work. Both WorkQueue and WorkSchedule can be accessed via new WorkQueueBase API. Of course the WorkQueueBase API doesn't deal with timestamps, but a WorkSchedule can be accessed directly to post timestamped tasks and then handled normally (e.g. by ThreadPool) to run them. Most ThreadPool functionality migrates to new ThreadPoolBase class, with template subclass ThreadPoolUsing<WorkQueue> or ThreadPoolUsing<WorkSchedule> depending on need. ThreadPool is now an alias for ThreadPoolUsing<WorkQueue>. Importantly, ThreadPoolUsing::getQueue() delivers a reference to the specific queue subclass type, so you can post timestamped tasks on a queue retrieved from ThreadPoolUsing<WorkSchedule>::getQueue(). Since ThreadPool is no longer a simple class but an alias for a particular template specialization, introduce threadpool_fwd.h to forward-declare it. Recast workqueue_test.cpp to exercise WorkSchedule, since some of the tests are time-based. A future todo would be to exercise each applicable test with both WorkQueue and WorkSchedule.
2022-12-09DRTVWR-559: Introduce LLInstanceTrackerSubclass mediator class.Nat Goodspeed
Deriving your tracked class T from LLInstanceTracker<T> gives you T::getInstance() et al. But what about a subclass S derived from T? S::getInstance() still delivers a pointer to T, requiring explicit downcast. And so on for other LLInstanceTracker methods. Instead, derive S from LLInstanceTrackerSubclass<S, T>. This implies that S is a grandchild class of T, but it also recasts the LLInstanceTracker methods to deliver results for S rather than for T.
2022-12-08Fix for non-windows build of DRTVWR-559 use usleep() for sleepy_robin schedulerBrad Kittenbrink
2022-12-07DRTVWR-559: Try using custom fiber scheduler for ThreadPool threads. (#30)RunitaiLinden
Co-authored-by: Nat Goodspeed <nat@lindenlab.com>
2022-11-30SL-18154 WIP -- CPU sampling (AMD uProf) profile guided optimizations to ↵Dave Parks
reduce CPU usage of background threads.
2022-11-16SL-18154 Profile guided optimizations vs release viewer. Trim some unused ↵Dave Parks
abilities and remove some more fast timers.
2022-11-09Merge remote-tracking branch 'ZiRee/viewer/master' into DRTVWR-570-maint-QAndrey Lihatskiy
2022-11-01Merge remote-tracking branch 'RyeMutt/viewer/llsd-usage-fixes' into ↵Andrey Lihatskiy
DRTVWR-570-maint-Q
2022-10-30Fix checks for empty LLSD maps to use size and not emptyMap which is for ↵Rye Mutt
creating an empty LLSDMap type.
2022-10-27SL-18459 WIP -- fix for assert in setGLTFMaterialDave Parks
2022-10-25Merge remote-tracking branch 'RyeMutt/viewer/pod-uuid' into DRTVWR-570-maint-QAndrey Lihatskiy
2022-10-25Restore LLUUID to a plain old data type in a post-c++11 worldRye Mutt
2022-10-21Merge branch 'master' (DRTVWR-548) into DRTVWR-559Andrey Kleshchev
# Conflicts: # indra/llrender/llgl.cpp # indra/llrender/llrendertarget.cpp # indra/newview/VIEWER_VERSION.txt # indra/newview/app_settings/shaders/class1/deferred/materialF.glsl # indra/newview/llfloaterpreference.cpp # indra/newview/llviewercontrol.cpp # indra/newview/llviewermenu.cpp # indra/newview/llviewertexturelist.cpp # indra/newview/llvovolume.cpp
2022-10-20Merge branch 'master' into DRTVWR-570-maint-QAndrey Lihatskiy
# Conflicts: # indra/newview/llnetmap.cpp # indra/newview/llnetmap.h
2022-10-20Merge branch 'master' into DRTVWR-565-maint-PAndrey Lihatskiy
2022-10-13SL-18190 Potential fix for sapping CPU when "sleeping"Dave Parks
2022-10-13Revert "Restored SL-14961"Andrey Kleshchev
This partially reverts commit 935c1362a222f192bf913270d01f6c31c16e175b. Reporting seems to have stoped working, trying the same way mac works.
2022-10-05Initial pass at adding KHR_debug supportGeenz
This still needs some work - I'm not super satisfied with the overall structure of the code. Will continue to iterate as I add in proper RenderDoc support.
2022-09-30SL-18239 Unify PBR and non-PBR treatment of ambient/SSAO/irradiance. ↵Dave Parks
Restore SSAO to release version.
2022-09-27Introduce a U8* based interface to unzip_llsd and unpackVolumeFacesRye Mutt
2022-09-22Merge remote-tracking branch 'origin/SL-18119' into DRTVWR-548-maint-NAndrey Lihatskiy
2022-09-16Merge branch master (DRTVWR-571) into DRTVWR-559Andrey Kleshchev
# Conflicts: # indra/newview/llpanelface.cpp # indra/newview/llpanelface.h
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-09-06SL-18096 WIP -- partial support for double sided rendering. Shadow map and ↵Dave Parks
picking support TBD.
2022-09-02Merge branch 'DRTVWR-559' of https://bitbucket.org/lindenlab/viewer into ↵Brad Payne (Vir Linden)
DRTVWR-559
2022-09-01SL-18078, SL-18065 -- Experimentally allow uploading of lossless normal ↵Dave Parks
maps, fix for crash on shutdown.
2022-09-01Merge branch 'DRTVWR-559' of https://bitbucket.org/lindenlab/viewer into ↵Brad Payne (Vir Linden)
DRTVWR-559
2022-09-01DRTVWR-559 refcount max changeBrad Payne (Vir Linden)
2022-08-30Merge remote-tracking branch 'remotes/origin/DRTVWR-563' into DRTVWR-559Dave Parks
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-07-28GCC11.1 warning: moving a local object in a return statement prevents copy ↵ZiRee
elision [-Werror=pessimizing-move]
2022-06-29Merge branch 'master' (DRTVWR-543) into DRTVWR-559Andrey Kleshchev
# Conflicts: # autobuild.xml # indra/llrender/llgl.cpp # indra/newview/CMakeLists.txt # indra/newview/llvovolume.cpp
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-24SL-17649 Icon for Material type in InventoryMnikolenko Productengine
2022-06-22SL-17634 Replace deprecated carbon Gestalt callsMaxim Nikolenko
2022-06-17SL-17485-b - Attempt to make teamcity builds happy by not referencing a ↵Howard Stearns
newview global from an llcommon file.