mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-16 00:17:03 +00:00
Fix VulkanImageWrappingUsageTests.ClearImageAcrossDevicesAliased
In Vulkan, importing memory by file descriptor takes ownership of the file descriptor. It is necessary to dup it in ClearImageAcrossDevicesAliased because the texture is imported twice. This fixes these tests on SwiftShader. Bug: dawn:417 Change-Id: I08b6464c4b8bd31f738037678e29fd6d066e7888 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/22020 Commit-Queue: Austin Eng <enga@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
committed by
Commit Bot service account
parent
bd0ad7921d
commit
65ee6497d6
@@ -34,7 +34,6 @@ namespace dawn_native { namespace vulkan {
|
||||
void SetUp() override {
|
||||
DawnTest::SetUp();
|
||||
DAWN_SKIP_TEST_IF(UsesWire());
|
||||
DAWN_SKIP_TEST_IF(IsSwiftshader());
|
||||
|
||||
deviceVk = reinterpret_cast<dawn_native::vulkan::Device*>(device.Get());
|
||||
}
|
||||
@@ -202,7 +201,7 @@ namespace dawn_native { namespace vulkan {
|
||||
public:
|
||||
void SetUp() override {
|
||||
VulkanImageWrappingTestBase::SetUp();
|
||||
if (UsesWire() || IsSwiftshader()) {
|
||||
if (UsesWire()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -220,7 +219,7 @@ namespace dawn_native { namespace vulkan {
|
||||
}
|
||||
|
||||
void TearDown() override {
|
||||
if (UsesWire() || IsSwiftshader()) {
|
||||
if (UsesWire()) {
|
||||
VulkanImageWrappingTestBase::TearDown();
|
||||
return;
|
||||
}
|
||||
@@ -354,7 +353,7 @@ namespace dawn_native { namespace vulkan {
|
||||
public:
|
||||
void SetUp() override {
|
||||
VulkanImageWrappingTestBase::SetUp();
|
||||
if (UsesWire() || IsSwiftshader()) {
|
||||
if (UsesWire()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -382,7 +381,7 @@ namespace dawn_native { namespace vulkan {
|
||||
}
|
||||
|
||||
void TearDown() override {
|
||||
if (UsesWire() || IsSwiftshader()) {
|
||||
if (UsesWire()) {
|
||||
VulkanImageWrappingTestBase::TearDown();
|
||||
return;
|
||||
}
|
||||
@@ -488,13 +487,17 @@ namespace dawn_native { namespace vulkan {
|
||||
// alias the same memory
|
||||
TEST_P(VulkanImageWrappingUsageTests, ClearImageAcrossDevicesAliased) {
|
||||
DAWN_SKIP_TEST_IF(UsesWire());
|
||||
|
||||
// WrapVulkanImage consumes the file descriptor so we can't import defaultFd twice.
|
||||
// Duplicate the file descriptor so we can import it twice.
|
||||
int defaultFdCopy = dup(defaultFd);
|
||||
ASSERT(defaultFdCopy != -1);
|
||||
|
||||
// Import the image on |device
|
||||
wgpu::Texture wrappedTextureAlias =
|
||||
WrapVulkanImage(device, &defaultDescriptor, defaultFd, defaultAllocationSize,
|
||||
WrapVulkanImage(device, &defaultDescriptor, defaultFdCopy, defaultAllocationSize,
|
||||
defaultMemoryTypeIndex, {});
|
||||
|
||||
int memoryFd = GetMemoryFd(deviceVk, defaultAllocation);
|
||||
|
||||
// Import the image on |secondDevice|
|
||||
wgpu::Texture wrappedTexture =
|
||||
WrapVulkanImage(secondDevice, &defaultDescriptor, defaultFd, defaultAllocationSize,
|
||||
@@ -507,7 +510,7 @@ namespace dawn_native { namespace vulkan {
|
||||
wrappedTexture.Get());
|
||||
|
||||
// Import the image to |device|, making sure we wait on signalFd
|
||||
memoryFd = GetMemoryFd(deviceVk, defaultAllocation);
|
||||
int memoryFd = GetMemoryFd(deviceVk, defaultAllocation);
|
||||
wgpu::Texture nextWrappedTexture =
|
||||
WrapVulkanImage(device, &defaultDescriptor, memoryFd, defaultAllocationSize,
|
||||
defaultMemoryTypeIndex, {signalFd});
|
||||
|
||||
Reference in New Issue
Block a user