commit 5c55cb99fed32e5cd8ea77f5a6c11e369142805b
parent f115d2e8038c0686d0f6202011e9efbeafbda7c0
Author: Andy Leiserson <aleiserson@mozilla.com>
Date: Wed, 8 Oct 2025 16:28:56 +0000
Bug 1992212 - Enable WebGPU by default on MacOS aarch64 r=webidl,dom-worker-reviewers,webgpu-reviewers,smaug,ErichDonGubler,saschanaz,edenchuang
Differential Revision: https://phabricator.services.mozilla.com/D267458
Diffstat:
9 files changed, 101 insertions(+), 4 deletions(-)
diff --git a/dom/tests/mochitest/general/interface_exposure_checker.js b/dom/tests/mochitest/general/interface_exposure_checker.js
@@ -9,6 +9,7 @@ function entryDisabled(
isMac,
isLinux,
isAndroid,
+ isAarch64,
isInsecureContext,
isFennec,
isCrossOriginIsolated,
@@ -22,6 +23,7 @@ function entryDisabled(
entry.mac === !isMac ||
entry.linux === !isLinux ||
(entry.android === !isAndroid && !entry.nightlyAndroid) ||
+ entry.aarch64 === !isAarch64 ||
entry.fennecOrDesktop === (isAndroid && !isFennec) ||
entry.fennec === !isFennec ||
entry.release === !isRelease ||
@@ -130,6 +132,7 @@ if (typeof window !== "undefined") {
const { AppConstants } = SpecialPowers.ChromeUtils.importESModule(
"resource://gre/modules/AppConstants.sys.mjs"
);
+ const sysinfo = SpecialPowers.Services.sysinfo;
return {
isNightly: AppConstants.NIGHTLY_BUILD,
@@ -140,6 +143,7 @@ if (typeof window !== "undefined") {
isWindows: AppConstants.platform == "win",
isAndroid: AppConstants.platform == "android",
isLinux: AppConstants.platform == "linux",
+ isAarch64: sysinfo.get("arch") === "aarch64",
isInsecureContext: !window.isSecureContext,
// Currently, MOZ_APP_NAME is always "fennec" for all mobile builds, so we can't use AppConstants for this
isFennec:
diff --git a/dom/tests/mochitest/general/test_interfaces.js b/dom/tests/mochitest/general/test_interfaces.js
@@ -477,123 +477,163 @@ let interfaceNamesInGlobalScope = [
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPU", earlyBetaOrEarlier: true },
{ name: "GPU", windows: true },
+ { name: "GPU", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUAdapter", earlyBetaOrEarlier: true },
{ name: "GPUAdapter", windows: true },
+ { name: "GPUAdapter", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUAdapterInfo", earlyBetaOrEarlier: true },
{ name: "GPUAdapterInfo", windows: true },
+ { name: "GPUAdapterInfo", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUBindGroup", earlyBetaOrEarlier: true },
{ name: "GPUBindGroup", windows: true },
+ { name: "GPUBindGroup", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUBindGroupLayout", earlyBetaOrEarlier: true },
{ name: "GPUBindGroupLayout", windows: true },
+ { name: "GPUBindGroupLayout", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUBuffer", earlyBetaOrEarlier: true },
{ name: "GPUBuffer", windows: true },
+ { name: "GPUBuffer", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUBufferUsage", earlyBetaOrEarlier: true },
{ name: "GPUBufferUsage", windows: true },
+ { name: "GPUBufferUsage", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUCanvasContext", earlyBetaOrEarlier: true },
{ name: "GPUCanvasContext", windows: true },
+ { name: "GPUCanvasContext", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUColorWrite", earlyBetaOrEarlier: true },
{ name: "GPUColorWrite", windows: true },
+ { name: "GPUColorWrite", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUCommandBuffer", earlyBetaOrEarlier: true },
{ name: "GPUCommandBuffer", windows: true },
+ { name: "GPUCommandBuffer", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUCommandEncoder", earlyBetaOrEarlier: true },
{ name: "GPUCommandEncoder", windows: true },
+ { name: "GPUCommandEncoder", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUCompilationInfo", earlyBetaOrEarlier: true },
{ name: "GPUCompilationInfo", windows: true },
+ { name: "GPUCompilationInfo", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUCompilationMessage", earlyBetaOrEarlier: true },
{ name: "GPUCompilationMessage", windows: true },
+ { name: "GPUCompilationMessage", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUComputePassEncoder", earlyBetaOrEarlier: true },
{ name: "GPUComputePassEncoder", windows: true },
+ { name: "GPUComputePassEncoder", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUComputePipeline", earlyBetaOrEarlier: true },
{ name: "GPUComputePipeline", windows: true },
+ { name: "GPUComputePipeline", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUDevice", earlyBetaOrEarlier: true },
{ name: "GPUDevice", windows: true },
+ { name: "GPUDevice", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUDeviceLostInfo", earlyBetaOrEarlier: true },
{ name: "GPUDeviceLostInfo", windows: true },
+ { name: "GPUDeviceLostInfo", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUError", earlyBetaOrEarlier: true },
{ name: "GPUError", windows: true },
+ { name: "GPUError", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUExternalTexture", earlyBetaOrEarlier: true },
{ name: "GPUExternalTexture", windows: true },
+ { name: "GPUExternalTexture", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUInternalError", earlyBetaOrEarlier: true },
{ name: "GPUInternalError", windows: true },
+ { name: "GPUInternalError", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUMapMode", earlyBetaOrEarlier: true },
{ name: "GPUMapMode", windows: true },
+ { name: "GPUMapMode", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUOutOfMemoryError", earlyBetaOrEarlier: true },
{ name: "GPUOutOfMemoryError", windows: true },
+ { name: "GPUOutOfMemoryError", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUPipelineError", earlyBetaOrEarlier: true },
{ name: "GPUPipelineError", windows: true },
+ { name: "GPUPipelineError", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUPipelineLayout", earlyBetaOrEarlier: true },
{ name: "GPUPipelineLayout", windows: true },
+ { name: "GPUPipelineLayout", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUQuerySet", earlyBetaOrEarlier: true },
{ name: "GPUQuerySet", windows: true },
+ { name: "GPUQuerySet", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUQueue", earlyBetaOrEarlier: true },
{ name: "GPUQueue", windows: true },
+ { name: "GPUQueue", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPURenderBundle", earlyBetaOrEarlier: true },
{ name: "GPURenderBundle", windows: true },
+ { name: "GPURenderBundle", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPURenderBundleEncoder", earlyBetaOrEarlier: true },
{ name: "GPURenderBundleEncoder", windows: true },
+ { name: "GPURenderBundleEncoder", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPURenderPassEncoder", earlyBetaOrEarlier: true },
{ name: "GPURenderPassEncoder", windows: true },
+ { name: "GPURenderPassEncoder", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPURenderPipeline", earlyBetaOrEarlier: true },
{ name: "GPURenderPipeline", windows: true },
+ { name: "GPURenderPipeline", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUSampler", earlyBetaOrEarlier: true },
{ name: "GPUSampler", windows: true },
+ { name: "GPUSampler", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUShaderModule", earlyBetaOrEarlier: true },
{ name: "GPUShaderModule", windows: true },
+ { name: "GPUShaderModule", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUShaderStage", earlyBetaOrEarlier: true },
{ name: "GPUShaderStage", windows: true },
+ { name: "GPUShaderStage", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUSupportedFeatures", earlyBetaOrEarlier: true },
{ name: "GPUSupportedFeatures", windows: true },
+ { name: "GPUSupportedFeatures", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUSupportedLimits", earlyBetaOrEarlier: true },
{ name: "GPUSupportedLimits", windows: true },
+ { name: "GPUSupportedLimits", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUTexture", earlyBetaOrEarlier: true },
{ name: "GPUTexture", windows: true },
+ { name: "GPUTexture", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUTextureUsage", earlyBetaOrEarlier: true },
{ name: "GPUTextureUsage", windows: true },
+ { name: "GPUTextureUsage", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUTextureView", earlyBetaOrEarlier: true },
{ name: "GPUTextureView", windows: true },
+ { name: "GPUTextureView", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUUncapturedErrorEvent", earlyBetaOrEarlier: true },
{ name: "GPUUncapturedErrorEvent", windows: true },
+ { name: "GPUUncapturedErrorEvent", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUValidationError", earlyBetaOrEarlier: true },
{ name: "GPUValidationError", windows: true },
+ { name: "GPUValidationError", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GainNode", insecureContext: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
@@ -1543,6 +1583,7 @@ let interfaceNamesInGlobalScope = [
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "WGSLLanguageFeatures", earlyBetaOrEarlier: true },
{ name: "WGSLLanguageFeatures", windows: true },
+ { name: "WGSLLanguageFeatures", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "WakeLock" },
// IMPORTANT: Do not change this list without review from a DOM peer!
diff --git a/dom/webgpu/tests/mochitest/mochitest-no-pref.toml b/dom/webgpu/tests/mochitest/mochitest-no-pref.toml
@@ -8,6 +8,7 @@ subsuite = "webgpu"
skip-if = [
"early_beta_or_earlier",
"os == 'win'",
+ "os == 'mac' && arch == 'aarch64'",
# `test-verify` jobs don't guarantee a GPU, so skip them.
"verify",
]
diff --git a/dom/webgpu/tests/mochitest/mochitest-resistfingerprinting.toml b/dom/webgpu/tests/mochitest/mochitest-resistfingerprinting.toml
@@ -1,6 +1,10 @@
[DEFAULT]
subsuite = "webgpu"
-run-if = ["!release_or_beta"]
+run-if = [
+ "early_beta_or_earlier",
+ "os == 'win'",
+ "os == 'mac' && arch == 'aarch64'",
+]
prefs = [
"dom.webgpu.enabled=true",
"dom.webgpu.service-workers.enabled=true",
diff --git a/dom/webgpu/tests/mochitest/mochitest.toml b/dom/webgpu/tests/mochitest/mochitest.toml
@@ -7,8 +7,9 @@ subsuite = "webgpu"
# These conditions should be the same as the `skip-if` conditions in
# `mochitest-no-pref.html`, except for `verify`.
run-if = [
- "nightly_build",
+ "early_beta_or_earlier",
"os == 'win'",
+ "os == 'mac' && arch == 'aarch64'",
]
prefs = [
diff --git a/dom/workers/test/navigator_worker.js b/dom/workers/test/navigator_worker.js
@@ -13,6 +13,7 @@ var supportedProps = [
{ name: "globalPrivacyControl", insecureContext: true },
{ name: "gpu", earlyBetaOrEarlier: true },
{ name: "gpu", windows: true },
+ { name: "gpu", mac: true, aarch64: true },
{ name: "platform", insecureContext: true },
{ name: "product", insecureContext: true },
{ name: "userAgent", insecureContext: true },
diff --git a/dom/workers/test/test_worker_interfaces.js b/dom/workers/test/test_worker_interfaces.js
@@ -238,123 +238,163 @@ let interfaceNamesInGlobalScope = [
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPU", earlyBetaOrEarlier: true },
{ name: "GPU", windows: true },
+ { name: "GPU", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUAdapter", earlyBetaOrEarlier: true },
{ name: "GPUAdapter", windows: true },
+ { name: "GPUAdapter", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUAdapterInfo", earlyBetaOrEarlier: true },
{ name: "GPUAdapterInfo", windows: true },
+ { name: "GPUAdapterInfo", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUBindGroup", earlyBetaOrEarlier: true },
{ name: "GPUBindGroup", windows: true },
+ { name: "GPUBindGroup", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUBindGroupLayout", earlyBetaOrEarlier: true },
{ name: "GPUBindGroupLayout", windows: true },
+ { name: "GPUBindGroupLayout", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUBuffer", earlyBetaOrEarlier: true },
{ name: "GPUBuffer", windows: true },
+ { name: "GPUBuffer", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUBufferUsage", earlyBetaOrEarlier: true },
{ name: "GPUBufferUsage", windows: true },
+ { name: "GPUBufferUsage", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUCanvasContext", earlyBetaOrEarlier: true },
{ name: "GPUCanvasContext", windows: true },
+ { name: "GPUCanvasContext", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUColorWrite", earlyBetaOrEarlier: true },
{ name: "GPUColorWrite", windows: true },
+ { name: "GPUColorWrite", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUCommandBuffer", earlyBetaOrEarlier: true },
{ name: "GPUCommandBuffer", windows: true },
+ { name: "GPUCommandBuffer", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUCommandEncoder", earlyBetaOrEarlier: true },
{ name: "GPUCommandEncoder", windows: true },
+ { name: "GPUCommandEncoder", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUCompilationInfo", earlyBetaOrEarlier: true },
{ name: "GPUCompilationInfo", windows: true },
+ { name: "GPUCompilationInfo", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUCompilationMessage", earlyBetaOrEarlier: true },
{ name: "GPUCompilationMessage", windows: true },
+ { name: "GPUCompilationMessage", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUComputePassEncoder", earlyBetaOrEarlier: true },
{ name: "GPUComputePassEncoder", windows: true },
+ { name: "GPUComputePassEncoder", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUComputePipeline", earlyBetaOrEarlier: true },
{ name: "GPUComputePipeline", windows: true },
+ { name: "GPUComputePipeline", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUDevice", earlyBetaOrEarlier: true },
{ name: "GPUDevice", windows: true },
+ { name: "GPUDevice", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUDeviceLostInfo", earlyBetaOrEarlier: true },
{ name: "GPUDeviceLostInfo", windows: true },
+ { name: "GPUDeviceLostInfo", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUError", earlyBetaOrEarlier: true },
{ name: "GPUError", windows: true },
+ { name: "GPUError", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUExternalTexture", earlyBetaOrEarlier: true },
{ name: "GPUExternalTexture", windows: true },
+ { name: "GPUExternalTexture", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUInternalError", earlyBetaOrEarlier: true },
{ name: "GPUInternalError", windows: true },
+ { name: "GPUInternalError", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUMapMode", earlyBetaOrEarlier: true },
{ name: "GPUMapMode", windows: true },
+ { name: "GPUMapMode", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUOutOfMemoryError", earlyBetaOrEarlier: true },
{ name: "GPUOutOfMemoryError", windows: true },
+ { name: "GPUOutOfMemoryError", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUPipelineError", earlyBetaOrEarlier: true },
{ name: "GPUPipelineError", windows: true },
+ { name: "GPUPipelineError", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUPipelineLayout", earlyBetaOrEarlier: true },
{ name: "GPUPipelineLayout", windows: true },
+ { name: "GPUPipelineLayout", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUQuerySet", earlyBetaOrEarlier: true },
{ name: "GPUQuerySet", windows: true },
+ { name: "GPUQuerySet", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUQueue", earlyBetaOrEarlier: true },
{ name: "GPUQueue", windows: true },
+ { name: "GPUQueue", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPURenderBundle", earlyBetaOrEarlier: true },
{ name: "GPURenderBundle", windows: true },
+ { name: "GPURenderBundle", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPURenderBundleEncoder", earlyBetaOrEarlier: true },
{ name: "GPURenderBundleEncoder", windows: true },
+ { name: "GPURenderBundleEncoder", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPURenderPassEncoder", earlyBetaOrEarlier: true },
{ name: "GPURenderPassEncoder", windows: true },
+ { name: "GPURenderPassEncoder", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPURenderPipeline", earlyBetaOrEarlier: true },
{ name: "GPURenderPipeline", windows: true },
+ { name: "GPURenderPipeline", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUSampler", earlyBetaOrEarlier: true },
{ name: "GPUSampler", windows: true },
+ { name: "GPUSampler", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUShaderModule", earlyBetaOrEarlier: true },
{ name: "GPUShaderModule", windows: true },
+ { name: "GPUShaderModule", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUShaderStage", earlyBetaOrEarlier: true },
{ name: "GPUShaderStage", windows: true },
+ { name: "GPUShaderStage", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUSupportedFeatures", earlyBetaOrEarlier: true },
{ name: "GPUSupportedFeatures", windows: true },
+ { name: "GPUSupportedFeatures", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUSupportedLimits", earlyBetaOrEarlier: true },
{ name: "GPUSupportedLimits", windows: true },
+ { name: "GPUSupportedLimits", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUTexture", earlyBetaOrEarlier: true },
{ name: "GPUTexture", windows: true },
+ { name: "GPUTexture", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUTextureUsage", earlyBetaOrEarlier: true },
{ name: "GPUTextureUsage", windows: true },
+ { name: "GPUTextureUsage", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUTextureView", earlyBetaOrEarlier: true },
{ name: "GPUTextureView", windows: true },
+ { name: "GPUTextureView", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUUncapturedErrorEvent", earlyBetaOrEarlier: true },
{ name: "GPUUncapturedErrorEvent", windows: true },
+ { name: "GPUUncapturedErrorEvent", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "GPUValidationError", earlyBetaOrEarlier: true },
{ name: "GPUValidationError", windows: true },
+ { name: "GPUValidationError", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "Headers", insecureContext: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
@@ -538,6 +578,7 @@ let interfaceNamesInGlobalScope = [
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "WGSLLanguageFeatures", earlyBetaOrEarlier: true },
{ name: "WGSLLanguageFeatures", windows: true },
+ { name: "WGSLLanguageFeatures", mac: true, aarch64: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
{ name: "WebGL2RenderingContext", insecureContext: true },
// IMPORTANT: Do not change this list without review from a DOM peer!
diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml
@@ -5538,9 +5538,13 @@
#
# When this condition changes, be sure to update the `run-if` / `skip-if`
# conditions in `dom/webgpu/tests/mochitest/*.toml` accordingly.
+#
+# preprocessor.py doesn't understand parentheses, but && is higher precedence
+# than ||, meaning this pref defaults to true on any Windows architecture, or
+# on aarch64 (Apple Silicon) MacOS.
- name: dom.webgpu.enabled
type: RelaxedAtomicBool
-#ifdef XP_WIN
+#if defined(XP_WIN) || defined(XP_MACOSX) && defined(MOZ_AARCH64)
value: true
#else
value: @IS_EARLY_BETA_OR_EARLIER@
diff --git a/testing/web-platform/mozilla/meta/webgpu/__dir__.ini b/testing/web-platform/mozilla/meta/webgpu/__dir__.ini
@@ -4,4 +4,4 @@ prefs:
[dom.webgpu.service-workers.enabled:true, media.rvfc.enabled:true]
tags: [webgpu]
disabled:
- if os != "win" and release_or_beta: https://mozilla-hub.atlassian.net/browse/FFXP-223
+ if os != "win" and os != "mac" and release_or_beta: https://mozilla-hub.atlassian.net/browse/FFXP-223