tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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:
Mdom/tests/mochitest/general/interface_exposure_checker.js | 4++++
Mdom/tests/mochitest/general/test_interfaces.js | 41+++++++++++++++++++++++++++++++++++++++++
Mdom/webgpu/tests/mochitest/mochitest-no-pref.toml | 1+
Mdom/webgpu/tests/mochitest/mochitest-resistfingerprinting.toml | 6+++++-
Mdom/webgpu/tests/mochitest/mochitest.toml | 3++-
Mdom/workers/test/navigator_worker.js | 1+
Mdom/workers/test/test_worker_interfaces.js | 41+++++++++++++++++++++++++++++++++++++++++
Mmodules/libpref/init/StaticPrefList.yaml | 6+++++-
Mtesting/web-platform/mozilla/meta/webgpu/__dir__.ini | 2+-
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