Hey folks, LGTM1 with nits. First, it would be good for y'all to FYI this to the TAG, even if you don't block on review. I agree it's small and would wave it through. I know Daniel has questions about the Finch flag name, so would be good to have those sorted before this goes out too.
Thanks, Alex On Wednesday, August 28, 2024 at 5:02:13 AM UTC-7 Corentin Wallez wrote: > On Wed, Aug 28, 2024 at 12:36 PM Yoav Weiss (@Shopify) < > yoavwe...@chromium.org> wrote: > >> LGTM1 >> >> On Fri, Aug 23, 2024 at 2:46 PM 'François Beaufort' via blink-dev < >> blink-dev@chromium.org> wrote: >> >>> Adding +Corentin Wallez <cwal...@google.com> to the thread >>> >>> On Fri, Aug 23, 2024 at 2:29 PM François Beaufort <fbeauf...@google.com> >>> wrote: >>> >>>> >>>> >>>> On Fri, Aug 23, 2024 at 7:01 AM Domenic Denicola <dome...@chromium.org> >>>> wrote: >>>> >>>>> >>>>> >>>>> On Thu, Aug 22, 2024 at 9:13 PM 'François Beaufort' via blink-dev < >>>>> blink-dev@chromium.org> wrote: >>>>> >>>>>> Contact emails >>>>>> >>>>>> fbeauf...@google.com >>>>>> >>>>>> Explainer >>>>>> >>>>>> The “dual-source-blending” GPU feature adds additional blend factors >>>>>> and the WGSL @blend_src attribute to allow a fragment shader to blend >>>>>> two >>>>>> color outputs into a single output buffer. >>>>>> https://github.com/gpuweb/gpuweb/pull/4621 >>>>>> >>>>>> Specification >>>>>> >>>>>> >>>>>> https://gpuweb.github.io/gpuweb/#dom-gpufeaturename-dual-source-blending >>>>>> >>>>>> Summary >>>>>> >>>>>> Functionality added to the WebGPU spec after its first shipment in a >>>>>> browser. >>>>>> >>>>>> Adds the optional GPU feature “dual-source-blending” that enables >>>>>> combining two fragment shader outputs into a single framebuffer. This >>>>>> technique is particularly useful for applications that require complex >>>>>> blending operations, such as those based on Porter-Duff blend modes. By >>>>>> reducing the need for frequent pipeline state object changes, dual >>>>>> source >>>>>> blending can enhance performance and flexibility. >>>>>> >>>>>> Blink component >>>>>> >>>>>> Blink>WebGPU >>>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EWebGPU> >>>>>> >>>>>> TAG review >>>>>> >>>>>> None >>>>>> >>>>>> TAG review status >>>>>> >>>>>> Not applicable >>>>>> >>>>> >>>>> I can't figure out which exception >>>>> <https://www.chromium.org/blink/guidelines/api-owners/process-exceptions/> >>>>> >>>>> this would fall under. Can you help explain why TAG review is not >>>>> applicable here? >>>>> >>>> >>>> Back in October 2023, Corentin Wallez, the WebGPU Tech Lead, met with >>>> the Blink API owners to address the process for releasing WebGPU features >>>> following their inclusion in Chromium. It was mutually agreed that >>>> requesting TAG reviews for minor features would be unnecessary. This >>>> policy >>>> applied to all features added at the time. See >>>> https://groups.google.com/a/chromium.org/g/blink-dev/search?q=%22tag%20review%22%20subject%3Awebgpu >>>> >>> >> I may misremember, but I thought we discussed adding a "levels" >> designation to WebGPU additions that would enable us to create such >> bypasses for vendor signals and TAG reviews. Did that actually happen? If >> so, did we make any progress on that? >> >> In any case, I agree this is a small addition in which I wouldn't expect >> the TAG to have meaningful feedback over the one already provided by the >> domain experts at the WebGPU group. >> >> We discussed that some larger additions to WebGPU would still request a > TAG review, one of which would be the addition of a compatibility mode > <https://github.com/gpuweb/gpuweb/blob/main/proposals/compatibility-mode.md> > or > feature level mechanism for WebGPU (whichever the WebGPU group gets to > consensus on). We are still making progress on that one, and don't have > other large features being developed yet (only smaller, GPU-specific > additions for now). Other features that could warrant TAG review would be > bindless / ray tracing (though it's mostly GPU specific), multithreading > support, and maybe interoperation with other Web APIs like canvas > <https://github.com/fserb/canvas2D/blob/master/spec/webgpu.md> (and canvas > shaders <https://github.com/fserb/canvas2D/blob/master/spec/shaders.md>), > or WebNN <https://github.com/webmachinelearning/webnn/issues/688>. > > >> >>>> >>>> >>>>> >>>>> >>>>>> >>>>>> Risks >>>>>> >>>>>> Interoperability and Compatibility >>>>>> >>>>>> This feature has not yet been implemented in any browser. It has been >>>>>> approved by the GPU for the Web Community Group, with representatives >>>>>> from >>>>>> Chrome, Firefox, and Safari. See minutes at >>>>>> https://github.com/gpuweb/gpuweb/wiki/GPU-Web-2024-05-29#add-optional-feature-dual_source_blending-4621 >>>>>> >>>>>> Gecko: No signal (Mozilla members have approved >>>>>> https://github.com/gpuweb/gpuweb/pull/4621 and requested during >>>>>> weekly standardization meetings that we postpone filing standard >>>>>> positions >>>>>> until we reach Candidate Recommendation (CR) status in Q4.) >>>>>> >>>>>> WebKit: Positive ( >>>>>> https://github.com/WebKit/standards-positions/issues/294#issuecomment-1877411933 >>>>>> ) >>>>>> >>>>>> Web developers: Positive ( >>>>>> https://github.com/gpuweb/gpuweb/issues/4283) >>>>>> >>>>>> Other signals: >>>>>> >>>>>> WebView application risks >>>>>> >>>>>> Does this intent deprecate or change behavior of existing APIs, such >>>>>> that it has potentially high risk for Android WebView-based applications? >>>>>> >>>>>> None >>>>>> >>>>>> >>>>>> Debuggability >>>>>> >>>>>> None >>>>>> >>>>>> >>>>>> Will this feature be supported on all six Blink platforms (Windows, >>>>>> Mac, Linux, ChromeOS, Android, and Android WebView)? >>>>>> >>>>>> No >>>>>> >>>>>> All platforms will eventually have support. Will immediately be >>>>>> available on Android, Android WebView, ChromeOS, Mac, and Windows, since >>>>>> those platforms already support WebGPU. Linux is planned to have WebGPU >>>>>> support in the future, so this feature will become available when WebGPU >>>>>> does. >>>>>> >>>>>> Is this feature fully tested by web-platform-tests >>>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> >>>>>> ? >>>>>> >>>>>> Yes. See https://github.com/gpuweb/cts/issues/3810 >>>>>> >>>>>> WebGPU/WGSL have a conformance test suite ( >>>>>> https://github.com/gpuweb/cts) that is regularly pulled into >>>>>> Chromium and part of the testing of Dawn/Tint in Chromium. >>>>>> >>>>> >>>>> But, it is not tested by web platform tests themselves, right? >>>>> https://github.com/web-platform-tests/wpt/tree/master/webgpu seems to >>>>> not contain any tests for this feature. >>>>> >>>>> (This does not block shipping, but rather is just a request to improve >>>>> the accuracy of your Chrome Platform Status entry.) >>>>> >>>> >>>> As you can see in >>>> https://groups.google.com/a/chromium.org/g/blink-dev/search?q=cts%20web-platform-tests%20subject%3Awebgpu, >>>> >>>> we’ve always replied “Yes” to this question. The WebGPU/WGSL conformance >>>> test suite (https://github.com/gpuweb/cts) is not used only by >>>> Chromium. Other engines, like WebKit and Gecko, also rely on this test >>>> suite to ensure their implementation aligns with the WebGPU specification. >>>> This test suite can be exported to WPT and we use that export for a >>>> subset of tests in Chromium for reftests: >>>> https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/web_tests/wpt_internal/webgpu/ >>>> The rest of the tests are executed with a different harness in Chromium >>>> for better speed and test result granularity. >>>> >>>> >>>>> >>>>>> >>>>>> Flag name on chrome://flags >>>>>> >>>>>> None >>>>>> >>>>>> Finch feature name >>>>>> >>>>>> WebGPU.Enabled:UnsafeFeatures >>>>>> >>>>> >>>>> This Finch feature name is a bit scary. Does it actually allow >>>>> unshipping only this new feature? It sounds rather general. >>>>> >>>>> >>>> >>>> It does allow disabling specific GPU features such as >>>> FeatureName::DualSourceBlending, but also FeatureName::Subgroups, etc. See >>>> https://source.chromium.org/chromium/chromium/src/+/main:gpu/config/gpu_finch_features.cc;l=275;drc=168a59b6bada5b30a6f2390c22a6177216b17e4d >>>> . >>>> If it really matters, we could rename the Finch feature name to >>>> WebGPU.Enabled:BlocklistFeatures to better reflect the meaning. >>>> >>>> >>>>>> Requires code in //chrome? >>>>>> >>>>>> False >>>>>> >>>>>> Tracking bug >>>>>> >>>>>> https://issues.chromium.org/issues/341973423 >>>>>> >>>>>> Estimated milestones >>>>>> >>>>>> DevTrial on desktop >>>>>> >>>>>> 129 >>>>>> >>>>>> DevTrial on Android >>>>>> >>>>>> 129 >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> Anticipated spec changes >>>>>> >>>>>> Open questions about a feature may be a source of future web compat >>>>>> or interop issues. Please list open issues (e.g. links to known github >>>>>> issues in the project for the feature specification) whose resolution >>>>>> may >>>>>> introduce web compat/interop risk (e.g., changing to naming or structure >>>>>> of >>>>>> the API in a non-backward-compatible way). >>>>>> >>>>>> None >>>>>> >>>>>> Link to entry on the Chrome Platform Status >>>>>> >>>>>> https://chromestatus.com/feature/5167711051841536 >>>>>> >>>>>> >>>>>> This intent message was generated by Chrome Platform Status >>>>>> <https://chromestatus.com/>. >>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "blink-dev" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to blink-dev+unsubscr...@chromium.org. >>>>>> To view this discussion on the web visit >>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPpwU5LYcjs9iaFmzLZ%2BtorNvAQ0no4SSxGAm6ZJ62NONiASNA%40mail.gmail.com >>>>>> >>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPpwU5LYcjs9iaFmzLZ%2BtorNvAQ0no4SSxGAm6ZJ62NONiASNA%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>>> . >>>>>> >>>>> -- >>> You received this message because you are subscribed to the Google >>> Groups "blink-dev" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to blink-dev+unsubscr...@chromium.org. >>> To view this discussion on the web visit >>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPpwU5L5XPV4Z9amhPMP8819GR_WtDOS2pwN2iph_bLOKoCZoQ%40mail.gmail.com >>> >>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPpwU5L5XPV4Z9amhPMP8819GR_WtDOS2pwN2iph_bLOKoCZoQ%40mail.gmail.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/ad26c92d-a28a-4ed2-9f95-17b02439f276n%40chromium.org.