diff options
| author | Callum Linden <113564339+callumlinden@users.noreply.github.com> | 2025-09-04 14:51:34 -0700 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-04 14:51:34 -0700 | 
| commit | 66ccfabdd39a8a54a94d5dbf15364ff7f94a13c2 (patch) | |
| tree | fae8bca7bb3f3ac05972803e2fefc05de8542408 /indra/newview | |
| parent | 0ae3de8f1e78dc74914ea70e725c8324390f3e97 (diff) | |
| parent | 90aa693f2a9ece9f1c624dba245f202e126bca5b (diff) | |
Merge branch 'project/mac_universal' into callum/viewer-cef-2025-08
Diffstat (limited to 'indra/newview')
42 files changed, 526 insertions, 1357 deletions
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 40b6b35704..570c74f1cf 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1466,7 +1466,7 @@ if (DARWIN)    set(viewer_RESOURCE_FILES      secondlife.icns      Info-SecondLife.plist -    SecondLife.xib/ +    SecondLife.xib      # CMake doesn't seem to support Xcode language variants well just yet      English.lproj/InfoPlist.strings      English.lproj/language.txt @@ -1763,7 +1763,7 @@ if (WINDOWS)      # And of course it's straightforward to read a text file in Python.      set(COPY_INPUT_DEPENDENCIES -      # The following commented dependencies are determined at variably at build time. Can't do this here. +      # The following commented dependencies are determined variably at build time. Can't do this here.        app_settings/message.xml        ${CMAKE_SOURCE_DIR}/../scripts/messages/message_template.msg        ${SHARED_LIB_STAGING_DIR}/openjp2.dll @@ -1949,6 +1949,7 @@ if (WINDOWS)  elseif (DARWIN)      set_target_properties(${VIEWER_BINARY_NAME}          PROPERTIES +        RESOURCE SecondLife.xib          LINK_FLAGS_RELEASE "${LINK_FLAGS_RELEASE} -Xlinker -dead_strip -Xlinker -map -Xlinker ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_BINARY_NAME}.MAP"          )  else (WINDOWS) @@ -2005,12 +2006,12 @@ target_link_libraries(${VIEWER_BINARY_NAME}          llcommon          llmeshoptimizer          llwebrtc -        ll::ndof          lllogin          llprimitive          llappearance          ${LLPHYSICSEXTENSIONS_LIBRARIES}          ll::bugsplat +        ll::ndof          ll::tracy          ll::openxr          ) diff --git a/indra/newview/SecondLife.nib b/indra/newview/SecondLife.nib Binary files differdeleted file mode 100644 index c4ddca50dc..0000000000 --- a/indra/newview/SecondLife.nib +++ /dev/null diff --git a/indra/newview/SecondLife.xib b/indra/newview/SecondLife.xib index fbff8fe307..781a390673 100644 --- a/indra/newview/SecondLife.xib +++ b/indra/newview/SecondLife.xib @@ -1,1136 +1,193 @@  <?xml version="1.0" encoding="UTF-8"?> -<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00"> -	<data> -		<int key="IBDocument.SystemTarget">1060</int> -		<string key="IBDocument.SystemVersion">12E55</string> -		<string key="IBDocument.InterfaceBuilderVersion">4457.6</string> -		<string key="IBDocument.AppKitVersion">1187.39</string> -		<string key="IBDocument.HIToolboxVersion">626.00</string> -		<object class="NSMutableDictionary" key="IBDocument.PluginVersions"> -			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> -			<string key="NS.object.0">4457.6</string> -		</object> -		<array key="IBDocument.IntegratedClassDependencies"> -			<string>NSCustomObject</string> -			<string>NSMenu</string> -			<string>NSMenuItem</string> -			<string>NSScrollView</string> -			<string>NSScroller</string> -			<string>NSTextView</string> -			<string>NSView</string> -			<string>NSWindowTemplate</string> -		</array> -		<array key="IBDocument.PluginDependencies"> -			<string>com.apple.InterfaceBuilder.CocoaPlugin</string> -		</array> -		<object class="NSMutableDictionary" key="IBDocument.Metadata"> -			<string key="NS.key.0">PluginDependencyRecalculationVersion</string> -			<integer value="1" key="NS.object.0"/> -		</object> -		<array class="NSMutableArray" key="IBDocument.RootObjects" id="1048"> -			<object class="NSCustomObject" id="1021"> -				<string key="NSClassName">NSApplication</string> -			</object> -			<object class="NSCustomObject" id="1014"> -				<string key="NSClassName">FirstResponder</string> -			</object> -			<object class="NSCustomObject" id="1050"> -				<string key="NSClassName">NSApplication</string> -			</object> -			<object class="NSMenu" id="649796088"> -				<string key="NSTitle">Main Menu</string> -				<array class="NSMutableArray" key="NSMenuItems"> -					<object class="NSMenuItem" id="694149608"> -						<reference key="NSMenu" ref="649796088"/> -						<string key="NSTitle">Second Life</string> -						<string key="NSKeyEquiv"/> -						<int key="NSMnemonicLoc">2147483647</int> -						<object class="NSCustomResource" key="NSOnImage" id="353210768"> -							<string key="NSClassName">NSImage</string> -							<string key="NSResourceName">NSMenuCheckmark</string> -						</object> -						<object class="NSCustomResource" key="NSMixedImage" id="549394948"> -							<string key="NSClassName">NSImage</string> -							<string key="NSResourceName">NSMenuMixedState</string> -						</object> -						<string key="NSAction">submenuAction:</string> -						<object class="NSMenu" key="NSSubmenu" id="110575045"> -							<string key="NSTitle">Second Life</string> -							<array class="NSMutableArray" key="NSMenuItems"> -								<object class="NSMenuItem" id="238522557"> -									<reference key="NSMenu" ref="110575045"/> -									<string key="NSTitle">About Second Life</string> -									<string key="NSKeyEquiv"/> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -								<object class="NSMenuItem" id="304266470"> -									<reference key="NSMenu" ref="110575045"/> -									<bool key="NSIsDisabled">YES</bool> -									<bool key="NSIsSeparator">YES</bool> -									<string key="NSTitle"/> -									<string key="NSKeyEquiv"/> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -								<object class="NSMenuItem" id="609285721"> -									<reference key="NSMenu" ref="110575045"/> -									<string key="NSTitle">Preferences…</string> -									<string key="NSKeyEquiv">,</string> -									<int key="NSKeyEquivModMask">1048576</int> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -								<object class="NSMenuItem" id="481834944"> -									<reference key="NSMenu" ref="110575045"/> -									<bool key="NSIsDisabled">YES</bool> -									<bool key="NSIsSeparator">YES</bool> -									<string key="NSTitle"/> -									<string key="NSKeyEquiv"/> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -								<object class="NSMenuItem" id="1046388886"> -									<reference key="NSMenu" ref="110575045"/> -									<string key="NSTitle">Services</string> -									<string key="NSKeyEquiv"/> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -									<string key="NSAction">submenuAction:</string> -									<object class="NSMenu" key="NSSubmenu" id="752062318"> -										<string key="NSTitle">Services</string> -										<array class="NSMutableArray" key="NSMenuItems"/> -										<string key="NSName">_NSServicesMenu</string> -									</object> -								</object> -								<object class="NSMenuItem" id="646227648"> -									<reference key="NSMenu" ref="110575045"/> -									<bool key="NSIsDisabled">YES</bool> -									<bool key="NSIsSeparator">YES</bool> -									<string key="NSTitle"/> -									<string key="NSKeyEquiv"/> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -								<object class="NSMenuItem" id="755159360"> -									<reference key="NSMenu" ref="110575045"/> -									<string key="NSTitle">Hide Second Life</string> -									<string key="NSKeyEquiv">h</string> -									<int key="NSKeyEquivModMask">1048576</int> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -								<object class="NSMenuItem" id="342932134"> -									<reference key="NSMenu" ref="110575045"/> -									<string key="NSTitle">Hide Others</string> -									<string key="NSKeyEquiv">h</string> -									<int key="NSKeyEquivModMask">1572864</int> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -								<object class="NSMenuItem" id="908899353"> -									<reference key="NSMenu" ref="110575045"/> -									<string key="NSTitle">Show All</string> -									<string key="NSKeyEquiv"/> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -								<object class="NSMenuItem" id="1056857174"> -									<reference key="NSMenu" ref="110575045"/> -									<bool key="NSIsDisabled">YES</bool> -									<bool key="NSIsSeparator">YES</bool> -									<string key="NSTitle"/> -									<string key="NSKeyEquiv"/> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -								<object class="NSMenuItem" id="632727374"> -									<reference key="NSMenu" ref="110575045"/> -									<string key="NSTitle">Quit Second Life</string> -									<string key="NSKeyEquiv">q</string> -									<int key="NSKeyEquivModMask">1048576</int> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -							</array> -							<string key="NSName">_NSAppleMenu</string> -						</object> -					</object> -					<object class="NSMenuItem" id="725688984"> -						<reference key="NSMenu" ref="649796088"/> -						<string key="NSTitle">Edit</string> -						<string key="NSKeyEquiv"/> -						<int key="NSMnemonicLoc">2147483647</int> -						<reference key="NSOnImage" ref="353210768"/> -						<reference key="NSMixedImage" ref="549394948"/> -						<string key="NSAction">submenuAction:</string> -						<object class="NSMenu" key="NSSubmenu" id="701759256"> -							<string key="NSTitle">Edit</string> -							<array class="NSMutableArray" key="NSMenuItems"> -								<object class="NSMenuItem" id="521487141"> -									<reference key="NSMenu" ref="701759256"/> -									<string key="NSTitle">Undo</string> -									<string key="NSKeyEquiv">z</string> -									<int key="NSKeyEquivModMask">1048576</int> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -								<object class="NSMenuItem" id="668936019"> -									<reference key="NSMenu" ref="701759256"/> -									<string key="NSTitle">Redo</string> -									<string key="NSKeyEquiv">Z</string> -									<int key="NSKeyEquivModMask">1048576</int> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -								<object class="NSMenuItem" id="383018193"> -									<reference key="NSMenu" ref="701759256"/> -									<bool key="NSIsDisabled">YES</bool> -									<bool key="NSIsSeparator">YES</bool> -									<string key="NSTitle"/> -									<string key="NSKeyEquiv"/> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -								<object class="NSMenuItem" id="984623395"> -									<reference key="NSMenu" ref="701759256"/> -									<string key="NSTitle">Cut</string> -									<string key="NSKeyEquiv">x</string> -									<int key="NSKeyEquivModMask">1048576</int> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -								<object class="NSMenuItem" id="656529582"> -									<reference key="NSMenu" ref="701759256"/> -									<string key="NSTitle">Copy</string> -									<string key="NSKeyEquiv">c</string> -									<int key="NSKeyEquivModMask">1048576</int> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -								<object class="NSMenuItem" id="1032676691"> -									<reference key="NSMenu" ref="701759256"/> -									<string key="NSTitle">Paste</string> -									<string key="NSKeyEquiv">v</string> -									<int key="NSKeyEquivModMask">1048576</int> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -								<object class="NSMenuItem" id="538907583"> -									<reference key="NSMenu" ref="701759256"/> -									<string key="NSTitle">Select All</string> -									<string key="NSKeyEquiv">a</string> -									<int key="NSKeyEquivModMask">1048576</int> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -							</array> -						</object> -					</object> -					<object class="NSMenuItem" id="713487014"> -						<reference key="NSMenu" ref="649796088"/> -						<string key="NSTitle">Window</string> -						<string key="NSKeyEquiv"/> -						<int key="NSMnemonicLoc">2147483647</int> -						<reference key="NSOnImage" ref="353210768"/> -						<reference key="NSMixedImage" ref="549394948"/> -						<string key="NSAction">submenuAction:</string> -						<object class="NSMenu" key="NSSubmenu" id="835318025"> -							<string key="NSTitle">Window</string> -							<array class="NSMutableArray" key="NSMenuItems"> -								<object class="NSMenuItem" id="1011231497"> -									<reference key="NSMenu" ref="835318025"/> -									<string key="NSTitle">Minimize</string> -									<string key="NSKeyEquiv">m</string> -									<int key="NSKeyEquivModMask">1048576</int> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -								<object class="NSMenuItem" id="575023229"> -									<reference key="NSMenu" ref="835318025"/> -									<string key="NSTitle">Zoom</string> -									<string key="NSKeyEquiv"/> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -								<object class="NSMenuItem" id="86356408"> -									<reference key="NSMenu" ref="835318025"/> -									<string key="NSTitle">Enter Full Screen</string> -									<string key="NSKeyEquiv">f</string> -									<int key="NSKeyEquivModMask">1310720</int> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -								<object class="NSMenuItem" id="299356726"> -									<reference key="NSMenu" ref="835318025"/> -									<bool key="NSIsDisabled">YES</bool> -									<bool key="NSIsSeparator">YES</bool> -									<string key="NSTitle"/> -									<string key="NSKeyEquiv"/> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -								<object class="NSMenuItem" id="625202149"> -									<reference key="NSMenu" ref="835318025"/> -									<string key="NSTitle">Bring All to Front</string> -									<string key="NSKeyEquiv"/> -									<int key="NSMnemonicLoc">2147483647</int> -									<reference key="NSOnImage" ref="353210768"/> -									<reference key="NSMixedImage" ref="549394948"/> -								</object> -							</array> -							<string key="NSName">_NSWindowsMenu</string> -						</object> -					</object> -					<object class="NSMenuItem" id="391199113"> -						<reference key="NSMenu" ref="649796088"/> -						<string key="NSTitle">Help</string> -						<string key="NSKeyEquiv"/> -						<int key="NSMnemonicLoc">2147483647</int> -						<reference key="NSOnImage" ref="353210768"/> -						<reference key="NSMixedImage" ref="549394948"/> -					</object> -				</array> -				<string key="NSName">_NSMainMenu</string> -			</object> -			<object class="NSCustomObject" id="756173070"> -				<string key="NSClassName">LLAppDelegate</string> -			</object> -			<object class="NSWindowTemplate" id="110292814"> -				<int key="NSWindowStyleMask">15</int> -				<int key="NSWindowBacking">2</int> -				<string key="NSWindowRect">{{196, 240}, {1024, 600}}</string> -				<int key="NSWTFlags">74974208</int> -				<string key="NSWindowTitle">Second Life</string> -				<string key="NSWindowClass">LLNSWindow</string> -				<nil key="NSViewClass"/> -				<nil key="NSUserInterfaceItemIdentifier"/> -				<object class="NSView" key="NSWindowView" id="305280978"> -					<reference key="NSNextResponder"/> -					<int key="NSvFlags">256</int> -					<array class="NSMutableArray" key="NSSubviews"/> -					<string key="NSFrameSize">{1024, 600}</string> -					<reference key="NSSuperview"/> -					<reference key="NSWindow"/> -					<string key="NSReuseIdentifierKey">_NS:20</string> -				</object> -				<string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string> -				<string key="NSMaxSize">{10000000000000, 10000000000000}</string> -				<string key="NSFrameAutosaveName">Second Life</string> -				<int key="NSWindowCollectionBehavior">128</int> -				<bool key="NSWindowIsRestorable">NO</bool> -			</object> -			<object class="NSWindowTemplate" id="979091056"> -				<int key="NSWindowStyleMask">31</int> -				<int key="NSWindowBacking">2</int> -				<string key="NSWindowRect">{{272, 176}, {938, 42}}</string> -				<int key="NSWTFlags">-1535638528</int> -				<string key="NSWindowTitle">Input Window</string> -				<string key="NSWindowClass">LLUserInputWindow</string> -				<nil key="NSViewClass"/> -				<nil key="NSUserInterfaceItemIdentifier"/> -				<object class="NSView" key="NSWindowView" id="1044753903"> -					<reference key="NSNextResponder"/> -					<int key="NSvFlags">256</int> -					<array class="NSMutableArray" key="NSSubviews"> -						<object class="NSScrollView" id="238626476"> -							<reference key="NSNextResponder" ref="1044753903"/> -							<int key="NSvFlags">256</int> -							<array class="NSMutableArray" key="NSSubviews"> -								<object class="NSClipView" id="871543330"> -									<reference key="NSNextResponder" ref="238626476"/> -									<int key="NSvFlags">2322</int> -									<array class="NSMutableArray" key="NSSubviews"> -										<object class="NSTextView" id="395788163"> -											<reference key="NSNextResponder" ref="871543330"/> -											<int key="NSvFlags">2322</int> -											<set class="NSMutableSet" key="NSDragTypes"> -												<string>Apple HTML pasteboard type</string> -												<string>Apple PDF pasteboard type</string> -												<string>Apple PICT pasteboard type</string> -												<string>Apple PNG pasteboard type</string> -												<string>Apple URL pasteboard type</string> -												<string>CorePasteboardFlavorType 0x6D6F6F76</string> -												<string>NSColor pasteboard type</string> -												<string>NSFilenamesPboardType</string> -												<string>NSStringPboardType</string> -												<string>NeXT Encapsulated PostScript v1.2 pasteboard type</string> -												<string>NeXT RTFD pasteboard type</string> -												<string>NeXT Rich Text Format v1.0 pasteboard type</string> -												<string>NeXT TIFF v4.0 pasteboard type</string> -												<string>NeXT font pasteboard type</string> -												<string>NeXT ruler pasteboard type</string> -												<string>WebURLsWithTitlesPboardType</string> -												<string>public.url</string> -											</set> -											<string key="NSFrameSize">{938, 42}</string> -											<reference key="NSSuperview" ref="871543330"/> -											<reference key="NSWindow"/> -											<reference key="NSNextKeyView" ref="339833963"/> -											<string key="NSReuseIdentifierKey">_NS:13</string> -											<object class="NSTextContainer" key="NSTextContainer" id="648552009"> -												<object class="NSLayoutManager" key="NSLayoutManager"> -													<object class="NSTextStorage" key="NSTextStorage"> -														<object class="NSMutableString" key="NSString"> -															<characters key="NS.bytes"/> -														</object> -														<nil key="NSDelegate"/> -													</object> -													<array class="NSMutableArray" key="NSTextContainers"> -														<reference ref="648552009"/> -													</array> -													<int key="NSLMFlags">166</int> -													<nil key="NSDelegate"/> -												</object> -												<reference key="NSTextView" ref="395788163"/> -												<double key="NSWidth">938</double> -												<int key="NSTCFlags">1</int> -											</object> -											<object class="NSTextViewSharedData" key="NSSharedData"> -												<int key="NSFlags">67121127</int> -												<int key="NSTextCheckingTypes">0</int> -												<nil key="NSMarkedAttributes"/> -												<object class="NSColor" key="NSBackgroundColor" id="535647664"> -													<int key="NSColorSpace">3</int> -													<bytes key="NSWhite">MQA</bytes> -												</object> -												<dictionary key="NSSelectedAttributes"> -													<object class="NSColor" key="NSBackgroundColor"> -														<int key="NSColorSpace">6</int> -														<string key="NSCatalogName">System</string> -														<string key="NSColorName">selectedTextBackgroundColor</string> -														<object class="NSColor" key="NSColor"> -															<int key="NSColorSpace">3</int> -															<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes> -														</object> -													</object> -													<object class="NSColor" key="NSColor"> -														<int key="NSColorSpace">6</int> -														<string key="NSCatalogName">System</string> -														<string key="NSColorName">selectedTextColor</string> -														<object class="NSColor" key="NSColor" id="835883401"> -															<int key="NSColorSpace">3</int> -															<bytes key="NSWhite">MAA</bytes> -														</object> -													</object> -												</dictionary> -												<reference key="NSInsertionColor" ref="835883401"/> -												<dictionary key="NSLinkAttributes"> -													<object class="NSColor" key="NSColor"> -														<int key="NSColorSpace">1</int> -														<bytes key="NSRGB">MCAwIDEAA</bytes> -													</object> -													<object class="NSCursor" key="NSCursor"> -														<string key="NSHotSpot">{8, -8}</string> -														<int key="NSCursorType">13</int> -													</object> -													<integer value="1" key="NSUnderline"/> -												</dictionary> -												<nil key="NSDefaultParagraphStyle"/> -												<nil key="NSTextFinder"/> -												<int key="NSPreferredTextFinderStyle">1</int> -											</object> -											<int key="NSTVFlags">6</int> -											<string key="NSMaxSize">{939, 10000000}</string> -											<nil key="NSDelegate"/> -										</object> -									</array> -									<string key="NSFrame">{{1, 1}, {938, 42}}</string> -									<reference key="NSSuperview" ref="238626476"/> -									<reference key="NSWindow"/> -									<reference key="NSNextKeyView" ref="395788163"/> -									<string key="NSReuseIdentifierKey">_NS:11</string> -									<reference key="NSDocView" ref="395788163"/> -									<reference key="NSBGColor" ref="535647664"/> -									<object class="NSCursor" key="NSCursor"> -										<string key="NSHotSpot">{4, 5}</string> -										<object class="NSImage" key="NSImage"> -											<int key="NSImageFlags">79691776</int> -											<array key="NSReps"> -												<array> -													<integer value="5"/> -													<object class="NSURL"> -														<nil key="NS.base"/> -														<string key="NS.relative">file://localhost/Applications/Xcode.app/Contents/SharedFrameworks/DVTKit.framework/Resources/DVTIbeamCursor.tiff</string> -													</object> -												</array> -											</array> -											<object class="NSColor" key="NSColor"> -												<int key="NSColorSpace">3</int> -												<bytes key="NSWhite">MCAwAA</bytes> -											</object> -										</object> -									</object> -									<int key="NScvFlags">4</int> -								</object> -								<object class="NSScroller" id="339833963"> -									<reference key="NSNextResponder" ref="238626476"/> -									<int key="NSvFlags">256</int> -									<string key="NSFrame">{{923, 1}, {16, 42}}</string> -									<reference key="NSSuperview" ref="238626476"/> -									<reference key="NSWindow"/> -									<reference key="NSNextKeyView"/> -									<string key="NSReuseIdentifierKey">_NS:83</string> -									<bool key="NSAllowsLogicalLayoutDirection">NO</bool> -									<reference key="NSTarget" ref="238626476"/> -									<string key="NSAction">_doScroller:</string> -									<double key="NSPercent">0.96666666666666667</double> -								</object> -								<object class="NSScroller" id="1067057765"> -									<reference key="NSNextResponder" ref="238626476"/> -									<int key="NSvFlags">-2147483392</int> -									<string key="NSFrame">{{-100, -100}, {87, 18}}</string> -									<reference key="NSSuperview" ref="238626476"/> -									<reference key="NSWindow"/> -									<reference key="NSNextKeyView" ref="871543330"/> -									<string key="NSReuseIdentifierKey">_NS:33</string> -									<bool key="NSAllowsLogicalLayoutDirection">NO</bool> -									<int key="NSsFlags">1</int> -									<reference key="NSTarget" ref="238626476"/> -									<string key="NSAction">_doScroller:</string> -									<double key="NSCurValue">1</double> -									<double key="NSPercent">0.94565218687057495</double> -								</object> -							</array> -							<string key="NSFrame">{{-1, -1}, {940, 44}}</string> -							<reference key="NSSuperview" ref="1044753903"/> -							<reference key="NSWindow"/> -							<reference key="NSNextKeyView" ref="1067057765"/> -							<string key="NSReuseIdentifierKey">_NS:9</string> -							<int key="NSsFlags">133138</int> -							<reference key="NSVScroller" ref="339833963"/> -							<reference key="NSHScroller" ref="1067057765"/> -							<reference key="NSContentView" ref="871543330"/> -							<double key="NSMinMagnification">0.25</double> -							<double key="NSMaxMagnification">4</double> -							<double key="NSMagnification">1</double> -						</object> -					</array> -					<string key="NSFrameSize">{938, 42}</string> -					<reference key="NSSuperview"/> -					<reference key="NSWindow"/> -					<reference key="NSNextKeyView" ref="238626476"/> -					<string key="NSReuseIdentifierKey">_NS:21</string> -				</object> -				<string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string> -				<string key="NSMaxSize">{10000000000000, 10000000000000}</string> -				<bool key="NSWindowIsRestorable">YES</bool> -			</object> -		</array> -		<object class="IBObjectContainer" key="IBDocument.Objects"> -			<array class="NSMutableArray" key="connectionRecords"> -				<object class="IBConnectionRecord"> -					<object class="IBActionConnection" key="connection"> -						<string key="label">terminate:</string> -						<reference key="source" ref="1050"/> -						<reference key="destination" ref="632727374"/> -					</object> -					<int key="connectionID">823</int> -				</object> -				<object class="IBConnectionRecord"> -					<object class="IBActionConnection" key="connection"> -						<string key="label">orderFrontStandardAboutPanel:</string> -						<reference key="source" ref="1021"/> -						<reference key="destination" ref="238522557"/> -					</object> -					<int key="connectionID">142</int> -				</object> -				<object class="IBConnectionRecord"> -					<object class="IBOutletConnection" key="connection"> -						<string key="label">delegate</string> -						<reference key="source" ref="1021"/> -						<reference key="destination" ref="756173070"/> -					</object> -					<int key="connectionID">845</int> -				</object> -				<object class="IBConnectionRecord"> -					<object class="IBActionConnection" key="connection"> -						<string key="label">performMiniaturize:</string> -						<reference key="source" ref="1014"/> -						<reference key="destination" ref="1011231497"/> -					</object> -					<int key="connectionID">37</int> -				</object> -				<object class="IBConnectionRecord"> -					<object class="IBActionConnection" key="connection"> -						<string key="label">arrangeInFront:</string> -						<reference key="source" ref="1014"/> -						<reference key="destination" ref="625202149"/> -					</object> -					<int key="connectionID">39</int> -				</object> -				<object class="IBConnectionRecord"> -					<object class="IBActionConnection" key="connection"> -						<string key="label">performZoom:</string> -						<reference key="source" ref="1014"/> -						<reference key="destination" ref="575023229"/> -					</object> -					<int key="connectionID">240</int> -				</object> -				<object class="IBConnectionRecord"> -					<object class="IBActionConnection" key="connection"> -						<string key="label">hide:</string> -						<reference key="source" ref="1014"/> -						<reference key="destination" ref="755159360"/> -					</object> -					<int key="connectionID">369</int> -				</object> -				<object class="IBConnectionRecord"> -					<object class="IBActionConnection" key="connection"> -						<string key="label">hideOtherApplications:</string> -						<reference key="source" ref="1014"/> -						<reference key="destination" ref="342932134"/> -					</object> -					<int key="connectionID">370</int> -				</object> -				<object class="IBConnectionRecord"> -					<object class="IBActionConnection" key="connection"> -						<string key="label">unhideAllApplications:</string> -						<reference key="source" ref="1014"/> -						<reference key="destination" ref="908899353"/> -					</object> -					<int key="connectionID">372</int> -				</object> -				<object class="IBConnectionRecord"> -					<object class="IBActionConnection" key="connection"> -						<string key="label">cut:</string> -						<reference key="source" ref="1014"/> -						<reference key="destination" ref="984623395"/> -					</object> -					<int key="connectionID">768</int> -				</object> -				<object class="IBConnectionRecord"> -					<object class="IBActionConnection" key="connection"> -						<string key="label">paste:</string> -						<reference key="source" ref="1014"/> -						<reference key="destination" ref="1032676691"/> -					</object> -					<int key="connectionID">769</int> -				</object> -				<object class="IBConnectionRecord"> -					<object class="IBActionConnection" key="connection"> -						<string key="label">undo:</string> -						<reference key="source" ref="1014"/> -						<reference key="destination" ref="521487141"/> -					</object> -					<int key="connectionID">776</int> -				</object> -				<object class="IBConnectionRecord"> -					<object class="IBActionConnection" key="connection"> -						<string key="label">copy:</string> -						<reference key="source" ref="1014"/> -						<reference key="destination" ref="656529582"/> -					</object> -					<int key="connectionID">782</int> -				</object> -				<object class="IBConnectionRecord"> -					<object class="IBActionConnection" key="connection"> -						<string key="label">selectAll:</string> -						<reference key="source" ref="1014"/> -						<reference key="destination" ref="538907583"/> -					</object> -					<int key="connectionID">785</int> -				</object> -				<object class="IBConnectionRecord"> -					<object class="IBActionConnection" key="connection"> -						<string key="label">toggleFullScreen:</string> -						<reference key="source" ref="1014"/> -						<reference key="destination" ref="86356408"/> -					</object> -					<int key="connectionID">842</int> -				</object> -				<object class="IBConnectionRecord"> -					<object class="IBOutletConnection" key="connection"> -						<string key="label">window</string> -						<reference key="source" ref="756173070"/> -						<reference key="destination" ref="110292814"/> -					</object> -					<int key="connectionID">850</int> -				</object> -				<object class="IBConnectionRecord"> -					<object class="IBOutletConnection" key="connection"> -						<string key="label">inputWindow</string> -						<reference key="source" ref="756173070"/> -						<reference key="destination" ref="979091056"/> -					</object> -					<int key="connectionID">953</int> -				</object> -				<object class="IBConnectionRecord"> -					<object class="IBOutletConnection" key="connection"> -						<string key="label">inputView</string> -						<reference key="source" ref="756173070"/> -						<reference key="destination" ref="395788163"/> -					</object> -					<int key="connectionID">954</int> -				</object> -			</array> -			<object class="IBMutableOrderedSet" key="objectRecords"> -				<array key="orderedObjects"> -					<object class="IBObjectRecord"> -						<int key="objectID">0</int> -						<array key="object" id="0"/> -						<reference key="children" ref="1048"/> -						<nil key="parent"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">-2</int> -						<reference key="object" ref="1021"/> -						<reference key="parent" ref="0"/> -						<string key="objectName">File's Owner</string> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">-1</int> -						<reference key="object" ref="1014"/> -						<reference key="parent" ref="0"/> -						<string key="objectName">First Responder</string> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">-3</int> -						<reference key="object" ref="1050"/> -						<reference key="parent" ref="0"/> -						<string key="objectName">Application</string> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">29</int> -						<reference key="object" ref="649796088"/> -						<array class="NSMutableArray" key="children"> -							<reference ref="713487014"/> -							<reference ref="694149608"/> -							<reference ref="391199113"/> -							<reference ref="725688984"/> -						</array> -						<reference key="parent" ref="0"/> -						<string key="objectName">Main Menu</string> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">19</int> -						<reference key="object" ref="713487014"/> -						<array class="NSMutableArray" key="children"> -							<reference ref="835318025"/> -						</array> -						<reference key="parent" ref="649796088"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">56</int> -						<reference key="object" ref="694149608"/> -						<array class="NSMutableArray" key="children"> -							<reference ref="110575045"/> -						</array> -						<reference key="parent" ref="649796088"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">103</int> -						<reference key="object" ref="391199113"/> -						<array class="NSMutableArray" key="children"/> -						<reference key="parent" ref="649796088"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">57</int> -						<reference key="object" ref="110575045"/> -						<array class="NSMutableArray" key="children"> -							<reference ref="238522557"/> -							<reference ref="755159360"/> -							<reference ref="908899353"/> -							<reference ref="632727374"/> -							<reference ref="646227648"/> -							<reference ref="609285721"/> -							<reference ref="481834944"/> -							<reference ref="304266470"/> -							<reference ref="1046388886"/> -							<reference ref="1056857174"/> -							<reference ref="342932134"/> -						</array> -						<reference key="parent" ref="694149608"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">58</int> -						<reference key="object" ref="238522557"/> -						<reference key="parent" ref="110575045"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">134</int> -						<reference key="object" ref="755159360"/> -						<reference key="parent" ref="110575045"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">150</int> -						<reference key="object" ref="908899353"/> -						<reference key="parent" ref="110575045"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">136</int> -						<reference key="object" ref="632727374"/> -						<reference key="parent" ref="110575045"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">144</int> -						<reference key="object" ref="646227648"/> -						<reference key="parent" ref="110575045"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">129</int> -						<reference key="object" ref="609285721"/> -						<reference key="parent" ref="110575045"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">143</int> -						<reference key="object" ref="481834944"/> -						<reference key="parent" ref="110575045"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">236</int> -						<reference key="object" ref="304266470"/> -						<reference key="parent" ref="110575045"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">131</int> -						<reference key="object" ref="1046388886"/> -						<array class="NSMutableArray" key="children"> -							<reference ref="752062318"/> -						</array> -						<reference key="parent" ref="110575045"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">149</int> -						<reference key="object" ref="1056857174"/> -						<reference key="parent" ref="110575045"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">145</int> -						<reference key="object" ref="342932134"/> -						<reference key="parent" ref="110575045"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">130</int> -						<reference key="object" ref="752062318"/> -						<reference key="parent" ref="1046388886"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">24</int> -						<reference key="object" ref="835318025"/> -						<array class="NSMutableArray" key="children"> -							<reference ref="299356726"/> -							<reference ref="625202149"/> -							<reference ref="575023229"/> -							<reference ref="1011231497"/> -							<reference ref="86356408"/> -						</array> -						<reference key="parent" ref="713487014"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">92</int> -						<reference key="object" ref="299356726"/> -						<reference key="parent" ref="835318025"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">5</int> -						<reference key="object" ref="625202149"/> -						<reference key="parent" ref="835318025"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">239</int> -						<reference key="object" ref="575023229"/> -						<reference key="parent" ref="835318025"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">23</int> -						<reference key="object" ref="1011231497"/> -						<reference key="parent" ref="835318025"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">711</int> -						<reference key="object" ref="725688984"/> -						<array class="NSMutableArray" key="children"> -							<reference ref="701759256"/> -						</array> -						<reference key="parent" ref="649796088"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">712</int> -						<reference key="object" ref="701759256"/> -						<array class="NSMutableArray" key="children"> -							<reference ref="521487141"/> -							<reference ref="668936019"/> -							<reference ref="383018193"/> -							<reference ref="984623395"/> -							<reference ref="656529582"/> -							<reference ref="1032676691"/> -							<reference ref="538907583"/> -						</array> -						<reference key="parent" ref="725688984"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">716</int> -						<reference key="object" ref="984623395"/> -						<reference key="parent" ref="701759256"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">717</int> -						<reference key="object" ref="656529582"/> -						<reference key="parent" ref="701759256"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">718</int> -						<reference key="object" ref="1032676691"/> -						<reference key="parent" ref="701759256"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">721</int> -						<reference key="object" ref="538907583"/> -						<reference key="parent" ref="701759256"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">824</int> -						<reference key="object" ref="756173070"/> -						<reference key="parent" ref="0"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">841</int> -						<reference key="object" ref="86356408"/> -						<reference key="parent" ref="835318025"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">828</int> -						<reference key="object" ref="110292814"/> -						<array class="NSMutableArray" key="children"> -							<reference ref="305280978"/> -						</array> -						<reference key="parent" ref="0"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">829</int> -						<reference key="object" ref="305280978"/> -						<array class="NSMutableArray" key="children"/> -						<reference key="parent" ref="110292814"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">713</int> -						<reference key="object" ref="521487141"/> -						<reference key="parent" ref="701759256"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">714</int> -						<reference key="object" ref="668936019"/> -						<reference key="parent" ref="701759256"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">715</int> -						<reference key="object" ref="383018193"/> -						<reference key="parent" ref="701759256"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">941</int> -						<reference key="object" ref="979091056"/> -						<array class="NSMutableArray" key="children"> -							<reference ref="1044753903"/> -						</array> -						<reference key="parent" ref="0"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">942</int> -						<reference key="object" ref="1044753903"/> -						<array class="NSMutableArray" key="children"> -							<reference ref="238626476"/> -						</array> -						<reference key="parent" ref="979091056"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">943</int> -						<reference key="object" ref="238626476"/> -						<array class="NSMutableArray" key="children"> -							<reference ref="395788163"/> -							<reference ref="1067057765"/> -							<reference ref="339833963"/> -						</array> -						<reference key="parent" ref="1044753903"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">944</int> -						<reference key="object" ref="395788163"/> -						<reference key="parent" ref="238626476"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">945</int> -						<reference key="object" ref="1067057765"/> -						<reference key="parent" ref="238626476"/> -					</object> -					<object class="IBObjectRecord"> -						<int key="objectID">946</int> -						<reference key="object" ref="339833963"/> -						<reference key="parent" ref="238626476"/> -					</object> -				</array> -			</object> -			<dictionary class="NSMutableDictionary" key="flattenedProperties"> -				<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="103.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="129.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="130.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="131.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="134.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="136.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="143.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="144.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="145.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="149.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="150.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="19.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="23.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="236.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="239.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="24.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="29.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="56.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="57.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="58.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="711.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="712.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="713.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="714.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="715.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="716.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="717.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="718.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="721.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="824.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<boolean value="YES" key="828.IBNSWindowAutoPositionCentersHorizontal"/> -				<boolean value="YES" key="828.IBNSWindowAutoPositionCentersVertical"/> -				<string key="828.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<boolean value="YES" key="828.NSWindowTemplate.visibleAtLaunch"/> -				<string key="829.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="841.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="92.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="941.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<boolean value="NO" key="941.NSWindowTemplate.visibleAtLaunch"/> -				<string key="942.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="943.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="944.CustomClassName">LLNonInlineTextView</string> -				<string key="944.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="945.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -				<string key="946.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> -			</dictionary> -			<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/> -			<nil key="activeLocalization"/> -			<dictionary class="NSMutableDictionary" key="localizations"/> -			<nil key="sourceID"/> -			<int key="maxID">954</int> -		</object> -		<object class="IBClassDescriber" key="IBDocument.Classes"> -			<array class="NSMutableArray" key="referencedPartialClassDescriptions"> -				<object class="IBPartialClassDescription"> -					<string key="className">LLAppDelegate</string> -					<string key="superclassName">NSObject</string> -					<dictionary class="NSMutableDictionary" key="outlets"> -						<string key="inputView">LLNonInlineTextView</string> -						<string key="inputWindow">NSWindow</string> -						<string key="window">LLNSWindow</string> -					</dictionary> -					<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName"> -						<object class="IBToOneOutletInfo" key="inputView"> -							<string key="name">inputView</string> -							<string key="candidateClassName">LLNonInlineTextView</string> -						</object> -						<object class="IBToOneOutletInfo" key="inputWindow"> -							<string key="name">inputWindow</string> -							<string key="candidateClassName">NSWindow</string> -						</object> -						<object class="IBToOneOutletInfo" key="window"> -							<string key="name">window</string> -							<string key="candidateClassName">LLNSWindow</string> -						</object> -					</dictionary> -					<object class="IBClassDescriptionSource" key="sourceIdentifier"> -						<string key="majorKey">IBProjectSource</string> -						<string key="minorKey">./Classes/LLAppDelegate.h</string> -					</object> -				</object> -				<object class="IBPartialClassDescription"> -					<string key="className">LLNSWindow</string> -					<string key="superclassName">NSWindow</string> -					<object class="IBClassDescriptionSource" key="sourceIdentifier"> -						<string key="majorKey">IBProjectSource</string> -						<string key="minorKey">./Classes/LLNSWindow.h</string> -					</object> -				</object> -				<object class="IBPartialClassDescription"> -					<string key="className">LLNonInlineTextView</string> -					<string key="superclassName">NSTextView</string> -					<object class="IBClassDescriptionSource" key="sourceIdentifier"> -						<string key="majorKey">IBProjectSource</string> -						<string key="minorKey">./Classes/LLNonInlineTextView.h</string> -					</object> -				</object> -				<object class="IBPartialClassDescription"> -					<string key="className">LLUserInputWindow</string> -					<string key="superclassName">NSPanel</string> -					<object class="IBClassDescriptionSource" key="sourceIdentifier"> -						<string key="majorKey">IBProjectSource</string> -						<string key="minorKey">./Classes/LLUserInputWindow.h</string> -					</object> -				</object> -				<object class="IBPartialClassDescription"> -					<string key="className">NSTextView</string> -					<dictionary class="NSMutableDictionary" key="actions"> -						<string key="orderFrontSharingServicePicker:">id</string> -						<string key="toggleQuickLookPreviewPanel:">id</string> -					</dictionary> -					<dictionary class="NSMutableDictionary" key="actionInfosByName"> -						<object class="IBActionInfo" key="orderFrontSharingServicePicker:"> -							<string key="name">orderFrontSharingServicePicker:</string> -							<string key="candidateClassName">id</string> -						</object> -						<object class="IBActionInfo" key="toggleQuickLookPreviewPanel:"> -							<string key="name">toggleQuickLookPreviewPanel:</string> -							<string key="candidateClassName">id</string> -						</object> -					</dictionary> -					<object class="IBClassDescriptionSource" key="sourceIdentifier"> -						<string key="majorKey">IBProjectSource</string> -						<string key="minorKey">./Classes/NSTextView.h</string> -					</object> -				</object> -			</array> -		</object> -		<int key="IBDocument.localizationMode">0</int> -		<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string> -		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies"> -			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string> -			<real value="1060" key="NS.object.0"/> -		</object> -		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies"> -			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string> -			<integer value="4600" key="NS.object.0"/> -		</object> -		<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> -		<int key="IBDocument.defaultPropertyAccessControl">3</int> -		<dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes"> -			<string key="NSMenuCheckmark">{11, 11}</string> -			<string key="NSMenuMixedState">{10, 3}</string> -		</dictionary> -	</data> -</archive> +<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="23504" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES"> +    <dependencies> +        <deployment version="110000" identifier="macosx"/> +        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23504"/> +        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> +    </dependencies> +    <objects> +        <customObject id="-2" userLabel="File's Owner" customClass="NSApplication"> +            <connections> +                <outlet property="delegate" destination="824" id="845"/> +            </connections> +        </customObject> +        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> +        <customObject id="-3" userLabel="Application" customClass="NSObject"/> +        <menu title="Main Menu" systemMenu="main" id="29" userLabel="Main Menu"> +            <items> +                <menuItem title="Second Life" id="56"> +                    <modifierMask key="keyEquivalentModifierMask"/> +                    <menu key="submenu" title="Second Life" systemMenu="apple" id="57"> +                        <items> +                            <menuItem title="About Second Life" id="58"> +                                <modifierMask key="keyEquivalentModifierMask"/> +                                <connections> +                                    <action selector="orderFrontStandardAboutPanel:" target="-2" id="142"/> +                                </connections> +                            </menuItem> +                            <menuItem isSeparatorItem="YES" id="236"/> +                            <menuItem title="Preferences…" keyEquivalent="," id="129"/> +                            <menuItem isSeparatorItem="YES" id="143"/> +                            <menuItem title="Services" id="131"> +                                <modifierMask key="keyEquivalentModifierMask"/> +                                <menu key="submenu" title="Services" systemMenu="services" id="130"/> +                            </menuItem> +                            <menuItem isSeparatorItem="YES" id="144"/> +                            <menuItem title="Hide Second Life" keyEquivalent="h" id="134"> +                                <connections> +                                    <action selector="hide:" target="-1" id="369"/> +                                </connections> +                            </menuItem> +                            <menuItem title="Hide Others" keyEquivalent="h" id="145"> +                                <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/> +                                <connections> +                                    <action selector="hideOtherApplications:" target="-1" id="370"/> +                                </connections> +                            </menuItem> +                            <menuItem title="Show All" id="150"> +                                <modifierMask key="keyEquivalentModifierMask"/> +                                <connections> +                                    <action selector="unhideAllApplications:" target="-1" id="372"/> +                                </connections> +                            </menuItem> +                            <menuItem isSeparatorItem="YES" id="149"/> +                            <menuItem title="Quit Second Life" keyEquivalent="q" id="136"> +                                <connections> +                                    <action selector="terminate:" target="-3" id="823"/> +                                </connections> +                            </menuItem> +                        </items> +                    </menu> +                </menuItem> +                <menuItem title="Edit" id="711"> +                    <modifierMask key="keyEquivalentModifierMask"/> +                    <menu key="submenu" title="Edit" id="712"> +                        <items> +                            <menuItem title="Undo" keyEquivalent="z" id="713"> +                                <connections> +                                    <action selector="undo:" target="-1" id="776"/> +                                </connections> +                            </menuItem> +                            <menuItem title="Redo" keyEquivalent="Z" id="714"/> +                            <menuItem isSeparatorItem="YES" id="715"/> +                            <menuItem title="Cut" keyEquivalent="x" id="716"> +                                <connections> +                                    <action selector="cut:" target="-1" id="768"/> +                                </connections> +                            </menuItem> +                            <menuItem title="Copy" keyEquivalent="c" id="717"> +                                <connections> +                                    <action selector="copy:" target="-1" id="782"/> +                                </connections> +                            </menuItem> +                            <menuItem title="Paste" keyEquivalent="v" id="718"> +                                <connections> +                                    <action selector="paste:" target="-1" id="769"/> +                                </connections> +                            </menuItem> +                            <menuItem title="Select All" keyEquivalent="a" id="721"> +                                <connections> +                                    <action selector="selectAll:" target="-1" id="785"/> +                                </connections> +                            </menuItem> +                        </items> +                    </menu> +                </menuItem> +                <menuItem title="Window" id="19"> +                    <modifierMask key="keyEquivalentModifierMask"/> +                    <menu key="submenu" title="Window" systemMenu="window" id="24"> +                        <items> +                            <menuItem title="Minimize" keyEquivalent="m" id="23"> +                                <connections> +                                    <action selector="performMiniaturize:" target="-1" id="37"/> +                                </connections> +                            </menuItem> +                            <menuItem title="Zoom" id="239"> +                                <modifierMask key="keyEquivalentModifierMask"/> +                                <connections> +                                    <action selector="performZoom:" target="-1" id="240"/> +                                </connections> +                            </menuItem> +                            <menuItem title="Enter Full Screen" keyEquivalent="f" id="841"> +                                <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/> +                                <connections> +                                    <action selector="toggleFullScreen:" target="-1" id="842"/> +                                </connections> +                            </menuItem> +                            <menuItem isSeparatorItem="YES" id="92"/> +                            <menuItem title="Bring All to Front" id="5"> +                                <modifierMask key="keyEquivalentModifierMask"/> +                                <connections> +                                    <action selector="arrangeInFront:" target="-1" id="39"/> +                                </connections> +                            </menuItem> +                        </items> +                    </menu> +                </menuItem> +                <menuItem title="Help" id="103"> +                    <modifierMask key="keyEquivalentModifierMask"/> +                </menuItem> +            </items> +            <point key="canvasLocation" x="87" y="149"/> +        </menu> +        <customObject id="824" customClass="LLAppDelegate"> +            <connections> +                <outlet property="inputView" destination="944" id="954"/> +                <outlet property="inputWindow" destination="941" id="953"/> +                <outlet property="window" destination="828" id="850"/> +            </connections> +        </customObject> +        <window title="Second Life" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" deferred="NO" frameAutosaveName="Second Life" animationBehavior="default" id="828" customClass="LLNSWindow"> +            <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/> +            <windowCollectionBehavior key="collectionBehavior" fullScreenPrimary="YES"/> +            <rect key="contentRect" x="196" y="240" width="1024" height="600"/> +            <rect key="screenRect" x="0.0" y="0.0" width="1728" height="1079"/> +            <view key="contentView" id="829"> +                <rect key="frame" x="0.0" y="0.0" width="1024" height="600"/> +                <autoresizingMask key="autoresizingMask"/> +            </view> +            <point key="canvasLocation" x="-48" y="-285"/> +        </window> +        <window title="Input Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" hidesOnDeactivate="YES" visibleAtLaunch="NO" animationBehavior="default" id="941" customClass="LLUserInputWindow"> +            <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" utility="YES"/> +            <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/> +            <rect key="contentRect" x="272" y="176" width="938" height="42"/> +            <rect key="screenRect" x="0.0" y="0.0" width="1728" height="1079"/> +            <view key="contentView" id="942"> +                <rect key="frame" x="0.0" y="0.0" width="938" height="42"/> +                <autoresizingMask key="autoresizingMask"/> +                <subviews> +                    <scrollView fixedFrame="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="943"> +                        <rect key="frame" x="-1" y="-1" width="940" height="44"/> +                        <autoresizingMask key="autoresizingMask"/> +                        <clipView key="contentView" id="Mvi-Vb-2zK"> +                            <rect key="frame" x="1" y="1" width="923" height="42"/> +                            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> +                            <subviews> +                                <textView importsGraphics="NO" verticallyResizable="YES" usesFontPanel="YES" findStyle="panel" continuousSpellChecking="YES" allowsUndo="YES" usesRuler="YES" spellingCorrection="YES" smartInsertDelete="YES" id="944" customClass="LLNonInlineTextView"> +                                    <rect key="frame" x="0.0" y="0.0" width="923" height="42"/> +                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> +                                    <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> +                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> +                                    <size key="minSize" width="923" height="42"/> +                                    <size key="maxSize" width="940" height="10000000"/> +                                    <color key="insertionPointColor" name="textColor" catalog="System" colorSpace="catalog"/> +                                </textView> +                            </subviews> +                            <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> +                        </clipView> +                        <scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="945"> +                            <rect key="frame" x="-100" y="-100" width="87" height="18"/> +                            <autoresizingMask key="autoresizingMask"/> +                        </scroller> +                        <scroller key="verticalScroller" verticalHuggingPriority="750" horizontal="NO" id="946"> +                            <rect key="frame" x="924" y="1" width="15" height="42"/> +                            <autoresizingMask key="autoresizingMask"/> +                        </scroller> +                    </scrollView> +                </subviews> +            </view> +            <point key="canvasLocation" x="87" y="144"/> +        </window> +    </objects> +</document> diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index b26a34e470..77f5bec5b2 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -7.2.1 +7.2.2 diff --git a/indra/newview/app_settings/shaders/class1/deferred/SMAA.glsl b/indra/newview/app_settings/shaders/class1/deferred/SMAA.glsl index fdb77cce6e..5837308965 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/SMAA.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/SMAA.glsl @@ -1351,6 +1351,10 @@ float4 SMAABlendingWeightCalculationPS(float2 texcoord,  //-----------------------------------------------------------------------------  // Neighborhood Blending Pixel Shader (Third Pass) +vec3 srgb_to_linear(vec3 cs); +vec4 srgb_to_linear4(vec4 cs); +vec3 linear_to_srgb(vec3 cl); +  float4 SMAANeighborhoodBlendingPS(float2 texcoord,                                    float4 offset,                                    SMAATexture2D(colorTex), @@ -1369,6 +1373,7 @@ float4 SMAANeighborhoodBlendingPS(float2 texcoord,      SMAA_BRANCH      if (dot(a, float4(1.0, 1.0, 1.0, 1.0)) < 1e-5) {          float4 color = SMAASampleLevelZero(colorTex, texcoord); +        color.rgb = srgb_to_linear(color.rgb);          #if SMAA_REPROJECTION          float2 velocity = SMAA_DECODE_VELOCITY(SMAASampleLevelZero(velocityTex, texcoord)); @@ -1377,6 +1382,7 @@ float4 SMAANeighborhoodBlendingPS(float2 texcoord,          color.a = sqrt(5.0 * length(velocity));          #endif +        color.rgb = linear_to_srgb(color.rgb);          return color;      } else {          bool h = max(a.x, a.z) > max(a.y, a.w); // max(horizontal) > max(vertical) @@ -1393,8 +1399,13 @@ float4 SMAANeighborhoodBlendingPS(float2 texcoord,          // We exploit bilinear filtering to mix current pixel with the chosen          // neighbor: -        float4 color = blendingWeight.x * SMAASampleLevelZero(colorTex, blendingCoord.xy); -        color += blendingWeight.y * SMAASampleLevelZero(colorTex, blendingCoord.zw); +        float4 color = SMAASampleLevelZero(colorTex, blendingCoord.xy); +        color.rgb = srgb_to_linear(color.rgb); +        color = blendingWeight.x * color; + +        float4 color2 = SMAASampleLevelZero(colorTex, blendingCoord.zw); +        color2.rgb = srgb_to_linear(color2.rgb); +        color += blendingWeight.y * color2;          #if SMAA_REPROJECTION          // Antialias velocity for proper reprojection in a later stage: @@ -1405,6 +1416,7 @@ float4 SMAANeighborhoodBlendingPS(float2 texcoord,          color.a = sqrt(5.0 * length(velocity));          #endif +        color.rgb = linear_to_srgb(color.rgb);          return color;      }  } diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi index 77f24ac6a6..0e36698018 100644 --- a/indra/newview/installers/windows/installer_template.nsi +++ b/indra/newview/installers/windows/installer_template.nsi @@ -164,6 +164,74 @@ Var DO_UNINSTALL_V2     # If non-null, path to a previous Viewer 2 installation  !include "x64.nsh"			# for 64bit detection
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 +;; Substring function
 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 +!define StrStr "!insertmacro StrStr"
 + 
 +!macro StrStr ResultVar String SubString
 +  Push `${String}`
 +  Push `${SubString}`
 +  Call StrStr
 +  Pop `${ResultVar}`
 +!macroend
 + 
 +Function StrStr
 +
 +# After this point:
 +# ------------------------------------------
 +# $R0 = SubString (input)
 +# $R1 = String (input)
 +# $R2 = SubStringLen (temp)
 +# $R3 = StrLen (temp)
 +# $R4 = StartCharPos (temp)
 +# $R5 = TempStr (temp)
 +# function from nsis.sourceforge.io/StrStr
 + 
 +  ;Get input from user
 +  Exch $R0
 +  Exch
 +  Exch $R1
 +  Push $R2
 +  Push $R3
 +  Push $R4
 +  Push $R5
 + 
 +  ;Get "String" and "SubString" length
 +  StrLen $R2 $R0
 +  StrLen $R3 $R1
 +  ;Start "StartCharPos" counter
 +  StrCpy $R4 0
 + 
 +  ;Loop until "SubString" is found or "String" reaches its end
 +  ${Do}
 +    ;Remove everything before and after the searched part ("TempStr")
 +    StrCpy $R5 $R1 $R2 $R4
 + 
 +    ;Compare "TempStr" with "SubString"
 +    ${IfThen} $R5 == $R0 ${|} ${ExitDo} ${|}
 +    ;If not "SubString", this could be "String"'s end
 +    ${IfThen} $R4 >= $R3 ${|} ${ExitDo} ${|}
 +    ;If not, continue the loop
 +    IntOp $R4 $R4 + 1
 +  ${Loop}
 + 
 +# After this point:
 +# ------------------------------------------
 +# $R0 = ResultVar (output)
 + 
 +  ;Remove part before "SubString" on "String" (if there has one)
 +  StrCpy $R0 $R1 `` $R4
 + 
 +  ;Return output to user
 +  Pop $R5
 +  Pop $R4
 +  Pop $R3
 +  Pop $R2
 +  Pop $R1
 +  Exch $R0
 +FunctionEnd
 +
 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;; Pre-directory page callback
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  Function dirPre
 @@ -190,15 +258,31 @@ Function .onInit  # However, SL-10506 complains about the resulting behavior, so the logic below
  # is adapted from before we introduced MultiUser.nsh.
 +# Check if user specified /D= on the command line
 +System::Call 'kernel32::GetCommandLine()t .r0'
 +Push $0
 +Push " /D="
 +Call StrStr
 +Pop $1
 +${If} $1 != ""
 +    # /D= was specified, extract the path
 +    # spaces are allowed in path after /D=, it's expected to be the last parameter
 +    StrLen $2 $1 
 +    StrCpy $INSTDIR $1 $2 4	# Skip over " /D="
 +    Goto after_instdir
 +${EndIf}
 +
  # if $0 is empty, this is the first time for this viewer name
  ReadRegStr $0 SHELL_CONTEXT "${INSTNAME_KEY}" ""
  # viewer with this name was installed before
  ${If} $0 != ""
 -	# use the value we got from registry as install location
 +    # use the value we got from registry as install location
      StrCpy $INSTDIR $0
  ${EndIf}
 +after_instdir:
 +
  Call CheckCPUFlags							# Make sure we have SSE2 support
  Call CheckWindowsVersion					# Don't install On unsupported systems
      Push $0
 diff --git a/indra/newview/llappdelegate-objc.mm b/indra/newview/llappdelegate-objc.mm index d4b05dde72..b8fd3dc189 100644 --- a/indra/newview/llappdelegate-objc.mm +++ b/indra/newview/llappdelegate-objc.mm @@ -372,7 +372,7 @@ struct AttachmentInfo  - (void)sendEvent:(NSEvent *)event  {      [super sendEvent:event]; -    if ([event type] == NSKeyUp && ([event modifierFlags] & NSCommandKeyMask)) +    if ([event type] == NSEventTypeKeyUp && ([event modifierFlags] & NSEventModifierFlagCommand))      {             [[self keyWindow] sendEvent:event];      } diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 7a1154a992..9eb0d3fade 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -993,6 +993,7 @@ bool LLAppViewer::init()          return false;      } +#if defined(LL_X86) || defined(LL_X86_64)      // Without SSE2 support we will crash almost immediately, warn here.      if (!gSysCPU.hasSSE2())      { @@ -1004,6 +1005,7 @@ bool LLAppViewer::init()          // quit immediately          return false;      } +#endif      // alert the user if they are using unsupported hardware      if (!gSavedSettings.getBOOL("AlertedUnsupportedHardware")) @@ -1289,7 +1291,7 @@ void LLAppViewer::initMaxHeapSize()      //------------------------------------------------------------------------------------------      //currently SL is built under 32-bit setting, we set its max heap size no more than 1.6 GB. - #ifndef LL_X86_64 + #if !defined(LL_X86_64) && !defined(LL_ARM64)      F32Gigabytes max_heap_size_gb = (F32Gigabytes)gSavedSettings.getF32("MaxHeapSize") ;  #else      F32Gigabytes max_heap_size_gb = (F32Gigabytes)gSavedSettings.getF32("MaxHeapSize64"); @@ -1352,6 +1354,7 @@ bool LLAppViewer::doFrame()  #endif      LL_RECORD_BLOCK_TIME(FTM_FRAME); +    LL_PROFILE_GPU_ZONE("Frame");      {      // and now adjust the visuals from previous frame.      if(LLPerfStats::tunables.userAutoTuneEnabled && LLPerfStats::tunables.tuningFlag != LLPerfStats::Tunables::Nothing) @@ -1441,24 +1444,26 @@ bool LLAppViewer::doFrame()          if (!LLApp::isExiting())          { -            LL_PROFILE_ZONE_NAMED_CATEGORY_APP("df JoystickKeyboard"); -            pingMainloopTimeout("Main:JoystickKeyboard"); - -            // Scan keyboard for movement keys.  Command keys and typing -            // are handled by windows callbacks.  Don't do this until we're -            // done initializing.  JC -            if (gViewerWindow -                && (gHeadlessClient || gViewerWindow->getWindow()->getVisible()) -                && gViewerWindow->getActive() -                && !gViewerWindow->getWindow()->getMinimized() -                && LLStartUp::getStartupState() == STATE_STARTED -                && (gHeadlessClient || !gViewerWindow->getShowProgress()) -                && !gFocusMgr.focusLocked())              { -                LLPerfStats::RecordSceneTime T (LLPerfStats::StatType_t::RENDER_IDLE); -                joystick->scanJoystick(); -                gKeyboard->scanKeyboard(); -                gViewerInput.scanMouse(); +                LL_PROFILE_ZONE_NAMED_CATEGORY_APP("df JoystickKeyboard"); +                pingMainloopTimeout("Main:JoystickKeyboard"); + +                // Scan keyboard for movement keys.  Command keys and typing +                // are handled by windows callbacks.  Don't do this until we're +                // done initializing.  JC +                if (gViewerWindow +                    && (gHeadlessClient || gViewerWindow->getWindow()->getVisible()) +                    && gViewerWindow->getActive() +                    && !gViewerWindow->getWindow()->getMinimized() +                    && LLStartUp::getStartupState() == STATE_STARTED +                    && (gHeadlessClient || !gViewerWindow->getShowProgress()) +                    && !gFocusMgr.focusLocked()) +                { +                    LLPerfStats::RecordSceneTime T(LLPerfStats::StatType_t::RENDER_IDLE); +                    joystick->scanJoystick(); +                    gKeyboard->scanKeyboard(); +                    gViewerInput.scanMouse(); +                }              }              // Update state based on messages, user input, object idle. @@ -3167,17 +3172,6 @@ bool LLAppViewer::initWindow()      LLNotificationsUI::LLNotificationManager::getInstance(); - -#ifdef LL_DARWIN -    //Satisfy both MAINT-3135 (OSX 10.6 and earlier) MAINT-3288 (OSX 10.7 and later) -    LLOSInfo& os_info = LLOSInfo::instance(); -    if (os_info.mMajorVer == 10 && os_info.mMinorVer < 7) -    { -        if ( os_info.mMinorVer == 6 && os_info.mBuild < 8 ) -            gViewerWindow->getWindow()->setOldResize(true); -    } -#endif -      if (gSavedSettings.getBOOL("WindowMaximized"))      {          gViewerWindow->getWindow()->maximize(); @@ -3292,6 +3286,11 @@ LLSD LLAppViewer::getViewerInfo() const      info["VIEWER_VERSION_STR"] = versionInfo.getVersion();      info["CHANNEL"] = versionInfo.getChannel();      info["ADDRESS_SIZE"] = ADDRESS_SIZE; +#if LL_ARM64 +    info["ARCHITECTURE"] = "ARM"; +#else +    info["ARCHITECTURE"] = "x86"; +#endif      std::string build_config = versionInfo.getBuildConfig();      if (build_config != "Release")      { @@ -5659,8 +5658,10 @@ void LLAppViewer::forceErrorBreakpoint()  #ifdef LL_WINDOWS      DebugBreak();  #else +#if defined(LL_X86) || defined(LL_X86_64)      asm ("int $3");  #endif +#endif      return;  } diff --git a/indra/newview/llappviewerlinux.cpp b/indra/newview/llappviewerlinux.cpp index 1709970156..89d19d180b 100644 --- a/indra/newview/llappviewerlinux.cpp +++ b/indra/newview/llappviewerlinux.cpp @@ -73,6 +73,11 @@ static void exceptionTerminateHandler()  int main( int argc, char **argv )  { +    // Call Tracy first thing to have it allocate memory +    // https://github.com/wolfpld/tracy/issues/196 +    LL_PROFILER_FRAME_END; +    LL_PROFILER_SET_THREAD_NAME("App"); +      gArgC = argc;      gArgV = argv; diff --git a/indra/newview/llappviewermacosx-objc.h b/indra/newview/llappviewermacosx-objc.h index d0ae0a7fc2..3fbf4202f1 100644 --- a/indra/newview/llappviewermacosx-objc.h +++ b/indra/newview/llappviewermacosx-objc.h @@ -30,9 +30,6 @@  #include <string>  #include <vector> -//Why?  Because BOOL -void launchApplication(const std::string* app_name, const std::vector<std::string>* args); -  void force_ns_sxeption();  #endif // LL_LLAPPVIEWERMACOSX_OBJC_H diff --git a/indra/newview/llappviewermacosx-objc.mm b/indra/newview/llappviewermacosx-objc.mm index 9b6bfe621b..2ea3f2f171 100644 --- a/indra/newview/llappviewermacosx-objc.mm +++ b/indra/newview/llappviewermacosx-objc.mm @@ -33,45 +33,6 @@  #include "llappviewermacosx-objc.h" -void launchApplication(const std::string* app_name, const std::vector<std::string>* args) -{ - -    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; -     -	if (app_name->empty()) return; - -	NSMutableString* app_name_ns = [NSMutableString stringWithString:[[NSBundle mainBundle] resourcePath]];	//Path to resource dir -	[app_name_ns appendFormat:@"/%@", [NSString stringWithCString:app_name->c_str()  -								encoding:[NSString defaultCStringEncoding]]]; - -	NSMutableArray *args_ns = nil; -	args_ns = [[NSMutableArray alloc] init]; - -	for (int i=0; i < args->size(); ++i) -	{ -        NSLog(@"Adding string %s", (*args)[i].c_str()); -		[args_ns addObject: -			[NSString stringWithCString:(*args)[i].c_str() -						encoding:[NSString defaultCStringEncoding]]]; -	} - -    NSTask *task = [[NSTask alloc] init]; -    NSBundle *bundle = [NSBundle bundleWithPath:[[NSWorkspace sharedWorkspace] fullPathForApplication:app_name_ns]]; -    [task setLaunchPath:[bundle executablePath]]; -    [task setArguments:args_ns]; -    [task launch]; -     -//	NSWorkspace *workspace = [NSWorkspace sharedWorkspace]; -//	NSURL *url = [NSURL fileURLWithPath:[workspace fullPathForApplication:app_name_ns]]; -// -//	NSError *error = nil; -//	[workspace launchApplicationAtURL:url options:0 configuration:[NSDictionary dictionaryWithObject:args_ns forKey:NSWorkspaceLaunchConfigurationArguments] error:&error]; -	//TODO Handle error -     -    [pool release]; -	return; -} -  void force_ns_sxeption()  {      NSException *exception = [NSException exceptionWithName:@"Forced NSException" reason:nullptr userInfo:nullptr]; diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp index aab6d00573..b074c40c17 100644 --- a/indra/newview/llappviewermacosx.cpp +++ b/indra/newview/llappviewermacosx.cpp @@ -258,6 +258,11 @@ void infos(const std::string& message)  int main( int argc, char **argv )  { +    // Call Tracy first thing to have it allocate memory +    // https://github.com/wolfpld/tracy/issues/196 +    LL_PROFILER_FRAME_END; +    LL_PROFILER_SET_THREAD_NAME("App"); +      // Store off the command line args for use later.      gArgC = argc;      gArgV = argv; diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp index 8477bd3044..6386d0636a 100644 --- a/indra/newview/llappviewerwin32.cpp +++ b/indra/newview/llappviewerwin32.cpp @@ -253,8 +253,8 @@ void ll_nvapi_init(NvDRSSessionHandle hSession)      NvAPI_UnicodeString profile_name;      std::string app_name = LLTrans::getString("APP_NAME"); -    llutf16string w_app_name = utf8str_to_utf16str(app_name); -    wsprintf(profile_name, L"%s", w_app_name.c_str()); +    std::wstring w_app_name = ll_convert<std::wstring>(app_name); +    wsprintf(reinterpret_cast<wchar_t*>(profile_name), L"%s", w_app_name.c_str());      NvDRSProfileHandle hProfile = 0;      // (3) Check if we already have an application profile for the viewer      status = NvAPI_DRS_FindProfileByName(hSession, profile_name, &hProfile); @@ -271,7 +271,7 @@ void ll_nvapi_init(NvDRSSessionHandle hSession)          NVDRS_PROFILE profileInfo;          profileInfo.version = NVDRS_PROFILE_VER;          profileInfo.isPredefined = 0; -        wsprintf(profileInfo.profileName, L"%s", w_app_name.c_str()); +        wsprintf(reinterpret_cast<wchar_t*>(profileInfo.profileName), L"%s", w_app_name.c_str());          status = NvAPI_DRS_CreateProfile(hSession, &profileInfo, &hProfile);          if (status != NVAPI_OK) @@ -286,9 +286,9 @@ void ll_nvapi_init(NvDRSSessionHandle hSession)      NVDRS_APPLICATION profile_application;      profile_application.version = NVDRS_APPLICATION_VER; -    llutf16string w_exe_name = utf8str_to_utf16str(exe_name); +    std::wstring w_exe_name = ll_convert<std::wstring>(exe_name);      NvAPI_UnicodeString profile_app_name; -    wsprintf(profile_app_name, L"%s", w_exe_name.c_str()); +    wsprintf(reinterpret_cast<wchar_t*>(profile_app_name), L"%s", w_exe_name.c_str());      status = NvAPI_DRS_GetApplicationInfo(hSession, hProfile, profile_app_name, &profile_application);      if (status != NVAPI_OK && status != NVAPI_EXECUTABLE_NOT_FOUND) @@ -304,10 +304,10 @@ void ll_nvapi_init(NvDRSSessionHandle hSession)          NVDRS_APPLICATION application;          application.version = NVDRS_APPLICATION_VER;          application.isPredefined = 0; -        wsprintf(application.appName, L"%s", w_exe_name.c_str()); -        wsprintf(application.userFriendlyName, L"%s", w_exe_name.c_str()); -        wsprintf(application.launcher, L"%s", w_exe_name.c_str()); -        wsprintf(application.fileInFolder, L"%s", ""); +        wsprintf(reinterpret_cast<wchar_t*>(application.appName), L"%s", w_exe_name.c_str()); +        wsprintf(reinterpret_cast<wchar_t*>(application.userFriendlyName), L"%s", w_exe_name.c_str()); +        wsprintf(reinterpret_cast<wchar_t*>(application.launcher), L"%s", w_exe_name.c_str()); +        wsprintf(reinterpret_cast<wchar_t*>(application.fileInFolder), L"%s", "");          status = NvAPI_DRS_CreateApplication(hSession, hProfile, &application);          if (status != NVAPI_OK) @@ -581,7 +581,7 @@ void LLAppViewerWin32::disableWinErrorReporting()  {      std::string executable_name = gDirUtilp->getExecutableFilename(); -    if( S_OK == WerAddExcludedApplication( utf8str_to_utf16str(executable_name).c_str(), FALSE ) ) +    if( S_OK == WerAddExcludedApplication(ll_convert<std::wstring>(executable_name).c_str(), FALSE ) )      {          LL_INFOS() << "WerAddExcludedApplication() succeeded for " << executable_name << LL_ENDL;      } diff --git a/indra/newview/lldrawpool.h b/indra/newview/lldrawpool.h index 1c8864a9df..46696fc4a4 100644 --- a/indra/newview/lldrawpool.h +++ b/indra/newview/lldrawpool.h @@ -204,7 +204,7 @@ public:          NUM_RENDER_TYPES,      }; -    #ifdef LL_PROFILER_ENABLE_RENDER_DOC +    #if LL_PROFILER_ENABLE_RENDER_DOC      static inline const char* lookupPassName(U32 pass)      {          switch (pass) @@ -340,7 +340,7 @@ public:          }      }      #else -    static inline const char* lookupPass(U32 pass) { return ""; } +    static inline const char* lookupPassName(U32 pass) { return ""; }      #endif      LLRenderPass(const U32 type); diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 373a556f86..f08ef8d24a 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -767,9 +767,6 @@ static void xform4a(LLVector4a &tex_coord, const LLVector4a& trans, const LLVect      // Texture transforms are done about the center of the face.      st.setAdd(tex_coord, trans); -    // Handle rotation -    LLVector4a rot_st; -      // <s0 * cosAng, s0*-sinAng, s1*cosAng, s1*-sinAng>      LLVector4a s0;      s0.splat(st, 0); @@ -842,7 +839,6 @@ bool LLFace::genVolumeBBoxes(const LLVolume &volume, S32 f,          //VECTORIZE THIS          LLMatrix4a mat_vert;          mat_vert.loadu(mat_vert_in); -        LLVector4a new_extents[2];          llassert(less_than_max_mag(face.mExtents[0]));          llassert(less_than_max_mag(face.mExtents[1])); @@ -2255,8 +2251,6 @@ bool LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius)                          if (joint)                          { -                            LLVector4a jointPos; -                              LLMatrix4a worldMat;                              worldMat.loadu((F32*)&joint->getWorldMatrix().mMatrix[0][0]); diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp index 41e954b7fa..0e754c9561 100644 --- a/indra/newview/llfilepicker.cpp +++ b/indra/newview/llfilepicker.cpp @@ -287,7 +287,7 @@ bool LLFilePicker::getOpenFile(ELoadFilter filter, bool blocking)      success = GetOpenFileName(&mOFN);      if (success)      { -        std::string filename = utf16str_to_utf8str(llutf16string(mFilesW)); +        std::string filename = ll_convert<std::string>(std::wstring(mFilesW));          mFiles.push_back(filename);      } @@ -353,7 +353,7 @@ bool LLFilePicker::getMultipleOpenFiles(ELoadFilter filter, bool blocking)          // lengths.          if( wcslen(mOFN.lpstrFile) > mOFN.nFileOffset ) /*Flawfinder: ignore*/          { -            std::string filename = utf16str_to_utf8str(llutf16string(mFilesW)); +            std::string filename = ll_convert<std::string>(std::wstring(mFilesW));              mFiles.push_back(filename);          }          else @@ -367,7 +367,7 @@ bool LLFilePicker::getMultipleOpenFiles(ELoadFilter filter, bool blocking)                      break;                  if (*tptrw == 0)                      tptrw++; // shouldn't happen? -                std::string filename = utf16str_to_utf8str(llutf16string(tptrw)); +                std::string filename = ll_convert<std::string>(std::wstring(tptrw));                  if (dirname.empty())                      dirname = filename + "\\";                  else @@ -413,7 +413,7 @@ bool LLFilePicker::getSaveFile(ESaveFilter filter, const std::string& filename,      mOFN.lpstrFile = mFilesW;      if (!filename.empty())      { -        llutf16string tstring = utf8str_to_utf16str(filename); +        std::wstring tstring = ll_convert<std::wstring>(filename);          wcsncpy(mFilesW, tstring.c_str(), FILENAME_BUFFER_SIZE);    }   /*Flawfinder: ignore*/      else      { @@ -595,7 +595,7 @@ bool LLFilePicker::getSaveFile(ESaveFilter filter, const std::string& filename,              success = GetSaveFileName(&mOFN);              if (success)              { -                std::string filename = utf16str_to_utf8str(llutf16string(mFilesW)); +                std::string filename = ll_convert<std::string>(std::wstring(mFilesW));                  mFiles.push_back(filename);              }          } diff --git a/indra/newview/llfilepicker_mac.mm b/indra/newview/llfilepicker_mac.mm index b21bc724fb..978069457c 100644 --- a/indra/newview/llfilepicker_mac.mm +++ b/indra/newview/llfilepicker_mac.mm @@ -86,7 +86,7 @@ std::unique_ptr<std::vector<std::string>> doLoadDialog(const std::vector<std::st          result = [panel runModal]; -        if (result == NSOKButton) +        if (result == NSModalResponseOK)          {              NSArray *filesToOpen = [panel URLs];              int i, count = [filesToOpen count]; @@ -173,7 +173,7 @@ std::unique_ptr<std::string> doSaveDialog(const std::string* file,          [panel setNameFieldStringValue: fileName];          [panel setDirectoryURL: url];          if([panel runModal] == -           NSFileHandlingPanelOKButton) +           NSModalResponseOK)          {              NSURL* url = [panel URL];              NSString* p = [url path]; @@ -211,7 +211,7 @@ void doSaveDialogModeless(const std::string* file,  		[panel beginWithCompletionHandler:^(NSModalResponse result)  		{ -			if (result == NSOKButton) +            if (result == NSModalResponseOK)  			{  				NSURL* url = [panel URL];  				NSString* p = [url path]; diff --git a/indra/newview/llfloateremojipicker.cpp b/indra/newview/llfloateremojipicker.cpp index 7e13503103..c5f4a2f0cf 100644 --- a/indra/newview/llfloateremojipicker.cpp +++ b/indra/newview/llfloateremojipicker.cpp @@ -1284,7 +1284,7 @@ void LLFloaterEmojiPicker::saveState()              if (!recentlyUsed.empty())                  recentlyUsed += ",";              char buffer[32]; -            sprintf(buffer, "%u", (U32)emoji); +            snprintf(buffer, sizeof(buffer), "%u", (U32)emoji);              recentlyUsed += buffer;              if (!--maxCount)                  break; @@ -1301,7 +1301,7 @@ void LLFloaterEmojiPicker::saveState()              if (!frequentlyUsed.empty())                  frequentlyUsed += ",";              char buffer[32]; -            sprintf(buffer, "%u:%u", (U32)it.first, (U32)it.second); +            snprintf(buffer, sizeof(buffer), "%u:%u", (U32)it.first, (U32)it.second);              frequentlyUsed += buffer;              if (!--maxCount)                  break; diff --git a/indra/newview/llfloaterjoystick.cpp b/indra/newview/llfloaterjoystick.cpp index 68b11ec92b..871f924316 100644 --- a/indra/newview/llfloaterjoystick.cpp +++ b/indra/newview/llfloaterjoystick.cpp @@ -78,7 +78,7 @@ BOOL CALLBACK di8_list_devices_callback(LPCDIDEVICEINSTANCE device_instance_ptr,      // Capable of detecting devices like Oculus Rift      if (device_instance_ptr && pvRef)      { -        std::string product_name = utf16str_to_utf8str(llutf16string(device_instance_ptr->tszProductName)); +        std::string product_name = ll_convert<std::string>(std::wstring(device_instance_ptr->tszProductName));          S32 size = sizeof(GUID);          LLSD::Binary data; //just an std::vector          data.resize(size); diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index 61ac0a4d77..a784d502ef 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -238,7 +238,7 @@ private:      std::unique_ptr< ll::prefs::SearchData > mSearchData;      bool mSearchDataDirty; -    boost::signals2::connection	mImpostorsChangedSignal; +    boost::signals2::connection mImpostorsChangedSignal;      boost::signals2::connection mComplexityChangedSignal;      void onUpdateFilterTerm( bool force = false ); diff --git a/indra/newview/llfloaterpreferencesgraphicsadvanced.h b/indra/newview/llfloaterpreferencesgraphicsadvanced.h index a1a54f238d..6f793c1379 100644 --- a/indra/newview/llfloaterpreferencesgraphicsadvanced.h +++ b/indra/newview/llfloaterpreferencesgraphicsadvanced.h @@ -61,7 +61,7 @@ protected:      void        onBtnOK(const LLSD& userdata);      void        onBtnCancel(const LLSD& userdata); -    boost::signals2::connection	mImpostorsChangedSignal; +    boost::signals2::connection mImpostorsChangedSignal;      boost::signals2::connection mComplexityChangedSignal;      boost::signals2::connection mComplexityModeChangedSignal;      boost::signals2::connection mLODFactorChangedSignal; diff --git a/indra/newview/llgltfmateriallist.cpp b/indra/newview/llgltfmateriallist.cpp index d8b3f996aa..8da835ed7d 100644 --- a/indra/newview/llgltfmateriallist.cpp +++ b/indra/newview/llgltfmateriallist.cpp @@ -45,7 +45,9 @@  #include "llworld.h"  #include "tinygltf/tiny_gltf.h" -#include <strstream> + +#include <boost/iostreams/device/array.hpp> +#include <boost/iostreams/stream.hpp>  #include <unordered_set> @@ -555,8 +557,7 @@ void LLGLTFMaterialList::onAssetLoadComplete(const LLUUID& id, LLAssetType::ETyp                  LLSD asset;                  // read file into buffer -                std::istrstream str(&buffer[0], static_cast<S32>(buffer.size())); - +                boost::iostreams::stream<boost::iostreams::array_source> str(buffer.data(), buffer.size());                  if (LLSDSerialize::deserialize(asset, str, buffer.size()))                  {                      if (asset.has("version") && LLGLTFMaterial::isAcceptedVersion(asset["version"].asString())) diff --git a/indra/newview/llgltfmaterialpreviewmgr.cpp b/indra/newview/llgltfmaterialpreviewmgr.cpp index da1f1a466f..5a6e9565ae 100644 --- a/indra/newview/llgltfmaterialpreviewmgr.cpp +++ b/indra/newview/llgltfmaterialpreviewmgr.cpp @@ -523,12 +523,12 @@ bool LLGLTFPreviewTexture::render()      gPipeline.copyScreenSpaceReflections(&screen, &gPipeline.mSceneMap);      gPipeline.generateLuminance(&screen, &gPipeline.mLuminanceMap);      gPipeline.generateExposure(&gPipeline.mLuminanceMap, &gPipeline.mExposureMap, /*use_history = */ false); -    gPipeline.gammaCorrect(&screen, &gPipeline.mPostMap); +    gPipeline.gammaCorrect(&screen, &gPipeline.mPostPingMap);      LLVertexBuffer::unbind(); -    gPipeline.generateGlow(&gPipeline.mPostMap); -    gPipeline.combineGlow(&gPipeline.mPostMap, &screen); -    gPipeline.renderDoF(&screen, &gPipeline.mPostMap); -    gPipeline.applyFXAA(&gPipeline.mPostMap, &screen); +    gPipeline.generateGlow(&gPipeline.mPostPingMap); +    gPipeline.combineGlow(&gPipeline.mPostPingMap, &screen); +    gPipeline.renderDoF(&screen, &gPipeline.mPostPingMap); +    gPipeline.applyFXAA(&gPipeline.mPostPingMap, &screen);      // *HACK: Restore mExposureMap (it will be consumed by generateExposure next frame)      gPipeline.mExposureMap.swapFBORefs(gPipeline.mLastExposure); diff --git a/indra/newview/llheroprobemanager.cpp b/indra/newview/llheroprobemanager.cpp index 675a8dfe7d..0f3e220ae0 100644 --- a/indra/newview/llheroprobemanager.cpp +++ b/indra/newview/llheroprobemanager.cpp @@ -92,6 +92,7 @@ void LLHeroProbeManager::update()      }      LL_PROFILE_ZONE_SCOPED_CATEGORY_DISPLAY; +    LL_PROFILE_GPU_ZONE("hero manager update");      llassert(!gCubeSnapshot); // assert a snapshot is not in progress      if (LLAppViewer::instance()->logoutRequestSent())      { @@ -293,6 +294,9 @@ void LLHeroProbeManager::renderProbes()  // In effect this simulates single-bounce lighting.  void LLHeroProbeManager::updateProbeFace(LLReflectionMap* probe, U32 face, bool is_dynamic, F32 near_clip)  { +    LL_PROFILE_ZONE_SCOPED_CATEGORY_DISPLAY; +    LL_PROFILE_GPU_ZONE("hero probe update"); +      // hacky hot-swap of camera specific render targets      gPipeline.mRT = &gPipeline.mHeroProbeRT; @@ -363,7 +367,7 @@ void LLHeroProbeManager::updateProbeFace(LLReflectionMap* probe, U32 face, bool          for (int i = 0; i < mMipChain.size(); ++i)          { -            LL_PROFILE_GPU_ZONE("probe mip"); +            LL_PROFILE_GPU_ZONE("hero probe mip");              mMipChain[i].bindTarget();              if (i == 0)              { @@ -390,7 +394,7 @@ void LLHeroProbeManager::updateProbeFace(LLReflectionMap* probe, U32 face, bool              if (mip >= 0)              { -                LL_PROFILE_GPU_ZONE("probe mip copy"); +                LL_PROFILE_GPU_ZONE("hero probe mip copy");                  mTexture->bind(0);                  glCopyTexSubImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, mip, 0, 0, sourceIdx * 6 + face, 0, 0, res, res); @@ -438,7 +442,7 @@ void LLHeroProbeManager::generateRadiance(LLReflectionMap* probe)              for (int i = 0; i < mMipChain.size() / 4; ++i)              { -                LL_PROFILE_GPU_ZONE("probe radiance gen"); +                LL_PROFILE_GPU_ZONE("hero probe radiance gen");                  static LLStaticHashedString sMipLevel("mipLevel");                  static LLStaticHashedString sRoughness("roughness");                  static LLStaticHashedString sWidth("u_width"); @@ -485,6 +489,7 @@ void LLHeroProbeManager::updateUniforms()      }      LL_PROFILE_ZONE_SCOPED_CATEGORY_DISPLAY; +    LL_PROFILE_GPU_ZONE("hpmu - uniforms")      LLMatrix4a modelview;      modelview.loadu(gGLModelView); diff --git a/indra/newview/llhudeffectresetskeleton.cpp b/indra/newview/llhudeffectresetskeleton.cpp index 31065a3e76..2bb5696f59 100644 --- a/indra/newview/llhudeffectresetskeleton.cpp +++ b/indra/newview/llhudeffectresetskeleton.cpp @@ -56,6 +56,15 @@ LLHUDEffectResetSkeleton::~LLHUDEffectResetSkeleton()  //-----------------------------------------------------------------------------  // packData()  //----------------------------------------------------------------------------- +void LLHUDEffectResetSkeleton::render() +{ +    // HUDEffectResetSkeleton is a fake effect meant to reset skeleton only. +    // Just wait for an update() call to do its work and then die. +} + +//----------------------------------------------------------------------------- +// packData() +//-----------------------------------------------------------------------------  void LLHUDEffectResetSkeleton::packData(LLMessageSystem *mesgsys)  {      // Pack the default data diff --git a/indra/newview/llhudeffectresetskeleton.h b/indra/newview/llhudeffectresetskeleton.h index 39a6137054..c89516d7fc 100644 --- a/indra/newview/llhudeffectresetskeleton.h +++ b/indra/newview/llhudeffectresetskeleton.h @@ -38,20 +38,21 @@ class LLHUDEffectResetSkeleton final : public LLHUDEffect  public:      friend class LLHUDObject; -    /*virtual*/ void markDead(); -    /*virtual*/ void setSourceObject(LLViewerObject* objectp); +    /*virtual*/ void markDead() override; +    /*virtual*/ void setSourceObject(LLViewerObject* objectp) override; -    void setTargetObject(LLViewerObject *objp); +    void setTargetObject(LLViewerObject *objp) override;      void setResetAnimations(bool enable){ mResetAnimations = enable; };  protected:      LLHUDEffectResetSkeleton(const U8 type);      ~LLHUDEffectResetSkeleton(); -    /*virtual*/ void packData(LLMessageSystem *mesgsys); -    /*virtual*/ void unpackData(LLMessageSystem *mesgsys, S32 blocknum); +    void render() override; +    void packData(LLMessageSystem *mesgsys) override; +    void unpackData(LLMessageSystem *mesgsys, S32 blocknum) override; -    void update(); +    void update() override;  private:      bool                        mResetAnimations;  }; diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp index e31fbb188a..a99c9df0ff 100644 --- a/indra/newview/lllocalbitmaps.cpp +++ b/indra/newview/lllocalbitmaps.cpp @@ -196,7 +196,7 @@ bool LLLocalBitmap::updateSelf(EUpdateType optional_firstupdate)  #ifndef LL_WINDOWS              const std::time_t temp_time = boost::filesystem::last_write_time(boost::filesystem::path(mFilename));  #else -            const std::time_t temp_time = boost::filesystem::last_write_time(boost::filesystem::path(utf8str_to_utf16str(mFilename))); +            const std::time_t temp_time = boost::filesystem::last_write_time(boost::filesystem::path(ll_convert<std::wstring>(mFilename)));  #endif              LLSD new_last_modified = asctime(localtime(&temp_time)); diff --git a/indra/newview/lllocalgltfmaterials.cpp b/indra/newview/lllocalgltfmaterials.cpp index fab18f2d26..d6facad23d 100644 --- a/indra/newview/lllocalgltfmaterials.cpp +++ b/indra/newview/lllocalgltfmaterials.cpp @@ -134,7 +134,7 @@ bool LLLocalGLTFMaterial::updateSelf()  #ifndef LL_WINDOWS              const std::time_t temp_time = boost::filesystem::last_write_time(boost::filesystem::path(mFilename));  #else -            const std::time_t temp_time = boost::filesystem::last_write_time(boost::filesystem::path(utf8str_to_utf16str(mFilename))); +            const std::time_t temp_time = boost::filesystem::last_write_time(boost::filesystem::path(ll_convert<std::wstring>(mFilename)));  #endif              LLSD new_last_modified = asctime(localtime(&temp_time)); diff --git a/indra/newview/llmachineid.cpp b/indra/newview/llmachineid.cpp index aa03001389..51c38aba3a 100644 --- a/indra/newview/llmachineid.cpp +++ b/indra/newview/llmachineid.cpp @@ -293,7 +293,7 @@ bool LLWMIMethods::getGenericSerialNumber(const BSTR &select, const LPCWSTR &var          if (validate_as_uuid)          {              std::wstring ws(serialNumber, serial_size); -            std::string str = ll_convert_wide_to_string(ws); +            std::string str = ll_convert<std::string>(ws);              if (!LLUUID::validate(str))              { @@ -315,7 +315,7 @@ bool LLWMIMethods::getGenericSerialNumber(const BSTR &select, const LPCWSTR &var                  continue;              }          } -        LL_INFOS("AppInit") << " Serial Number : " << vtProp.bstrVal << LL_ENDL; +        LL_INFOS("AppInit") << " Serial Number : " << ll_convert_wide_to_string(std::wstring(vtProp.bstrVal, SysStringLen(vtProp.bstrVal))) << LL_ENDL;          unsigned int j = 0; diff --git a/indra/newview/llmaterialeditor.cpp b/indra/newview/llmaterialeditor.cpp index 3e5d6d1171..cac72bb085 100644 --- a/indra/newview/llmaterialeditor.cpp +++ b/indra/newview/llmaterialeditor.cpp @@ -63,8 +63,9 @@  #include "tinygltf/tiny_gltf.h"  #include "lltinygltfhelper.h" -#include <strstream> +#include <boost/iostreams/device/array.hpp> +#include <boost/iostreams/stream.hpp>  const std::string MATERIAL_BASE_COLOR_DEFAULT_NAME = "Base Color";  const std::string MATERIAL_NORMAL_DEFAULT_NAME = "Normal"; @@ -1246,7 +1247,7 @@ bool LLMaterialEditor::decodeAsset(const std::vector<char>& buffer)  {      LLSD asset; -    std::istrstream str(&buffer[0], buffer.size()); +    boost::iostreams::stream<boost::iostreams::array_source> str(buffer.data(), buffer.size());      if (LLSDSerialize::deserialize(asset, str, buffer.size()))      {          if (asset.has("version") && LLGLTFMaterial::isAcceptedVersion(asset["version"].asString())) diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 997fc28333..8d5f94cdbb 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -2310,6 +2310,7 @@ EMeshProcessingResult LLMeshRepoThread::headerReceived(const LLVolumeParams& mes              }              if (request_skin)              { +                LLMutexLock lock(mMutex);                  mSkinRequests.push_back(UUIDBasedRequest(mesh_id));              }          } diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp index b1c8b5f36a..86071e38e1 100644 --- a/indra/newview/llpanelprimmediacontrols.cpp +++ b/indra/newview/llpanelprimmediacontrols.cpp @@ -645,7 +645,7 @@ void LLPanelPrimMediaControls::updateShape()          vert_it = vect_face.begin();          vert_end = vect_face.end(); -        glm::mat4 mat; +        glm::mat4 mat = glm::identity<glm::mat4>();          if (!is_hud)          {              mat = get_current_projection() * get_current_modelview(); diff --git a/indra/newview/llreflectionmapmanager.cpp b/indra/newview/llreflectionmapmanager.cpp index 663d8626b7..eb7fe06e7d 100644 --- a/indra/newview/llreflectionmapmanager.cpp +++ b/indra/newview/llreflectionmapmanager.cpp @@ -211,6 +211,7 @@ void LLReflectionMapManager::update()      }      LL_PROFILE_ZONE_SCOPED_CATEGORY_DISPLAY; +    LL_PROFILE_GPU_ZONE("reflection manager update");      llassert(!gCubeSnapshot); // assert a snapshot is not in progress      if (LLAppViewer::instance()->logoutRequestSent())      { @@ -760,6 +761,8 @@ void LLReflectionMapManager::doProbeUpdate()  // In effect this simulates single-bounce lighting.  void LLReflectionMapManager::updateProbeFace(LLReflectionMap* probe, U32 face)  { +    LL_PROFILE_ZONE_SCOPED_CATEGORY_DISPLAY; +    LL_PROFILE_GPU_ZONE("probe update");      // hacky hot-swap of camera specific render targets      gPipeline.mRT = &gPipeline.mAuxillaryRT; @@ -1075,6 +1078,7 @@ void LLReflectionMapManager::updateUniforms()      }      LL_PROFILE_ZONE_SCOPED_CATEGORY_DISPLAY; +    LL_PROFILE_GPU_ZONE("rmmu - uniforms")      mReflectionMaps.resize(mReflectionProbeCount); diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index ba7437798a..5df7eca5f5 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -397,6 +397,7 @@ bool idle_startup()          LL_WARNS_ONCE() << "gViewerWindow is not initialized" << LL_ENDL;          return false; // No world yet      } +    LL_PROFILE_ZONE_SCOPED;      const F32 PRECACHING_DELAY = gSavedSettings.getF32("PrecachingDelay");      static LLTimer timeout; diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index 71830e0948..7a93536c00 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -410,6 +410,7 @@ static void update_tp_display(bool minimized)  void display(bool rebuild, F32 zoom_factor, int subfield, bool for_snapshot)  {      LL_PROFILE_ZONE_NAMED_CATEGORY_DISPLAY("Render"); +    LL_PROFILE_GPU_ZONE("Render");      LLPerfStats::RecordSceneTime T (LLPerfStats::StatType_t::RENDER_DISPLAY); // render time capture - This is the main stat for overall rendering. @@ -714,6 +715,7 @@ void display(bool rebuild, F32 zoom_factor, int subfield, bool for_snapshot)          if (gPipeline.RenderMirrors && !gSnapshot)          {              LL_PROFILE_ZONE_NAMED_CATEGORY_DISPLAY("Update hero probes"); +            LL_PROFILE_GPU_ZONE("hero manager")              gPipeline.mHeroProbeManager.update();              gPipeline.mHeroProbeManager.renderProbes();          } diff --git a/indra/newview/llviewerjoystick.cpp b/indra/newview/llviewerjoystick.cpp index 9d45ea24b9..8edb21956f 100644 --- a/indra/newview/llviewerjoystick.cpp +++ b/indra/newview/llviewerjoystick.cpp @@ -144,7 +144,7 @@ BOOL CALLBACK di8_devices_callback(LPCDIDEVICEINSTANCE device_instance_ptr, LPVO      // Capable of detecting devices like Oculus Rift      if (device_instance_ptr)      { -        std::string product_name = utf16str_to_utf8str(llutf16string(device_instance_ptr->tszProductName)); +        std::string product_name = ll_convert<std::string>(std::wstring(device_instance_ptr->tszProductName));          LLSD guid = LLViewerJoystick::getInstance()->getDeviceUUID(); @@ -211,7 +211,7 @@ BOOL CALLBACK di8_devices_callback(LPCDIDEVICEINSTANCE device_instance_ptr, LPVO  // This is GUID2 so teoretically it can be memcpy copied into LLUUID  void guid_from_string(GUID &guid, const std::string &input)  { -    CLSIDFromString(utf8str_to_utf16str(input).c_str(), &guid); +    CLSIDFromString(ll_convert<std::wstring>(input).c_str(), &guid);  }  std::string string_from_guid(const GUID &guid) @@ -221,7 +221,7 @@ std::string string_from_guid(const GUID &guid)      // use guidString... -    std::string res = utf16str_to_utf8str(llutf16string(guidString)); +    std::string res = ll_convert<std::string>(std::wstring(guidString));      // ensure memory is freed      ::CoTaskMemFree(guidString); diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index a0a9906724..a9c58d5a06 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -545,7 +545,11 @@ void LLViewerShaderMgr::setShaders()              gSavedSettings.setString("RenderShaderCacheVersion", current_cache_version.asString());          } -        initShaderCache(shader_cache_enabled, old_cache_version, current_cache_version); +        initShaderCache( +            shader_cache_enabled, +            old_cache_version, +            current_cache_version, +            LLAppViewer::instance()->isSecondInstance());      }      static LLCachedControl<U32> max_texture_index(gSavedSettings, "RenderMaxTextureIndex", 16); @@ -703,7 +707,10 @@ void LLViewerShaderMgr::setShaders()      loaded = loaded && loadShadersDeferred();      llassert(loaded); -    persistShaderCacheMetadata(); +    if (!LLAppViewer::instance()->isSecondInstance()) +    { +        persistShaderCacheMetadata(); +    }      if (gViewerWindow)      { diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 0edb7c70ea..70498ecab4 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -784,8 +784,16 @@ public:              addText(xpos, ypos, "Projection Matrix");              ypos += y_inc; +#if LL_DARWIN +// For sprintf deprecation +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +#endif              // View last column is always <0,0,0,1>              MATRIX_ROW_F32_TO_STR(gGLModelView, 12,camera_lines[3]); addText(xpos, ypos, std::string(camera_lines[3])); ypos += y_inc; +#if LL_DARWIN +#pragma clang diagnostic pop +#endif              MATRIX_ROW_N32_TO_STR(gGLModelView,  8,camera_lines[2]); addText(xpos, ypos, std::string(camera_lines[2])); ypos += y_inc;              MATRIX_ROW_N32_TO_STR(gGLModelView,  4,camera_lines[1]); addText(xpos, ypos, std::string(camera_lines[1])); ypos += y_inc; mBackRectCamera2.mTop = ypos + 2;              MATRIX_ROW_N32_TO_STR(gGLModelView,  0,camera_lines[0]); addText(xpos, ypos, std::string(camera_lines[0])); ypos += y_inc; @@ -4798,7 +4806,7 @@ void LLViewerWindow::saveImageLocal(LLImageFormatted *image, const snapshot_save  // Check if there is enough free space to save snapshot  #ifdef LL_WINDOWS -    boost::filesystem::path b_path(utf8str_to_utf16str(lastSnapshotDir)); +    boost::filesystem::path b_path(ll_convert<std::wstring>(lastSnapshotDir));  #else      boost::filesystem::path b_path(lastSnapshotDir);  #endif diff --git a/indra/newview/llvoicewebrtc.cpp b/indra/newview/llvoicewebrtc.cpp index 9667bd028f..34f3e22182 100644 --- a/indra/newview/llvoicewebrtc.cpp +++ b/indra/newview/llvoicewebrtc.cpp @@ -2900,9 +2900,13 @@ bool LLVoiceWebRTCConnection::connectionStateMachine()              }              // else was already posted by llwebrtc::terminate().              break; +        } +          case VOICE_STATE_WAIT_FOR_CLOSE:              break; +          case VOICE_STATE_CLOSED: +        {              if (!mShutDown)              {                  mVoiceConnectionState = VOICE_STATE_START_SESSION; diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 209b06fd85..6413c08e44 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -346,7 +346,7 @@ void validate_framebuffer_object();  bool addDeferredAttachments(LLRenderTarget& target, bool for_impostor = false)  {      U32 orm = GL_RGBA; -    U32 norm = GL_RGBA16F; +    U32 norm = GL_RGBA16;      U32 emissive = GL_RGB16F;      static LLCachedControl<bool> has_emissive(gSavedSettings, "RenderEnableEmissiveBuffer", false); @@ -858,12 +858,12 @@ bool LLPipeline::allocateScreenBufferInternal(U32 resX, U32 resY)      GLuint screenFormat = hdr ? GL_RGBA16F : GL_RGBA; -    if (!mRT->screen.allocate(resX, resY, GL_RGBA16F)) return false; +    if (!mRT->screen.allocate(resX, resY, screenFormat)) return false;      mRT->deferredScreen.shareDepthBuffer(mRT->screen); -    if (shadow_detail > 0 || ssao || RenderDepthOfField) -    { //only need mRT->deferredLight for shadows OR ssao OR dof +    if (hdr || shadow_detail > 0 || ssao || RenderDepthOfField) +    { //only need mRT->deferredLight for hdr OR shadows OR ssao OR dof          if (!mRT->deferredLight.allocate(resX, resY, screenFormat)) return false;      }      else @@ -909,7 +909,8 @@ bool LLPipeline::allocateScreenBufferInternal(U32 resX, U32 resY)              mSceneMap.release();          } -        mPostMap.allocate(resX, resY, screenFormat); +        mPostPingMap.allocate(resX, resY, GL_RGBA); +        mPostPongMap.allocate(resX, resY, GL_RGBA);          // The water exclusion mask needs its own depth buffer so we can take care of the problem of multiple water planes.          // Should we ever make water not just a plane, it also aids with that as well as the water planes will be rendered into the mask. @@ -1181,7 +1182,8 @@ void LLPipeline::releaseGLBuffers()      mWaterExclusionMask.release(); -    mPostMap.release(); +    mPostPingMap.release(); +    mPostPongMap.release();      mFXAAMap.release(); @@ -1455,9 +1457,12 @@ void LLPipeline::createLUTBuffers()          U32 pix_format = GL_R16F;  #if LL_DARWIN -        // Need to work around limited precision with 10.6.8 and older drivers -        // -        pix_format = GL_R32F; +        if(!gGLManager.mIsApple) +        { +            // Need to work around limited precision with 10.6.8 and older drivers +            // +            pix_format = GL_R32F; +        }  #endif          LLImageGL::generateTextures(1, &mLightFunc);          gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mLightFunc); @@ -7197,11 +7202,11 @@ extern LLPointer<LLImageGL> gEXRImage;  void LLPipeline::tonemap(LLRenderTarget* src, LLRenderTarget* dst)  { +    LL_PROFILE_GPU_ZONE("tonemap"); +      dst->bindTarget();      // gamma correct lighting      { -        LL_PROFILE_GPU_ZONE("tonemap"); -          static LLCachedControl<bool> buildNoPost(gSavedSettings, "RenderDisablePostProcessing", false);          LLGLDepthTest depth(GL_FALSE, GL_FALSE); @@ -7250,11 +7255,11 @@ void LLPipeline::tonemap(LLRenderTarget* src, LLRenderTarget* dst)  void LLPipeline::gammaCorrect(LLRenderTarget* src, LLRenderTarget* dst)  { +    LL_PROFILE_GPU_ZONE("gamma correct"); +      dst->bindTarget();      // gamma correct lighting      { -        LL_PROFILE_GPU_ZONE("gamma correct"); -          LLGLDepthTest depth(GL_FALSE, GL_FALSE);          static LLCachedControl<bool> buildNoPost(gSavedSettings, "RenderDisablePostProcessing", false); @@ -7305,9 +7310,9 @@ void LLPipeline::copyScreenSpaceReflections(LLRenderTarget* src, LLRenderTarget*  void LLPipeline::generateGlow(LLRenderTarget* src)  { +    LL_PROFILE_GPU_ZONE("glow generate");      if (sRenderGlow)      { -        LL_PROFILE_GPU_ZONE("glow");          mGlow[2].bindTarget();          mGlow[2].clear(); @@ -7416,6 +7421,7 @@ void LLPipeline::generateGlow(LLRenderTarget* src)  void LLPipeline::applyCAS(LLRenderTarget* src, LLRenderTarget* dst)  {      static LLCachedControl<F32> cas_sharpness(gSavedSettings, "RenderCASSharpness", 0.4f); +    LL_PROFILE_GPU_ZONE("cas");      if (cas_sharpness == 0.0f || !gCASProgram.isComplete())      {          gPipeline.copyRenderTarget(src, dst); @@ -7460,6 +7466,7 @@ void LLPipeline::applyCAS(LLRenderTarget* src, LLRenderTarget* dst)  void LLPipeline::applyFXAA(LLRenderTarget* src, LLRenderTarget* dst)  { +    LL_PROFILE_GPU_ZONE("FXAA");      {          llassert(!gCubeSnapshot);          bool multisample = RenderFSAAType == 1 && gFXAAProgram[0].isComplete() && mFXAAMap.isComplete(); @@ -7551,7 +7558,7 @@ void LLPipeline::generateSMAABuffers(LLRenderTarget* src)      // Present everything.      if (multisample)      { -        LL_PROFILE_GPU_ZONE("aa"); +        LL_PROFILE_GPU_ZONE("SMAA Edge");          static LLCachedControl<U32> aa_quality(gSavedSettings, "RenderFSAASamples", 0U);          U32 fsaa_quality = std::clamp(aa_quality(), 0U, 3U); @@ -7582,14 +7589,14 @@ void LLPipeline::generateSMAABuffers(LLRenderTarget* src)              {                  if (!use_sample)                  { -                    src->bindTexture(0, channel, LLTexUnit::TFO_POINT); -                    gGL.getTexUnit(channel)->setTextureAddressMode(LLTexUnit::TAM_CLAMP); +                    src->bindTexture(0, channel, LLTexUnit::TFO_BILINEAR);                  }                  else                  {                      gGL.getTexUnit(channel)->bindManual(LLTexUnit::TT_TEXTURE, mSMAASampleMap); -                    gGL.getTexUnit(channel)->setTextureAddressMode(LLTexUnit::TAM_CLAMP); +                    gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);                  } +                gGL.getTexUnit(channel)->setTextureAddressMode(LLTexUnit::TAM_CLAMP);              }              //if (use_stencil) @@ -7663,13 +7670,13 @@ void LLPipeline::generateSMAABuffers(LLRenderTarget* src)  void LLPipeline::applySMAA(LLRenderTarget* src, LLRenderTarget* dst)  { +    LL_PROFILE_GPU_ZONE("SMAA");      llassert(!gCubeSnapshot);      bool multisample = RenderFSAAType == 2 && gSMAAEdgeDetectProgram[0].isComplete() && mFXAAMap.isComplete() && mSMAABlendBuffer.isComplete();      // Present everything.      if (multisample)      { -        LL_PROFILE_GPU_ZONE("aa");          static LLCachedControl<U32> aa_quality(gSavedSettings, "RenderFSAASamples", 0U);          U32 fsaa_quality = std::clamp(aa_quality(), 0U, 3U); @@ -7747,8 +7754,9 @@ void LLPipeline::copyRenderTarget(LLRenderTarget* src, LLRenderTarget* dst)  void LLPipeline::combineGlow(LLRenderTarget* src, LLRenderTarget* dst)  { -    // Go ahead and do our glow combine here in our destination.  We blit this later into the front buffer. +    LL_PROFILE_GPU_ZONE("glow combine"); +    // Go ahead and do our glow combine here in our destination.  We blit this later into the front buffer.      dst->bindTarget();      { @@ -7767,6 +7775,7 @@ void LLPipeline::combineGlow(LLRenderTarget* src, LLRenderTarget* dst)  void LLPipeline::renderDoF(LLRenderTarget* src, LLRenderTarget* dst)  { +    LL_PROFILE_GPU_ZONE("dof");      {          bool dof_enabled =              (RenderDepthOfFieldInEditMode || !LLToolMgr::getInstance()->inBuildMode()) && @@ -7777,7 +7786,6 @@ void LLPipeline::renderDoF(LLRenderTarget* src, LLRenderTarget* dst)          if (dof_enabled)          { -            LL_PROFILE_GPU_ZONE("dof");              LLGLDisable blend(GL_BLEND);              // depth of field focal plane calculations @@ -7982,7 +7990,7 @@ void LLPipeline::renderFinalize()      static LLCachedControl<bool> has_hdr(gSavedSettings, "RenderHDREnabled", true);      bool hdr = gGLManager.mGLVersion > 4.05f && has_hdr(); - +    LLRenderTarget* postHDRBuffer = &mRT->screen;      if (hdr)      {          copyScreenSpaceReflections(&mRT->screen, &mSceneMap); @@ -7991,22 +7999,31 @@ void LLPipeline::renderFinalize()          generateExposure(&mLuminanceMap, &mExposureMap); -        tonemap(&mRT->screen, &mPostMap); +        tonemap(&mRT->screen, &mRT->deferredLight); -        applyCAS(&mPostMap, &mRT->screen); +        static LLCachedControl<F32> cas_sharpness(gSavedSettings, "RenderCASSharpness", 0.4f); +        if (cas_sharpness != 0.0f && gCASProgram.isComplete()) +        { +            applyCAS(&mRT->deferredLight, &mRT->screen); +            postHDRBuffer = &mRT->screen; +        } +        else +        { +            postHDRBuffer = &mRT->deferredLight; +        }      } -    generateSMAABuffers(&mRT->screen); - -    gammaCorrect(&mRT->screen, &mPostMap); +    gammaCorrect(postHDRBuffer, &mPostPingMap);      LLVertexBuffer::unbind(); -    applySMAA(&mPostMap, &mRT->screen); +    generateGlow(&mPostPingMap); -    generateGlow(&mRT->screen); +    LLRenderTarget* sourceBuffer = &mPostPingMap; +    LLRenderTarget* targetBuffer = &mPostPongMap; -    combineGlow(&mRT->screen, &mPostMap); +    combineGlow(sourceBuffer, targetBuffer); +    std::swap(sourceBuffer, targetBuffer);      gGLViewport[0] = gViewerWindow->getWorldViewRectRaw().mLeft;      gGLViewport[1] = gViewerWindow->getWorldViewRectRaw().mBottom; @@ -8014,13 +8031,24 @@ void LLPipeline::renderFinalize()      gGLViewport[3] = gViewerWindow->getWorldViewRectRaw().getHeight();      glViewport(gGLViewport[0], gGLViewport[1], gGLViewport[2], gGLViewport[3]); -    renderDoF(&mPostMap, &mRT->screen); +    if((RenderDepthOfFieldInEditMode || !LLToolMgr::getInstance()->inBuildMode()) && +        RenderDepthOfField && +        !gCubeSnapshot) +    { +        renderDoF(sourceBuffer, targetBuffer); +        std::swap(sourceBuffer, targetBuffer); +    } -    LLRenderTarget* finalBuffer = &mRT->screen; -    if (RenderFSAAType == 1) +     if (RenderFSAAType == 1) +    { +        applyFXAA(sourceBuffer, targetBuffer); +        std::swap(sourceBuffer, targetBuffer); +    } +    else if (RenderFSAAType == 2)      { -        applyFXAA(&mRT->screen, &mPostMap); -        finalBuffer = &mPostMap; +        generateSMAABuffers(sourceBuffer); +        applySMAA(sourceBuffer, targetBuffer); +        std::swap(sourceBuffer, targetBuffer);      }      if (RenderBufferVisualization > -1) @@ -8031,16 +8059,16 @@ void LLPipeline::renderFinalize()          case 1:          case 2:          case 3: -            visualizeBuffers(&mRT->deferredScreen, finalBuffer, RenderBufferVisualization); +            visualizeBuffers(&mRT->deferredScreen, sourceBuffer, RenderBufferVisualization);              break;          case 4: -            visualizeBuffers(&mLuminanceMap, finalBuffer, 0); +            visualizeBuffers(&mLuminanceMap, sourceBuffer, 0);              break;          case 5:          {              if (RenderFSAAType > 0)              { -                visualizeBuffers(&mFXAAMap, finalBuffer, 0); +                visualizeBuffers(&mFXAAMap, sourceBuffer, 0);              }              break;          } @@ -8048,7 +8076,7 @@ void LLPipeline::renderFinalize()          {              if (RenderFSAAType == 2)              { -                visualizeBuffers(&mSMAABlendBuffer, finalBuffer, 0); +                visualizeBuffers(&mSMAABlendBuffer, sourceBuffer, 0);              }              break;          } @@ -8062,10 +8090,10 @@ void LLPipeline::renderFinalize()      gDeferredPostNoDoFNoiseProgram.bind(); // Add noise as part of final render to screen pass to avoid damaging other post effects      // Whatever is last in the above post processing chain should _always_ be rendered directly here.  If not, expect problems. -    gDeferredPostNoDoFNoiseProgram.bindTexture(LLShaderMgr::DEFERRED_DIFFUSE, finalBuffer); +    gDeferredPostNoDoFNoiseProgram.bindTexture(LLShaderMgr::DEFERRED_DIFFUSE, sourceBuffer);      gDeferredPostNoDoFNoiseProgram.bindTexture(LLShaderMgr::DEFERRED_DEPTH, &mRT->deferredScreen, true); -    gDeferredPostNoDoFNoiseProgram.uniform2f(LLShaderMgr::DEFERRED_SCREEN_RES, (GLfloat)finalBuffer->getWidth(), (GLfloat)finalBuffer->getHeight()); +    gDeferredPostNoDoFNoiseProgram.uniform2f(LLShaderMgr::DEFERRED_SCREEN_RES, (GLfloat)sourceBuffer->getWidth(), (GLfloat)sourceBuffer->getHeight());      {          LLGLDepthTest depth_test(GL_TRUE, GL_TRUE, GL_ALWAYS); diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index 315e38ed8c..b3796a6feb 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -730,7 +730,8 @@ public:      LLRenderTarget          mLastExposure;      // tonemapped and gamma corrected render ready for post -    LLRenderTarget          mPostMap; +    LLRenderTarget          mPostPingMap; +    LLRenderTarget          mPostPongMap;      // FXAA helper target      LLRenderTarget          mFXAAMap; diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index df9541d1a3..e46073057e 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -865,11 +865,29 @@ class Darwin_x86_64_Manifest(ViewerManifest):              # CEF framework goes inside Contents/Frameworks.              # Remember where we parked this car. -            with self.prefix(src="", dst="Frameworks"): +            with self.prefix(src=relpkgdir, dst="Frameworks"): +                self.path("libndofdev.dylib") +                  if self.args.get('bugsplat'):                      self.path2basename(relpkgdir, "BugsplatMac.framework") +                # OpenAL dylibs +                if self.args['openal'] == 'ON': +                    for libfile in ( +                                "libopenal.dylib", +                                "libalut.dylib", +                                ): +                        self.path(libfile) + +                # WebRTC libraries +                with self.prefix(src=os.path.join(self.args['build'], os.pardir, +                                          'sharedlibs', self.args['buildtype'], 'Resources')): +                    for libfile in ( +                            'libllwebrtc.dylib', +                    ): +                        self.path(libfile) +              with self.prefix(dst="MacOS"):                  executable = self.dst_path_of(self.channel())                  if self.args.get('bugsplat'): @@ -929,16 +947,12 @@ class Darwin_x86_64_Manifest(ViewerManifest):                          self.path("*.png")                          self.path("*.gif") -                with self.prefix(src=relpkgdir, dst=""): -                    self.path("libndofdev.dylib") -                  with self.prefix(src_dst="cursors_mac"):                      self.path("*.tif")                  self.path("licenses-mac.txt", dst="licenses.txt")                  self.path("featuretable_mac.txt")                  self.path("cube.dae") -                self.path("SecondLife.nib")                  with self.prefix(src=pkgdir,dst=""):                      self.path("ca-bundle.crt") @@ -991,20 +1005,6 @@ class Darwin_x86_64_Manifest(ViewerManifest):                          print("Skipping %s" % dst)                      return added -                # WebRTC libraries -                with self.prefix(src=os.path.join(self.args['build'], os.pardir, -                                          'sharedlibs', self.args['buildtype'], 'Resources')): -                    for libfile in ( -                            'libllwebrtc.dylib', -                    ): -                        self.path(libfile) - -                        oldpath = os.path.join("@rpath", libfile) -                        self.run_command( -                            ['install_name_tool', '-change', oldpath, -                             '@executable_path/../Resources/%s' % libfile, -                             executable]) -                  # dylibs is a list of all the .dylib files we expect to need                  # in our bundled sub-apps. For each of these we'll create a                  # symlink from sub-app/Contents/Resources to the real .dylib. @@ -1029,20 +1029,6 @@ class Darwin_x86_64_Manifest(ViewerManifest):                                  ):                          self.path2basename(relpkgdir, libfile) -                # OpenAL dylibs -                if self.args['openal'] == 'ON': -                    for libfile in ( -                                "libopenal.dylib", -                                "libalut.dylib", -                                ): -                        dylibs += path_optional(os.path.join(relpkgdir, libfile), libfile) - -                        oldpath = os.path.join("@rpath", libfile) -                        self.run_command( -                            ['install_name_tool', '-change', oldpath, -                             '@executable_path/../Resources/%s' % libfile, -                             executable]) -                  # our apps                  executable_path = {}                  embedded_apps = [ (os.path.join("llplugin", "slplugin"), "SLPlugin.app") ] @@ -1053,13 +1039,6 @@ class Darwin_x86_64_Manifest(ViewerManifest):                      executable_path[app] = \                          self.dst_path_of(os.path.join(app, "Contents", "MacOS")) -                    # our apps dependencies on shared libs -                    # for each app, for each dylib we collected in dylibs, -                    # create a symlink to the real copy of the dylib. -                    with self.prefix(dst=os.path.join(app, "Contents", "Resources")): -                        for libfile in dylibs: -                            self.relsymlinkf(os.path.join(libfile_parent, libfile)) -                  # Dullahan helper apps go inside SLPlugin.app                  with self.prefix(dst=os.path.join(                      "SLPlugin.app", "Contents", "Frameworks")):  | 
