Fix another 1856 crash on startup case when Terrain Bake shaders are unsupported (#2491)

fixes secondlife/viewer#1856
master
Brad Linden 2024-09-04 10:42:59 -07:00 committed by GitHub
parent cb9f3dcfe9
commit 2a188ab306
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 28 additions and 2 deletions

View File

@ -7183,6 +7183,17 @@
<key>Value</key>
<integer>1</integer>
</map>
<key>RenderCanUseTerrainBakeShaders</key>
<map>
<key>Comment</key>
<string>Hardware has support for Terrain Bake shaders</string>
<key>Persist</key>
<integer>0</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>RenderClass1MemoryBandwidth</key>
<map>
<key>Comment</key>

View File

@ -3446,6 +3446,12 @@ bool enable_gltf_upload()
return enable_gltf_save_as();
}
bool enable_terrain_local_paintmap()
{
static LLCachedControl<bool> can_use_shaders(gSavedSettings, "RenderCanUseTerrainBakeShaders", true);
return can_use_shaders;
}
class LLSelfRemoveAllAttachments : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
@ -10217,6 +10223,7 @@ void initialize_menus()
enable.add("EnableGLTF", boost::bind(&enable_gltf));
enable.add("EnableGLTFSaveAs", boost::bind(&enable_gltf_save_as));
enable.add("EnableGLTFUpload", boost::bind(&enable_gltf_upload));
enable.add("EnableTerrainLocalPaintMap", std::bind(&enable_terrain_local_paintmap));
view_listener_t::addMenu(new LLFloaterVisible(), "FloaterVisible");
view_listener_t::addMenu(new LLShowSidetrayPanel(), "ShowSidetrayPanel");

View File

@ -2993,7 +2993,14 @@ bool LLViewerShaderMgr::loadShadersInterface()
const U32 value_range = (1 << bit_depth) - 1;
shader->addPermutation("TERRAIN_PAINT_PRECISION", llformat("%d", value_range));
success = success && shader->createShader();
llassert(success);
//llassert(success);
if (!success)
{
LL_WARNS() << "Failed to create shader '" << shader->mName << "', disabling!" << LL_ENDL;
gSavedSettings.setBOOL("RenderCanUseTerrainBakeShaders", false);
// continue as if this shader never happened
success = true;
}
}
if (success)

View File

@ -3672,9 +3672,10 @@ function="World.EnvPreset"
<menu_item_separator/>
<menu_item_call
enabled="true"
label="Create Local Paintmap"
name="Create Local Paintmap">
<menu_item_call.on_enable
function="EnableTerrainLocalPaintMap"/>
<menu_item_call.on_click
function="Advanced.TerrainCreateLocalPaintMap" />
</menu_item_call>