Fwd: Intent to Ship: Remove WebGPU limit maxFragmentCombinedOutputResources

145 views
Skip to first unread message

Kai Ninomiya

unread,
Apr 18, 2023, 2:32:04 PM4/18/23
to blink-dev, Loko Kung

(sending from correct email address this time)


Due to the nature of this removal I've elected to send this as an Intent to Ship because we are seeking LGTMs. Please let me know if this is inappropriate.


Contact emails

kai...@chromium.org

Explainer

https://github.com/gpuweb/gpuweb/issues/4018

Specification

https://gpuweb.github.io/gpuweb/#limits

Summary

Removes the maxFragmentCombinedOutputResources limit from WebGPU, which has been deemed to be unnecessary. This limit applies additional restrictions on use of the WebGPU API, but is being removed from the standard. This removal is a minor breaking change.



Blink component

Blink>WebGPU

TAG review

None

TAG review status

Not applicable

Risks



Interoperability and Compatibility

Minimal but not zero. There are two changes here: - Remove GPUSupportedFeatures.maxFragmentCombinedOutputResources. - Remove "maxFragmentCombinedOutputResources" as an allowed key in GPUDeviceDescriptor.requiredLimits. Due to the way the API is used, it's very unlikely that anyone is using GPUSupportedFeatures.maxFragmentCombinedOutputResources. It's also unlikely, but possible, that anyone is explicitly passing "maxFragmentCombinedOutputResources" in GPUDeviceDescriptor.requiredLimits. - adapter.requestDevice({ requiredLimits: adapter.limits }). Expected to be common. - adapter.requestDevice({ requiredLimits: { maxFragmentCombinedOutputResources: 12 }}). Expected to be rare. - Code using adapter.limits.maxFragmentCombinedOutputResources. Expected to be extremely rare. Hence the proposal is to *just remove* the GPUSupportedFeatures member but *deprecate then remove* the requiredLimits key. Finally, note WebGPU hasn't reached Chrome Stable yet (it's in M113). The faster we remove this the better, because fewer sites will come to rely on it. We could merge a deprecation back to M113, but didn't think it was probably worthwhile.



