summaryrefslogtreecommitdiff
path: root/indra/llwindow
AgeCommit message (Collapse)Author
2022-05-20SL-17287 Instrument and optimize cubemap render. Fix for cubemap snapshots ↵Dave Parks
doing a full resolution render instead of a 512x512 render.
2022-05-20SL-17287 Update Tracy to 0.8.1. Clean up GPU instrumentation.Dave Parks
2022-04-29SL-17124 make sure window thread wakes up to proces 'quit' messageAndrey Kleshchev
2022-04-29SL-17124 switchContext and loadShaderFile crashesAndrey Kleshchev
- Do not try initializing shaders if requirements are not met or if window does not exist - Warn user before closing window. Situation is unexpected, there is chance of more issues, like a freeze or a crash on close() - mHasMultitexture is a solid requirement, if it is not present, we won't be able to run
2022-04-18Merge branch master (D540) into DRTVWR-546Andrey Kleshchev
# Conflicts: # indra/llcommon/llsdutil.cpp # indra/newview/VIEWER_VERSION.txt # indra/newview/lldrawpoolalpha.cpp # indra/newview/lldrawpoolwater.cpp
2022-03-29SL-17074 fix ALT-F4 handling without impacting alt-zoomDave Houlton
2022-03-24SL-17074 Fix Alt-F4 handling bugDave Houlton
2022-03-01Merge branch 'master' (DRTVWR-557) into DRTVWR-546Andrey Kleshchev
# Conflicts: # autobuild.xml # doc/contributions.txt # indra/cmake/GLOD.cmake # indra/llcommon/tests/llprocess_test.cpp # indra/newview/VIEWER_VERSION.txt # indra/newview/lldrawpoolavatar.cpp # indra/newview/llfloatermodelpreview.cpp # indra/newview/llmodelpreview.cpp # indra/newview/llviewertexturelist.cpp # indra/newview/llvovolume.cpp # indra/newview/viewer_manifest.py
2022-02-28Merge branch 'master' into DRTVWR-540-maintAndrey Lihatskiy
# Conflicts: # autobuild.xml # indra/llcommon/llsys.cpp # indra/newview/app_settings/key_bindings.xml # indra/newview/llfloatereditextdaycycle.cpp
2022-02-17SL-16815 Remove frame stalls from occlusion queries, bumpmap updates, and ↵Dave Parks
querying for available video memory.
2022-01-14SL-16606: Add profiler category WIN32Ptolemy
2021-12-26Merge branch 'master' into DRTVWR-540-maintAndrey Lihatskiy
2021-12-17SL-16454 FIXED Performance viewer login screen is blackMnikolenko Productengine
2021-12-15DRTVWR-546 merge up to 6.5.2Dave Houlton
2021-12-15Merge branch 'master' into DRTVWR-530-maintAndrey Lihatskiy
2021-12-13SL-16467 FIXED "Keyboard layout" is not switchedMnikolenko Productengine
2021-12-09SL-16480 Followup -- fix for unintialized mRect/mClientRect and bad ↵Runitai Linden
getClientRectInScreenSpace
2021-12-09SL-16480 Fix for window not saving its position on exit.Runitai Linden
2021-11-30SL-16386 remove references to (const true) LLGLSLShader::sNoFixedFunctionDave Houlton
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-23SL-16400: Address a couple shutdown crashes.Nat Goodspeed
It can happen that we try to post() work for LLWindowWin32's window thread after the thread's WorkQueue has been closed. Also, instead of giving the "General" ThreadPool static lifespan, put it on the heap, anchored with a static unique_ptr.
2021-11-23SL-16400: Add ThreadPool::start() method, and call it.Nat Goodspeed
It's sometimes important to finish other initialization before launching the threads in the ThreadPool, so make that an explicit step. In particular, we were launching the LLImageGL texture thread before initializing the GL context, resulting in all gray textures.
2021-11-23Merge branch 'glthread' of ssh://bitbucket.org/lindenlab/viewer into glthreadxNat Goodspeed
2021-11-23SL-16094: Fix second startup hang.Nat Goodspeed
Add LLWindowWin32Thread::Post(), like post() except it uses PostMessage() to send the work item to the window thread. Support this in mainWindowProc(). Move LLWindowWin32::recreateWindow()'s destroy_window_handler() call onto the window thread. Delaying destruction of the old HWND ensures that we can use PostMessage() and GetMessage() with that HWND to pass the lambda work item. Moreover, it's likely to be less buggy to call DestroyWindow() on the same thread that created the window. Make recreateWindow()'s window thread lambda bind the window class parameters by value, rather than binding 'this' and back-referencing LLWindowWin32 members. Make recreateWindow() construct the window thread lambda and then decide whether to pass it to the window thread using post() or Post(), depending on whether we have a current HWND -- therefore whether the window thread is blocked on GetMessage(). That means we can eliminate the kickWindowThread() call. Make destroy_window_handler() accept HWND by value rather than by non-const reference. Since it doesn't attempt to modify the caller's value, this is a better match for the function's semantics anyway -- but importantly, it lets us pass a const HWND.
2021-11-22SL-16094 More profile hooks for threading code, remove redundant ↵Runitai Linden
wglCreateContextAttribs call
2021-11-20SL-16289 Rigged mesh rendering overhaulDave Parks
2021-11-19SL-15333 Crash in glh_init_extensionsAndrey Kleshchev
2021-11-19Merge branch 'master' into DRTVWR-540-maintAndrey Lihatskiy
# Conflicts: # indra/newview/llfloatereditextdaycycle.cpp # indra/newview/llviewerinput.cpp
2021-11-17SL-16330 Allow vsync update without restart on macMnikolenko ProductEngine
2021-11-16DRTVWR-546 merge in master v6.5.1Dave Houlton
2021-11-16Merge branch 'master' into DRTVWR-519Andrey Lihatskiy
# Conflicts: # README.md
2021-11-16Merge branch 'master' into DRTVWR-530-maintAndrey Lihatskiy
# Conflicts: # doc/contributions.txt
2021-11-15SL-16094: In LLWindowWin32::recreateWindow(), kick window threadNat Goodspeed
before blocking on the pending future. Otherwise the window thread can remain blocked in a GetMessage() call and deadlock the app.
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-12SL-16220: Merge branch 'origin/DRTVWR-546' into glthreadNat Goodspeed
2021-11-12SL-15333 Crash in glh_init_extensionsAndrey Kleshchev
2021-11-10Merge branch 'DRTVWR-546' into glthreadNat Goodspeed
2021-11-10SL-16094: Statically link to Windows IMM32.LIB.Nat Goodspeed
llwindowwin32.cpp's LLWinImm class used to dynamically load IMM32.DLL and populate its methods using GetProcAddress(). That was to support Windows XP. Since we've dropped Windows XP, use static linking instead, with dramatically fewer lines of code (and less of a thread safety alarm trigger). We retain the LLWinImm wrapper class only as a hook for Tracy instrumentation.
2021-11-09SL-16330 Clean up vertical sync handling, add to UIMnikolenko Productengine
2021-11-08SL-16094: Zap thread safety land mine; thin PostMessage() calls.Nat Goodspeed
LLWindowWin32::mWndProc was a public WNDPROC member. If set non-NULL, mainWindowProc() would call that before falling into its own handler code. But now, mWndProc would be called on the window thread instead of on the main thread. Running arbitrary callback code on the window thread could cause all sorts of problems. It could be made safe by posting the callback call to the "mainloop" WorkQueue for execution on the main thread. But as no code actually references it, delete it instead. Per DaveP, the recent change to LLWindowsWin32Thread::post() could end up calling PostMessage() many times per frame, with nontrivial overhead. Reinstate the more selective code that calls PostMessage() with the dummy message (to bust us out of GetMessage() to check pending window-thread work requests) at most once per frame.
2021-11-05SL-16094: Use ThreadPool for LLWindowWin32Thread.Nat Goodspeed
Move the whole LLWindowWin32Thread class inside LLWindowWin32, and make it a struct. Migrate the struct declaration to llwindowwin32.cpp. Derive it from ThreadPool, which provides the WorkQueue. Use runPending() instead of manually popping and running individual queue items. Make its post() operation always PostMessage(bogus) whenever we put an entry in the WorkQueue, so we won't remain blocked in GetMessage(). Instead of storing a back pointer to the LLWindowWin32 instance, store the relevant HWND and HDC in LLWindowWin32Thread itself to avoid cross-thread timing problems. Extract both instances of a large duplicated block of LLWindowWin32 code to a new recreateWindow() method, and call it in those places. Per the TODO, use a std::future to pass the new HWND and HDC back to LLWindowWin32 -- but also store them locally on the LLWindowWin32Thread instance.
2021-11-05SL-16288 FIXED Dragging a file across the viewer cancels the drag and ↵Mnikolenko Productengine
freezes the File Explorer
2021-10-29SL-14664 Fix missed pixmap initAndrey Kleshchev
2021-10-28SL-9436 Don't render 100% transparent objects.Dave Parks
2021-10-25Merged DRTVWR-546 into SL-15999Vir Linden
2021-10-22mergeBrad Payne (Vir Linden)
2021-10-22SL-16203 Fix for wonky handling of mouse deltas.Dave Parks
2021-10-14SL-16131 Fix for alignment warnings on Win32 builds.Dave Parks
2021-10-11SL-16099 Multi-threaded OpenGL usage on Windows, enable Core Profile and ↵Dave Parks
VAOs by default.