- make gl_finishbeforeswap more useful by handling the case where it causes stalls on NVidia.

This commit is contained in:
Christoph Oelckers 2016-12-25 22:56:18 +01:00
parent ad2993950a
commit c5d75c18b4
2 changed files with 8 additions and 3 deletions

View file

@ -91,6 +91,7 @@ extern bool r_showviewer;
DWORD gl_fixedcolormap;
area_t in_area;
TArray<BYTE> currentmapsection;
int camtexcount;
void gl_ParseDefs();
@ -1356,6 +1357,7 @@ void FGLInterface::RenderTextureView (FCanvasTexture *tex, AActor *Viewpoint, in
}
tex->SetUpdated();
camtexcount++;
}
//==========================================================================

View file

@ -207,22 +207,25 @@ void OpenGLFrameBuffer::Update()
//
//==========================================================================
CVAR(Bool, gl_finishbeforeswap, false, 0);
CVAR(Bool, gl_finishbeforeswap, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG);
extern int camtexcount;
void OpenGLFrameBuffer::Swap()
{
bool swapbefore = gl_finishbeforeswap && camtexcount == 0;
Finish.Reset();
Finish.Clock();
if (gl_finishbeforeswap) glFinish();
if (swapbefore) glFinish();
if (needsetgamma)
{
//DoSetGamma();
needsetgamma = false;
}
SwapBuffers();
if (!gl_finishbeforeswap) glFinish();
if (!swapbefore) glFinish();
Finish.Unclock();
swapped = true;
camtexcount = 0;
FHardwareTexture::UnbindAll();
mDebug->Update();
}