44// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
55#include < uur/fixtures.h>
66
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> {
829 void SetUp () override {
9- UUR_RETURN_ON_FATAL_FAILURE (urMultiQueueTest ::SetUp ());
30+ UUR_RETURN_ON_FATAL_FAILURE (urMultiQueueTestWithParam ::SetUp ());
1031 ASSERT_SUCCESS (urMemBufferCreate (context, UR_MEM_FLAG_WRITE_ONLY, size,
1132 nullptr , &src_buffer));
1233 ASSERT_SUCCESS (urMemBufferCreate (context, UR_MEM_FLAG_READ_ONLY, size,
@@ -24,7 +45,23 @@ struct urEnqueueEventsWaitWithBarrierTest : uur::urMultiQueueTest {
2445 if (dst_buffer) {
2546 EXPECT_SUCCESS (urMemRelease (dst_buffer));
2647 }
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);
2865 }
2966
3067 const size_t count = 1024 ;
@@ -34,7 +71,10 @@ struct urEnqueueEventsWaitWithBarrierTest : uur::urMultiQueueTest {
3471 std::vector<uint32_t > input;
3572};
3673
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>);
3878
3979struct urEnqueueEventsWaitWithBarrierOrderingTest : uur::urProgramTest {
4080 void SetUp () override {
@@ -67,8 +107,7 @@ TEST_P(urEnqueueEventsWaitWithBarrierTest, Success) {
67107 ur_event_handle_t waitEvent = nullptr ;
68108 ASSERT_SUCCESS (urEnqueueMemBufferCopy (queue1, src_buffer, dst_buffer, 0 , 0 ,
69109 size, 0 , nullptr , &event1));
70- EXPECT_SUCCESS (
71- urEnqueueEventsWaitWithBarrier (queue2, 1 , &event1, &waitEvent));
110+ EXPECT_SUCCESS (EnqueueBarrier (queue2, 1 , &event1, &waitEvent));
72111 EXPECT_SUCCESS (urQueueFlush (queue2));
73112 EXPECT_SUCCESS (urQueueFlush (queue1));
74113 EXPECT_SUCCESS (urEventWait (1 , &waitEvent));
@@ -86,8 +125,7 @@ TEST_P(urEnqueueEventsWaitWithBarrierTest, Success) {
86125 input.data (), 0 , nullptr , nullptr ));
87126 EXPECT_SUCCESS (urEnqueueMemBufferCopy (queue2, src_buffer, dst_buffer, 0 , 0 ,
88127 size, 0 , nullptr , &event2));
89- EXPECT_SUCCESS (
90- urEnqueueEventsWaitWithBarrier (queue1, 1 , &event2, &waitEvent));
128+ EXPECT_SUCCESS (EnqueueBarrier (queue1, 1 , &event2, &waitEvent));
91129 EXPECT_SUCCESS (urQueueFlush (queue2));
92130 EXPECT_SUCCESS (urQueueFlush (queue1));
93131 EXPECT_SUCCESS (urEventWait (1 , &waitEvent));
@@ -99,27 +137,23 @@ TEST_P(urEnqueueEventsWaitWithBarrierTest, Success) {
99137}
100138
101139TEST_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 ));
105142}
106143
107144TEST_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);
111147
112148 ur_event_handle_t validEvent;
113149 ASSERT_SUCCESS (urEnqueueEventsWait (queue1, 0 , nullptr , &validEvent));
114150
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);
118153
119154 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);
123157
124158 ASSERT_SUCCESS (urEventRelease (validEvent));
125159}
0 commit comments