# Conflicts:
#	indra/llrender/llimagegl.cpp
master
Ansariel 2024-10-22 23:34:54 +02:00
commit 2980f5cacb
19 changed files with 83 additions and 15 deletions

View File

@ -1330,9 +1330,12 @@ void LLImageGL::setManualImage(U32 target, S32 miplevel, S32 intformat, S32 widt
catch (std::bad_alloc)
{
LLError::LLUserWarningMsg::showOutOfMemory();
LL_ERRS() << "Failed to allocate " << (U32)(width * height * sizeof(U32))
// <FS:Beq> FIRE-34374 - OOM Crash 80% of which are in render debug text
//LL_ERRS() << "Failed to allocate " << (U32)(width * height * sizeof(U32))
LL_WARNS() << "Failed to allocate " << (U32)(width * height * sizeof(U32))
<< " bytes for a manual image W" << width << " H" << height
<< " Pixformat: GL_ALPHA, pixtype: GL_UNSIGNED_BYTE" << LL_ENDL;
return;
}
U32 pixel_count = (U32)(width * height);
@ -1361,9 +1364,12 @@ void LLImageGL::setManualImage(U32 target, S32 miplevel, S32 intformat, S32 widt
catch (std::bad_alloc)
{
LLError::LLUserWarningMsg::showOutOfMemory();
// <FS:Beq> FIRE-34374 - OOM Crash 80% of which are in render debug text
LL_ERRS() << "Failed to allocate " << (U32)(width * height * sizeof(U32))
LL_WARNS() << "Failed to allocate " << (U32)(width * height * sizeof(U32))
<< " bytes for a manual image W" << width << " H" << height
<< " Pixformat: GL_LUMINANCE_ALPHA, pixtype: GL_UNSIGNED_BYTE" << LL_ENDL;
return;
}
U32 pixel_count = (U32)(width * height);
@ -1395,9 +1401,12 @@ void LLImageGL::setManualImage(U32 target, S32 miplevel, S32 intformat, S32 widt
catch (std::bad_alloc)
{
LLError::LLUserWarningMsg::showOutOfMemory();
// <FS:Beq> FIRE-34374 - OOM Crash 80% of which are in render debug text
LL_ERRS() << "Failed to allocate " << (U32)(width * height * sizeof(U32))
LL_WARNS() << "Failed to allocate " << (U32)(width * height * sizeof(U32))
<< " bytes for a manual image W" << width << " H" << height
<< " Pixformat: GL_LUMINANCE, pixtype: GL_UNSIGNED_BYTE" << LL_ENDL;
return;
}
U32 pixel_count = (U32)(width * height);

View File

@ -41,6 +41,7 @@ Unicode true # Enable unicode support
# This placeholder is replaced by viewer_manifest.py
%%VERSION%%
!include "WordFunc.nsh"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; - language files - one for each language (or flavor thereof)
;; (these files are in the same place as the nsi template but the python script generates a new nsi file in the
@ -232,30 +233,44 @@ Call openLinkNewWindow
; Add the AVX2 check functions
Function CheckCPUFlagsAVX2
Push $1
Push $2
Push $3
System::Call 'kernel32::IsProcessorFeaturePresent(i 40) i .r1' ; 40 is PF_AVX2_INSTRUCTIONS_AVAILABLE
IntCmp $1 1 OK_AVX2
; AVX2 not supported
MessageBox MB_OK $(MissingAVX2)
${OpenURL} 'https://www.firestormviewer.org/early-access-beta-downloads-legacy-cpus'
; Prepare the URL by concatenating '-legacy-cpus' to $DL_URL
StrCpy $2 "${DL_URL}"
StrCpy $2 "-legacy-cpus" /APPEND
; Replace %DLURL% in the language string with the URL
${WordReplace} "$(MissingAVX2)" "%DLURL%" "$2" "+*" $3
MessageBox MB_OK "$3"
${OpenURL} '$2'
Quit
OK_AVX2:
Pop $3
Pop $2
Pop $1
Return
FunctionEnd
Function CheckCPUFlagsAVX2_Prompt
Push $1
Push $3
System::Call 'kernel32::IsProcessorFeaturePresent(i 40) i .r1' ; 40 is PF_AVX2_INSTRUCTIONS_AVAILABLE
IntCmp $1 1 OK_AVX2
Pop $1
Return
OK_AVX2:
MessageBox MB_YESNO $(AVX2Available) IDYES DownloadAVX2 IDNO ContinueInstall
; Replace %DLURL% in the language string with the URL
${WordReplace} "$(AVX2Available)" "%DLURL%" "${DL_URL}" "+*" $3
MessageBox MB_YESNO $3 IDYES DownloadAVX2 IDNO ContinueInstall
DownloadAVX2:
${OpenURL} 'https://www.firestormviewer.org/early-access-beta-downloads/'
${OpenURL} '$3'
Quit
ContinueInstall:
Pop $3
Pop $1
Return
FunctionEnd
@ -322,7 +337,7 @@ Call CheckWindowsVersion # Don't install On unsupported systems
# IfErrors +2 0 # If error jump past setting SKIP_DIALOGS
# StrCpy $SKIP_DIALOGS "true"
IfErrors +3 0 # If error jump past setting SKIP_DIALOGS
StrCpy $SKIP_DIALOGS "true"
StrCpy $SKIP_DIALOGS "true"
SetAutoClose true
# </FS:Ansariel>

View File

@ -57,8 +57,8 @@ LangString CheckAdministratorUnInstMB ${LANG_GERMAN} 'Sie besitzen ungenügende
; checkcpuflags
LangString MissingSSE2 ${LANG_GERMAN} "Dieser PC besitzt möglicherweise keinen Prozessor mit SSE2-Unterstützung, die für die Ausführung von Firestorm ${VERSION_LONG} benötigt wird. Trotzdem installieren?"
LangString MissingAVX2 ${LANG_GERMAN} "Ihre CPU unterstützt keine AVX2-Anweisungen. Bitte laden Sie die Version für ältere CPUs von https://www.firestormviewer.org/early-access-beta-downloads-legacy-cpus/ herunter."
LangString AVX2Available ${LANG_GERMAN} "Ihre CPU unterstützt AVX2-Anweisungen. Sie können die für AVX2 optimierte Version für eine bessere Leistung unter https://www.firestormviewer.org/early-access-beta-downloads/ herunterladen. Möchten Sie sie jetzt herunterladen?"
LangString MissingAVX2 ${LANG_GERMAN} "Ihre CPU unterstützt keine AVX2-Anweisungen. Bitte laden Sie die Version für ältere CPUs von %DLURL%-legacy-cpus/ herunter."
LangString AVX2Available ${LANG_GERMAN} "Ihre CPU unterstützt AVX2-Anweisungen. Sie können die für AVX2 optimierte Version für eine bessere Leistung unter %DLURL%/ herunterladen. Möchten Sie sie jetzt herunterladen?"
; closesecondlife function (install)
LangString CloseSecondLifeInstDP ${LANG_GERMAN} "Warten auf die Beendigung von Firestorm ..."

View File

@ -1789,7 +1789,7 @@ bool LLAppViewer::doFrame()
display();
if (LLStartUp::getStartupState() > STATE_AGENT_WAIT) // <FS:Beq/> FIRE-34590 - Bugsplat caused by updating maps before world is loaded.
if (LLStartUp::getStartupState() == STATE_STARTED) // <FS:Beq/> FIRE-34590 - Bugsplat caused by updating maps before world is loaded.
{
LLPerfStats::RecordSceneTime T(LLPerfStats::StatType_t::RENDER_IDLE);
LL_PROFILE_ZONE_NAMED_CATEGORY_APP("df Snapshot");

View File

@ -156,6 +156,7 @@ void LLDrawPoolWater::renderPostDeferred(S32 pass)
if (!pwater || !psky)
{
LL_WARNS() << "LLDrawPoolWater::renderPostDeferred: water or sky settings not available" << LL_ENDL;
return;
}
// </FS:Beq>
LLVector3 light_dir = environment.getLightDirection();

View File

@ -1103,7 +1103,7 @@
height="20"
increment="1"
initial_value="2"
label="GPU Dedicated VRAM (GB):"
label="Override GPU Dedicated VRAM (GB):"
label_width="275"
layout="topleft"
left="10"

View File

@ -71,10 +71,19 @@
<slider label="Distance d'affichage" name="DrawDistance"/>
<text name="DrawDistanceMeterText2">m</text>
<slider label="Nombre max. de particules" name="MaxParticleCount"/>
<text name="AvatarComplexityModeLabel">
Affichage des avatars
</text>
<combo_box name="AvatarComplexityMode">
<combo_box.item label="Limite par la complexité" name="0"/>
<combo_box.item label="Toujours afficher les amis" name="1"/>
<combo_box.item label="N'afficher que les amis" name="2"/>
</combo_box>
<slider label="Complexité maximale" name="IndirectMaxComplexity"/>
<slider label="Maximum d'avatars 3D" name="IndirectMaxNonImpostors"/>
<slider label="Qualité post-traitement" name="RenderPostProcess"/>
<text name="PostProcessText">Basse</text>
<slider label="Max. lumières proches" name="MaxLights"/>
<slider label="Propriétés physiques des avatars" name="AvatarPhysicsDetail"/>
<slider label="Exposition" name="RenderExposure"/>
<text name="MeshDetailText">Facteurs de détails liés à la distance :</text>
@ -108,7 +117,7 @@
Paramètres avancés (redémarrage requis) :
</text>
<check_box label="Ignorer la détection de la VRAM" name="FSOverrideVRAMDetection" tool_tip="Permet à l'utilisateur d'ignorer la détection de VRAM (à utiliser avec une extrême prudence)"/>
<slider label="VRAM dédiée du GPU (Go) :" name="FSForcedVideoMemory" tool_tip="Important : à utiliser avec une extrême prudence.
<slider label="Ignorer la VRAM dédiée du GPU (Go) :" name="FSForcedVideoMemory" tool_tip="Important : à utiliser avec une extrême prudence.
Ignorer la VRAM détectée sur votre GPU.
Cela ne doit pas inclure la VRAM 'partagée' qui fait partie de la RAM du système.
Si vous ne comprenez pas la distinction, ne vous souciez pas de ce contrôle."/>

View File

@ -55,6 +55,8 @@
</panel>
<panel name="zoom">
<joystick_rotate name="cam_rotate_stick" tool_tip="Orbita la camera intorno al centro"/>
<button name="roll_left" tool_tip="Inclina la camera a sinistra" />
<button name="roll_right" tool_tip="Inclina la camera a destra" />
<slider_bar name="zoom_slider" tool_tip="Muove la camera dentro/fuori. NOTA: non funziona come uno zoom - non ha effetto sulla profondità di campo. Usare la funzione &apos;Angolo vista&apos; per un vero zoom"/>
<joystick_track name="cam_track_stick" tool_tip="Muove la camera su/giù e destra/sinistra"/>
</panel>

View File

@ -45,6 +45,8 @@
<button label="Entra" name="connect_btn"/>
<check_box label="Ricorda nome utente" name="remember_username_check"/>
<check_box label="Ricorda password" name="remember_check"/>
<button name="password_show_btn" tool_tip="Mostra password" />
<button name="password_hide_btn" tool_tip="Nascondi password" />
</layout_panel>
<layout_panel name="mode_selection">
<text name="mode_selection_text">

View File

@ -18,6 +18,8 @@
<layout_panel name="password_container">
<line_editor name="password_edit" label="Password"/>
<check_box label="Ricorda password" name="remember_check"/>
<button name="password_show_btn" tool_tip="Mostra password" />
<button name="password_hide_btn" tool_tip="Nascondi password" />
</layout_panel> <!-- password_container -->
<layout_panel name="start_location_panel">
<combo_box label="Luogo di avvio" name="start_location_combo">

View File

@ -129,7 +129,7 @@
Zaawansowane (wymagany restart):
</text>
<check_box label="Wyłącz autodetekcję VRAM" name="FSOverrideVRAMDetection" tool_tip="Zezwól na wyłączenie automatycznego wykrywania VRAM (używaj z zachowaniem szczególnej ostrożności)" />
<slider label="Dedykowana VRAM dla GPU (GB):" name="FSForcedVideoMemory" tool_tip="Ważne: używaj ze szczególną ostrożnością. || Zastąp wykrytą pamięć VRAM dla karty graficznej. || Nie może zawierać 'współdzielonej' pamięci VRAM, która jest częścią systemowej pamięci RAM. || Jeśli nie rozumiesz różnicy, zostaw tę opcję w spokoju." />
<slider label="Zastąp dedykowaną VRAM dla GPU (GB):" name="FSForcedVideoMemory" tool_tip="Ważne: używaj ze szczególną ostrożnością. || Zastąp wykrytą pamięć VRAM dla karty graficznej. || Nie może zawierać 'współdzielonej' pamięci VRAM, która jest częścią systemowej pamięci RAM. || Jeśli nie rozumiesz różnicy, zostaw tę opcję w spokoju." />
</panel>
<panel name="Rendering">
<text name="World Updating">

View File

@ -281,6 +281,8 @@ class ViewerManifest(LLManifest,FSViewerManifest):
channel_type='release'
elif channel_qualifier.startswith('beta'):
channel_type='beta'
elif channel_qualifier.startswith('alpha'):
channel_type='alpha'
#<FS:TS> Use our more-or-less-standard channel types instead of LL's
#elif channel_qualifier.startswith('project'):
# channel_type='project'
@ -288,6 +290,10 @@ class ViewerManifest(LLManifest,FSViewerManifest):
# channel_type='test'
elif channel_qualifier.startswith('nightly'):
channel_type='nightly'
elif channel_qualifier.startswith('manual'):
channel_type='manual'
elif channel_qualifier.startswith('profiling'):
channel_type='profiling'
else:
channel_type='private'
return channel_type
@ -361,10 +367,14 @@ class ViewerManifest(LLManifest,FSViewerManifest):
def icon_path(self):
# <FS:ND> Add -os for oss builds
chan = self.channel_type()
if chan in ['alpha', 'nightly','manual', 'profiling']:
chan = 'test'
if self.fs_is_opensim():
return "icons/" + self.channel_type() + "-os"
return "icons/" + chan + "-os"
# </FS:ND>
return "icons/" + self.channel_type()
return "icons/" + chan
def extract_names(self,src):
"""Extract contributor names from source file, returns string"""
@ -928,6 +938,22 @@ class Windows_x86_64_Manifest(ViewerManifest):
return result
# </FS:Ansariel>
def dl_url_from_channel(self):
if self.channel_type() == 'release':
return 'https://www.firestormviewer.org/choose-your-platform'
elif self.channel_type() == 'beta':
return 'https://www.firestormviewer.org/early-access-beta-downloads'
elif self.channel_type() == 'alpha':
return 'https://www.firestormviewer.org/early-access-alpha-downloads'
elif self.channel_type() == 'manual':
return 'https://www.firestormviewer.org/early-access-manual-downloads'
elif self.channel_type() == 'profiling':
return 'https://www.firestormviewer.org/profiling-downloads'
elif self.channel_type() == 'nightly':
return 'https://www.firestormviewer.org/firestorm-nightly-build-downloads'
else:
return '<NO-URL>'
def package_finish(self):
# a standard map of strings for replacing in the templates
@ -939,7 +965,8 @@ class Windows_x86_64_Manifest(ViewerManifest):
'final_exe' : self.final_exe(),
'flags':'',
'app_name':self.app_name(),
'app_name_oneword':self.app_name_oneword()
'app_name_oneword':self.app_name_oneword(),
'dl_url':self.dl_url_from_channel()
}
substitution_strings = self.fs_splice_grid_substitution_strings( substitution_strings ) #<FS:ND/> Add grid args
@ -974,6 +1001,7 @@ class Windows_x86_64_Manifest(ViewerManifest):
OutFile "%(installer_file)s"
!define INSTNAME "%(app_name_oneword)s"
!define SHORTCUT "%(app_name)s"
!define DL_URL "%(dl_url)s"
!define URLNAME "secondlife"
!define IS64BIT "%(is64bit)d"
!define ISAVX2 "%(isavx2)d"