d3d11: enable d3d11 if dawn is not build with chromium

This CL enable build d3d11 by default, if dawn is not build with
chromium. d3d11 backend is not full implemented yet, so no tests
will run against d3d11 backend.

Bug: dawn:1705
Change-Id: Id689ab5168511af0f75f0b3537f246713de5ca45
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/127260
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Peng Huang <penghuang@chromium.org>
diff --git a/scripts/dawn_features.gni b/scripts/dawn_features.gni
index baaf2c5..aa6d551 100644
--- a/scripts/dawn_features.gni
+++ b/scripts/dawn_features.gni
@@ -55,7 +55,7 @@
   dawn_complete_static_libs = false
 
   # Enables the compilation of Dawn's D3D11 backend
-  dawn_enable_d3d11 = false
+  dawn_enable_d3d11 = is_win && !build_with_chromium
 
   # Enables the compilation of Dawn's D3D12 backend
   dawn_enable_d3d12 = is_win
diff --git a/src/dawn/tests/AdapterTestConfig.cpp b/src/dawn/tests/AdapterTestConfig.cpp
index 454b9b1..e81bb29 100644
--- a/src/dawn/tests/AdapterTestConfig.cpp
+++ b/src/dawn/tests/AdapterTestConfig.cpp
@@ -29,6 +29,12 @@
       forceEnabledWorkarounds(forceEnabledWorkarounds),
       forceDisabledWorkarounds(forceDisabledWorkarounds) {}
 
+BackendTestConfig D3D11Backend(std::initializer_list<const char*> forceEnabledWorkarounds,
+                               std::initializer_list<const char*> forceDisabledWorkarounds) {
+    return BackendTestConfig(wgpu::BackendType::D3D11, forceEnabledWorkarounds,
+                             forceDisabledWorkarounds);
+}
+
 BackendTestConfig D3D12Backend(std::initializer_list<const char*> forceEnabledWorkarounds,
                                std::initializer_list<const char*> forceDisabledWorkarounds) {
     return BackendTestConfig(wgpu::BackendType::D3D12, forceEnabledWorkarounds,
@@ -71,6 +77,8 @@
 
 std::string TestAdapterProperties::ParamName() const {
     switch (backendType) {
+        case wgpu::BackendType::D3D11:
+            return "D3D11";
         case wgpu::BackendType::D3D12:
             return "D3D12";
         case wgpu::BackendType::Metal:
diff --git a/src/dawn/tests/AdapterTestConfig.h b/src/dawn/tests/AdapterTestConfig.h
index 2e978ec..2273559 100644
--- a/src/dawn/tests/AdapterTestConfig.h
+++ b/src/dawn/tests/AdapterTestConfig.h
@@ -59,6 +59,9 @@
 
 std::ostream& operator<<(std::ostream& os, const AdapterTestParam& param);
 
+BackendTestConfig D3D11Backend(std::initializer_list<const char*> forceEnabledWorkarounds = {},
+                               std::initializer_list<const char*> forceDisabledWorkarounds = {});
+
 BackendTestConfig D3D12Backend(std::initializer_list<const char*> forceEnabledWorkarounds = {},
                                std::initializer_list<const char*> forceDisabledWorkarounds = {});
 
diff --git a/src/dawn/tests/DawnTest.cpp b/src/dawn/tests/DawnTest.cpp
index 18ee160..c5aefc2 100644
--- a/src/dawn/tests/DawnTest.cpp
+++ b/src/dawn/tests/DawnTest.cpp
@@ -299,7 +299,9 @@
         argLen = sizeof(kBackendArg) - 1;
         if (strncmp(argv[i], kBackendArg, argLen) == 0) {
             const char* param = argv[i] + argLen;
-            if (strcmp("d3d12", param) == 0) {
+            if (strcmp("d3d11", param) == 0) {
+                mBackendTypeFilter = wgpu::BackendType::D3D11;
+            } else if (strcmp("d3d12", param) == 0) {
                 mBackendTypeFilter = wgpu::BackendType::D3D12;
             } else if (strcmp("metal", param) == 0) {
                 mBackendTypeFilter = wgpu::BackendType::Metal;
@@ -720,9 +722,9 @@
     mAdapter = nullptr;
     mInstance = nullptr;
 
-    // D3D12's GPU-based validation will accumulate objects over time if the backend device is not
-    // destroyed and recreated, so we reset it here.
-    if (IsD3D12() && IsBackendValidationEnabled()) {
+    // D3D11 and D3D12's GPU-based validation will accumulate objects over time if the backend
+    // device is not destroyed and recreated, so we reset it here.
+    if ((IsD3D11() || IsD3D12()) && IsBackendValidationEnabled()) {
         mBackendAdapter.ResetInternalDeviceForTesting();
     }
     mWireHelper.reset();
@@ -733,6 +735,10 @@
     gCurrentTest = nullptr;
 }
 
+bool DawnTestBase::IsD3D11() const {
+    return mParam.adapterProperties.backendType == wgpu::BackendType::D3D11;
+}
+
 bool DawnTestBase::IsD3D12() const {
     return mParam.adapterProperties.backendType == wgpu::BackendType::D3D12;
 }
@@ -1560,7 +1566,7 @@
 
 void DawnTestBase::ResolveExpectations() {
     for (const auto& expectation : mDeferredExpectations) {
-        DAWN_ASSERT(mReadbackSlots[expectation.readbackSlot].mappedData != nullptr);
+        EXPECT_TRUE(mReadbackSlots[expectation.readbackSlot].mappedData != nullptr);
 
         // Get a pointer to the mapped copy of the data for the expectation.
         const char* data =
diff --git a/src/dawn/tests/DawnTest.h b/src/dawn/tests/DawnTest.h
index 0b7eddd..259995e 100644
--- a/src/dawn/tests/DawnTest.h
+++ b/src/dawn/tests/DawnTest.h
@@ -224,6 +224,7 @@
     void SetUp();
     void TearDown();
 
+    bool IsD3D11() const;
     bool IsD3D12() const;
     bool IsMetal() const;
     bool IsNull() const;
diff --git a/src/dawn/tests/end2end/DeviceInitializationTests.cpp b/src/dawn/tests/end2end/DeviceInitializationTests.cpp
index 4758220..1650d5f 100644
--- a/src/dawn/tests/end2end/DeviceInitializationTests.cpp
+++ b/src/dawn/tests/end2end/DeviceInitializationTests.cpp
@@ -83,6 +83,10 @@
             if (properties.backendType == wgpu::BackendType::Null) {
                 continue;
             }
+            // TODO(dawn:1705): Remove this once D3D11 backend is fully implemented.
+            if (properties.backendType == wgpu::BackendType::D3D11) {
+                continue;
+            }
             availableAdapterProperties.push_back(properties);
         }
     }
@@ -131,6 +135,10 @@
             if (properties.backendType == wgpu::BackendType::Null) {
                 continue;
             }
+            // TODO(dawn:1705): Remove this once D3D11 backend is fully implemented.
+            if (properties.backendType == wgpu::BackendType::D3D11) {
+                continue;
+            }
             availableAdapterProperties.push_back(properties);
         }
     }