Gecko: In development (https://github.com/gpuweb/gpuweb/wiki/Minutes-2023-04-12#remove-validation-of-maxfragmentcombinedoutputresources-4018) Accepted in standardization meeting

WebKit: In development (https://github.com/gpuweb/gpuweb/wiki/Minutes-2023-04-12#remove-validation-of-maxfragmentcombinedoutputresources-4018) Accepted in standardization meeting

Web developers: No signals

Other signals:

Ergonomics

None



Activation

None



Security

None



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

Warnings/error messages upon use of the removed limit



Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?

Yes

Will affect only Windows and Mac because WebGPU has not shipped yet on other platforms.



Is this feature fully tested by web-platform-tests?

No

Flag name



Requires code in //chrome?

False

Tracking bug

https://crbug.com/dawn/1756

Estimated milestones

Shipping on desktop114


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/5182904243585024

Links to previous Intent discussions



This intent message was generated by Chrome Platform Status.

Yoav Weiss

unread,
Apr 19, 2023, 3:37:53 AM4/19/23
to Kai Ninomiya, blink-dev, Loko Kung
On Tue, Apr 18, 2023 at 8:32 PM Kai Ninomiya <kai...@chromium.org> wrote:

(sending from correct email address this time)


Due to the nature of this removal I've elected to send this as an Intent to Ship because we are seeking LGTMs. Please let me know if this is inappropriate.


Contact emails

kai...@chromium.org

Explainer

https://github.com/gpuweb/gpuweb/issues/4018

Specification

https://gpuweb.github.io/gpuweb/#limits

Summary

Removes the maxFragmentCombinedOutputResources limit from WebGPU, which has been deemed to be unnecessary. This limit applies additional restrictions on use of the WebGPU API, but is being removed from the standard. This removal is a minor breaking change.



Blink component

Blink>WebGPU

TAG review

None

TAG review status

Not applicable

Risks



Interoperability and Compatibility

Minimal but not zero. There are two changes here: - Remove GPUSupportedFeatures.maxFragmentCombinedOutputResources. - Remove "maxFragmentCombinedOutputResources" as an allowed key in GPUDeviceDescriptor.requiredLimits. Due to the way the API is used, it's very unlikely that anyone is using GPUSupportedFeatures.maxFragmentCombinedOutputResources. It's also unlikely, but possible, that anyone is explicitly passing "maxFragmentCombinedOutputResources" in GPUDeviceDescriptor.requiredLimits. - adapter.requestDevice({ requiredLimits: adapter.limits }). Expected to be common. - adapter.requestDevice({ requiredLimits: { maxFragmentCombinedOutputResources: 12 }}). Expected to be rare. - Code using adapter.limits.maxFragmentCombinedOutputResources. Expected to be extremely rare. Hence the proposal is to *just remove* the GPUSupportedFeatures member but *deprecate then remove* the requiredLimits key. Finally, note WebGPU hasn't reached Chrome Stable yet (it's in M113). The faster we remove this the better, because fewer sites will come to rely on it. We could merge a deprecation back to M113, but didn't think it was probably worthwhile.


If you can merge back the removal to M113, I think it won't count as a removal at all, and hence no LGTMs would be necessary.
So I think that may be the best path, if feasible.
 
--
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+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CANxMeyBMuz0SiW8rUzZBC2n34Gfw0ggrLNwQxfzbfMuhOxArGA%40mail.gmail.com.

Rick Byers

unread,
Apr 19, 2023, 10:48:38 AM4/19/23
to Yoav Weiss, Kai Ninomiya, blink-dev, Loko Kung
Given how close we are to M113 stable release, it may be too late for a merge back. If so, I imagine removal should be pretty low risk and easy but given all the trouble we've had lately I do think we need to follow the breaking change process, including putting the changes behind a flag and either adding metrics, or showing existing UMA evidence that usage is low. It looks like overall WebGPU usage (mostly beta channel) is already above our "small" threshold, so congrats on having a popular platform feature which we now have to be very careful with changing :-)

Removing maxFragmentCombinedOutputResources from the GPUSupportedFeatures set is really safe (equivalent to any small behavior change, not an API contract change), right? I'm OK saying that doesn't require an intent or breaking change process since the API is just indicating what things are supported. Also adding a warning that the API will stop working seems fine, can you please also add a UseCounter so we can gather the data to show it's safe to remove?

Thanks,
  Rick

Kai Ninomiya

unread,
Apr 19, 2023, 12:59:50 PM4/19/23
to Rick Byers, Yoav Weiss, blink-dev, Loko Kung
Apologies, I made an error in the I2S, this is in an attribute in GPUSupportedLimits (an interface), not GPUSupportedFeatures (a set). Hence considering it a breaking change.

We have been considering a request to merge back to M113 but given we can't land on main without LGTM on an I2S, and we can't merge without having landed on main, how would we actually do that? Seek pre-approval to merge I suppose?

-Kai (he/they)

Rick Byers

unread,
Apr 19, 2023, 1:08:53 PM4/19/23
to Kai Ninomiya, Yoav Weiss, blink-dev, Loko Kung
Ah, good point :-)

I just approved the CL for the purposes of attempting a merge to M113. Please follow up here on whether that happened or if we need to proceed with the breaking change for M114.

Rick

Kai Ninomiya

unread,
Apr 19, 2023, 4:10:54 PM4/19/23
to Rick Byers, Yoav Weiss, blink-dev, Loko Kung
Thanks! Loko has filed https://crbug.com/1434745 for the merge request and I've filed https://crbug.com/1434766 as a releaseblock for 114 to track anything we need to do if it doesn't get merged back.

I also fixed the GPUSupporteFeatures/Limits typos in the chromestatus page.

-Kai (he/they)

Kai Ninomiya

unread,
Apr 19, 2023, 4:17:30 PM4/19/23
to blink-dev, Rick Byers, Yoav Weiss, blink-dev, Loko Kung, Kai Ninomiya
Thanks! Loko has filed https://crbug.com/1434745 for the merge request and I've filed https://crbug.com/1434766 as a releaseblock for 114 to track anything we need to do if it doesn't get merged back.
-Kai

Rick Byers

unread,
Apr 19, 2023, 4:18:19 PM4/19/23
to Kai Ninomiya, Yoav Weiss, blink-dev, Loko Kung
Perfect, thank you! Good luck!

Kai Ninomiya

unread,
Apr 19, 2023, 6:52:15 PM4/19/23
to Rick Byers, Yoav Weiss, blink-dev, Loko Kung
As one last update for now, we've changed the CL to completely remove the feature. This way if we do succeed in merging to 113 the deprecated feature will not ship to stable, so the compat risk of removing it will be zero. Updating chromestatus.

-Kai (he/they)

Reply all
Reply to author
Forward
0 new messages