summaryrefslogtreecommitdiff
path: root/indra/newview/lltexturefetch.h
AgeCommit message (Collapse)Author
2014-05-13sunshine-external merge WIPBrad Payne (Vir Linden)
2014-02-24merge with releaseRichard Linden
2013-11-20SH-4611 WIPBrad Payne (Vir Linden)
2013-08-18SH-4433 WIP: Interesting: Statistics > Ping Sim is always 0 msRichard Linden
continued conversion to units system made units perform type promotion correctly and preserve type in arithmetic e.g. can now do LLVector3 in units added typedefs for remaining common unit types, including implicits
2013-08-15moved unit types out of LLUnits namespace, since they are prefixedRichard Linden
2013-07-15SH-4299Interesting: High fps shown temporarily off scale in statistics consoleRichard Linden
various fixes to lltrace start() on started recording no longer resets fixed various instances of unit forgetfullness in lltrace recording split now has gapless timing scene monitor now guarantees min sample time renamed a bunch of stats added names to debug thread view on windows
2013-07-08SH-4299 WIP: Interesting: High fps shown temporarily off scale in statistics ↵Richard Linden
console added percentage/ratio units added auto-range and auto tick calculation to stat bar to automate display stats
2013-06-13SH-3931 WIP Interesting: Add graphs to visualize scene load metricsRichard Linden
changed Units macros and argument order to make it more clear optimized units for integer types fixed merging of periodicrecordings...should eliminate duplicate entries in sceneloadmonitor history
2013-06-05merge with viewer-releaseRichard Linden
2013-05-29SH-3931 WIP Interesting: Add graphs to visualize scene load metricsRichard Linden
fixed copy construction behavior of Recordings to not zero out data split measurement into event and sample, with sample representing a continuous function
2013-04-19merge changes for DRTVWR-294Oz Linden
2013-04-15SH-4061 - integrated LLHttpRetryPolicy with new corehttp header parsingBrad Payne (Vir Linden)
2013-04-15SH-4061 WIP - moved all retry logic into lltexturefetch, some cleanup. Debug ↵Brad Payne (Vir Linden)
setting now defines a fake failure rate.
2013-04-15SH-4106 Significantly upgrade the HttpHeaders interface for SSB.Monty Brandenberg
Header container moves from a vector of raw lines to a vector of string pairs representing name/value pairs in headers. For incoming headers, we normalize the name to lowercase and trim it. Values are only left-trimmed. Outgoing headers are left as-is. Simple find() method for the common case, forward and reverse iterators for those few who need to do it themselves. The HTTP status line (e.g. 'HTTP/1.1 200 Ok') is no longer treated as a header to be returned to caller. Unit tests, as usual, were a bear but they absolutely ensured outgoing HTTP header conformance after the change. Grunt work paid off. LLTextureFetch was also given a second options structure for texture fetches. Same as the original but with header return to caller requested. Baked textures should use this, the other 20,000 texture fetch requests should continue to use the original.
2013-04-15SH-4106 Significantly upgrade the HttpHeaders interface for SSB.Monty Brandenberg
Header container moves from a vector of raw lines to a vector of string pairs representing name/value pairs in headers. For incoming headers, we normalize the name to lowercase and trim it. Values are only left-trimmed. Outgoing headers are left as-is. Simple find() method for the common case, forward and reverse iterators for those few who need to do it themselves. The HTTP status line (e.g. 'HTTP/1.1 200 Ok') is no longer treated as a header to be returned to caller. Unit tests, as usual, were a bear but they absolutely ensured outgoing HTTP header conformance after the change. Grunt work paid off. LLTextureFetch was also given a second options structure for texture fetches. Same as the original but with header return to caller requested. Baked textures should use this, the other 20,000 texture fetch requests should continue to use the original.
2013-04-12SH-4061 WIP - moved retry policy to newview so it can work with either ↵Brad Payne (Vir Linden)
llmessage or CoreHttp libraries. Updated tests.
2013-04-11SH-4061 WIP - started adding retry to texture fetch, making retry policy ↵Brad Payne (Vir Linden)
compatible with old and new http libraries
2013-04-10SH-4061 WIP - capture http status codes from requests, restrict SB fetch ↵Brad Payne (Vir Linden)
retries to 5xx errors
2013-04-08SH-4061 FIX - texture fetch failures added retry logic and fault injection ↵Brad Payne (Vir Linden)
for testing
2013-03-29Update Mac and Windows breakpad builds to latestGraham Madarasz
2013-03-22merge with viewer-releaseRichard Linden
2013-03-11mergeprep
2013-03-11mergeprep
2013-03-11Added gratuitous coupling to stop gcc from complainingBrad Payne (Vir Linden)
2013-03-08SH-3959 WIP - pass information about type of fetched image - server bake, ↵Brad Payne (Vir Linden)
host bake, map tile, etc - down the chain so LLTextureFetchWorker can adjust behavior as needed
2013-03-06renamed LLTrace stat gathering classes/methods to make the structure of ↵Richard Linden
LLTrace clearer Count becomes CountStatHandle Count.sum becomes sum(Count, value), etc.
2013-01-09Merge. Pull viewer-development in prior to filing DRTVWR merge request.Monty Brandenberg
2012-12-21SH-3357 Texture fetch debugger not running correctly under drano-Monty Brandenberg
http phase 1 Some missing counter initialization kept the debugger from entering the startup state giving the appearance of a do- nothing floater. Also found some unbound recursion that might need looking at in the future. (There's a comment.)
2012-12-04Pull in upstream viewer-development via viewer-lionsimon@Simon-PC.lindenlab.com
2012-12-04Pull and merge viewer-developmentsimon@Simon-PC.lindenlab.com
2012-11-20SH-3406 WIP convert fast timers to lltrace systemRichard Linden
fixes to merge
2012-11-20Automated merge with https://bitbucket.org/lindenlab/viewer-developmentDave Parks
2012-11-19merge with viewer-developmentRichard Linden
2012-11-01SH-3405 FIX convert existing stats to lltrace systemRichard Linden
final removal of remaining LLStat code
2012-09-06Automated merge with http://bitbucket.org/lindenlab/viewer-developmentRichard Linden
2012-09-07DRTVWR-209 Merge of viewer-development with SH-3316 drano-http code.Monty Brandenberg
This was yet another refresh from v-d because of significant changes to lltexturefetch that would not have been resolvable by casual application of any merge tool. There are still a few questions outstanding but this is the initial, optimistic merge.
2012-09-05Merge in latest viewer-developmentsimon@Simon-PC.lindenlab.com
2012-08-21SH-3325 texture load slow on some machinesMonty Brandenberg
This doesn't really address 3325 directly but it is the result of research done while hunting it down. First, this is a thread safety improvement for canceled requests that have gone into resource wait state. I don't think we've seen a failure there but there was a window. It also cleans the resource wait queue earlier which lets us do less work and get requests more quickly into llcorehttp by bypassing the resource wait state. With this, I finally feel comfortable about rundown of requests.
2012-08-19SH-3329 Cached scene loads slower than same scene with cleared cache.Monty Brandenberg
A/B comparison with original code showed the newer issuing lower-priority requests of the cache reader and some other minor changes. Brought them into agreement (this is cargo-cult programming). Made the HTTP resource semaphore an atomic int for rigorous correctness across threads. I swear I'm going to tear down this code someday.
2012-08-17SH-3327 HTTP transfers not showing up in texture console 'net tot tex' value.Monty Brandenberg
Dropped an argument during integration which made the total byte count read lower than expected. Everything else is fine, however.
2012-08-07SH-3275 WIP Run viewer metrics for object update messagesRichard Linden
cleaned up LLStat and removed unnecessary includes
2012-07-19SH-3280 Better init/shutdown functionality for llcorehttp by llappviewerMonty Brandenberg
Isolate llcorehttp initialization into a utility class (LLAppCoreHttp) that provides glue between app and library (sets up policies, handles notifications). Introduce 'TextureFetchConcurrency' debug setting to provide some field control when absolutely necessary.
2012-07-02Merge 3.3.3 release with Drano HTTP library at 3.3.0Monty Brandenberg
Big delta was converting the new texture debugger support code to the new library. Viewer manifest should probably get an eyeball before release.
2012-06-26fix merge conflicts: v-r to dranoXiaohong Bao
2012-06-26v-r to drano merge conflicts wipBrad Payne (Vir Linden)
2012-06-22SH-3177, SH-3180 std::iostream and LLSD serialization for BufferArray objects.Monty Brandenberg
Seems to be working correctly. Not certain this is the fastest possible way to provide a std::streambuf interface but it's visually acceptable.
2012-06-18Tidy Texture Console, add cache & resource wait stats, issue stats line to ↵Monty Brandenberg
log on exit. With much trial-and-error, cleaned up the banner on the texture console and made everything mostly fit. Added global cache read, cache write and resource wait count events to the console display to show if cache is working. On clean exit, emit a log line to report stats to log file (intended for automated tests, maybe): LLTextureFetch::endThread: CacheReads: 2618, CacheWrites: 117, ResWaits: 0, TotalHTTPReq: 117
2012-06-14LLMutex recursive lock, global & per-request tracing, simple GET request, ↵Monty Brandenberg
LLProxy support, HttpOptions starting to work, HTTP resource waiting fixed. Non-LLThread-based threads need to do some registration or LLMutex locks taken out in these threads will not work as expected (SH-3154). We'll get a better solution later, this fixes some things for now. Tracing of operations now supported. Global and per-request (via HttpOptions) tracing levels of [0..3]. The 2 and 3 levels use libcurl's VERBOSE mode combined with CURLOPT_DEBUGFUNCTION to stream high levels of detail into the log. *Very* laggy but useful. Simple GET request supported (no Range: header). Really just a degenrate case of a ranged get but supplied an API anyway. Global option to use the LLProxy interface to setup CURL handles for either socks5 or http proxy usage. This isn't really the most encapsulated way to do this but a better solution will have to come later. The wantHeaders and tracing options are now supported in HttpOptions giving per-request controls. Big refactoring of the HTTP resource waiter in lltexturefetch. What I was doing before wasn't correct. Instead, I'm implementing the resource wait after the Semaphore model (though not using system semaphores). So instead of having a sequence like: SEND_HTTP_REQ -> WAIT_HTTP_RESOURCE -> SEND_HTTP_REQ, we now do WAIT_HTTP_RESOURCE -> WAIT_HTTP_RESOURCE2 (actual wait) -> SEND_HTTP_REQ. Works well but the prioritized filling of the corehttp library needs some performance work later.
2012-06-08Implemented HTTP retry for requests. Went in rather easily whichMonty Brandenberg
surprised me. Added a retry queue similar to ready queue to the policy object which is sorted by retry time. Currently do five retries (after the initial try) delayed by .25, .5, 1, 2 and 5 seconds. Removed the retry logic from the lltexturefetch module. Upped the waiting time in the unit test for the retries. People won't like this but tough, need tests.
2012-06-07Lock/Mutex fixes, documentation, new resource wait state, dtor cleanupsMonty Brandenberg
Went through all the code and tried to document lock and thread usage in the module. There's a huge comment block introducing all of this at the beginning and I believe it's correct (though not quite complete). Keep it updated, people. Added a new state, WAIT_HTTP_RESOURCE, that's sort of a side-state of SEND_HTTP_REQ. If we hit a high-water mark for HTTP requests, the extra are shunted to the new state once. Once levels fall to a low-water mark, we run through a wait list of UUIDs, sort the valid ones by priority and release them for service. This keeps the HTTP layer busy while leaving the active queue shallow enough that requests can still be re-prioritzed cheaply. Priority model changed. The new state uses the PRIORITY_LOW mask, the old users of _LOW are now at PRIORITY_NORMAL and sleepers woken up after an external event are kicked off at PRIORITY_HIGH. This combination along with the new state should avoid priority inversion and keep things running without resorting to an infinite pipeline. New state displays as "HTW" with green text in the texture console. Request cancelation and worker run-down should now be more correct but this edge case may need more attention.