Plumb UseSpvc toggle for tests

BUG=dawn:273

Change-Id: I4660f0f984b6fb0103eafca9d674dcb4ed02cee4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/14220
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
diff --git a/src/tests/DawnTest.cpp b/src/tests/DawnTest.cpp
index 25654ba..7865205 100644
--- a/src/tests/DawnTest.cpp
+++ b/src/tests/DawnTest.cpp
@@ -142,6 +142,11 @@
             continue;
         }
 
+        if (strcmp("--use-spvc", argv[i]) == 0) {
+            mUseSpvc = true;
+            continue;
+        }
+
         constexpr const char kVendorIdFilterArg[] = "--adapter-vendor-id=";
         if (strstr(argv[i], kVendorIdFilterArg) == argv[i]) {
             const char* vendorIdFilter = argv[i] + strlen(kVendorIdFilterArg);
@@ -194,6 +199,9 @@
                  "SkipDawnValidation: "
               << (mSkipDawnValidation ? "true" : "false")
               << "\n"
+                 "UseSpvc: "
+              << (mUseSpvc ? "true" : "false")
+              << "\n"
                  "BeginCaptureOnStartup: "
               << (mBeginCaptureOnStartup ? "true" : "false")
               << "\n"
@@ -241,6 +249,10 @@
     return mSkipDawnValidation;
 }
 
+bool DawnTestEnvironment::IsSpvcBeingUsed() const {
+    return mUseSpvc;
+}
+
 dawn_native::Instance* DawnTestEnvironment::GetInstance() const {
     return mInstance.get();
 }
@@ -370,6 +382,10 @@
     return gTestEnv->IsDawnValidationSkipped();
 }
 
+bool DawnTestBase::IsSpvcBeingUsed() const {
+    return gTestEnv->IsSpvcBeingUsed();
+}
+
 bool DawnTestBase::HasVendorIdFilter() const {
     return gTestEnv->HasVendorIdFilter();
 }
@@ -455,6 +471,12 @@
         deviceDescriptor.forceEnabledToggles.push_back(kSkipValidationToggle);
     }
 
+    static constexpr char kUseSpvcToggle[] = "use_spvc";
+    if (gTestEnv->IsSpvcBeingUsed()) {
+        ASSERT(gTestEnv->GetInstance()->GetToggleInfo(kUseSpvcToggle) != nullptr);
+        deviceDescriptor.forceEnabledToggles.push_back(kUseSpvcToggle);
+    }
+
     backendDevice = mBackendAdapter.CreateDevice(&deviceDescriptor);
     ASSERT_NE(nullptr, backendDevice);
 
diff --git a/src/tests/DawnTest.h b/src/tests/DawnTest.h
index 96ff946..e693641 100644
--- a/src/tests/DawnTest.h
+++ b/src/tests/DawnTest.h
@@ -135,6 +135,7 @@
     bool UsesWire() const;
     bool IsBackendValidationEnabled() const;
     bool IsDawnValidationSkipped() const;
+    bool IsSpvcBeingUsed() const;
     dawn_native::Instance* GetInstance() const;
     bool HasVendorIdFilter() const;
     uint32_t GetVendorIdFilter() const;
@@ -148,6 +149,7 @@
     bool mUseWire = false;
     bool mEnableBackendValidation = false;
     bool mSkipDawnValidation = false;
+    bool mUseSpvc = false;
     bool mBeginCaptureOnStartup = false;
     bool mHasVendorIdFilter = false;
     uint32_t mVendorIdFilter = 0;
@@ -182,6 +184,7 @@
     bool UsesWire() const;
     bool IsBackendValidationEnabled() const;
     bool IsDawnValidationSkipped() const;
+    bool IsSpvcBeingUsed() const;
 
     void StartExpectDeviceError();
     bool EndExpectDeviceError();