Intent to Ship: WebGPU maxBindGroupsPlusVertexBuffers limit

190 views
Skip to first unread message

François Beaufort

unread,
Oct 24, 2023, 9:32:23 AM10/24/23
to blink-dev, Corentin Wallez

Contact emails

fbea...@google.com, cwa...@google.com


Specification

https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxbindgroupsplusvertexbuffers


Summary

The WebGPU maxBindGroupsPlusVertexBuffers limit is the maximum number of bind group and vertex buffer slots used simultaneously, counting any empty slots below the highest index. It is validated in createRenderPipeline() and in draw calls. This change adds maxBindGroupsPlusVertexBuffers to the GPUSupportedLimits interface, and as an accepted key by the GPUDeviceDescriptor.requiredLimits record.


Blink component

Blink>WebGPU


TAG review

None


TAG review status

Not applicable


Risks



Interoperability and Compatibility

The maxBindGroupsPlusVertexBuffers limit has not yet been implemented in any browser, but it has been fully approved by the GPU for the Web Community Group, with representatives from Safari, Firefox, and Chrome. See https://github.com/gpuweb/gpuweb/issues/2749#issuecomment-1447717468


Gecko: Positive (https://hg.mozilla.org/mozilla-central/rev/5ed1439037c4)


WebKit: In development (https://github.com/WebKit/WebKit/commit/26f539228dd0a3ee85e38e886753c41955e93971)


Web developers: Positive (https://github.com/gpuweb/gpuweb/issues/2749)


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 at the moment, WebGPU currently does not ship on Android WebView. Parallel work is occurring to launch WebGPU on Android.



Debuggability

No DevTools changes are required, treated like any other attribute.


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

No

All platforms will eventually have support. Will immediately be available on ChromeOS, Mac, and Windows, since those platforms already support WebGPU. Linux and Android are 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?

Yes

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.


Requires code in //chrome?

False


Tracking bug

https://bugs.chromium.org/p/dawn/issues/detail?id=1849


Availability expectation

Feature is available only in Chromium browsers for the near future, on the order of months. Other browsers intend to ship WebGPU support, but don't have specified timelines.


Non-OSS dependencies

Does the feature depend on any code or APIs outside the Chromium open source repository and its open-source dependencies to function?

No


Estimated milestones

Shipping on desktop

120


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


This intent message was generated by Chrome Platform Status.


Yoav Weiss

unread,
Oct 25, 2023, 4:28:08 AM10/25/23
to blink-dev, blink-dev, Corentin Wallez
LGTM1

On Tuesday, October 24, 2023 at 3:32:23 PM UTC+2 blink-dev wrote:
Contact emails

fbea...@google.com, cwa...@google.com


Specification

https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxbindgroupsplusvertexbuffers


Summary

The WebGPU maxBindGroupsPlusVertexBuffers limit is the maximum number of bind group and vertex buffer slots used simultaneously, counting any empty slots below the highest index. It is validated in createRenderPipeline() and in draw calls. This change adds maxBindGroupsPlusVertexBuffers to the GPUSupportedLimits interface, and as an accepted key by the GPUDeviceDescriptor.requiredLimits record.


Blink component

Blink>WebGPU


TAG review

None


Presumably not required as this has landed in the standard and implemented by another engine.
 

TAG review status

Not applicable


Risks

Interoperability and Compatibility

The maxBindGroupsPlusVertexBuffers limit has not yet been implemented in any browser, but it has been fully approved by the GPU for the Web Community Group, with representatives from Safari, Firefox, and Chrome. See https://github.com/gpuweb/gpuweb/issues/2749#issuecomment-1447717468


Gecko: Positive (https://hg.mozilla.org/mozilla-central/rev/5ed1439037c4)


WebKit: In development (https://github.com/WebKit/WebKit/commit/26f539228dd0a3ee85e38e886753c41955e93971)


I'm guessing this is implemented in both? I agree with your request on another thread that it'd be simpler if we had a "stages" system here similar to WASM and JS.

François Beaufort

unread,
Oct 25, 2023, 4:32:44 AM10/25/23
to Yoav Weiss, blink-dev, Corentin Wallez
On Wed, Oct 25, 2023 at 10:28 AM Yoav Weiss <yoav...@chromium.org> wrote:
LGTM1

On Tuesday, October 24, 2023 at 3:32:23 PM UTC+2 blink-dev wrote:
Contact emails

fbea...@google.com, cwa...@google.com


Specification

https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxbindgroupsplusvertexbuffers


Summary

The WebGPU maxBindGroupsPlusVertexBuffers limit is the maximum number of bind group and vertex buffer slots used simultaneously, counting any empty slots below the highest index. It is validated in createRenderPipeline() and in draw calls. This change adds maxBindGroupsPlusVertexBuffers to the GPUSupportedLimits interface, and as an accepted key by the GPUDeviceDescriptor.requiredLimits record.


Blink component

Blink>WebGPU


TAG review

None


Presumably not required as this has landed in the standard and implemented by another engine.

Yes. It has landed in the WebGPU specification and it is added to other engines as shown below.
 
 

TAG review status

Not applicable


Risks

Interoperability and Compatibility

The maxBindGroupsPlusVertexBuffers limit has not yet been implemented in any browser, but it has been fully approved by the GPU for the Web Community Group, with representatives from Safari, Firefox, and Chrome. See https://github.com/gpuweb/gpuweb/issues/2749#issuecomment-1447717468


Gecko: Positive (https://hg.mozilla.org/mozilla-central/rev/5ed1439037c4)


WebKit: In development (https://github.com/WebKit/WebKit/commit/26f539228dd0a3ee85e38e886753c41955e93971)


I'm guessing this is implemented in both? I agree with your request on another thread that it'd be simpler if we had a "stages" system here similar to WASM and JS.

It is being implemented, yes. Linking to their repo was a way for me to show their support.
Let's hope we'll have "stages" soon ;)
 

Mike Taylor

unread,
Oct 25, 2023, 10:25:22 AM10/25/23
to François Beaufort, Yoav Weiss, blink-dev, Corentin Wallez

LGTM2

--
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/CAPpwU5KUCehtY%2BTe%3DgcN_7GhfXXcXZcyPK5qY6YrBzHKnn%2Bp1w%40mail.gmail.com.

Philip Jägenstedt

unread,
Oct 27, 2023, 4:58:45 AM10/27/23
to Mike Taylor, François Beaufort, Yoav Weiss, blink-dev, Corentin Wallez
Hi François, Corentin,

I greped for "maxBindGroupsPlusVertexBuffers" in a checkout of https://github.com/gpuweb/cts but couldn't find any tests. Should there be shared tests there?

Best regards,
Philip

François Beaufort

unread,
Oct 27, 2023, 5:13:33 AM10/27/23
to Philip Jägenstedt, Mike Taylor, Yoav Weiss, blink-dev, Corentin Wallez

Philip Jägenstedt

unread,
Oct 27, 2023, 5:52:06 AM10/27/23
to François Beaufort, Mike Taylor, Yoav Weiss, blink-dev, Corentin Wallez
LGTM3 given some basic tests added to CTS.

François discussed in chat, and some basic tests are possible to confirm existence and relationship to other attributes, tracked by https://github.com/gpuweb/cts/issues/3106.
Reply all
Reply to author
Forward
0 new messages