On Wed, Nov 20, 2024 at 4:07 AM Mike Taylor <miketa...@chromium.org> wrote:
> > 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 >> >> 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 >> >> Specification >> >> >> 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? > Regarding the deprecation plan, I suggest the following timeline as we're anticipating Safari and Firefox to soon support WebGPU : - 133: Deprecation warnings begin, recommending the use of the maxInterStageShaderVariables limit instead. - 135: Effective removal of the maxInterStageShaderComponents limit. > >> 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. >> 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 and >> 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 >> >> WebKit: No signal Apple representative strongly suggested removing the >> limit from the spec: >> 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 >> >> 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 >> >> 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/CAPpwU5LiZYCFsstHg%2BAvmd9o8paF_7nLVD_kFb45Hf4QOxauCA%40mail.gmail.com.