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.