Disables framebuffer invalidating by default for GL as some drivers perform it incorrectly.

Fixes #6805

Tested By: Itms
Differential Revision: https://code.wildfiregames.com/D5003
This was SVN commit r27654.
This commit is contained in:
Vladislav Belov 2023-05-29 20:53:10 +00:00
parent 58eebfcc64
commit cd8eb70859
2 changed files with 10 additions and 2 deletions

View File

@ -131,6 +131,8 @@ renderer.backend.debugmessages = "false"
renderer.backend.debuglabels = "false"
renderer.backend.debugscopedlabels = "false"
renderer.backend.gl.enableframebufferinvalidating = "false"
renderer.backend.vulkan.disabledescriptorindexing = "false"
renderer.backend.vulkan.deviceindexoverride = -1

View File

@ -365,11 +365,17 @@ std::unique_ptr<IDevice> CDevice::Create(SDL_Window* window, const bool arb)
#endif
}
// Some drivers might invalidate an incorrect surface which leads to artifacts.
bool enableFramebufferInvalidating = false;
CFG_GET_VAL("renderer.backend.gl.enableframebufferinvalidating", enableFramebufferInvalidating);
if (enableFramebufferInvalidating)
{
#if CONFIG2_GLES
device->m_UseFramebufferInvalidating = ogl_HaveExtension("GL_EXT_discard_framebuffer");
device->m_UseFramebufferInvalidating = ogl_HaveExtension("GL_EXT_discard_framebuffer");
#else
device->m_UseFramebufferInvalidating = !arb && ogl_HaveExtension("GL_ARB_invalidate_subdata");
device->m_UseFramebufferInvalidating = !arb && ogl_HaveExtension("GL_ARB_invalidate_subdata");
#endif
}
Capabilities& capabilities = device->m_Capabilities;
capabilities.ARBShaders = !ogl_HaveExtensions(0, "GL_ARB_vertex_program", "GL_ARB_fragment_program", nullptr);