summaryrefslogtreecommitdiff
path: root/indra/llrender/llimagegl.h
AgeCommit message (Collapse)Author
2024-10-20viewer#2741 Don't reallocate image conversion buffer all the timeAndrey Kleshchev
2024-08-22Do deprecated texture swizzle on GPU using GL texture swizzling functions ↵Rye Mutt
(#2389) * Use GL texture swizzling instead of scratch buffer for deprecated formats when GL 3.3 is available Fix crash when GL texture compression is enabled * Fix UI font atlas being eligible for texture compression
2024-08-21Improve accuracy of texture memory tracking (#2371)Rye Mutt
* Fix alloc_tex_image to account for more missing texture memory Change alloc_tex_image calls to pass internal format to properly account for used image type * Fix scaleDown passing primary format in place of internal format to glTexImage2D * Make texture debug view and texture bias calculation consistent and remove double accounting for render target textures
2024-07-03#1870 Tune up for better experience on integrated intel with low memory (#1872)Dave Parks
* More deterministic vsize calculation. Add control for choosing downscale method. * Quick hack to make GLTF preview work again
2024-06-271836 dont store texture in system memory unless absolutely necessary (#1843)Dave Parks
* #1836 Texture memory usage overhaul. Much decrufting - don't keep a copy of textures in system memory - use GPU to downrez textures instead of reloading from cache - use GPU to generate brightness/darkness bumpmaps
2024-05-22Fix line endlingsAnsariel
2024-05-22Merge remote-tracking branch 'origin/main' into DRTVWR-600-maint-AAnsariel
# Conflicts: # autobuild.xml # indra/cmake/CMakeLists.txt # indra/cmake/GoogleMock.cmake # indra/llaudio/llaudioengine_fmodstudio.cpp # indra/llaudio/llaudioengine_fmodstudio.h # indra/llaudio/lllistener_fmodstudio.cpp # indra/llaudio/lllistener_fmodstudio.h # indra/llaudio/llstreamingaudio_fmodstudio.cpp # indra/llaudio/llstreamingaudio_fmodstudio.h # indra/llcharacter/llmultigesture.cpp # indra/llcharacter/llmultigesture.h # indra/llimage/llimage.cpp # indra/llimage/llimagepng.cpp # indra/llimage/llimageworker.cpp # indra/llimage/tests/llimageworker_test.cpp # indra/llmessage/tests/llmockhttpclient.h # indra/llprimitive/llgltfmaterial.h # indra/llrender/llfontfreetype.cpp # indra/llui/llcombobox.cpp # indra/llui/llfolderview.cpp # indra/llui/llfolderviewmodel.h # indra/llui/lllineeditor.cpp # indra/llui/lllineeditor.h # indra/llui/lltextbase.cpp # indra/llui/lltextbase.h # indra/llui/lltexteditor.cpp # indra/llui/lltextvalidate.cpp # indra/llui/lltextvalidate.h # indra/llui/lluictrl.h # indra/llui/llview.cpp # indra/llwindow/llwindowmacosx.cpp # indra/newview/app_settings/settings.xml # indra/newview/llappearancemgr.cpp # indra/newview/llappearancemgr.h # indra/newview/llavatarpropertiesprocessor.cpp # indra/newview/llavatarpropertiesprocessor.h # indra/newview/llbreadcrumbview.cpp # indra/newview/llbreadcrumbview.h # indra/newview/llbreastmotion.cpp # indra/newview/llbreastmotion.h # indra/newview/llconversationmodel.h # indra/newview/lldensityctrl.cpp # indra/newview/lldensityctrl.h # indra/newview/llface.inl # indra/newview/llfloatereditsky.cpp # indra/newview/llfloatereditwater.cpp # indra/newview/llfloateremojipicker.h # indra/newview/llfloaterimsessiontab.cpp # indra/newview/llfloaterprofiletexture.cpp # indra/newview/llfloaterprofiletexture.h # indra/newview/llgesturemgr.cpp # indra/newview/llgesturemgr.h # indra/newview/llimpanel.cpp # indra/newview/llimpanel.h # indra/newview/llinventorybridge.cpp # indra/newview/llinventorybridge.h # indra/newview/llinventoryclipboard.cpp # indra/newview/llinventoryclipboard.h # indra/newview/llinventoryfunctions.cpp # indra/newview/llinventoryfunctions.h # indra/newview/llinventorygallery.cpp # indra/newview/lllistbrowser.cpp # indra/newview/lllistbrowser.h # indra/newview/llpanelobjectinventory.cpp # indra/newview/llpanelprofile.cpp # indra/newview/llpanelprofile.h # indra/newview/llpreviewgesture.cpp # indra/newview/llsavedsettingsglue.cpp # indra/newview/llsavedsettingsglue.h # indra/newview/lltooldraganddrop.cpp # indra/newview/llurllineeditorctrl.cpp # indra/newview/llvectorperfoptions.cpp # indra/newview/llvectorperfoptions.h # indra/newview/llviewerparceloverlay.cpp # indra/newview/llviewertexlayer.cpp # indra/newview/llviewertexturelist.cpp # indra/newview/macmain.h # indra/test/test.cpp
2024-05-07viewer#799 Account for reflection probes' memoryAndrey Kleshchev
2024-04-29#824 Process source files in bulk: replace tabs with spaces, convert CRLF to ↵Andrey Lihatskiy
LF, and trim trailing whitespaces as needed
2024-02-20Convert BOOL to bool in llrenderAnsariel
2024-02-18misc: BOOL to boolLars Næsbye Christensen
2023-09-28Fix integer overflow when framebuffers are extremely high resolution ↵Rye Mutt
resulting in INT_MAX texture bias (#393)
2023-05-08SL-19690: Follow up on Rye Mutt's fix for shutdown crashes.Nat Goodspeed
Rather than continuing to propagate try/catch (Closed) (aka LLThreadSafeQueueInterrupt) constructs through the code base, make WorkQueueBase::post() return bool indicating success (i.e. ! isClosed()). This obviates postIfOpen(), which no one was using anyway. In effect, postIfOpen() is renamed post(), bypassing the exception when isClosed(). Review existing try/catch blocks of that sort, changing to test for post() returning false.
2023-04-05SL-19331: Move media updates off-thread on select hardware (#153)cosmic-linden
* SL-19331: Have media updates on the LLImageGL thread even when texture updates are on the main thread. Add config. Off-thread media updates seem work best performance-wise when using glTexImage2D, not sub_image_lines. Otherwise, there are lots of main thread stalls. * SL-19331: Bump featuretable * SL-19331: Cleanup, annotate comment
2023-03-13SL-19331: Improve performance of setSubImage (ex: media updates)Cosmic Linden
2023-03-10SL-19389: Fix textures not being optimally queued after the fix in SL-19338Cosmic Linden
In the future, some uses of glTexSubImage2D should be better vetted, ex: media prims
2023-03-08SL-19338: Don't use glTexSubImage2D on compressed texturesCosmic Linden
2022-09-16SL-18128 Clear out much OpenGL cruft and switch to core profile on AMDDave Parks
2022-08-30Merge remote-tracking branch 'remotes/origin/DRTVWR-563' into DRTVWR-559Dave Parks
2022-08-26SL-17997 Follow up from beta breakers results.Dave Parks
2022-06-01SL-17485 Add texture memory accounting for OS XDave Parks
2022-05-04SL-17283 LLReflectionMapManager prototype. Remove snapshot code related ↵Dave Parks
overhead from reflection map renders. Add parallax correction and support for multiple reflection maps.
2022-03-29SL-17005 WIP - Use D3D/DXGI to query for available VRAM on WindowsDave Parks
2022-03-11SL-17005 WIP Simplify what feeds texture loading bias to only pay attention ↵Dave Parks
to available memory according to OS and GL driver, not (broken) internal accounting (breaks intel GPUs, compatibility pass incoming).
2022-02-23Fix for media textures failing to update (and eating lots of memory) on ↵Dave Parks
Mac/Intel
2022-02-22SL-16815 Fix for broken media texture updates when multithreaded GL is disabled.Dave Parks
2022-02-17SL-16815 Remove frame stalls from occlusion queries, bumpmap updates, and ↵Dave Parks
querying for available video memory.
2022-02-14SL-16418 Media texture update stall fix. Make media texture updates use ↵Dave Parks
LLImageGL thread to update, fix AMD sync issue on ImageGL thread and install debug callbacks on LLImageGL thread when debug gl enabled.
2022-02-01Revert "Merged in euclid-16418 (pull request #846)"Dave Houlton
This reverts commit 40fe5277e1390c975d9a3184ff8fc46d69dfb450, reversing changes made to af830e5fc5840194be95140f644a27011b9b7e06.
2022-01-27SL-16418 rename media tex image per-update to avoid contention stallDave Houlton
2021-12-06SL-16202 Put Multi-threaded GL behind a feature flag and update featuretable ↵Dave Parks
(decruftify settings, compatibility pass).
2021-12-03SL-16436 and SL-16327 Fix for RenderDebugGL test failures and fix for grey ↵Dave Parks
textures
2021-11-24DRTVWR-546, SL-16220, SL-16094: Undo previous glthread branch revert.Nat Goodspeed
Reverting a merge is sticky: it tells git you never want to see that branch again. Merging the DRTVWR-546 branch, which contained the revert, into the glthread branch undid much of the development work on that branch. To restore it we must revert the revert. This reverts commit 029b41c0419e975bbb28454538b46dc69ce5d2ba.
2021-11-23SL-16094, SL-16400: Merge branch 'DRTVWR-546' into glthreadNat Goodspeed
2021-11-22SL-16400 Fix for grey textures (hack).Runitai Linden
2021-11-15Revert "SL-16220: Merge branch 'origin/DRTVWR-546' into glthread"Dave Houlton
This reverts commit 5188a26a8521251dda07ac0140bb129f28417e49, reversing changes made to 819088563e13f1d75e048311fbaf0df4a79b7e19.
2021-11-05SL-16202: Use WorkQueue::postTo() for texture create/post handshake.Nat Goodspeed
That is, when LLViewerFetchedTexture::scheduleCreateTexture() wants to call createTexture() on the LLImageGLThread, but postCreateTexture() on the main thread, use the "mainloop" WorkQueue to set up the handshake. Give ThreadPool a public virtual run() method so a subclass can override with desired behavior. This necessitates a virtual destructor. Add accessors for embedded WorkQueue (for post calls), ThreadPool name and width (in threads). Allow LLSimpleton::createInstance() to forward arguments to the subject constructor. Make LLImageGLThread an LLSimpleton - that abstraction didn't yet exist at the time LLImageGLThread was coded. Also derive from ThreadPool rather than LLThread. Make it a single-thread "pool" with a very large queue capacity.
2021-11-04SL-16202: Streamline WorkQueues in LLImageGLThread.Nat Goodspeed
Use the new WorkQueue::postIfOpen() method in LLImageGLThread::post(). That makes the LLImageGLThread method a trivial wrapper, which can accept templated work items and pass them through to the WorkQueue method, eliminating double indirection due to multiple layers of std::function. Eliminate LLImageGLThread's WorkQueue intended for work on the main queue. Since the main loop already has a WorkQueue of its own, post work directly to that WorkQueue instead of using a separate WorkQueue misleadingly embedded in LLImageGLThread. Instead of looking up the main thread's WorkQueue every time, capture a pointer in LLImageGL's constructor. We no longer need a fallback queue for when the main thread's WorkQueue is full. We no longer need the main loop to poll LLImageGL to service the local main-thread-targeted WorkQueue, or to copy work from the fallback queue to the main queue. That eliminates LLImageGLThread::postCallback(), mCallbackQueue, mPendingCallbackQ, executeCallbacks() -- and even LLImageGL::updateClass() and LLAppViewer's call to it. Change LLViewerFetchedTexture::scheduleCreateTexture() to post work to the main thread's WorkQueue instead of calling LLImageGLThread::postCallback().
2021-11-01SL-16237 FIXED Viewer hangs on loginMnikolenko Productengine
2021-10-28SL-16148 SL-16244 SL-16270 SL-16253 Remove most BlockTimers, remove ↵Dave Parks
LLMemTracked, introduce alignas, hook most/all reamining allocs, disable synchronous occlusion, and convert frequently accessed LLSingletons to LLSimpleton
2021-10-21SL-16202 Fix for textures appearing black or flashing white due to ↵Dave Parks
optimization bugs.
2021-10-11SL-16099 Multi-threaded OpenGL usage on Windows, enable Core Profile and ↵Dave Parks
VAOs by default.
2020-10-23SL-14150 Fix spellingAndrey Kleshchev
2020-10-22SL-14150 Handle more cases of corrupted cacheAndrey Kleshchev
2018-03-07MergeRider Linden
2018-02-18Atmospherics WIPGraham Linden graham@lindenlab.com
libatmosphere integrated in indra/llrender/llatmosphere.cpp Still working on runtime shaders to use libatmosphere precomputed atmospherics textures
2017-12-18MAINT-8043 Fix for bad_alloc crash in LLImageGL::setImage()AndreyL ProductEngine
2016-10-07MAINT-6635 Fix for LLImageGL::setSize crashAndreyL ProductEngine
2015-11-10remove execute permission from many files that should not have itOz Linden
2014-04-28MAINT-4009: Ensuring that the pick mask for the LLImageGL is always properly ↵Stinson Linden
freed during its cleanup method.