[Flutter GPU] Add r32Float and remove Apple-only XR pixel formats#187069
Conversation
There was a problem hiding this comment.
Code Review
This pull request replaces several Apple-only extended-range pixel formats (kB10G10R10XR, kB10G10R10XRSRGB, and kB10G10R10A10XR) with a single-channel 32-bit floating-point format (kR32Float / r32Float) in the Flutter GPU API. It also maps the removed formats to kUnknown and adds a unit test to verify the allocation of the new r32Float texture format. One review comment suggests adding documentation to the newly introduced r32Float enum value in Dart, which aligns with the repository style guide.
gaaclarke
left a comment
There was a problem hiding this comment.
Your call but those formats are the only real viable option for wide gamut on apple platforms. Floating point formats have problems with performance and are incompatible with rgba8 fragment shaders (since they don't implicitly clamp).
|
Yeah especially since we're about to land a direct way to query for supported textures, I think it'll be good to start supporting more formats that are platform specific/specialized over time as users come to demand them... would like to avoid being a "lowest common denominator" API over the longterm. I just don't have any tests (or external renderers) directly exercising them today. So I don't actually know if they work in Flutter GPU end-to-end right now. 🤷♂️ |
|
autosubmit label was removed for flutter/flutter/187069, because - The status or check suite Google testing has failed. Please fix the issues identified (or deflake) before re-applying this label. |
flutter/flutter@e70534d...b05a9d7 2026-05-29 engine-flutter-autoroll@skia.org Roll Skia from 47155534833e to d9d6b440c4e7 (1 revision) (flutter/flutter#187301) 2026-05-29 engine-flutter-autoroll@skia.org Roll Skia from f93ed13d77fb to 47155534833e (4 revisions) (flutter/flutter#187291) 2026-05-29 kevmoo@users.noreply.github.com [web_ui] Optimize skwasm text layout and path decoding to eliminate dynamic boxing churn under Wasm (flutter/flutter#186978) 2026-05-29 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from SBpmmPxqx3lAvGojE... to jMR_VXQi07kAk8vbR... (flutter/flutter#187279) 2026-05-29 burak.karahan@mail.ru Remove Material import from sliver tree rendering test (flutter/flutter#187000) 2026-05-29 bdero@google.com [Impeller] Remove the y_coord_scale Y-flip plumbing (flutter/flutter#187224) 2026-05-29 31859944+LongCatIsLooong@users.noreply.github.com Add/remove overlay child RenderObject from the tree in `attach`/`detach` (flutter/flutter#186564) 2026-05-29 engine-flutter-autoroll@skia.org Roll Skia from fcfe5975c945 to f93ed13d77fb (4 revisions) (flutter/flutter#187273) 2026-05-28 evanwall@buffalo.edu Handle complex RSE rendering in the uber SDF pipeline (flutter/flutter#186434) 2026-05-28 engine-flutter-autoroll@skia.org Roll Dart SDK from 082191101fcc to 683322426411 (2 revisions) (flutter/flutter#187270) 2026-05-28 mvincentong@gmail.com Clarify route transition animations (flutter/flutter#186552) 2026-05-28 116356835+AbdeMohlbi@users.noreply.github.com document that the default Key is null and explain proper usage in list diffing (flutter/flutter#185197) 2026-05-28 srawlins@google.com [flutter_tools] Use super parameters in missed spots (flutter/flutter#186197) 2026-05-28 mr_nadeem_iqbal@yahoo.com docs: Document MediaQueryData.alwaysUse24HourFormat on macOS, Windows, Linux, web (#160664) (flutter/flutter#186642) 2026-05-28 engine-flutter-autoroll@skia.org Roll Skia from 5493e4c144cd to fcfe5975c945 (3 revisions) (flutter/flutter#187256) 2026-05-28 30870216+gaaclarke@users.noreply.github.com Shares opengles golden context (flutter/flutter#187243) 2026-05-28 jason-simmons@users.noreply.github.com Update the Curl CIPD package in .ci.yaml to version 8.20.0 (flutter/flutter#187133) 2026-05-28 737941+loic-sharma@users.noreply.github.com Improve SizedBox's docs (flutter/flutter#187208) 2026-05-28 bdero@google.com [Impeller] Support instanced rendering across all backends (flutter/flutter#186653) 2026-05-28 43054281+camsim99@users.noreply.github.com [Android] Reset system UI visibility flags when setting edge-to-edge mode (flutter/flutter#187207) 2026-05-28 engine-flutter-autoroll@skia.org Roll Skia from a38708fb7926 to 5493e4c144cd (7 revisions) (flutter/flutter#187241) 2026-05-28 30870216+gaaclarke@users.noreply.github.com Turned on impeller by default on macos (flutter/flutter#186546) 2026-05-28 mvincentong@gmail.com Clarify lazy scroll extent docs (flutter/flutter#186864) 2026-05-28 mdebbar@google.com [web] Fix WebParagraph locales test (flutter/flutter#186813) 2026-05-28 engine-flutter-autoroll@skia.org Roll Packages from 4b424d7 to 10cbdc5 (3 revisions) (flutter/flutter#187238) 2026-05-28 engine-flutter-autoroll@skia.org Roll Dart SDK from f3db7b7d9801 to 082191101fcc (8 revisions) (flutter/flutter#187235) 2026-05-28 engine-flutter-autoroll@skia.org Roll Skia from 32acea791248 to a38708fb7926 (1 revision) (flutter/flutter#187221) 2026-05-28 bdero@google.com [Flutter GPU] Add r32Float and remove Apple-only XR pixel formats (flutter/flutter#187069) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC boetger@google.com,stuartmorgan@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Tidies the Flutter GPU
PixelFormatsurface.Adds
r32Float, a single-channel 32-bit float format that every Impeller backend (Metal, Vulkan, OpenGLES) already supports but that was never exposed to the Flutter GPU API.Removes
b10g10r10XR,b10g10r10XRSRGB, andb10g10r10a10XR. These Apple extended-range formats only function on Metal; they resolve to undefined or unsupported on the Vulkan and OpenGLES backends, so they were broken anywhere off Apple platforms (and I'm not exercising them in either Flutter GPU's internal tests nor flutter_scene's external goldens). They remain available internally within Impeller, of course. Only the public Flutter GPU surface drops them.The portable successor for wide-gamut output is a standard
rgb10a2Unormformat, which can be added down the road upon user demand. Flutter GPU is experimental, so this is a minor breaking change to its API with no known users.Pre-launch Checklist
///).