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