mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
This improves Flutter Window's texture format logic: 1. **If the device has extension `GL_EXT_texture_format_BGRA8888`**: backing stores' texture will be created with format `GL_BGRA_EXT` instead of `GL_RGBA8`. This is what fixes https://github.com/flutter/flutter/issues/150546. 2. **Otherwise**: backing stores' texture will be created with format `GL_RGBA` and the engine will use the color type `kRGBA_8888_SkColorType` when creating the `SkSurface`. Previously the engine always used color type `kN32_SkColorType`, which could be either RGBA or BGRA depending on the machine that compiled the engine. This caused Skia validation errors as the texture's format did not match the Skia surface's color type. I tested this by editing Flutter Windows to force it down this code path. Huge kudos to @chinmaygarde for the OpenGL expertise! Fixes: https://github.com/flutter/flutter/issues/150546 > [!WARNING] > Unfortunately, we are unable to test this. > This bug appears to only affect older devices; none of our devices reproduce this issue. > We also do not have the infrastructure to do a native screenshot test on Windows. > I will get a test exemption for this change. [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style