-
Notifications
You must be signed in to change notification settings - Fork 344
Add WebGPUCompatibilityMode origin trial tokens #520
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
Conversation
FYI @SenorBlanco |
Thanks for doing this!
Good idea! I didn't even know that worked. |
This doesn't seem to be working. Compatibiilty mode still seems to require enabling "WebGPU Developer Features" in chrome://flags. |
Note that I'm surprised "WebGPU Developer Features" is required for WebGPU compatibility mode as my understanding it had nothing to do with it. Did you mean "WebGPU Experimental Features"? |
Sorry, I should've been more clear. I tried it on Canary in three older Android devices which should be working after my blocklist change last week: Lenovo Tab M8 Gen4 (PowerVR Rogue GE8300) and they all failed as above. It actually does start working with "WebGPU Developer Features" enabled (this was a mistake, I meant to enable Experimental features), but this is an interesting datapoint. I can't figure out what "Developer Features" is enabling that would cause Compat mode to work. |
(Note that "WebGPU Developer Features" is exposed in chrome://flags, while "WebGPU Experimental Features" is not. So the former is easy to enable in Canary while the latter requires command-line flags.) |
Another datapoint: on a local build of Chrome/Linux (GL), these flags cause the samples to work: This doesn't: |
This looks like a Chrome bug; filed here: https://issues.chromium.org/issues/430248354. Sorry for the noise. |
Oh! According to the code below, "WebGPU Developer Features" is actually enabling WebGPU Compatibility Mode. if (force_webgpu_compat_ ||
(static_cast<wgpu::FeatureLevel>(options->featureLevel) ==
wgpu::FeatureLevel::Compatibility &&
(safety_level_ == webgpu::SafetyLevel::kUnsafe ||
safety_level_ == webgpu::SafetyLevel::kSafeExperimental || // <-- this is true with WebGPU Developer Features
base::FeatureList::IsEnabled(features::kWebGPUCompatibilityMode)))) {
feature_level = wgpu::FeatureLevel::Compatibility;
} if (gpu_preferences.enable_webgpu_developer_features ||
gpu_preferences.enable_webgpu_experimental_features) {
safety_level_ = webgpu::SafetyLevel::kSafeExperimental;
} Moreover, "WebGPU Experimental Features" is a experimental blink runtime feature. It means users can enable it by enabling the "Experimental Web Platform Features" flag in chrome://flags {
// WebGPU experimental features are meant for features that would
// eventually land in the WebGPU spec.
name: "WebGPUExperimentalFeatures",
status: "experimental",
public: true,
},
``` |
This PR adds tokens for the WebGPU compatibility mode origin trial: