Add WebGPUCompatibilityMode origin trial tokens#520
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: