Matan Lurey 52d45d8af1 [Impeller] Switch from glBlitFramebuffer to implicit MSAA resolution. (flutter/engine#47282)
Closes https://github.com/flutter/flutter/issues/137093.

This widens supports from Open GLES 3.x to Open GLES 2.x, and uses [ARM
GPU Best
Practices](https://developer.arm.com/documentation/101897/0301/Fragment-shading/Multisampling-for-OpenGL-ES):

> Do not use `glBlitFramebuffer()` to implement a multisample resolve.

This PR:

- Removes usage of `glBlitFramebuffer`
- Adds the capability check, `SupportsImplicitResolvingMSAA`, which is
`false` outside of GLES
- Does not discard color attachments resolved by
`EXT_multisampled_render_to_texture` (done implicitly)

I spoke to @jonahwilliams about the changes to the HAL, who I believe
also talked to @bdero about it. The short explantation is that, with the
`EXT_multisampled_render_to_texture`, we can be more efficient by
letting GLES perform multisampled rendering for us (no per-sample data
is written out).

See also
https://registry.khronos.org/OpenGL/extensions/EXT/EXT_multisampled_render_to_texture.txt
for details.
2023-10-30 12:28:04 -07:00
Languages
Dart 75%
C++ 16.5%
Objective-C++ 2.9%
Java 2.8%
Objective-C 0.7%
Other 1.9%