Test SharedBufferMemoryD3D12Resource under Specific test suite

This patch moves all the tests that are specified for
`SharedBufferMemoryD3D12Resource` from `SharedBufferMemoryTests`
into `SharedBufferMemoryExistingD3D12ResourceTests` as a preparation
for the tests for other backends that need to test completely
different logics in the use of shared buffer memory.

Bug: 42241325
Change-Id: Ifb50a61f64eefa81e0d5e4d9ef0e6a4f56884a93
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/263143
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Loko Kung <lokokung@google.com>
diff --git a/src/dawn/tests/white_box/SharedBufferMemoryTests_win.cpp b/src/dawn/tests/white_box/SharedBufferMemoryTests_win.cpp
index 6ba4585..36ff9c7 100644
--- a/src/dawn/tests/white_box/SharedBufferMemoryTests_win.cpp
+++ b/src/dawn/tests/white_box/SharedBufferMemoryTests_win.cpp
@@ -84,10 +84,10 @@
     }
 }
 
-class D3D12ResourceBackend : public SharedBufferMemoryTestBackend {
+class ExistingD3D12ResourceBackend : public SharedBufferMemoryTestBackend {
   public:
     static Backend GetInstance() {
-        static D3D12ResourceBackend b;
+        static ExistingD3D12ResourceBackend b;
         return &b;
     }
 
@@ -212,11 +212,13 @@
     }
 
   private:
-    D3D12ResourceBackend() {}
+    ExistingD3D12ResourceBackend() {}
 };
 
+class SharedBufferMemoryExistingD3D12ResourceTests : public SharedBufferMemoryTests {};
+
 // Ensure that importing a nullptr ID3D12Resource results in error.
-TEST_P(SharedBufferMemoryTests, nullResourceFailure) {
+TEST_P(SharedBufferMemoryExistingD3D12ResourceTests, NullResourceFailure) {
     native::d3d12::SharedBufferMemoryD3D12ResourceDescriptor sharedD3d12ResourceDesc;
     sharedD3d12ResourceDesc.resource = nullptr;
     wgpu::SharedBufferMemoryDescriptor desc;
@@ -226,12 +228,13 @@
 
 // Validate that importing an ID3D12Resource across devices results in failure. This is tested by
 // creating a resource with a WARP device and attempting to use it on a non-WARP device.
-TEST_P(SharedBufferMemoryTests, CrossDeviceResourceImportFailure) {
+TEST_P(SharedBufferMemoryExistingD3D12ResourceTests, CrossDeviceResourceImportFailure) {
     DAWN_TEST_UNSUPPORTED_IF(IsWARP());
     ComPtr<ID3D12Device> warpDevice =
-        static_cast<D3D12ResourceBackend*>(GetParam().mBackend)->CreateD3D12Device(device, true);
+        static_cast<ExistingD3D12ResourceBackend*>(GetParam().mBackend)
+            ->CreateD3D12Device(device, true);
     ComPtr<ID3D12Resource> d3d12Resource =
-        static_cast<D3D12ResourceBackend*>(GetParam().mBackend)
+        static_cast<ExistingD3D12ResourceBackend*>(GetParam().mBackend)
             ->CreateD3D12Buffer(warpDevice.Get(), D3D12_HEAP_TYPE_UPLOAD);
     wgpu::SharedBufferMemoryDescriptor desc;
     native::d3d12::SharedBufferMemoryD3D12ResourceDescriptor sharedD3d12ResourceDesc;
@@ -243,14 +246,15 @@
 
 // Validate that importing an ID3D12Resource allocated on a CUSTOM heap that is equivalent to UPLOAD
 // works correctly.
-TEST_P(SharedBufferMemoryTests, CustomUploadHeapImport) {
+TEST_P(SharedBufferMemoryExistingD3D12ResourceTests, CustomUploadHeapImport) {
     ComPtr<ID3D12Device> d3d12Device =
-        static_cast<D3D12ResourceBackend*>(GetParam().mBackend)->CreateD3D12Device(device, false);
+        static_cast<ExistingD3D12ResourceBackend*>(GetParam().mBackend)
+            ->CreateD3D12Device(device, false);
     D3D12_HEAP_PROPERTIES heapProperties =
         d3d12Device->GetCustomHeapProperties(0, D3D12_HEAP_TYPE_UPLOAD);
     wgpu::SharedBufferMemoryDescriptor desc;
     ComPtr<ID3D12Resource> d3d12Resource =
-        static_cast<D3D12ResourceBackend*>(GetParam().mBackend)
+        static_cast<ExistingD3D12ResourceBackend*>(GetParam().mBackend)
             ->CreateD3D12Buffer(d3d12Device.Get(), heapProperties);
     native::d3d12::SharedBufferMemoryD3D12ResourceDescriptor sharedD3d12ResourceDesc;
     sharedD3d12ResourceDesc.resource = d3d12Resource.Get();
@@ -262,14 +266,15 @@
 
 // Validate that importing an ID3D12Resource allocated on a CUSTOM heap that is equivalent to
 // READBACK works correctly.
-TEST_P(SharedBufferMemoryTests, CustomReadbackHeapImport) {
+TEST_P(SharedBufferMemoryExistingD3D12ResourceTests, CustomReadbackHeapImport) {
     ComPtr<ID3D12Device> d3d12Device =
-        static_cast<D3D12ResourceBackend*>(GetParam().mBackend)->CreateD3D12Device(device, false);
+        static_cast<ExistingD3D12ResourceBackend*>(GetParam().mBackend)
+            ->CreateD3D12Device(device, false);
     D3D12_HEAP_PROPERTIES heapProperties =
         d3d12Device->GetCustomHeapProperties(0, D3D12_HEAP_TYPE_READBACK);
     wgpu::SharedBufferMemoryDescriptor desc;
     ComPtr<ID3D12Resource> d3d12Resource =
-        static_cast<D3D12ResourceBackend*>(GetParam().mBackend)
+        static_cast<ExistingD3D12ResourceBackend*>(GetParam().mBackend)
             ->CreateD3D12Buffer(d3d12Device.Get(), heapProperties);
     native::d3d12::SharedBufferMemoryD3D12ResourceDescriptor sharedD3d12ResourceDesc;
     sharedD3d12ResourceDesc.resource = d3d12Resource.Get();
@@ -282,7 +287,14 @@
 DAWN_INSTANTIATE_PREFIXED_TEST_P(D3D12,
                                  SharedBufferMemoryTests,
                                  {D3D12Backend()},
-                                 {D3D12ResourceBackend::GetInstance()});
+                                 {ExistingD3D12ResourceBackend::GetInstance()});
+
+// As D3D12 backend is filtered out on Windows x86, we need below to allow uninstantiated gtests.
+GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(SharedBufferMemoryExistingD3D12ResourceTests);
+DAWN_INSTANTIATE_PREFIXED_TEST_P(D3D12,
+                                 SharedBufferMemoryExistingD3D12ResourceTests,
+                                 {D3D12Backend()},
+                                 {ExistingD3D12ResourceBackend::GetInstance()});
 
 }  // anonymous namespace
 }  // namespace dawn