-
Notifications
You must be signed in to change notification settings - Fork 321
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
What OSes and hardware are we targeting? #1069
Comments
Let's surface this at the meeting to see if anyone else remembers specific decisions we made to drop support for certain devices. |
Apparently we actually require Apple A9 GPUs. (Mutable) comparison samplers are not supported until A9 (MTLGPUFamilyApple3) ("MTLSamplerState support for comparison functions"). See #356. |
Looking through the feature set tables, A8 also doesn't support "Base vertex/instance drawing". |
It means that you have to have |
Updated above, there's more than just one supported device with pre-A9 chips: iPad mini 4, iPad Air 2, and Apple TV HD. |
Bumped D3D12 from FL11_0 to FL11_1 based on #1802 (thanks @austinEng for finding it). |
Oh, I didn't realize this bumped it. But you noted somewhere else it was a very small fraction of D3D12 devices (like 2%?), so I think we can move them to compat. |
Running the requirements above against all of the reports from outdated
(The numbers are the gpuinfo report ids.) |
Here's a more complete result that also checks for all of our base limits. gpuinfo-vulkan-query output (last updated 2022-11-23 but I didn't check to make sure it has accounted for all of the recent-ish changes to the spec limits)
|
"maxPerStageDescriptorStorageBuffers >= 8" seems to be the only one that removes a significant amount of devices. The rest like "ulkan 1.1 or VK_KHR_maintenance1 for viewport Y-flip" or "sampleRateShading" seem to be mostly old drivers? Overall it seems ok to proceed, at least on the Vulkan side, with the assumption that WebGPU compat should lower some limits like maxStorageBuffers or maxColorAttachments. |
A bug in the checking for texture capabilities made them report incorrectly. Updated above with that and other fixes. |
The compatibility for depth/stencil formats now looks a bit less nice. (This is requiring optimalTilingFeatures to have |
To clarify on the latest thinking.. the last time we discussed this with Google, the impression was that WebGPU would not be designed to be targetable on top of any version of GLES or OpenGL backends? Is that still the case? |
WebGPU v1 is not targeting any version of GLES. However from the Chromium side we plan to suggest adding some "v0" or "compat" mode that adds small restrictions and makes WebGPU compatible with GLES 3.1 and D3D11 to broaden the reach of the API. |
Note, for D3D12 I think we can support FL 11.0 with ResourceBindingTier 2 (for the increased UAV count). |
Yup, per https://docs.microsoft.com/en-us/windows/win32/direct3d12/hardware-support |
I believe the oldest GPU that iOS/iPadOS 17 will support is the A10 in the iPad (6th generation) |
Updated above. Still "Apple3" family though, so probably no changes. |
Changed A10 (Apple3) to A11 (Apple4) above per #3838 (comment), thanks @teoxoy |
Per gpuweb/gpuweb#1069 we no longer support any Vulkan 1.0 devices without VK_KHR_maintenance1.
I noticed that the new versions of "Metal feature set tables" contain the following:
This text seems to have been added sometime in June this year. @mwyrzykowski has it always been the case that the M1 (Apple7) and M2 (Apple8) advertised support for mac1/mac2 feature sets/families (and therefore their capabilities) on macOS? |
Yes that is correct |
I believe we can revisit this anytime and upgrade to 10.15. Both Chrome and Firefox now require it. |
EDIT: I am probably misremembering, and just thinking of argument buffers. (There is mention above that some implementations might require ICBs, but that also requires MTLGPUFamilyMac2.) |
(Note to readers: native, non-web-exposed WebGPU implementations aren't beholden any minimum requirements here, or to the standard. So they may support older or less capable devices with feature emulation or compatibility gaps compared to the official spec.)
By category of platforms, with links to the decisions.
iOS/iPadOS
A9A10A11 (Apple4)+Mac Apple Silicon: all (macOS 11.0, A12z+ (Apple5))
Mac x86: 10.13+
D3D12: Windows 10 (first release (1507)?), FL 11_1 or (FL 11_0 + resource binding tier 2).
(D3D12 FL11_0+ = SM5.1+)
Android/Linux: Vulkan 1.0+(?) with:
fragmentStoresAndAtomics
fullDrawIndexUint32
maxImageArrayLayers
≥ 256S8_UINT
orD24_UNORM_S8_UINT
(which is true universally across AMD/NVIDIA/Intel/Android), though only because the spec saysstencil8
can be implemented as eitherstencil8
ordepth24unorm-stencil8
and doesn't mentiondepth32float-stencil8
.VK_KHR_maintenance1
orVK_AMD_negative_viewport_height
VK_KHR_maintenance1
VK_KHR_maintenance2
maxVertexOutputComponents >= 68 && maxFragmentInputComponents >= 68
Vulkan mobile hardware
Useful sources:
The text was updated successfully, but these errors were encountered: