I am just curious... Are there any plans to add WebGL 2 software rendering support/fallback? My machine can use fewer and fewer WebGL-based websites because they use WebGL 2...
☆*PhistucK* On Wed, Jul 9, 2025 at 4:35 PM 'David Adrian' via blink-dev < blink-dev@chromium.org> wrote: > An update: We added an enterprise policy > <https://chromeenterprise.google/policies/#EnableUnsafeSwiftShader> that > allows users to re-enable Swiftshader. This should help with the managed VM > / remote desktop use-case. > > In Chrome 139, we will start experimenting (via Finch/partial deployments) > with: > > - Removing Swiftshader support on MacOS and Linux > - Replacing Swiftshader with WARP on Windows > - Removing the OOM fallback to Swiftshader/WARP, so that it is not > attacker-triggerable on arbitrary devices > > > On Thursday, April 24, 2025 at 9:55:58 AM UTC-4 David Adrian wrote: > >> As it stands now, we are hopeful we can swap out to WARP on Windows >> without any drop in coverage for software rendering (i.e. simultaneously >> with removing SwiftShader). Experimental support and testing for this will >> begin in Chrome 137. >> >> On Thursday, April 10, 2025 at 12:47:33 PM UTC-4 Julie Powell wrote: >> >>> WebGL emulation is critical for many US entities that are running thin >>> client machines which don’t have access to a GPU. So far, the organizations >>> we’ve spoken to are on Windows so simultaneously putting an automatic >>> fallback to WARP in place once the fallback to SwiftShader is removed – >>> avoiding a period of time when a command line override would be required – >>> will allow them to continue operating. We have verified that the following >>> organizations are dependent on this capability (note that there are many >>> more outside of this list, both in the private and public sector): >>> Department of the Interior Bureau of Land Management, Office of Wildland >>> Fire, National Park Service, U.S. Geologic Survey, U.S. Fish and Wildlife >>> Service, Bureau of Indian Affairs, Air Force DCGS, Army Tactical Edge Node, >>> DCGS-Army, DCGS-USMC, USMC, USAF, USDA, NGA, DIA, Census, DHS, CISA, >>> FirstNet/NTIA (Commerce), NCIS, DTRA, STRATCOM, EUCOM, Idaho National >>> Guard, some universities, K-12 schools, National Geographic, and more. >>> >>> I am working with colleagues and international distributors to gauge the >>> usage of VMs running Linux which are doing web mapping and don’t have >>> access to GPU resources. I will come back with an update when I have one. >>> >>> On Monday, March 24, 2025 at 12:56:08 PM UTC-7 Matt George wrote: >>> >>>> Hi Rick, AFAIK it's only Windows, but currently reaching out to see if >>>> it's different for our distributors in Europe. >>>> >>>> Matt >>>> On Monday, March 24, 2025 at 10:38:19 AM UTC-7 Rick Byers wrote: >>>> >>>>> Thanks for chiming in Matt. Is the scenario you described Windows-only >>>>> (in which case we should be good with WARP), or also Linux? >>>>> >>>>> Rick >>>>> >>>>> On Mon, Mar 24, 2025 at 1:22 PM Matt George <matt...@gmail.com> wrote: >>>>> >>>>>> Very happy to hear about exploring the use of WARP on windows. >>>>>> >>>>>> Just wanted to chime in that from the Esri perspective, we also have >>>>>> a large number of users accessing our maps SDK from VMs without a GPU. >>>>>> This >>>>>> is done for security reasons, & not uncommon for public sector clients. >>>>>> We >>>>>> have a special codepath where when we detect software emulation is being >>>>>> used, we only render every X frames & then use css transforms in-between. >>>>>> This is fairly usable, though of course it's a much worse experience than >>>>>> having a GPU. >>>>>> >>>>> On Tuesday, March 11, 2025 at 1:11:42 AM UTC-7 Ashley Gullen wrote: >>>>>> >>>>>>> Thanks for the update David - that sounds like a much less >>>>>>> disruptive approach than removing it completely. >>>>>>> >>>>>>> >>>>>>> On Mon, 10 Mar 2025 at 19:26, David Adrian <dad...@google.com> >>>>>>> wrote: >>>>>>> >>>>>>>> To cover the testing use case, we have provided a CLI flag to >>>>>>>> enable SwiftShader. This has been in the release notes since November. >>>>>>>> If >>>>>>>> this is insufficient, we could add an enterprise policy. >>>>>>>> >>>>>>>> However, rather than attempt a straight removal, we are going to >>>>>>>> take a multi-pronged approach to attempt to simultaneously reduce the >>>>>>>> situations where SwiftShader is available, while maintaining >>>>>>>> compatibility with devices that require it due to the GPU blocklist. >>>>>>>> >>>>>>>> - SwiftShader is already unused on many Mac clients, since it >>>>>>>> does not support ARM. We will run an experiment where we fully >>>>>>>> remove it on >>>>>>>> Mac, where usage is much smaller. We expect this will be ~fine. >>>>>>>> - Similarly, we will try the same on Linux, although this may >>>>>>>> not go as well, as there are not a large number of ARM Linux >>>>>>>> clients. >>>>>>>> - We will experiment with removing the automatic fallback to >>>>>>>> SwiftShader after 3 OOMs, limiting it to just the devices without a >>>>>>>> GPU or >>>>>>>> on the GPU blocklist. This should reduce the attack surface across >>>>>>>> the >>>>>>>> board, as attackers would be unable to arbitrarily cause >>>>>>>> SwiftShader to be >>>>>>>> used. In conjunction with this, we'll see if we can leverage Warp on >>>>>>>> Windows. >>>>>>>> >>>>>>>> If we can get to a state where SwiftShader is off by default on Mac >>>>>>>> and Linux, and replaced with Warp on Windows aside from the CLI flag, >>>>>>>> and >>>>>>>> the fallback is not triggerable by an attacker on systems with a >>>>>>>> "normal" >>>>>>>> GPU, we'll be in much better shape from a security standpoint. >>>>>>>> >>>>>>>> We will update this thread with the progress and results of these >>>>>>>> experiments as they roll out. >>>>>>>> >>>>>>>> >>>>>>>> On Mon, Mar 3, 2025 at 2:27 PM Rick Byers <rby...@chromium.org> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> +1 that providing temporary enterprise policy exceptions is standard >>>>>>>>> practice <https://www.chromium.org/developers/enterprise-changes/> >>>>>>>>> for breaking changes that we predict may have enterprise impact. >>>>>>>>> >>>>>>>>> Rick >>>>>>>>> >>>>>>>>> On Mon, Mar 3, 2025 at 2:24 PM Erik Anderson < >>>>>>>>> erik.a...@microsoft.com> wrote: >>>>>>>>> >>>>>>>>>> Hi Geoff, >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> My suggestion re: a policy was not to have one that is supported >>>>>>>>>> indefinitely. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Many high-risk deprecations have had a policy lasting for, I >>>>>>>>>> believe, as little as 3 major version releases. Having such a thing >>>>>>>>>> helps >>>>>>>>>> mitigate the concern that the risk analysis was way off (which could >>>>>>>>>> then >>>>>>>>>> mean needing to do a stable respin if your risk analysis was off). >>>>>>>>>> If a >>>>>>>>>> policy is available, impacted enterprises can quickly self-remediate, >>>>>>>>>> report what broke once you flip over the default, and have a little >>>>>>>>>> bit >>>>>>>>>> more of a window to plan mitigations tied to the removal of the >>>>>>>>>> policy >>>>>>>>>> (since they’d now be aware of what broke and why). >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> >>>>>>>>>> Erik >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> *From:* Ken Russell <k...@chromium.org> >>>>>>>>>> *Sent:* Monday, March 3, 2025 10:39 AM >>>>>>>>>> *To:* Ashley Gullen <ash...@scirra.com> >>>>>>>>>> *Cc:* Geoff Lang <geof...@google.com>; Erik Anderson < >>>>>>>>>> erik.a...@microsoft.com>; Rick Byers <rby...@chromium.org>; >>>>>>>>>> David Adrian <dad...@google.com>; blink-dev <blin...@chromium.org>; >>>>>>>>>> geof...@chromium.org <geof...@chromium.org> >>>>>>>>>> *Subject:* Re: [EXTERNAL] Re: [blink-dev] Intent to Remove: >>>>>>>>>> SwiftShader Fallback >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> It's feasible, but a significant amount of engineering work that >>>>>>>>>> our (Chrome Graphics) team would not be able to prioritize versus >>>>>>>>>> other >>>>>>>>>> current work that would impact a larger user base. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -Ken >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Fri, Feb 28, 2025 at 9:45 AM 'Ashley Gullen' via blink-dev < >>>>>>>>>> blin...@chromium.org> wrote: >>>>>>>>>> >>>>>>>>>> Is it feasible to have SwiftShader (or WARP) run in its own >>>>>>>>>> process with a stronger sandbox? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Fri, 28 Feb 2025 at 15:25, Geoff Lang <geof...@google.com> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> Hey Erik, Ashley, Rick, >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I want to be clear that I think having high WebGL availability is >>>>>>>>>> a good thing. I don't think that users with software WebGL have a >>>>>>>>>> great >>>>>>>>>> experience but it's likely better than no availability, at least for >>>>>>>>>> drawing static things. What pushes this over the line and warrants >>>>>>>>>> this >>>>>>>>>> discussion is that JITing code in the GPU process is a huge >>>>>>>>>> vulnerability >>>>>>>>>> and is a rapidly increasing attack target. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> We're investigating WARP as an alternative on Windows. You are >>>>>>>>>> right that a large portion of the SwiftShader fallback is on >>>>>>>>>> machines with >>>>>>>>>> no GPUs (headless or VMs). There are just many unknowns about the >>>>>>>>>> quality >>>>>>>>>> and security of WARP, it will take a while to be confident in such a >>>>>>>>>> change >>>>>>>>>> and it still does not resolve the issue of JITing code in the weakly >>>>>>>>>> sandboxed GPU process. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Regarding corporate policy, I'd much rather have these users fall >>>>>>>>>> back in the same way as everyone else and work towards lowering the >>>>>>>>>> number >>>>>>>>>> of users in this position. It would mean supporting and testing a >>>>>>>>>> feature >>>>>>>>>> only used by enterprise users when we have no visibility into >>>>>>>>>> crashes, bugs >>>>>>>>>> or vulnerabilities that they face. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> We're also disabling software fallback due to a crashes in the >>>>>>>>>> GPU driver (as opposed to blocklisted GPU). Right now any user can >>>>>>>>>> fairly >>>>>>>>>> easily trigger a GPU crash and fall back to software WebGL which >>>>>>>>>> opens up >>>>>>>>>> vulnerabilities to all users instead of the 2.7%. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Geoff >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Thu, Feb 27, 2025 at 3:28 PM Erik Anderson < >>>>>>>>>> erik.a...@microsoft.com> wrote: >>>>>>>>>> >>>>>>>>>> Hi David, >>>>>>>>>> >>>>>>>>>> The initial message states that SwiftShader primarily covers >>>>>>>>>> older Windows devices. Beyond those, there are a non-trivial set of >>>>>>>>>> enterprise users that use thin clients to connect to a remote Windows >>>>>>>>>> device which is often running in a VM without access to a physical >>>>>>>>>> GPU. >>>>>>>>>> >>>>>>>>>> For example, this applies to the Microsoft Dev Box offering ( >>>>>>>>>> https://azure.microsoft.com/en-us/products/dev-box/). >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Unfortunately, enterprise clients often turn off telemetry. So, I >>>>>>>>>> would assume any UMA-derived metrics to be undercounting the >>>>>>>>>> population. >>>>>>>>>> >>>>>>>>>> It’s likely there are certain line-of-business and/or >>>>>>>>>> consumer-oriented sites that have a hard dependency on WebGL to be >>>>>>>>>> fully >>>>>>>>>> functional. >>>>>>>>>> >>>>>>>>>> Have you considered, on Windows, targeting WARP ( >>>>>>>>>> https://learn.microsoft.com/en-us/windows/win32/direct3darticles/directx-warp) >>>>>>>>>> instead? I don’t know if there are other viable alternatives on >>>>>>>>>> other OSes, >>>>>>>>>> but if the primary impacted clients are Windows perhaps that would >>>>>>>>>> be a >>>>>>>>>> sufficient mitigation. >>>>>>>>>> >>>>>>>>>> To help enterprise customers reason about how much this is going >>>>>>>>>> to impact them, it would be helpful to have an enterprise policy to >>>>>>>>>> control >>>>>>>>>> this. This is a common pattern for potentially high-impact changes. >>>>>>>>>> >>>>>>>>>> In its initial phase, the policy would enable motivated >>>>>>>>>> enterprises to forcibly disable SwiftShader as a scream test. And >>>>>>>>>> after you >>>>>>>>>> switch over the default, it could enable enterprises caught unaware >>>>>>>>>> to have >>>>>>>>>> some additional window of time to plan mitigations (by re-enabling >>>>>>>>>> it via >>>>>>>>>> policy) before you proceed with fully deprecating support and remove >>>>>>>>>> the >>>>>>>>>> policy. >>>>>>>>>> >>>>>>>>>> Can you comment on if you plan to add such a policy or, if not, >>>>>>>>>> why not? >>>>>>>>>> >>>>>>>>>> Thanks! >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> *From:* 'Ashley Gullen' via blink-dev <blin...@chromium.org> >>>>>>>>>> *Sent:* Thursday, February 27, 2025 4:14 AM >>>>>>>>>> *To:* Rick Byers <rby...@chromium.org> >>>>>>>>>> *Cc:* David Adrian <dad...@google.com>; blink-dev < >>>>>>>>>> blin...@chromium.org>; geof...@chromium.org <geof...@chromium.org >>>>>>>>>> > >>>>>>>>>> *Subject:* [EXTERNAL] Re: [blink-dev] Intent to Remove: >>>>>>>>>> SwiftShader Fallback >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Thanks for the response Rick, I agree with much of what you've >>>>>>>>>> said and I think your views and suggested workarounds are all >>>>>>>>>> generally >>>>>>>>>> reasonable. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I just realised I previously responded to this thread but only >>>>>>>>>> replied to David - for transparency I've copied my previous response >>>>>>>>>> below. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I can confirm all content made with Construct since about 2018 >>>>>>>>>> requires WebGL to work and will show an error message if WebGL is >>>>>>>>>> unavailable. I've included a screenshot of the message Construct >>>>>>>>>> content >>>>>>>>>> published to the web will display when WebGL is not supported, saying >>>>>>>>>> "Software update needed", since that has usually been the best >>>>>>>>>> advice in >>>>>>>>>> that situation in the past. As my previous message says we long ago >>>>>>>>>> removed >>>>>>>>>> any other fallback and are now likely too dependent on WebGL to >>>>>>>>>> feasibly >>>>>>>>>> reimplement a canvas2d fallback. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Some other thoughts about workarounds/mitigations: >>>>>>>>>> >>>>>>>>>> - A swiftshader WASM module would at least give us a >>>>>>>>>> workaround, but if that was something like a ~10 MB+ module it >>>>>>>>>> would be a >>>>>>>>>> very high download overhead which we'd be obligated to include in >>>>>>>>>> every >>>>>>>>>> Construct export for compatibility >>>>>>>>>> - Swiftshader could be removed from insecure origins with >>>>>>>>>> little impact to us, and using a permission policy for cross-site >>>>>>>>>> iframes >>>>>>>>>> should be straightforward to work with >>>>>>>>>> - If it helps reduce the attack surface, we could live with >>>>>>>>>> SwiftShader support for WebGL 1 only (no WebGL 2) with minimum >>>>>>>>>> capabilities >>>>>>>>>> (no extensions). >>>>>>>>>> - A permission prompt to the user is not ideal but better >>>>>>>>>> than nothing, and I imagine it would be tricky to explain to a >>>>>>>>>> normal web >>>>>>>>>> user though the prompt message (and makes obtaining a WebGL >>>>>>>>>> context >>>>>>>>>> async...) >>>>>>>>>> - Regarding getting WebGL to work on more devices, as I >>>>>>>>>> mentioned in my previous message, reviewing the GPU blocklist to >>>>>>>>>> re-enable >>>>>>>>>> WebGL for older devices if drivers have been updated or >>>>>>>>>> workarounds for >>>>>>>>>> issues can be found would help reduce the number of devices >>>>>>>>>> subject to >>>>>>>>>> SwiftShader. Being able to enable at least WebGL 1 will still >>>>>>>>>> help with >>>>>>>>>> Construct content. >>>>>>>>>> - If a software fallback can be securely implemented for >>>>>>>>>> WebGPU, Construct has a WebGPU renderer too now so that would >>>>>>>>>> give us a >>>>>>>>>> workaround (and potentially for any other WebGL content - AFAIK >>>>>>>>>> many widely >>>>>>>>>> used libraries like three.js now either support WebGPU or are >>>>>>>>>> working on it) >>>>>>>>>> >>>>>>>>>> Thanks for the consideration all. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Copy of my previous message: >>>>>>>>>> >>>>>>>>>> ----- >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> OK, thanks for the information. I just want to point out that >>>>>>>>>> even stopping WebGL content for only 2.7% of users is still >>>>>>>>>> potentially >>>>>>>>>> very disruptive. Consider a web game on Poki that requires WebGL and >>>>>>>>>> gets a >>>>>>>>>> million players. With this change, now 27,000 users will see a >>>>>>>>>> "WebGL not >>>>>>>>>> supported" error message. That's then potentially a huge number of >>>>>>>>>> new >>>>>>>>>> support requests to deal with. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> > Can you share the number for Construct about what percentage of >>>>>>>>>> your users are using the SwiftShader fallback? Again, our numbers >>>>>>>>>> indicate >>>>>>>>>> that these are primarily older Windows workstations. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> For the Construct editor itself, it is around 3%, so that seems >>>>>>>>>> in line. But the key point here is that Construct is middleware: it >>>>>>>>>> is a >>>>>>>>>> tool our users develop web games in and then publish independently >>>>>>>>>> of us. >>>>>>>>>> It is much more important that WebGL works for players of those >>>>>>>>>> games than >>>>>>>>>> it does for Construct itself. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Lots of people use older Windows workstations. We've had issues >>>>>>>>>> before where for example a graphics driver bug affecting WebGL 1 >>>>>>>>>> caused a >>>>>>>>>> great deal of trouble in a South American market, even though I >>>>>>>>>> suspect it >>>>>>>>>> only affected a small percentage of devices - see >>>>>>>>>> https://issues.chromium.org/issues/40941645 which was never >>>>>>>>>> resolved. There are probably places in the world where there are >>>>>>>>>> large >>>>>>>>>> numbers of people using older Windows workstations. I fear that >>>>>>>>>> pulling >>>>>>>>>> WebGL support from those devices may result in much higher numbers of >>>>>>>>>> unsupported users, and many more support requests, in the specific >>>>>>>>>> markets >>>>>>>>>> where such devices are common. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Is there anything that can be done to mitigate this change? Given >>>>>>>>>> SwiftShader allowed WebGL to be considered ubiquitous for many years, >>>>>>>>>> engines like Construct long ago removed any fallback for systems >>>>>>>>>> that do >>>>>>>>>> not support WebGL; we moved forward assuming we could rely on WebGL, >>>>>>>>>> and so >>>>>>>>>> now it's probably infeasible to bring back any fallback as we have >>>>>>>>>> too many >>>>>>>>>> key features that fundamentally require WebGL. Could SwiftShader be >>>>>>>>>> adapted >>>>>>>>>> to not use JIT? Could some other fallback be found? Could the GPU >>>>>>>>>> blocklist >>>>>>>>>> be revised to enable WebGL on as many older devices as possible? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I think the number of affected users should be <1% to minimise >>>>>>>>>> the impact from such a change. At web scale 2.7% is still a lot. >>>>>>>>>> Perhaps >>>>>>>>>> with revising the GPU blocklist and adding more workarounds this is >>>>>>>>>> feasible. I fear if this goes ahead without any mitigation, it will >>>>>>>>>> cause a >>>>>>>>>> great deal of trouble and is exactly the kind of thing sceptics of >>>>>>>>>> the web >>>>>>>>>> will bring up to say that web technology sucks, browsers can't be >>>>>>>>>> trusted, >>>>>>>>>> and people should just develop desktop games instead. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Tue, 25 Feb 2025 at 22:31, Rick Byers <rby...@chromium.org> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> Sorry for the delay from API owners, as discussed on chat the >>>>>>>>>> chromestatus entry wasn't set up properly to request API owner >>>>>>>>>> review (now >>>>>>>>>> fixed). >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> This is a tricky one indeed (thanks for your input Ashley!). It looks >>>>>>>>>> like >>>>>>>>>> <https://chromestatus.com/metrics/feature/timeline/popularity/4026> >>>>>>>>>> WebGL is used on about 20% of page loads, so 2.7% of that is ~0.5% >>>>>>>>>> of page >>>>>>>>>> loads which is very high risk according to our rules of thumb >>>>>>>>>> <https://docs.google.com/document/d/1RC-pBBvsazYfCNNUSkPqAVpSpNJ96U8trhNkfV0v9fk/edit?tab=t.0#heading=h.mqfkui78vo5z> >>>>>>>>>> . >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Of course that's an upper-bound, how many will have a fallback? >>>>>>>>>> One option would be to collect some UKM data for SwiftShader usage >>>>>>>>>> and >>>>>>>>>> review a random ~50 sites to observe the user experience in >>>>>>>>>> practice. That >>>>>>>>>> could give us a better sense of what the real user impact would >>>>>>>>>> likely be. >>>>>>>>>> Or Maybe Ashley can give us some examples of some web games just to >>>>>>>>>> confirm >>>>>>>>>> they indeed go from being playable to unplayable without swiftshader >>>>>>>>>> on >>>>>>>>>> some specific devices? David, do you have a device yourself you can >>>>>>>>>> test >>>>>>>>>> with that doesn't support GPU WebGL? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Regardless, unless sites have been really good about almost >>>>>>>>>> always falling back somehow, I suspect we'll find that there's enough >>>>>>>>>> end-user impact to make this a high-risk change (but I could be >>>>>>>>>> convinced >>>>>>>>>> otherwise such as via a thorough UKM analysis). In which case then >>>>>>>>>> we could >>>>>>>>>> start working through our playbook for a phased plan for risky >>>>>>>>>> breaking >>>>>>>>>> changes. Not unlike what we did for flash removal >>>>>>>>>> <https://www.chromium.org/flash-roadmap/>, or WebSQL >>>>>>>>>> <https://developer.chrome.com/blog/deprecating-web-sql> (both >>>>>>>>>> big security benefit but big web compat risk). For example: >>>>>>>>>> >>>>>>>>>> - Explore whether we can build swiftshader into a wasm module >>>>>>>>>> that sites can use as a (probably even slower) fallback >>>>>>>>>> themselves. This >>>>>>>>>> turned out to be the key to making WebSQL deprecation tractable. >>>>>>>>>> In general >>>>>>>>>> our policy >>>>>>>>>> >>>>>>>>>> <https://docs.google.com/document/d/1RC-pBBvsazYfCNNUSkPqAVpSpNJ96U8trhNkfV0v9fk/edit?tab=t.0#heading=h.x5bhg5grhfeo> >>>>>>>>>> is that we don't take functionality away that developers can't >>>>>>>>>> replace with >>>>>>>>>> some other substitute except in pretty extreme circumstances. >>>>>>>>>> - Prompt the user on whether or not to enable it per-origin >>>>>>>>>> (like a permission) >>>>>>>>>> - Put 3p usage behind a permission policy so the top-level >>>>>>>>>> site has to opt-in to allow 3p iframes to use swiftshader >>>>>>>>>> - Rely on some heuristics, (perhaps crowd-sourced signals) to >>>>>>>>>> try to find a sweet spot in the safety vs. functionality tradeoff >>>>>>>>>> space. We >>>>>>>>>> did this for flash initially with things like blocking it for >>>>>>>>>> very small >>>>>>>>>> canvases. >>>>>>>>>> - Anything we can do to make WebGL work on a larger set of >>>>>>>>>> devices? >>>>>>>>>> - Probably lots of other ideas that aren't occurring to me >>>>>>>>>> right now, more examples in bit.ly/blink.compat. >>>>>>>>>> >>>>>>>>>> On the other side of the equation, API owners can be convinced to >>>>>>>>>> accept more compat risk the more significant the security benefits >>>>>>>>>> are. Are >>>>>>>>>> there more details you can share? Such as: >>>>>>>>>> >>>>>>>>>> - Are we confident that an attacker can only trigger >>>>>>>>>> swiftshader on somewhere around 3% of users (vs. some knob which >>>>>>>>>> can force >>>>>>>>>> it to be used on a larger fraction)? To what extent do we have >>>>>>>>>> reason to >>>>>>>>>> believe that the vulnerable population size is large enough to be >>>>>>>>>> a >>>>>>>>>> plausible target for attackers? Is there anything we can do to >>>>>>>>>> make the >>>>>>>>>> vulnerable user base more reliably contained? >>>>>>>>>> - How does swiftshader compare to other areas in terms of the >>>>>>>>>> number of vulnerabilities we've found in practice? Are there any >>>>>>>>>> reports of >>>>>>>>>> ITW exploits of it? It looks like >>>>>>>>>> >>>>>>>>>> <https://chrome-commit-tracker.arthursonzogni.com/cve/reward_per_components?start=2019-12-27&end=2025-02-25> >>>>>>>>>> since 2020 SwiftShader has been about 8% of Chrome's VRP spend - >>>>>>>>>> that seems >>>>>>>>>> quite significant to me, but probably not in the top 5 areas of >>>>>>>>>> concern. >>>>>>>>>> This was obviously key to the immense cost and pain of Flash >>>>>>>>>> removal - we >>>>>>>>>> kept having severe security incidents in practice. >>>>>>>>>> >>>>>>>>>> So assuming Ashley and I are right that this isn't likely to be >>>>>>>>>> easy, that means it's likely quite a lot of work to attempt to >>>>>>>>>> phase-out >>>>>>>>>> SwiftShader in a responsible fashion. But with luck maybe we can >>>>>>>>>> find a >>>>>>>>>> first step that is a good cost-benefit tradeoff (like putting 3P >>>>>>>>>> usage >>>>>>>>>> behind a permission prompt)? Or maybe it's just a better cost-benefit >>>>>>>>>> tradeoff to invest in other areas which pose a threat to a greater >>>>>>>>>> number >>>>>>>>>> users (hardening ANGLE perhaps)? But of course I will defer to the >>>>>>>>>> judgement of security and GPU experts like yourself on that >>>>>>>>>> question, I'm >>>>>>>>>> happy to consult and support if you want to invest in a plan that API >>>>>>>>>> owners can approve. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Rick >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Wed, Feb 19, 2025 at 2:48 PM 'David Adrian' via blink-dev < >>>>>>>>>> blin...@chromium.org> wrote: >>>>>>>>>> >>>>>>>>>> > I wrote about this previously but I'm still concerned this is a >>>>>>>>>> major breaking change for existing published WebGL content on the >>>>>>>>>> web. If >>>>>>>>>> the figure of 2.7% comes from my previous citing of Web3DSurvey >>>>>>>>>> >>>>>>>>>> It does, not it comes from Chrome's metrics system. >>>>>>>>>> >>>>>>>>>> > Does Google have their own internal data about the usage of >>>>>>>>>> SwiftShader? >>>>>>>>>> >>>>>>>>>> It is the 2.7% number. >>>>>>>>>> >>>>>>>>>> > Suppose this change rolls out and we get reports that say our >>>>>>>>>> WebGL content no longer works for 10% of users in a South American >>>>>>>>>> market. >>>>>>>>>> Then what? There is nothing feasible we can do about it. These >>>>>>>>>> customers >>>>>>>>>> were previously getting by with SwiftShader, but now they get an >>>>>>>>>> error >>>>>>>>>> message. So I fear this risks disaster for web games in some markets. >>>>>>>>>> >>>>>>>>>> > I mentioned I don't think it should be used as evidence to make >>>>>>>>>> such a big change as this. Maybe in some places it will affect 25% >>>>>>>>>> or 50% >>>>>>>>>> of users - who knows? How can we be sure? >>>>>>>>>> >>>>>>>>>> Can you share the number for Construct about what percentage of >>>>>>>>>> your users are using the SwiftShader fallback? Again, our numbers >>>>>>>>>> indicate >>>>>>>>>> that these are primarily older Windows workstations. Notably, >>>>>>>>>> SwiftShader >>>>>>>>>> is not used at all on mobile. >>>>>>>>>> >>>>>>>>>> > V8 does JIT with untrusted JavaScript code and that is >>>>>>>>>> generally considered reasonably secure, is there any particular >>>>>>>>>> technical >>>>>>>>>> reason SwiftShader is not considered as secure? >>>>>>>>>> >>>>>>>>>> Yes. The GPU process is shared between all sites, whereas the V8 >>>>>>>>>> JIT is per-site. This means compromising the GPU process can be >>>>>>>>>> enough to >>>>>>>>>> bypass site isolation protections with a single bug. Additionally, >>>>>>>>>> V8 bugs >>>>>>>>>> can be reliably patched in the browser, whereas SwiftShader "bugs" >>>>>>>>>> can be >>>>>>>>>> user-mode graphics driver bugs that are simply more exposed via >>>>>>>>>> SwiftShader >>>>>>>>>> than they would be otherwise. In this case, the browser can't patch >>>>>>>>>> the bug >>>>>>>>>> because it's in the driver. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Thursday, February 13, 2025 at 12:12:07 PM UTC-5 >>>>>>>>>> ash...@scirra.com wrote: >>>>>>>>>> >>>>>>>>>> I wrote about this previously but I'm still concerned this is a >>>>>>>>>> major breaking change for existing published WebGL content on the >>>>>>>>>> web. If >>>>>>>>>> the figure of 2.7% comes from my previous citing of Web3DSurvey ( >>>>>>>>>> https://web3dsurvey.com/) then this should be seen as very much >>>>>>>>>> an underestimate, because that site uses a relatively small sample >>>>>>>>>> size >>>>>>>>>> that is more likely to be focused on high-end devices (samples are >>>>>>>>>> taken >>>>>>>>>> from developer-focused sites like the three.js website, WebGPU >>>>>>>>>> fundamentals >>>>>>>>>> etc). I would not be surprised if the real worldwide average was >>>>>>>>>> more like >>>>>>>>>> 4-5%. Then if that's a worldwide average, there will probably be some >>>>>>>>>> specific countries or markets where the figure could be more like >>>>>>>>>> 10%. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Suppose this change rolls out and we get reports that say our >>>>>>>>>> WebGL content no longer works for 10% of users in a South American >>>>>>>>>> market. >>>>>>>>>> Then what? There is nothing feasible we can do about it. These >>>>>>>>>> customers >>>>>>>>>> were previously getting by with SwiftShader, but now they get an >>>>>>>>>> error >>>>>>>>>> message. So I fear this risks disaster for web games in some markets. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Does Google have their own internal data about the usage of >>>>>>>>>> SwiftShader? Can more data about this be shared? I respect the work >>>>>>>>>> done by >>>>>>>>>> Web3DSurvey but unfortunately for the reasons I mentioned I don't >>>>>>>>>> think it >>>>>>>>>> should be used as evidence to make such a big change as this. Maybe >>>>>>>>>> in some >>>>>>>>>> places it will affect 25% or 50% of users - who knows? How can we be >>>>>>>>>> sure? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Can there not be some other fallback implemented? V8 does JIT >>>>>>>>>> with untrusted JavaScript code and that is generally considered >>>>>>>>>> reasonably >>>>>>>>>> secure, is there any particular technical reason SwiftShader is not >>>>>>>>>> considered as secure? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I'd also point out that any website that has a poor experience >>>>>>>>>> with SwiftShader can already opt-out using the >>>>>>>>>> failIfMajorPerformanceCaveat >>>>>>>>>> context flag. If there is some other mode that can be used instead, >>>>>>>>>> or just >>>>>>>>>> showing an error message is acceptable, then websites can already >>>>>>>>>> implement >>>>>>>>>> that. In our case with Construct we specifically attempt to obtain >>>>>>>>>> hardware-accelerated WebGPU, WebGL 2, or WebGL 1; only failing that >>>>>>>>>> do we >>>>>>>>>> resort to using SwiftShader on the basis that showing the content >>>>>>>>>> with >>>>>>>>>> potentially poor performance is better than not showing it at all. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Thu, 13 Feb 2025 at 15:46, 'David Adrian' via blink-dev < >>>>>>>>>> blin...@chromium.org> wrote: >>>>>>>>>> >>>>>>>>>> Contact emails >>>>>>>>>> >>>>>>>>>> dad...@google.com, geof...@chromium.org >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Summary >>>>>>>>>> >>>>>>>>>> Allowing automatic fallback to WebGL backed by SwiftShader is >>>>>>>>>> deprecated and will be removed. This has been noted in DevTools since >>>>>>>>>> Chrome 130. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> WebGL context creation will fail instead of falling back to >>>>>>>>>> SwiftShader. This is for two primary reasons: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> 1. SwiftShader is a high security risk due to JIT-ed code running >>>>>>>>>> in Chromium's GPU process. >>>>>>>>>> >>>>>>>>>> 2. Users have a poor experience when falling back from a >>>>>>>>>> high-performance GPU-backed WebGL to a CPU-backed implementation. >>>>>>>>>> Users >>>>>>>>>> have no control over this behavior and it is difficult to describe >>>>>>>>>> in bug >>>>>>>>>> reports. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> SwiftShader is a useful tool for web developers to test their >>>>>>>>>> sites on systems that are headless or do not have a supported GPU. >>>>>>>>>> This use >>>>>>>>>> case will still be supported by opting in but is not intended for >>>>>>>>>> running >>>>>>>>>> untrusted content. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> To opt-in to lower security guarantees and allow SwiftShader for >>>>>>>>>> WebGL, run the chrome executable with the --enable-unsafe-swiftshader >>>>>>>>>> command-line switch. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> During the deprecation period, a warning will appear in the >>>>>>>>>> javascript console when a WebGL context is created and backed with >>>>>>>>>> SwiftShader. Passing --enable-unsafe-swiftshader will remove this >>>>>>>>>> warning >>>>>>>>>> message. This deprecation period began in Chrome 130. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Chromium and other browsers do not guarantee WebGL availability. >>>>>>>>>> Please test and handle WebGL context creation failure and fall back >>>>>>>>>> to >>>>>>>>>> other web APIs such as Canvas2D or an appropriate message to the >>>>>>>>>> user. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> SwiftShader is an internal implementation detail of Chromium, not >>>>>>>>>> a public web standard, therefore buy-in from other browsers is not >>>>>>>>>> required. The devices covered by SwiftShader (primarily older Windows >>>>>>>>>> devices) are likely already incompatible with WebGL in other >>>>>>>>>> browsers. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> SwiftShader is not used on mobile; this only applies to Desktop >>>>>>>>>> platforms. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Blink component >>>>>>>>>> >>>>>>>>>> Blink>WebGL >>>>>>>>>> <https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3EWebGL%22> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Motivation >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> https://chromium.googlesource.com/chromium/src/+/main/docs/gpu/swiftshader.md#automatic-swiftshader-webgl-fallback-is-deprecated >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Risks >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> SwiftShader is used by devices without hardware acceleration for >>>>>>>>>> WebGL. This is approximately 2.7% of WebGL contexts. However, WebGL >>>>>>>>>> is >>>>>>>>>> considered fallible and in many cases, these draws are not >>>>>>>>>> performant and >>>>>>>>>> provide an effectively unusable experience for users. Many >>>>>>>>>> applications, >>>>>>>>>> such as Google Maps, prefer to fail out rather than use SwiftShader. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Debuggability >>>>>>>>>> >>>>>>>>>> None >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Flag name on about://flags >>>>>>>>>> >>>>>>>>>> --enable-unsafe-swiftshader command-line switch. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Finch feature name >>>>>>>>>> >>>>>>>>>> AllowSwiftShaderFallback >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Tracking bug >>>>>>>>>> >>>>>>>>>> https://issues.chromium.org/40277080 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Launch bug >>>>>>>>>> >>>>>>>>>> https://launch.corp.google.com/launch/4351104 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Estimated milestones >>>>>>>>>> >>>>>>>>>> Shipping on Desktop 137 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Link to entry on the Chrome Platform Status >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> https://chromestatus.com/feature/5166674414927872?gate=5188866041184256 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> 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+...@chromium.org. >>>>>>>>>> To view this discussion visit >>>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGkh42KV4DrSSyEgJaF4DnFOXAye-wRLrfD-LKGNkWhyWzshLA%40mail.gmail.com >>>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGkh42KV4DrSSyEgJaF4DnFOXAye-wRLrfD-LKGNkWhyWzshLA%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+...@chromium.org. >>>>>>>>>> To view this discussion visit >>>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/c5131675-dff4-4aa0-8e84-4cdc373e3035n%40chromium.org >>>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/c5131675-dff4-4aa0-8e84-4cdc373e3035n%40chromium.org?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+...@chromium.org. >>>>>>>>>> To view this discussion visit >>>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAABs73jWBkuxvj%3DDDXmEQNwLfCa_uV5OZZ5nZJRj9ZMgP9yk7Q%40mail.gmail.com >>>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAABs73jWBkuxvj%3DDDXmEQNwLfCa_uV5OZZ5nZJRj9ZMgP9yk7Q%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+...@chromium.org. >>>>>>>>>> To view this discussion visit >>>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAABs73hYs9O-2hdmfn37fQb-U-8m_-08i3Qg9dkUhKNQQvNLSg%40mail.gmail.com >>>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAABs73hYs9O-2hdmfn37fQb-U-8m_-08i3Qg9dkUhKNQQvNLSg%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/2cfb0848-03a1-4cd6-9c09-7ad8026a9f3dn%40chromium.org > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/2cfb0848-03a1-4cd6-9c09-7ad8026a9f3dn%40chromium.org?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/CABc02_%2B39zs2ntHv55eh%2BOdv7%2Be-9pCxzV0XE7YHRmdG_Fcvuw%40mail.gmail.com.