77// ===----------------------------------------------------------------------===//
88
99#include " CL/sycl/detail/pi.hpp"
10+ #include < CL/sycl/detail/plugin.hpp>
1011#include < atomic>
1112#include < gtest/gtest.h>
1213#include < thread>
@@ -16,6 +17,8 @@ using namespace cl::sycl;
1617namespace pi {
1718class DISABLED_EventTest : public ::testing::Test {
1819protected:
20+ std::vector<detail::plugin> Plugins;
21+
1922 pi_platform _platform;
2023 pi_context _context;
2124 pi_queue _queue;
@@ -25,39 +28,50 @@ class DISABLED_EventTest : public ::testing::Test {
2528 DISABLED_EventTest ()
2629 : _context{nullptr }, _queue{nullptr }, _device{nullptr },
2730 _result{PI_INVALID_VALUE} {
28- detail::pi::initialize ();
31+ Plugins = detail::pi::initialize ();
2932 }
3033
3134 ~DISABLED_EventTest () override = default ;
3235
3336 void SetUp () override {
3437 pi_uint32 numPlatforms = 0 ;
38+ ASSERT_FALSE (Plugins.empty ());
3539
36- ASSERT_EQ ((PI_CALL_NOCHECK (piPlatformsGet)(0 , nullptr , &numPlatforms)),
40+ ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piPlatformsGet>(
41+ 0 , nullptr , &numPlatforms)),
3742 PI_SUCCESS)
3843 << " piPlatformsGet failed.\n " ;
3944
40- ASSERT_EQ (
41- ( PI_CALL_NOCHECK (piPlatformsGet)( numPlatforms, &_platform, nullptr )),
42- PI_SUCCESS)
45+ ASSERT_EQ ((Plugins[ 0 ]. call_nocheck <detail::PiApiKind::piPlatformsGet>(
46+ numPlatforms, &_platform, nullptr )),
47+ PI_SUCCESS)
4348 << " piPlatformsGet failed.\n " ;
4449 (void )numPlatforms; // Deal with unused variable warning
4550
46- ASSERT_EQ ((PI_CALL_NOCHECK (piDevicesGet)(_platform, PI_DEVICE_TYPE_GPU, 1 , &_device, nullptr )),
51+ ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piDevicesGet>(
52+ _platform, PI_DEVICE_TYPE_GPU, 1 , &_device, nullptr )),
4753 PI_SUCCESS);
4854
49- ASSERT_EQ ((PI_CALL_NOCHECK (piContextCreate)(nullptr , 1 , &_device, nullptr , nullptr , &_context)), PI_SUCCESS);
55+ ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piContextCreate>(
56+ nullptr , 1 , &_device, nullptr , nullptr , &_context)),
57+ PI_SUCCESS);
5058
51- ASSERT_EQ ((PI_CALL_NOCHECK (piQueueCreate)(_context, _device, 0 , &_queue)), PI_SUCCESS);
59+ ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piQueueCreate>(
60+ _context, _device, 0 , &_queue)),
61+ PI_SUCCESS);
5262
5363 _result = PI_INVALID_VALUE;
5464 }
5565
5666 void TearDown () override {
5767
58- ASSERT_EQ ((PI_CALL_NOCHECK (piQueueRelease)(_queue)), PI_SUCCESS);
68+ ASSERT_EQ (
69+ (Plugins[0 ].call_nocheck <detail::PiApiKind::piQueueRelease>(_queue)),
70+ PI_SUCCESS);
5971
60- ASSERT_EQ ((PI_CALL_NOCHECK (piContextRelease)(_context)), PI_SUCCESS);
72+ ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piContextRelease>(
73+ _context)),
74+ PI_SUCCESS);
6175 }
6276};
6377
@@ -66,84 +80,111 @@ class DISABLED_EventTest : public ::testing::Test {
6680
6781TEST_F (DISABLED_EventTest, PICreateEvent) {
6882 pi_event foo;
69- ASSERT_EQ ((PI_CALL_NOCHECK (piEventCreate)(_context, &foo)), PI_SUCCESS);
83+ ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piEventCreate>(_context,
84+ &foo)),
85+ PI_SUCCESS);
7086 ASSERT_NE (foo, nullptr );
7187
72- EXPECT_EQ ((PI_CALL_NOCHECK (piEventRelease)(foo)), PI_SUCCESS);
88+ EXPECT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piEventRelease>(foo)),
89+ PI_SUCCESS);
7390}
7491
7592TEST_F (DISABLED_EventTest, piEventGetInfo) {
7693
7794 pi_event foo;
78- ASSERT_EQ ((PI_CALL_NOCHECK (piEventCreate)(_context, &foo)), PI_SUCCESS);
95+ ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piEventCreate>(_context,
96+ &foo)),
97+ PI_SUCCESS);
7998 ASSERT_NE (foo, nullptr );
8099
81100 pi_uint64 paramValue = 0 ;
82101 pi_uint64 retSize = 0 ;
83- EXPECT_EQ ((PI_CALL_NOCHECK (piEventGetInfo)(foo, PI_EVENT_INFO_COMMAND_EXECUTION_STATUS,
84- sizeof (paramValue), ¶mValue, &retSize)), PI_SUCCESS);
102+ EXPECT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piEventGetInfo>(
103+ foo, PI_EVENT_INFO_COMMAND_EXECUTION_STATUS, sizeof (paramValue),
104+ ¶mValue, &retSize)),
105+ PI_SUCCESS);
85106
86107 EXPECT_EQ (retSize, sizeof (pi_int32));
87108 EXPECT_EQ (paramValue, PI_EVENT_SUBMITTED);
88109
89- EXPECT_EQ ((PI_CALL_NOCHECK (piEventRelease)(foo)), PI_SUCCESS);
110+ EXPECT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piEventRelease>(foo)),
111+ PI_SUCCESS);
90112}
91113
92114TEST_F (DISABLED_EventTest, piEventSetStatus) {
93115
94116 pi_event foo;
95- ASSERT_EQ ((PI_CALL_NOCHECK (piEventCreate)(_context, &foo)), PI_SUCCESS);
117+ ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piEventCreate>(_context,
118+ &foo)),
119+ PI_SUCCESS);
96120 ASSERT_NE (foo, nullptr );
97121
98122 pi_event_status paramValue = PI_EVENT_QUEUED;
99123 size_t retSize = 0u ;
100- PI_CALL_NOCHECK (piEventGetInfo)(foo, PI_EVENT_INFO_COMMAND_EXECUTION_STATUS,
101- sizeof (paramValue), ¶mValue, &retSize);
124+ Plugins[0 ].call_nocheck <detail::PiApiKind::piEventGetInfo>(
125+ foo, PI_EVENT_INFO_COMMAND_EXECUTION_STATUS, sizeof (paramValue),
126+ ¶mValue, &retSize);
102127
103- EXPECT_EQ ((PI_CALL_NOCHECK (piEventSetStatus)(foo, PI_EVENT_COMPLETE)), PI_SUCCESS);
128+ EXPECT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piEventSetStatus>(
129+ foo, PI_EVENT_COMPLETE)),
130+ PI_SUCCESS);
104131
105132 paramValue = {};
106133 retSize = 0u ;
107- ASSERT_EQ ((PI_CALL_NOCHECK (piEventGetInfo)(foo, PI_EVENT_INFO_COMMAND_EXECUTION_STATUS,
108- sizeof (paramValue), ¶mValue, &retSize)), PI_SUCCESS);
134+ ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piEventGetInfo>(
135+ foo, PI_EVENT_INFO_COMMAND_EXECUTION_STATUS, sizeof (paramValue),
136+ ¶mValue, &retSize)),
137+ PI_SUCCESS);
109138 ASSERT_EQ (paramValue, PI_EVENT_COMPLETE);
110139
111- EXPECT_EQ ((PI_CALL_NOCHECK (piEventRelease)(foo)), PI_SUCCESS);
140+ EXPECT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piEventRelease>(foo)),
141+ PI_SUCCESS);
112142}
113143
114144TEST_F (DISABLED_EventTest, WaitForManualEventOnOtherThread) {
115145
116146 pi_event foo;
117- ASSERT_EQ ((PI_CALL_NOCHECK (piEventCreate)(_context, &foo)), PI_SUCCESS);
147+ ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piEventCreate>(_context,
148+ &foo)),
149+ PI_SUCCESS);
118150 ASSERT_NE (foo, nullptr );
119151
120152 pi_event_status paramValue = {};
121153 size_t retSize = 0u ;
122- ASSERT_EQ ((PI_CALL_NOCHECK (piEventGetInfo)(foo, PI_EVENT_INFO_COMMAND_EXECUTION_STATUS,
123- sizeof (paramValue), ¶mValue, &retSize)), PI_SUCCESS);
154+ ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piEventGetInfo>(
155+ foo, PI_EVENT_INFO_COMMAND_EXECUTION_STATUS, sizeof (paramValue),
156+ ¶mValue, &retSize)),
157+ PI_SUCCESS);
124158 ASSERT_EQ (paramValue, PI_EVENT_SUBMITTED);
125159
126160 std::atomic<bool > started{false };
127161
128162 auto tWaiter = std::thread ([&]() {
129163 started = true ;
130- ASSERT_EQ ((PI_CALL_NOCHECK (piEventsWait)(1 , &foo)), PI_SUCCESS);
164+ ASSERT_EQ (
165+ (Plugins[0 ].call_nocheck <detail::PiApiKind::piEventsWait>(1 , &foo)),
166+ PI_SUCCESS);
131167 });
132168
133169 while (!started) {
134170 };
135171
136- ASSERT_EQ ((PI_CALL_NOCHECK (piEventSetStatus)(foo, PI_EVENT_COMPLETE)), PI_SUCCESS);
172+ ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piEventSetStatus>(
173+ foo, PI_EVENT_COMPLETE)),
174+ PI_SUCCESS);
137175
138176 tWaiter.join ();
139177
140178 paramValue = {};
141179 retSize = 0u ;
142- ASSERT_EQ ((PI_CALL_NOCHECK (piEventGetInfo)(foo, PI_EVENT_INFO_COMMAND_EXECUTION_STATUS,
143- sizeof (paramValue), ¶mValue, &retSize)), PI_SUCCESS);
180+ ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piEventGetInfo>(
181+ foo, PI_EVENT_INFO_COMMAND_EXECUTION_STATUS, sizeof (paramValue),
182+ ¶mValue, &retSize)),
183+ PI_SUCCESS);
144184 ASSERT_EQ (paramValue, PI_EVENT_COMPLETE);
145185
146- ASSERT_EQ ((PI_CALL_NOCHECK (piEventRelease)(foo)), PI_SUCCESS);
186+ ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piEventRelease>(foo)),
187+ PI_SUCCESS);
147188}
148189
149190TEST_F (DISABLED_EventTest, piEnqueueEventsWait) {
@@ -154,39 +195,56 @@ TEST_F(DISABLED_EventTest, piEnqueueEventsWait) {
154195 constexpr const size_t bytes = sizeof (data);
155196
156197 pi_mem memObj;
157- ASSERT_EQ ((PI_CALL_NOCHECK (piMemBufferCreate)(_context, PI_MEM_FLAGS_ACCESS_RW, bytes,
158- nullptr , &memObj)), PI_SUCCESS);
198+ ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piMemBufferCreate>(
199+ _context, PI_MEM_FLAGS_ACCESS_RW, bytes, nullptr , &memObj)),
200+ PI_SUCCESS);
159201
160202 pi_event events[4 ] = {nullptr , nullptr , nullptr , nullptr };
161203
162- ASSERT_EQ ((PI_CALL_NOCHECK (piEnqueueMemBufferWrite)(_queue, memObj, true , 0 , bytes, data, 0 ,
163- nullptr , &events[0 ])), PI_SUCCESS);
204+ ASSERT_EQ (
205+ (Plugins[0 ].call_nocheck <detail::PiApiKind::piEnqueueMemBufferWrite>(
206+ _queue, memObj, true , 0 , bytes, data, 0 , nullptr , &events[0 ])),
207+ PI_SUCCESS);
164208 ASSERT_NE (events[0 ], nullptr );
165209
166- ASSERT_EQ ((PI_CALL_NOCHECK (piEnqueueMemBufferRead)(_queue, memObj, true , 0 , bytes, output,
167- 0 , nullptr , &events[1 ])), PI_SUCCESS);
210+ ASSERT_EQ (
211+ (Plugins[0 ].call_nocheck <detail::PiApiKind::piEnqueueMemBufferRead>(
212+ _queue, memObj, true , 0 , bytes, output, 0 , nullptr , &events[1 ])),
213+ PI_SUCCESS);
168214 ASSERT_NE (events[1 ], nullptr );
169215
170- ASSERT_EQ ((PI_CALL_NOCHECK (piEventCreate)(_context, &events[2 ])), PI_SUCCESS);
216+ ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piEventCreate>(
217+ _context, &events[2 ])),
218+ PI_SUCCESS);
171219 ASSERT_NE (events[2 ], nullptr );
172220
173- ASSERT_EQ ((PI_CALL_NOCHECK (piEnqueueEventsWait)(_queue, 3 , events, &events[3 ])), PI_SUCCESS);
221+ ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piEnqueueEventsWait>(
222+ _queue, 3 , events, &events[3 ])),
223+ PI_SUCCESS);
174224 ASSERT_NE (events[3 ], nullptr );
175225
176226 pi_event_status paramValue = {};
177227 size_t retSize = 0u ;
178- ASSERT_EQ ((PI_CALL_NOCHECK (piEventGetInfo)(events[3 ], PI_EVENT_INFO_COMMAND_EXECUTION_STATUS,
179- sizeof (paramValue), ¶mValue, &retSize)), PI_SUCCESS);
228+ ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piEventGetInfo>(
229+ events[3 ], PI_EVENT_INFO_COMMAND_EXECUTION_STATUS,
230+ sizeof (paramValue), ¶mValue, &retSize)),
231+ PI_SUCCESS);
180232 ASSERT_NE (paramValue, PI_EVENT_COMPLETE);
181233
182- ASSERT_EQ ((PI_CALL_NOCHECK (piEventSetStatus)(events[2 ], PI_EVENT_COMPLETE)), PI_SUCCESS);
234+ ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piEventSetStatus>(
235+ events[2 ], PI_EVENT_COMPLETE)),
236+ PI_SUCCESS);
183237
184- ASSERT_EQ ((PI_CALL_NOCHECK (piEventsWait)(1 , &events[3 ])), PI_SUCCESS);
238+ ASSERT_EQ (
239+ (Plugins[0 ].call_nocheck <detail::PiApiKind::piEventsWait>(1 , &events[3 ])),
240+ PI_SUCCESS);
185241
186242 paramValue = {};
187243 retSize = 0u ;
188- ASSERT_EQ ((PI_CALL_NOCHECK (piEventGetInfo)(events[3 ], PI_EVENT_INFO_COMMAND_EXECUTION_STATUS,
189- sizeof (paramValue), ¶mValue, &retSize)), PI_SUCCESS);
244+ ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piEventGetInfo>(
245+ events[3 ], PI_EVENT_INFO_COMMAND_EXECUTION_STATUS,
246+ sizeof (paramValue), ¶mValue, &retSize)),
247+ PI_SUCCESS);
190248 ASSERT_EQ (paramValue, PI_EVENT_COMPLETE);
191249}
192250
0 commit comments