Index: ps/trunk/binaries/data/config/default.cfg =================================================================== --- ps/trunk/binaries/data/config/default.cfg +++ ps/trunk/binaries/data/config/default.cfg @@ -131,6 +131,8 @@ renderer.backend.debuglabels = "false" renderer.backend.debugscopedlabels = "false" +renderer.backend.gl.enableframebufferinvalidating = "false" + renderer.backend.vulkan.disabledescriptorindexing = "false" renderer.backend.vulkan.deviceindexoverride = -1 Index: ps/trunk/source/renderer/backend/gl/Device.cpp =================================================================== --- ps/trunk/source/renderer/backend/gl/Device.cpp +++ ps/trunk/source/renderer/backend/gl/Device.cpp @@ -365,11 +365,17 @@ #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);