Tweaked context-recreation logic to force a 0xAA context when fbos are in use. Should also handle toggling of fbo checkbox a bit gracefully as well.
This commit is contained in:
@@ -865,11 +865,20 @@ void LLPanelDisplay::apply()
|
||||
{
|
||||
U32 fsaa_value = childGetValue("fsaa").asInteger();
|
||||
S32 vsync_value = childGetValue("vsync").asInteger();
|
||||
bool fbo_value = childGetValue("fbo").asBoolean();
|
||||
|
||||
LLWindow* window = gViewerWindow->getWindow();
|
||||
|
||||
if(vsync_value == -1 && !gGLManager.mHasAdaptiveVsync)
|
||||
vsync_value = 0;
|
||||
|
||||
bool apply_fsaa_change = !gSavedSettings.getBOOL("RenderUseFBO") && (mFSAASamples != fsaa_value);
|
||||
bool apply_fsaa_change = fbo_value ? false : (mFSAASamples != fsaa_value);
|
||||
|
||||
if(!apply_fsaa_change && (bool)mUseFBO != fbo_value)
|
||||
{
|
||||
apply_fsaa_change = fsaa_value != 0 || mFSAASamples != 0 ;
|
||||
}
|
||||
|
||||
bool apply_vsync_change = vsync_value != mVsyncMode;
|
||||
|
||||
gSavedSettings.setU32("RenderFSAASamples", fsaa_value);
|
||||
@@ -889,7 +898,6 @@ void LLPanelDisplay::apply()
|
||||
if(apply_fsaa_change || apply_vsync_change)
|
||||
{
|
||||
bool logged_in = (LLStartUp::getStartupState() >= STATE_STARTED);
|
||||
LLWindow* window = gViewerWindow->getWindow();
|
||||
LLCoordScreen size;
|
||||
window->getSize(&size);
|
||||
LLGLState::checkStates();
|
||||
|
||||
@@ -1654,7 +1654,7 @@ LLViewerWindow::LLViewerWindow(
|
||||
vsync_mode,
|
||||
!gNoRender,
|
||||
ignore_pixel_depth,
|
||||
gSavedSettings.getBOOL("RenderUseFBO") ? 0 : gSavedSettings.getU32("RenderFSAASamples")); //don't use window level anti-aliasing if FBOs are enabled
|
||||
LLRenderTarget::sUseFBO ? 0 : gSavedSettings.getU32("RenderFSAASamples")); //don't use window level anti-aliasing if FBOs are enabled
|
||||
|
||||
if (!LLViewerShaderMgr::sInitialized)
|
||||
{ //immediately initialize shaders
|
||||
@@ -5500,7 +5500,7 @@ BOOL LLViewerWindow::changeDisplaySettings(BOOL fullscreen, LLCoordScreen size,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
U32 fsaa = gSavedSettings.getU32("RenderFSAASamples");
|
||||
U32 fsaa = LLRenderTarget::sUseFBO ? 0 : gSavedSettings.getU32("RenderFSAASamples"); //don't use window level anti-aliasing if FBOs are enabled
|
||||
U32 old_fsaa = mWindow->getFSAASamples();
|
||||
|
||||
// going from windowed to windowed
|
||||
|
||||
@@ -428,6 +428,9 @@ void LLPipeline::init()
|
||||
{
|
||||
refreshCachedSettings();
|
||||
|
||||
bool can_defer = LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred");
|
||||
LLRenderTarget::sUseFBO = gSavedSettings.getBOOL("RenderUseFBO") || (gSavedSettings.getBOOL("RenderDeferred") && can_defer);
|
||||
|
||||
gOctreeMaxCapacity = gSavedSettings.getU32("OctreeMaxNodeCapacity");
|
||||
gOctreeReserveCapacity = llmin(gSavedSettings.getU32("OctreeReserveNodeCapacity"),U32(512));
|
||||
sDynamicLOD = gSavedSettings.getBOOL("RenderDynamicLOD");
|
||||
|
||||
Reference in New Issue
Block a user