-
Notifications
You must be signed in to change notification settings - Fork 28.7k
[Windows] Use ANGLE blit extension on GLES 2.0 #170298
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@@ -141,6 +141,10 @@ ProcTableGLES::ProcTableGLES( // NOLINT(google-readability-function-size) | |||
DiscardFramebufferEXT.Reset(); | |||
} | |||
|
|||
if (!description_->HasExtension("GL_ANGLE_framebuffer_blit")) { | |||
BlitFramebufferANGLE.Reset(); | |||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I considered only loading this proc if we detect ANGLE, however, the GL_VERSION
for the affected devices are 2.0.0
, which causes DescriptionGLES::IsANGLE
to return false
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
dedf917
to
6c061ea
Compare
This updates Flutter Windows to fall back to
glBlitFramebufferANGLE
ifglBlitFramebuffer
is not available. This makes Flutter Windows work on devices where ANGLE supports only GLES 2.0.Fixes: #169178
Background
ANGLE only implements GLES 2.0 on some Windows 10+ machines (1, 2).
Flutter Windows 3.27.4 and lower was using
glBlitFramebuffer
on GLES 2.0 devices, even though that requires GLES 3.0. This magically worked though, thanks to ANGLE.However in 3.29.0, Impeller was updated to not resolve GLES 3.0 procs on GLES 2.0: flutter/engine#56636. This caused Flutter Windows to crash on GLES 2.0 devices since it was calling
glBlitFramebuffer
.Pre-launch Checklist
///
).If you need help, consider asking for advice on the #hackers-new channel on Discord.