summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-10-21SL-16226 Crash at genMeshOptimizerPerModelAndrey Kleshchev
2021-10-21SL-15999 - perfbot allow --num to default to number of credsBrad Payne (Vir Linden)
2021-10-20SL-16220: Add a WorkQueue to be serviced by mainloop.Nat Goodspeed
Make LLAppViewer::idle() call LL::WorkQueue::runFor() to dequeue and run some or all of the pending responses from worker threads. Add a MainWorkTime setting to specify the time slice the main loop may devote each frame to servicing such responses.
2021-10-20Merge branch 'DRTVWR-546' of ssh://bitbucket.org/lindenlab/viewer into ↵Brad Payne (Vir Linden)
DRTVWR-546
2021-10-20SL-16184 FIXED Frame stall when friend comes online.Mnikolenko Productengine
2021-10-19SL-16197 Optimize LLEnvironment handling of shader uniforms. Instrument ↵Dave Parks
LLSD. Enable Fast Timers when Tracy is enabled to catch Fast Timer overhead.
2021-10-18SL-16047 Strip unused includesAndrey Kleshchev
2021-10-15Merge branch 'DRTVWR-546' of ssh://bitbucket.org/lindenlab/viewer into ↵Brad Payne (Vir Linden)
DRTVWR-546
2021-10-15SL-16166 Optimization pass on render pipe inner loopsDave Parks
2021-10-14DRTVWR-545 Raised the viewer version to 6.5.0Andrey Lihatskiy
2021-10-14Merged DRTVWR-546 into SL-16166Dave Parks
2021-10-14SL-16166 Apply optimizations from pushBatch to other render call sites. ↵Runitai Linden
Optimize out a map lookup in rigged face rendering.
2021-10-14SL-16131 Fix for alignment warnings on Win32 builds.Dave Parks
2021-10-13Merged in DV546-merge-6.4.24 (pull request #731)Euclid Linden
DRTVWR-546 merge up to v 6.4.24
2021-10-13Merge branch 'master' v6.4.24 into DRTVWR-546Dave Houlton
2021-10-14Merge branch master (DRTVWR-520) into DRTVWR-542-meshoptAndrey Kleshchev
2021-10-14Merge branch 'master' into DRTVWR-545-maint-mixAndrey Lihatskiy
2021-10-13Increment viewer version to 6.4.24Nat Goodspeed
following promotion of DRTVWR-520
2021-10-13SL-15462 Refactor voiceControlCoro() into a state machine #2Andrey Kleshchev
2021-10-13SL-15462 Refactor voiceControlCoro() into a state machine #1Andrey Kleshchev
2021-10-13SL-16106 Fixed asset storage trying to request data on shutdownAndrey Kleshchev
2021-10-13SL-16166 Remove LLDrawPoolGlow::pushBatch non-specializationRunitai Linden
2021-10-13SL-16166 Optimize LLDrawPoolMaterials::pushBatchRunitai Linden
2021-10-13SL-16189 Optimize bindBumpMapRunitai Linden
2021-10-13SL-16166 Apply LLRenderPass::pushBatch optimizations to ↵Runitai Linden
LLDrawPoolBump::pushBatch
2021-10-13SL-16166 Don't use setupVertexBuffer where setupVertexBufferFast is called ↵Runitai Linden
for (thank you, Henri!)
2021-10-12SL-16166 Optimization pass on LLRenderPass::pushBatchRunitai Linden
2021-10-11SL-16099 Followup -- disable VAOs since they still run like garbage in busy ↵Runitai Linden
scenes.
2021-10-11SL-16099 Multi-threaded OpenGL usage on Windows, enable Core Profile and ↵Dave Parks
VAOs by default.
2021-10-11SL-16141 Load fonts and generate glyphs on startupMnikolenko Productengine
2021-10-08Merge branch 'SL-16024' into DRTVWR-546Nat Goodspeed
2021-10-08SL-16024: Resolve bizarre VS compile error. Thanks Callum!Nat Goodspeed
It seems CALLBACK is a macro in some Microsoft header file. Bleah.
2021-10-07SL-16024: Merge branch 'SL-16024' into SL-16024-to-546Nat Goodspeed
2021-10-07SL-16024: Defend against two threads making "anonymous" WorkQueues.Nat Goodspeed
Also make workqueue_test.cpp more robust.
2021-10-07SL-16024: Merge branch 'DRTVWR-546' into SL-16024-to-546Nat Goodspeed
2021-10-07SL-16024: Add LL::WorkQueue for passing work items between threads.Nat Goodspeed
A typical WorkQueue has a string name, which can be used to find it to post work to it. "Work" is a nullary callable. WorkQueue is a multi-producer, multi-consumer thread-safe queue: multiple threads can service the WorkQueue, multiple threads can post work to it. Work can be scheduled in the future by submitting with a timestamp. In addition, a given work item can be scheduled to run on a recurring basis. A requesting thread servicing a WorkQueue of its own, such as the viewer's main thread, can submit work to another WorkQueue along with a callback to be passed the result (of arbitrary type) of the first work item. The callback is posted to the originating WorkQueue, permitting safe data exchange between participating threads. Methods are provided for different kinds of servicing threads. runUntilClose() is useful for a simple worker thread. runFor(duration) devotes no more than a specified time slice to that WorkQueue, e.g. for use by the main thread.
2021-10-07SL-16024: Make LLCond::get() lock and return by value.Nat Goodspeed
Its previous behavior, returning a const reference without locking, was wrong: it could return a reference to an object in an inconsistent state if it was concurrently being modified on another thread. Locking the mutex and returning a copy by value is the correct behavior.
2021-10-07SL-16024: Adapt llinstancetracker_test.cpp to getInstance() change.Nat Goodspeed
2021-10-07SL-16024: Return shared_ptr from LLInstanceTracker::getInstance().Nat Goodspeed
It feels wrong to return a dumb LLInstanceTracker subclass* from getInstance() when we use std::shared_ptr and std::weak_ptr internally. But tweak consumers to use 'auto' or LLInstanceTracker::ptr_t in case we later revisit this decision. We did add a couple get() calls where it's important to obtain a dumb pointer.
2021-10-06SL-16024: Work around VS bug regarding base-class enum.Nat Goodspeed
2021-10-06Merged in euclid-16138 (pull request #720)Euclid Linden
SL-16138 avoid redundant shader binds, and related cleanup Approved-by: Dave Parks Approved-by: Michael Pohoreski
2021-10-06SL-16138 remove checks for now-mandatory capabilitiesDave Houlton
2021-10-06SL-16138 Add timing mark-up to shader fxnsDave Houlton
2021-10-06SL-16024: Fix ThreadSafeSchedule::tryPopFor(), tryPopUntil().Nat Goodspeed
ThreadSafeSchedule::tryPopUntil() (and therefore tryPopFor()) was simply delegating to LLThreadSafeQueue::tryPopUntil(), with an adjusted timeout since we want to wake up as soon as the head item, if any, becomes ready. But then we have to loop back to retry the pop to actually deal with that head item. In addition, ThreadSafeSchedule::popWithTime() was spinning rather than properly blocking on a timed condition variable. Fixed.
2021-10-05SL-16024: Add ThreadSafeSchedule, a timestamped LLThreadSafeQueue.Nat Goodspeed
ThreadSafeSchedule orders its items by timestamp, which can be passed either implicitly or explicitly. The timestamp specifies earliest delivery time: an item cannot be popped until that time. Add initial tests. Tweak the LLThreadSafeQueue base class to support ThreadSafeSchedule: introduce virtual canPop() method to report whether the current head item is available to pop. The base class unconditionally says yes, ThreadSafeSchedule says it depends on whether its timestamp is still in the future. This replaces the protected pop_() overload accepting a predicate. Rather than explicitly passing a predicate through a couple levels of function call, use canPop() at the level it matters. Runtime behavior that varies depending on an object's leaf class is what virtual functions were invented for. Give pop_() a three-state enum return so pop() can distinguish between "closed and empty" (throws exception) versus "closed, not yet drained because we're not yet ready to pop the head item" (waits). Also break out protected tryPopUntil_() method, the body logic of tryPopUntil(). The public method locks the data structure, the protected method requires that its caller has already done so. Add chrono.h with a more full-featured LL::time_point_cast() function than the one found in <chrono>, which only converts between time_point durations, not between time_points based on different clocks.
2021-10-05SL-16138 Avoid re-binding a shader which is already boundDave Houlton
2021-10-05DRTVWR-546 triggerDave Houlton
2021-10-04SL-16024: Don't use a lambda as default arg for universal reference.Nat Goodspeed
Instead, break out a separate pop_() method that explicitly provides the lambda to the real pop_() implementation.
2021-10-04SL-16024: LLThreadSafeQueue enhancementsNat Goodspeed
Add LL::PriorityQueueAdapter, a wrapper for std::priority_queue to make its API more closely resemble std::queue for drop-in use as LLThreadSafeQueue's underlying QueueT container. Support move-only element types. Factor out some implementation redundancy: wrap actual push semantics as push_(), actual pop semantics as pop_(). push(), tryPush() and tryPushUntil() now call push_(); pop(), tryPop() and tryPopUntil() now call pop_(). Break out tryLock() and tryLockUntil() methods that, if they can lock, run the passed callable. Then tryPush(), tryPushUntil(), tryPop() and tryPopUntil() pass lambdas containing the meat of the original method body to tryLock() or tryLockUntil(), as appropriate.
2021-10-04Merged in DRTVWR-541 (pull request #717)Euclid Linden
Push autobuild updates made in DRTVWR-541 into -546