4
4
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
5
5
#include < uur/fixtures.h>
6
6
7
- struct urEnqueueEventsWaitWithBarrierTest : uur::urMultiQueueTest {
7
+ enum class BarrierType {
8
+ Normal,
9
+ ExtLowPower,
10
+ };
11
+
12
+ std::ostream &operator <<(std::ostream &os, BarrierType barrierType) {
13
+ switch (barrierType) {
14
+ case BarrierType::Normal:
15
+ os << " Normal" ;
16
+ break ;
17
+ case BarrierType::ExtLowPower:
18
+ os << " ExtLowPower" ;
19
+ break ;
20
+ default :
21
+ os << " Unknown" ;
22
+ break ;
23
+ }
24
+ return os;
25
+ }
26
+
27
+ struct urEnqueueEventsWaitWithBarrierTest
28
+ : uur::urMultiQueueTestWithParam<BarrierType> {
8
29
void SetUp () override {
9
- UUR_RETURN_ON_FATAL_FAILURE (urMultiQueueTest ::SetUp ());
30
+ UUR_RETURN_ON_FATAL_FAILURE (urMultiQueueTestWithParam ::SetUp ());
10
31
ASSERT_SUCCESS (urMemBufferCreate (context, UR_MEM_FLAG_WRITE_ONLY, size,
11
32
nullptr , &src_buffer));
12
33
ASSERT_SUCCESS (urMemBufferCreate (context, UR_MEM_FLAG_READ_ONLY, size,
@@ -24,7 +45,23 @@ struct urEnqueueEventsWaitWithBarrierTest : uur::urMultiQueueTest {
24
45
if (dst_buffer) {
25
46
EXPECT_SUCCESS (urMemRelease (dst_buffer));
26
47
}
27
- urMultiQueueTest::TearDown ();
48
+ urMultiQueueTestWithParam::TearDown ();
49
+ }
50
+
51
+ ur_result_t EnqueueBarrier (ur_queue_handle_t queue, uint32_t num_events,
52
+ const ur_event_handle_t *event_list,
53
+ ur_event_handle_t *wait_event) {
54
+ BarrierType barrier = getParam ();
55
+ if (barrier == BarrierType::ExtLowPower) {
56
+ struct ur_exp_enqueue_ext_properties_t props = {
57
+ UR_STRUCTURE_TYPE_EXP_ENQUEUE_EXT_PROPERTIES, nullptr ,
58
+ UR_EXP_ENQUEUE_EXT_FLAG_LOW_POWER_EVENTS};
59
+ return urEnqueueEventsWaitWithBarrierExt (queue, &props, num_events,
60
+ event_list, wait_event);
61
+ }
62
+
63
+ return urEnqueueEventsWaitWithBarrier (queue, num_events, event_list,
64
+ wait_event);
28
65
}
29
66
30
67
const size_t count = 1024 ;
@@ -34,7 +71,10 @@ struct urEnqueueEventsWaitWithBarrierTest : uur::urMultiQueueTest {
34
71
std::vector<uint32_t > input;
35
72
};
36
73
37
- UUR_INSTANTIATE_DEVICE_TEST_SUITE_P (urEnqueueEventsWaitWithBarrierTest);
74
+ UUR_TEST_SUITE_P (urEnqueueEventsWaitWithBarrierTest,
75
+ ::testing::Values (BarrierType::Normal,
76
+ BarrierType::ExtLowPower),
77
+ uur::deviceTestWithParamPrinter<BarrierType>);
38
78
39
79
struct urEnqueueEventsWaitWithBarrierOrderingTest : uur::urProgramTest {
40
80
void SetUp () override {
@@ -67,8 +107,7 @@ TEST_P(urEnqueueEventsWaitWithBarrierTest, Success) {
67
107
ur_event_handle_t waitEvent = nullptr ;
68
108
ASSERT_SUCCESS (urEnqueueMemBufferCopy (queue1, src_buffer, dst_buffer, 0 , 0 ,
69
109
size, 0 , nullptr , &event1));
70
- EXPECT_SUCCESS (
71
- urEnqueueEventsWaitWithBarrier (queue2, 1 , &event1, &waitEvent));
110
+ EXPECT_SUCCESS (EnqueueBarrier (queue2, 1 , &event1, &waitEvent));
72
111
EXPECT_SUCCESS (urQueueFlush (queue2));
73
112
EXPECT_SUCCESS (urQueueFlush (queue1));
74
113
EXPECT_SUCCESS (urEventWait (1 , &waitEvent));
@@ -86,8 +125,7 @@ TEST_P(urEnqueueEventsWaitWithBarrierTest, Success) {
86
125
input.data (), 0 , nullptr , nullptr ));
87
126
EXPECT_SUCCESS (urEnqueueMemBufferCopy (queue2, src_buffer, dst_buffer, 0 , 0 ,
88
127
size, 0 , nullptr , &event2));
89
- EXPECT_SUCCESS (
90
- urEnqueueEventsWaitWithBarrier (queue1, 1 , &event2, &waitEvent));
128
+ EXPECT_SUCCESS (EnqueueBarrier (queue1, 1 , &event2, &waitEvent));
91
129
EXPECT_SUCCESS (urQueueFlush (queue2));
92
130
EXPECT_SUCCESS (urQueueFlush (queue1));
93
131
EXPECT_SUCCESS (urEventWait (1 , &waitEvent));
@@ -99,27 +137,23 @@ TEST_P(urEnqueueEventsWaitWithBarrierTest, Success) {
99
137
}
100
138
101
139
TEST_P (urEnqueueEventsWaitWithBarrierTest, InvalidNullHandleQueue) {
102
- ASSERT_EQ_RESULT (
103
- UR_RESULT_ERROR_INVALID_NULL_HANDLE,
104
- urEnqueueEventsWaitWithBarrier (nullptr , 0 , nullptr , nullptr ));
140
+ ASSERT_EQ_RESULT (UR_RESULT_ERROR_INVALID_NULL_HANDLE,
141
+ EnqueueBarrier (nullptr , 0 , nullptr , nullptr ));
105
142
}
106
143
107
144
TEST_P (urEnqueueEventsWaitWithBarrierTest, InvalidNullPtrEventWaitList) {
108
- ASSERT_EQ_RESULT (
109
- urEnqueueEventsWaitWithBarrier (queue1, 1 , nullptr , nullptr ),
110
- UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST);
145
+ ASSERT_EQ_RESULT (EnqueueBarrier (queue1, 1 , nullptr , nullptr ),
146
+ UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST);
111
147
112
148
ur_event_handle_t validEvent;
113
149
ASSERT_SUCCESS (urEnqueueEventsWait (queue1, 0 , nullptr , &validEvent));
114
150
115
- ASSERT_EQ_RESULT (
116
- urEnqueueEventsWaitWithBarrier (queue1, 0 , &validEvent, nullptr ),
117
- UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST);
151
+ ASSERT_EQ_RESULT (EnqueueBarrier (queue1, 0 , &validEvent, nullptr ),
152
+ UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST);
118
153
119
154
ur_event_handle_t inv_evt = nullptr ;
120
- ASSERT_EQ_RESULT (
121
- urEnqueueEventsWaitWithBarrier (queue1, 1 , &inv_evt, nullptr ),
122
- UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST);
155
+ ASSERT_EQ_RESULT (EnqueueBarrier (queue1, 1 , &inv_evt, nullptr ),
156
+ UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST);
123
157
124
158
ASSERT_SUCCESS (urEventRelease (validEvent));
125
159
}
0 commit comments