From 67a1f9eb047f2a85b415c1fd4c14050120c67c82 Mon Sep 17 00:00:00 2001 From: Dzmitry Malyshau Date: Mon, 16 Nov 2020 15:25:39 +0000 Subject: [PATCH] Bug 1629357 - Make WebGPU dependent on WebRender feature r=aosmond WebGPU itself doesn't care about WebRender or even the GPU process. However, the presentation to canvas as written today only works with WebRender, so it seems fine to have it as a dependency in general. An alternative could be to just fail getContext() call if webrender is disabled. Differential Revision: https://phabricator.services.mozilla.com/D70888 --- dom/webgpu/mochitest/mochitest.ini | 5 +++-- gfx/src/gfxTelemetry.cpp | 2 ++ gfx/src/gfxTelemetry.h | 1 + gfx/thebes/gfxPlatform.cpp | 5 +++++ taskcluster/ci/test/mochitest.yml | 3 ++- 5 files changed, 13 insertions(+), 3 deletions(-) diff --git a/dom/webgpu/mochitest/mochitest.ini b/dom/webgpu/mochitest/mochitest.ini index dbed4f318f7d..c6d1ea1f941a 100644 --- a/dom/webgpu/mochitest/mochitest.ini +++ b/dom/webgpu/mochitest/mochitest.ini @@ -1,7 +1,8 @@ [DEFAULT] subsuite = webgpu -prefs = dom.webgpu.enabled=true -run_if = nightly_build +run-if = nightly_build && webrender +prefs = + dom.webgpu.enabled=true [test_enabled.html] [test_device_creation.html] diff --git a/gfx/src/gfxTelemetry.cpp b/gfx/src/gfxTelemetry.cpp index f9edafe9225e..f434164c4035 100644 --- a/gfx/src/gfxTelemetry.cpp +++ b/gfx/src/gfxTelemetry.cpp @@ -26,6 +26,8 @@ const char* FeatureStatusToString(FeatureStatus aStatus) { return "unavailable-not-built"; case FeatureStatus::UnavailableNoAngle: return "unavailable-no-angle"; + case FeatureStatus::UnavailableNoWebRender: + return "unavailable-no-webrender"; case FeatureStatus::CrashedInHandler: return "crashed"; case FeatureStatus::Blocked: diff --git a/gfx/src/gfxTelemetry.h b/gfx/src/gfxTelemetry.h index c85c4068dc7e..37d603674a9e 100644 --- a/gfx/src/gfxTelemetry.h +++ b/gfx/src/gfxTelemetry.h @@ -26,6 +26,7 @@ enum class FeatureStatus { UnavailableNoHwCompositing, UnavailableNotBuilt, UnavailableNoAngle, + UnavailableNoWebRender, // This feature crashed immediately when we tried to initialize it, but we // were able to recover via SEH (or something similar). diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp index c650b89ce224..58625a58a249 100644 --- a/gfx/thebes/gfxPlatform.cpp +++ b/gfx/thebes/gfxPlatform.cpp @@ -2882,6 +2882,11 @@ void gfxPlatform::InitWebGPUConfig() { "WebGPU can only be enabled in nightly", "WEBGPU_DISABLE_NON_NIGHTLY"_ns); #endif + if (!UseWebRender()) { + feature.ForceDisable(FeatureStatus::UnavailableNoWebRender, + "WebGPU can't present without WebRender", + "FEATURE_FAILURE_WEBGPU_NEED_WEBRENDER"_ns); + } } void gfxPlatform::InitOMTPConfig() { diff --git a/taskcluster/ci/test/mochitest.yml b/taskcluster/ci/test/mochitest.yml index 157410bb106d..7aadc938fc95 100644 --- a/taskcluster/ci/test/mochitest.yml +++ b/taskcluster/ci/test/mochitest.yml @@ -555,7 +555,8 @@ mochitest-webgpu: by-test-platform: .*mingw.*: ["release"] .*shippable.*: ["mozilla-central"] - default: ["trunk"] + (!-shippable).*-qr.*: ["trunk"] + default: [] tier: default max-run-time: by-test-platform: