summaryrefslogtreecommitdiff
path: root/indra/llcommon
AgeCommit message (Collapse)Author
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-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-10-27SL-18459 WIP -- fix for assert in setGLTFMaterialDave Parks
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-565-maint-PAndrey Lihatskiy
2022-10-13SL-18190 Potential fix for sapping CPU when "sleeping"Dave Parks
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-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-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.
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-06-13Merge branch 'DRTVWR-564' of bitbucket.org:lindenlab/viewer into SL-17485Howard Stearns
2022-06-13SL-17485 - Provide corrected missing memory data on mac: ↵Howard Stearns
sAllocatedPageSizeInKB, sAllocatedMemInKB, sAvailPhysicalMemInKB, sMaxPhysicalMemInKB
2022-06-09SL-17483: Add integration test for CommonControlNat Goodspeed
and for LLViewerControlListener, to which it talks. Fix glitches detected by the tests.
2022-06-09SL-17483: Merge branch 'track-threadpools' into sl-17483.Nat Goodspeed
This picks up ThreadPoolSizes override logic embedded in ThreadPool's constructor, plus the new static ThreadPool::getConfiguredWidth() and getWidth() methods.
2022-06-09SL-17483: Fix ThreadPool::getConfiguredWidth() compile error.Nat Goodspeed
Log ThreadPoolSizes at DEBUG level, not INFO.
2022-06-09SL-17483: Make it possible to override width of any ThreadPool.Nat Goodspeed
Introduce CommonControl, which in a running viewer (or any program containing an LLViewerControlListener instance) gives access to LLViewerControl functionality, e.g. getting, setting or enumerating control variables -- without introducing a link dependency on newview. Make ThreadPool's constructor consult CommonControl to check for an override for the width of the new ThreadPool in the Global (i.e. gSavedSettings) setting ThreadPoolSizes, and honor that if found. Introduce static ThreadPool methods getConfiguredWidth(), to query for such an override on any particular ThreadPool name; and getWidth(), to ask for the width of an instance if that instance already exists, else the width with which it *would* be instantiated.
2022-06-09SL-17483: Make ThreadPool inherit LLInstanceTrackerCosmic Linden
(cherry picked from commit 41d6a0e222241606c317281e2f0b211e16813dd5)
2022-06-01SL-17484 More unit test pruning. Fix for crash when deleting textures.Dave Parks
2022-05-31SL-17484 Fix for unit tests. Deprecate non-threaded LLQueuedThread and make ↵Dave Parks
lllfsthread threaded.
2022-05-31SL-17490 Update TracyDave Parks