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();
|
U32 fsaa_value = childGetValue("fsaa").asInteger();
|
||||||
S32 vsync_value = childGetValue("vsync").asInteger();
|
S32 vsync_value = childGetValue("vsync").asInteger();
|
||||||
|
bool fbo_value = childGetValue("fbo").asBoolean();
|
||||||
|
|
||||||
|
LLWindow* window = gViewerWindow->getWindow();
|
||||||
|
|
||||||
if(vsync_value == -1 && !gGLManager.mHasAdaptiveVsync)
|
if(vsync_value == -1 && !gGLManager.mHasAdaptiveVsync)
|
||||||
vsync_value = 0;
|
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;
|
bool apply_vsync_change = vsync_value != mVsyncMode;
|
||||||
|
|
||||||
gSavedSettings.setU32("RenderFSAASamples", fsaa_value);
|
gSavedSettings.setU32("RenderFSAASamples", fsaa_value);
|
||||||
@@ -889,7 +898,6 @@ void LLPanelDisplay::apply()
|
|||||||
if(apply_fsaa_change || apply_vsync_change)
|
if(apply_fsaa_change || apply_vsync_change)
|
||||||
{
|
{
|
||||||
bool logged_in = (LLStartUp::getStartupState() >= STATE_STARTED);
|
bool logged_in = (LLStartUp::getStartupState() >= STATE_STARTED);
|
||||||
LLWindow* window = gViewerWindow->getWindow();
|
|
||||||
LLCoordScreen size;
|
LLCoordScreen size;
|
||||||
window->getSize(&size);
|
window->getSize(&size);
|
||||||
LLGLState::checkStates();
|
LLGLState::checkStates();
|
||||||
|
|||||||
@@ -1654,7 +1654,7 @@ LLViewerWindow::LLViewerWindow(
|
|||||||
vsync_mode,
|
vsync_mode,
|
||||||
!gNoRender,
|
!gNoRender,
|
||||||
ignore_pixel_depth,
|
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)
|
if (!LLViewerShaderMgr::sInitialized)
|
||||||
{ //immediately initialize shaders
|
{ //immediately initialize shaders
|
||||||
@@ -5500,7 +5500,7 @@ BOOL LLViewerWindow::changeDisplaySettings(BOOL fullscreen, LLCoordScreen size,
|
|||||||
return TRUE;
|
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();
|
U32 old_fsaa = mWindow->getFSAASamples();
|
||||||
|
|
||||||
// going from windowed to windowed
|
// going from windowed to windowed
|
||||||
|
|||||||
@@ -428,6 +428,9 @@ void LLPipeline::init()
|
|||||||
{
|
{
|
||||||
refreshCachedSettings();
|
refreshCachedSettings();
|
||||||
|
|
||||||
|
bool can_defer = LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred");
|
||||||
|
LLRenderTarget::sUseFBO = gSavedSettings.getBOOL("RenderUseFBO") || (gSavedSettings.getBOOL("RenderDeferred") && can_defer);
|
||||||
|
|
||||||
gOctreeMaxCapacity = gSavedSettings.getU32("OctreeMaxNodeCapacity");
|
gOctreeMaxCapacity = gSavedSettings.getU32("OctreeMaxNodeCapacity");
|
||||||
gOctreeReserveCapacity = llmin(gSavedSettings.getU32("OctreeReserveNodeCapacity"),U32(512));
|
gOctreeReserveCapacity = llmin(gSavedSettings.getU32("OctreeReserveNodeCapacity"),U32(512));
|
||||||
sDynamicLOD = gSavedSettings.getBOOL("RenderDynamicLOD");
|
sDynamicLOD = gSavedSettings.getBOOL("RenderDynamicLOD");
|
||||||
|
|||||||
Reference in New Issue
Block a user