mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-16 16:37:08 +00:00
Move CreateFence from Device to Queue
Bug: dawn:113 Change-Id: I5ec829d8945cdc25644f481acc07a9f6d8b13aef Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/5200 Commit-Queue: Austin Eng <enga@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Kai Ninomiya <kainino@chromium.org>
This commit is contained in:
committed by
Commit Bot service account
parent
b47470daa7
commit
1cc386687c
@@ -77,7 +77,7 @@ TEST_F(FenceValidationTest, CreationSuccess) {
|
||||
{
|
||||
dawn::FenceDescriptor descriptor;
|
||||
descriptor.initialValue = 0;
|
||||
device.CreateFence(&descriptor);
|
||||
queue.CreateFence(&descriptor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ TEST_F(FenceValidationTest, GetCompletedValue) {
|
||||
{
|
||||
dawn::FenceDescriptor descriptor;
|
||||
descriptor.initialValue = 1;
|
||||
dawn::Fence fence = device.CreateFence(&descriptor);
|
||||
dawn::Fence fence = queue.CreateFence(&descriptor);
|
||||
EXPECT_EQ(fence.GetCompletedValue(), 1u);
|
||||
}
|
||||
}
|
||||
@@ -96,7 +96,7 @@ TEST_F(FenceValidationTest, GetCompletedValue) {
|
||||
TEST_F(FenceValidationTest, OnCompletionImmediate) {
|
||||
dawn::FenceDescriptor descriptor;
|
||||
descriptor.initialValue = 1;
|
||||
dawn::Fence fence = device.CreateFence(&descriptor);
|
||||
dawn::Fence fence = queue.CreateFence(&descriptor);
|
||||
|
||||
EXPECT_CALL(*mockFenceOnCompletionCallback, Call(DAWN_FENCE_COMPLETION_STATUS_SUCCESS, 0))
|
||||
.Times(1);
|
||||
@@ -111,7 +111,7 @@ TEST_F(FenceValidationTest, OnCompletionImmediate) {
|
||||
TEST_F(FenceValidationTest, OnCompletionLargerThanSignaled) {
|
||||
dawn::FenceDescriptor descriptor;
|
||||
descriptor.initialValue = 1;
|
||||
dawn::Fence fence = device.CreateFence(&descriptor);
|
||||
dawn::Fence fence = queue.CreateFence(&descriptor);
|
||||
|
||||
// Cannot signal for values > signaled value
|
||||
EXPECT_CALL(*mockFenceOnCompletionCallback, Call(DAWN_FENCE_COMPLETION_STATUS_ERROR, 0))
|
||||
@@ -130,7 +130,7 @@ TEST_F(FenceValidationTest, OnCompletionLargerThanSignaled) {
|
||||
TEST_F(FenceValidationTest, GetCompletedValueInsideCallback) {
|
||||
dawn::FenceDescriptor descriptor;
|
||||
descriptor.initialValue = 1;
|
||||
dawn::Fence fence = device.CreateFence(&descriptor);
|
||||
dawn::Fence fence = queue.CreateFence(&descriptor);
|
||||
|
||||
queue.Signal(fence, 3);
|
||||
fence.OnCompletion(2u, ToMockFenceOnCompletionCallback, 0);
|
||||
@@ -145,7 +145,7 @@ TEST_F(FenceValidationTest, GetCompletedValueInsideCallback) {
|
||||
TEST_F(FenceValidationTest, GetCompletedValueAfterCallback) {
|
||||
dawn::FenceDescriptor descriptor;
|
||||
descriptor.initialValue = 1;
|
||||
dawn::Fence fence = device.CreateFence(&descriptor);
|
||||
dawn::Fence fence = queue.CreateFence(&descriptor);
|
||||
|
||||
queue.Signal(fence, 2);
|
||||
fence.OnCompletion(2u, ToMockFenceOnCompletionCallback, 0);
|
||||
@@ -159,7 +159,7 @@ TEST_F(FenceValidationTest, GetCompletedValueAfterCallback) {
|
||||
TEST_F(FenceValidationTest, SignalError) {
|
||||
dawn::FenceDescriptor descriptor;
|
||||
descriptor.initialValue = 1;
|
||||
dawn::Fence fence = device.CreateFence(&descriptor);
|
||||
dawn::Fence fence = queue.CreateFence(&descriptor);
|
||||
|
||||
// value < fence signaled value
|
||||
ASSERT_DEVICE_ERROR(queue.Signal(fence, 0));
|
||||
@@ -171,7 +171,7 @@ TEST_F(FenceValidationTest, SignalError) {
|
||||
TEST_F(FenceValidationTest, SignalSuccess) {
|
||||
dawn::FenceDescriptor descriptor;
|
||||
descriptor.initialValue = 1;
|
||||
dawn::Fence fence = device.CreateFence(&descriptor);
|
||||
dawn::Fence fence = queue.CreateFence(&descriptor);
|
||||
|
||||
// Success
|
||||
queue.Signal(fence, 2);
|
||||
@@ -183,3 +183,34 @@ TEST_F(FenceValidationTest, SignalSuccess) {
|
||||
Flush();
|
||||
EXPECT_EQ(fence.GetCompletedValue(), 6u);
|
||||
}
|
||||
|
||||
// Test it is invalid to signal a fence on a different queue than it was created on
|
||||
TEST_F(FenceValidationTest, SignalWrongQueue) {
|
||||
dawn::Queue queue2 = device.CreateQueue();
|
||||
|
||||
dawn::FenceDescriptor descriptor;
|
||||
descriptor.initialValue = 1;
|
||||
dawn::Fence fence = queue.CreateFence(&descriptor);
|
||||
|
||||
ASSERT_DEVICE_ERROR(queue2.Signal(fence, 2));
|
||||
}
|
||||
|
||||
// Test that signaling a fence on a wrong queue does not update fence signaled value
|
||||
TEST_F(FenceValidationTest, SignalWrongQueueDoesNotUpdateValue) {
|
||||
dawn::Queue queue2 = device.CreateQueue();
|
||||
|
||||
dawn::FenceDescriptor descriptor;
|
||||
descriptor.initialValue = 1;
|
||||
dawn::Fence fence = queue.CreateFence(&descriptor);
|
||||
|
||||
ASSERT_DEVICE_ERROR(queue2.Signal(fence, 2));
|
||||
|
||||
// Fence value should be unchanged.
|
||||
Flush();
|
||||
EXPECT_EQ(fence.GetCompletedValue(), 1u);
|
||||
|
||||
// Signaling with 2 on the correct queue should succeed
|
||||
queue.Signal(fence, 2);
|
||||
Flush();
|
||||
EXPECT_EQ(fence.GetCompletedValue(), 2u);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user