OpenGLDevice: More Mali driver workarounds

This commit is contained in:
Stenzek 2023-12-16 21:04:40 +10:00
parent fb0ad26de8
commit 0632c3356c
No known key found for this signature in database
2 changed files with 9 additions and 2 deletions

View file

@ -65,7 +65,12 @@ static void DisableBrokenExtensions(const char* gl_vendor, const char* gl_render
gl_major_version >= 3 && gl_minor_version >= 2 && major_version > 0)) gl_major_version >= 3 && gl_minor_version >= 2 && major_version > 0))
{ {
// r32p0 and beyond seem okay. // r32p0 and beyond seem okay.
Log_VerbosePrintf("Keeping copy_image for driver version '%s'", gl_version); //Log_VerbosePrintf("Keeping copy_image for driver version '%s'", gl_version);
// Framebuffer blits still end up faster.
Log_VerbosePrintf("Newer Mali driver detected, disabling GL_{EXT,OES}_copy_image.");
GLAD_GL_EXT_copy_image = 0;
GLAD_GL_OES_copy_image = 0;
} }
else else
{ {

View file

@ -507,7 +507,9 @@ bool OpenGLDevice::CheckFeatures(bool* buggy_pbo, FeatureMask disabled_features)
// noperspective is not supported in GLSL ES. // noperspective is not supported in GLSL ES.
m_features.noperspective_interpolation = !is_gles; m_features.noperspective_interpolation = !is_gles;
m_features.texture_copy_to_self = !(disabled_features & FEATURE_MASK_TEXTURE_COPY_TO_SELF); // glBlitFramebufer with same source/destination should be legal, but on Mali (at least Bifrost) it breaks.
// So, blit from the shadow texture, like in the other renderers.
m_features.texture_copy_to_self = !vendor_id_arm && !(disabled_features & FEATURE_MASK_TEXTURE_COPY_TO_SELF);
m_features.geometry_shaders = m_features.geometry_shaders =
!(disabled_features & FEATURE_MASK_GEOMETRY_SHADERS) && (GLAD_GL_VERSION_3_2 || GLAD_GL_ES_VERSION_3_2); !(disabled_features & FEATURE_MASK_GEOMETRY_SHADERS) && (GLAD_GL_VERSION_3_2 || GLAD_GL_ES_VERSION_3_2);