commit 7dcf806634b588166e771326567593a3e794b84e
parent 61483b26f03028514ff769c6aab9dcbbe652a7e2
Author: Erich Gubler <erichdongubler@gmail.com>
Date: Wed, 17 Dec 2025 19:38:04 +0000
Bug 1942431 - chore(webgpu): enable in service workers on Nightly and other released platforms r=webgpu-reviewers,dom-worker-reviewers,aleiserson,edenchuang
Differential Revision: https://phabricator.services.mozilla.com/D234781
Diffstat:
3 files changed, 86 insertions(+), 8 deletions(-)
diff --git a/dom/serviceworkers/test/test_serviceworker_interfaces.js b/dom/serviceworkers/test/test_serviceworker_interfaces.js
@@ -227,84 +227,164 @@ let interfaceNamesInGlobalScope = [
"FormData",
// 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!
"Headers",
// IMPORTANT: Do not change this list without review from a DOM peer!
@@ -465,6 +545,8 @@ let interfaceNamesInGlobalScope = [
"URLSearchParams",
// 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!
"WebGL2RenderingContext",
// IMPORTANT: Do not change this list without review from a DOM peer!
diff --git a/dom/webgpu/Instance.cpp b/dom/webgpu/Instance.cpp
@@ -125,14 +125,6 @@ already_AddRefed<dom::Promise> Instance::RequestAdapter(
}
};
-#ifndef EARLY_BETA_OR_EARLIER
- if (dom::WorkerPrivate* wp = dom::GetCurrentThreadWorkerPrivate()) {
- rejectIf(wp->IsServiceWorker(),
- "WebGPU in service workers is not yet available in Release or "
- "late Beta builds; see "
- "<https://bugzilla.mozilla.org/show_bug.cgi?id=1942431>.");
- }
-#endif
rejectIf(!gfx::gfxVars::AllowWebGPU(), "WebGPU is disabled by blocklist.");
rejectIf(!StaticPrefs::dom_webgpu_enabled(),
"WebGPU is disabled because the `dom.webgpu.enabled` pref. is set "
diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml
@@ -5645,7 +5645,11 @@
# Is support for the Web GPU API enabled on service workers?
- name: dom.webgpu.service-workers.enabled
type: RelaxedAtomicBool
+#if defined(XP_WIN) || defined(XP_MACOSX) && defined(MOZ_AARCH64)
+ value: true
+#else
value: @IS_EARLY_BETA_OR_EARLIER@
+#endif
mirror: always
# Comma-separated list of wgpu backend names to permit in WebGPU adapters.