On 11/19/24 11:55 AM, François Beaufort wrote:
Thanks for the review Mike!
On Tue, Nov 19, 2024 at 5:30 PM Mike Taylor <miketa...@chromium.org>
wrote:
On 11/19/24 5:21 AM, 'François Beaufort' via blink-dev wrote:
Contact emails
fbeauf...@google.com <mailto:fbeauf...@google.com>
Explainer
The maxInterStageShaderComponents limit is being removed due to a
combination of factors:
- Redundancy with maxInterStageShaderVariables: This limit
already serves a similar purpose, controlling the amount of data
passed between shader stages.
- Minor discrepancies: While there are slight differences in how
the two limits are calculated, these differences are minor and
can be effectively managed within the
maxInterStageShaderVariables limit.
- Simplification: Removing maxInterStageShaderComponents
streamlines the shader interface and reduces complexity for
developers. Instead of managing two separate limits with subtle
differences, they can focus on the more appropriately named and
comprehensive maxInterStageShaderVariables.
https://github.com/gpuweb/gpuweb/pull/4783
<https://github.com/gpuweb/gpuweb/pull/4783>
Specification
https://gpuweb.github.io/gpuweb/#dom-supported-limits-maxinterstageshadervariables
<https://gpuweb.github.io/gpuweb/#dom-supported-limits-maxinterstageshadervariables>
Summary
Removes the maxInterStageShaderComponents limit from WebGPU,
which has been deemed to be unnecessary. This removal is a minor
breaking change.
Blink component
Blink>WebGPU
<https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EWebGPU>
Motivation
Removing maxInterStageShaderComponents eliminates unnecessary
complexity and potential confusion by consolidating the
functionality within the existing maxInterStageShaderVariables
limit. This change promotes cleaner code and a more intuitive
development experience.
To clarify, are you requesting to deprecate this for some period
of time (if so, I don't see a deprecation plan), and then come
back to remove? Or just remove it in M133?
This intent is for deprecating this limit for some period of time to
give developers enough time to migrate and eventually remove it.
Thanks François - so what is the plan? If we send a deprecation message
- how long do you think doing so would be effective?
A search for the string "maxInterStageShaderComponents" in
HTTPArchive yielded no results.
There does seem to be non-test code calling this when poking
around
https://github.com/search?q=maxInterStageShaderComponents+language%3AJavaScript&type=code&l=JavaScript
<https://github.com/search?q=maxInterStageShaderComponents+language%3AJavaScript&type=code&l=JavaScript>.
Have you looked at that yet?
Yes. Those are mostly libraries that handle getting
the maxInterStageShaderComponents limit, but not "real" apps actually
requiring the limit when the limit is not high enough for their use case.
As of November 16th, 2024, usage of the
maxInterStageShaderComponents limit within GPUAdapter and
GPUDevice reached a peak of 0.3163% of page loads. Additionally,
its usage in requiredLimits when called through requestDevice
reached 0.0004% on the same day. These metrics are tracked in the
ChromeStatus dashboard through
https://chromestatus.com/metrics/feature/timeline/popularity/5110
<https://chromestatus.com/metrics/feature/timeline/popularity/5110>and
https://chromestatus.com/metrics/feature/timeline/popularity/5111
<https://chromestatus.com/metrics/feature/timeline/popularity/5111>.
Can you help a non-expert understand the difference between these
two metrics? ~0.32% is quite high.
The first one happens when a web app calls the GPUSupportedLimits
attribute getter adapter.limits.maxInterStageShaderComponents for
instance. The high usage is due to scripts using this for
analytics/bot protection/fingerprinting.
The second one is the one we care the most. It is web apps that
actually require a maxInterStageShaderComponents GPU limit when
requesting a GPU device. We don't want to break those, and that's why
we'll add deprecation warnings so that they can use the
maxInterStageShaderVariables limit instead.
Also, what about https://github.com/gpuweb/gpuweb/pull/4781 - do
we ship this behavior in Chromium?
I'm actually working on this as we speak. It's not in Chromium yet.
Initial public proposal
None
TAG review
None
TAG review status
Not applicable as we're simply removing a WebGPU limit.
Risks
Interoperability and Compatibility
When WebGPU eventually launches in Safari and Firefox, websites
will use exclusively the maxInterStageShaderVariables limit.
We anticipate Safari and Firefox will soon support WebGPU, but
won't include the non-standard maxInterStageShaderComponents
limit. Therefore, the sooner Chromium implements the Deprecate
and Remove process, the less likely it is that content will work
in Chromium but not in other browsers.
Gecko: No signal - Firefox representative agreed during team
meeting to remove the limit from the spec:
https://github.com/gpuweb/gpuweb/wiki/GPU-Web-2024-08-28#added-late-ok-to-defer-if-necessary-maxinterstageshadercomponents-seems-to-overlap-with-maxinterstageshadervariables-4688
<https://github.com/gpuweb/gpuweb/wiki/GPU-Web-2024-08-28#added-late-ok-to-defer-if-necessary-maxinterstageshadercomponents-seems-to-overlap-with-maxinterstageshadervariables-4688>
WebKit: No signal Apple representative strongly suggested
removing the limit from the spec:
https://github.com/gpuweb/gpuweb/issues/4688#issuecomment-2218446444
<https://github.com/gpuweb/gpuweb/issues/4688#issuecomment-2218446444>
Web developers: No signals
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
Flag name on chrome://flags
None
Finch feature name
WebGPUMaxInterStageShaderComponentsLimit
Non-finch justification
None
Requires code in //chrome?
False
Tracking bug
https://issues.chromium.org/issues/364338810
<https://issues.chromium.org/issues/364338810>
Estimated milestones
Shipping on desktop
133
Shipping on Android
133
Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/4853767735083008?gate=5110989125844992
<https://chromestatus.com/feature/4853767735083008?gate=5110989125844992>
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 visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPpwU5Kmb-sNm70ox0xRp5raXxAVBb%2BtJ_AanGJYv47Ysobt9Q%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPpwU5Kmb-sNm70ox0xRp5raXxAVBb%2BtJ_AanGJYv47Ysobt9Q%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 visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/fed98c41-fffb-42de-ac80-dc1da9129fcf%40chromium.org.