diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp index ce8bee216..74ec1323f 100644 --- a/indra/llui/llcombobox.cpp +++ b/indra/llui/llcombobox.cpp @@ -178,8 +178,6 @@ LLView* LLComboBox::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory * NULL); combo_box->setAllowTextEntry(allow_text_entry, max_chars); - combo_box->initFromXML(node, parent); - const std::string& contents = node->getValue(); if (contents.find_first_not_of(" \n\t") != contents.npos) @@ -210,6 +208,9 @@ LLView* LLComboBox::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory * } } + //Do this AFTER combo_items are set up so setValue is actually able to select the correct initial entry. + combo_box->initFromXML(node, parent); + // if providing user text entry or descriptive label // don't select an item under the hood if (!combo_box->acceptsTextInput() && combo_box->mLabel.empty()) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index ba3f512f8..24d9c80f8 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -12973,7 +12973,7 @@ Type Boolean Value - 1 + 0 UseOutfitFolders diff --git a/indra/newview/llfloaterhardwaresettings.cpp b/indra/newview/llfloaterhardwaresettings.cpp index fd6bcca05..81a787967 100644 --- a/indra/newview/llfloaterhardwaresettings.cpp +++ b/indra/newview/llfloaterhardwaresettings.cpp @@ -77,6 +77,7 @@ void LLFloaterHardwareSettings::refresh() LLPanel::refresh(); mUseVBO = gSavedSettings.getBOOL("RenderVBOEnable"); + mUseFBO = gSavedSettings.getBOOL("RenderUseFBO"); mUseAniso = gSavedSettings.getBOOL("RenderAnisotropic"); mFSAASamples = gSavedSettings.getU32("RenderFSAASamples"); mGamma = gSavedSettings.getF32("RenderGamma"); @@ -106,7 +107,8 @@ void LLFloaterHardwareSettings::refreshEnabledState() { childSetEnabled("vbo_stream", LLVertexBuffer::sEnableVBOs); } - + + childSetEnabled("fbo",gGLManager.mHasFramebufferObject); // if no windlight shaders, turn off nighttime brightness, gamma, and fog distance childSetEnabled("gamma", !gPipeline.canUseWindLightShaders()); @@ -192,6 +194,7 @@ void LLFloaterHardwareSettings::apply() void LLFloaterHardwareSettings::cancel() { gSavedSettings.setBOOL("RenderVBOEnable", mUseVBO); + gSavedSettings.setBOOL("RenderUseFBO", mUseFBO); gSavedSettings.setBOOL("RenderAnisotropic", mUseAniso); gSavedSettings.setU32("RenderFSAASamples", mFSAASamples); gSavedSettings.setF32("RenderGamma", mGamma); diff --git a/indra/newview/llfloaterhardwaresettings.h b/indra/newview/llfloaterhardwaresettings.h index 04a33f69d..bdf3fb13b 100644 --- a/indra/newview/llfloaterhardwaresettings.h +++ b/indra/newview/llfloaterhardwaresettings.h @@ -88,6 +88,7 @@ protected: LLSliderCtrl* mCtrlVideoCardMem; BOOL mUseVBO; + BOOL mUseFBO; BOOL mUseAniso; U32 mFSAASamples; F32 mGamma; diff --git a/indra/newview/llpaneldisplay.cpp b/indra/newview/llpaneldisplay.cpp index 77ee2e2c7..c8906fc53 100644 --- a/indra/newview/llpaneldisplay.cpp +++ b/indra/newview/llpaneldisplay.cpp @@ -490,9 +490,19 @@ void LLPanelDisplay::refreshEnabledState() mCtrlAvatarCloth->setEnabled(true); } - BOOL can_defer = gSavedSettings.getBOOL("RenderUseFBO"); + //I actually recommend RenderUseFBO:FALSE for ati users when not using deferred, so RenderUseFBO shouldn't control visibility of the element. + // Instead, gGLManager.mHasFramebufferObject seems better as it is determined by hardware and not current user settings. -Shyotl + //Enabling deferred will force RenderUseFBO to TRUE. + BOOL can_defer = gGLManager.mHasFramebufferObject && + LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") && //Ensure it's enabled in the gpu feature table + LLFeatureManager::getInstance()->isFeatureAvailable("RenderAvatarVP") && //Hardware Skinning. Deferred forces RenderAvatarVP to true + LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable") && gSavedSettings.getBOOL("VertexShaderEnable") && //Basic Shaders + LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders") && gSavedSettings.getBOOL("WindLightUseAtmosShaders"); //Atmospheric Shaders + + mCtrlDeferred->setEnabled(can_defer); mCtrlSunShadow->setEnabled(can_defer && gSavedSettings.getBOOL("RenderDeferred")); + mCtrlAvatarCloth->setValue(gSavedSettings.getBOOL("RenderAvatarVP")); //Enabling RenderDeferred changes this setting behind this floaters back. // Vertex Shaders // mCtrlShaderEnable->setEnabled(LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable")); diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index 8ef475a24..00d89e45d 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -310,7 +310,9 @@ void LLViewerShaderMgr::setShaders() S32 deferred_class = 0; if (LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") && - gSavedSettings.getBOOL("RenderDeferred")) + gSavedSettings.getBOOL("RenderDeferred") && + LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders") && + gSavedSettings.getBOOL("WindLightUseAtmosShaders")) { deferred_class = 1; @@ -319,9 +321,6 @@ void LLViewerShaderMgr::setShaders() //make sure hardware skinning is enabled gSavedSettings.setBOOL("RenderAvatarVP", TRUE); - - //make sure atmospheric shaders are enabled - gSavedSettings.setBOOL("WindLightUseAtmosShaders", TRUE); } if (!(LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders") && gSavedSettings.getBOOL("WindLightUseAtmosShaders"))) diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index e10b64409..3562733ea 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -563,6 +563,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY) void LLPipeline::updateRenderDeferred() { sRenderDeferred = (gSavedSettings.getBOOL("RenderDeferred") && + LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") && LLRenderTarget::sUseFBO && gSavedSettings.getBOOL("VertexShaderEnable") && gSavedSettings.getBOOL("RenderAvatarVP") && diff --git a/indra/newview/skins/default/xui/en-us/floater_hardware_settings.xml b/indra/newview/skins/default/xui/en-us/floater_hardware_settings.xml index aab647014..21ba6b168 100644 --- a/indra/newview/skins/default/xui/en-us/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/en-us/floater_hardware_settings.xml @@ -69,6 +69,19 @@ mouse_opaque="true" name="vbo_stream" radio_style="false" tool_tip="Disabling this may improve performance when VBOs are enabled. Disabling produced observable improvement on various AMD GPUs." width="315" /> + + Enable Framebuffer Objects: + + Reflection Detail: - Terrain and Trees