6
6
//
7
7
// ===----------------------------------------------------------------------===//
8
8
9
+ #include " BackendString.hpp"
9
10
#include < CL/sycl/detail/pi.hpp>
10
11
#include < detail/plugin.hpp>
11
12
#include < gtest/gtest.h>
12
13
13
14
using namespace cl ::sycl;
14
15
15
16
namespace {
16
- class DISABLED_EnqueueMemTest : public ::testing::Test {
17
+ class EnqueueMemTest : public testing ::TestWithParam<detail::plugin> {
17
18
protected:
18
- std::vector<detail::plugin> Plugins;
19
-
20
19
constexpr static size_t _numElementsX = 8 ;
21
20
constexpr static size_t _numElementsY = 4 ;
22
21
@@ -25,124 +24,125 @@ class DISABLED_EnqueueMemTest : public ::testing::Test {
25
24
pi_queue _queue = nullptr ;
26
25
pi_mem _mem = nullptr ;
27
26
28
- DISABLED_EnqueueMemTest () = default ;
27
+ EnqueueMemTest () = default ;
29
28
30
- ~DISABLED_EnqueueMemTest () = default ;
29
+ ~EnqueueMemTest () = default ;
31
30
32
31
void SetUp () override {
33
- Plugins = detail::pi::initialize ();
34
- ASSERT_FALSE (Plugins. empty () );
32
+
33
+ detail::plugin plugin = GetParam ( );
35
34
36
35
pi_platform platform = nullptr ;
37
- ASSERT_EQ ((Plugins[ 0 ] .call_nocheck <detail::PiApiKind::piPlatformsGet>(
36
+ ASSERT_EQ ((plugin .call_nocheck <detail::PiApiKind::piPlatformsGet>(
38
37
1 , &platform, nullptr )),
39
38
PI_SUCCESS);
40
39
41
- ASSERT_EQ ((Plugins[ 0 ] .call_nocheck <detail::PiApiKind::piDevicesGet>(
42
- platform, PI_DEVICE_TYPE_GPU , 1 , &_device, nullptr )),
40
+ ASSERT_EQ ((plugin .call_nocheck <detail::PiApiKind::piDevicesGet>(
41
+ platform, PI_DEVICE_TYPE_DEFAULT , 1 , &_device, nullptr )),
43
42
PI_SUCCESS);
44
43
45
44
pi_result result = PI_INVALID_VALUE;
46
- result = Plugins[ 0 ] .call_nocheck <detail::PiApiKind::piContextCreate>(
45
+ result = plugin .call_nocheck <detail::PiApiKind::piContextCreate>(
47
46
nullptr , 1u , &_device, nullptr , nullptr , &_context);
48
47
ASSERT_EQ (result, PI_SUCCESS);
49
48
50
- ASSERT_EQ ((Plugins[ 0 ] .call_nocheck <detail::PiApiKind::piQueueCreate>(
49
+ ASSERT_EQ ((plugin .call_nocheck <detail::PiApiKind::piQueueCreate>(
51
50
_context, _device, 0 , &_queue)),
52
51
PI_SUCCESS);
53
52
54
- ASSERT_EQ ((Plugins[ 0 ] .call_nocheck <detail::PiApiKind::piMemBufferCreate>(
53
+ ASSERT_EQ ((plugin .call_nocheck <detail::PiApiKind::piMemBufferCreate>(
55
54
_context, 0 , _numElementsX * _numElementsY * sizeof (pi_int32),
56
55
nullptr , &_mem)),
57
56
PI_SUCCESS);
58
57
}
59
58
60
59
void TearDown () override {
61
- ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piMemRelease>(_mem)),
60
+
61
+ detail::plugin plugin = GetParam ();
62
+
63
+ ASSERT_EQ ((plugin.call_nocheck <detail::PiApiKind::piMemRelease>(_mem)),
64
+ PI_SUCCESS);
65
+ ASSERT_EQ ((plugin.call_nocheck <detail::PiApiKind::piQueueRelease>(_queue)),
62
66
PI_SUCCESS);
63
67
ASSERT_EQ (
64
- (Plugins[ 0 ] .call_nocheck <detail::PiApiKind::piQueueRelease>(_queue )),
68
+ (plugin .call_nocheck <detail::PiApiKind::piContextRelease>(_context )),
65
69
PI_SUCCESS);
66
- ASSERT_EQ ((Plugins[0 ].call_nocheck <detail::PiApiKind::piContextRelease>(
67
- _context)),
68
- PI_SUCCESS);
69
70
}
70
71
71
72
template <typename T> void TestBufferFill (const T &pattern) {
72
73
74
+ detail::plugin plugin = GetParam ();
75
+
73
76
T inValues[_numElementsX] = {};
74
77
75
78
for (size_t i = 0 ; i < _numElementsX; ++i) {
76
79
ASSERT_NE (pattern, inValues[i]);
77
80
}
78
81
79
- ASSERT_EQ (
80
- (Plugins[0 ].call_nocheck <detail::PiApiKind::piEnqueueMemBufferWrite>(
81
- _queue, _mem, PI_TRUE, 0 , _numElementsX * sizeof (T), inValues, 0 ,
82
- nullptr , nullptr )),
83
- PI_SUCCESS);
82
+ ASSERT_EQ ((plugin.call_nocheck <detail::PiApiKind::piEnqueueMemBufferWrite>(
83
+ _queue, _mem, PI_TRUE, 0 , _numElementsX * sizeof (T), inValues,
84
+ 0 , nullptr , nullptr )),
85
+ PI_SUCCESS);
84
86
85
- ASSERT_EQ (
86
- (Plugins[0 ].call_nocheck <detail::PiApiKind::piEnqueueMemBufferFill>(
87
- _queue, _mem, &pattern, sizeof (T), 0 , sizeof (inValues), 0 , nullptr ,
88
- nullptr )),
89
- PI_SUCCESS);
87
+ ASSERT_EQ ((plugin.call_nocheck <detail::PiApiKind::piEnqueueMemBufferFill>(
88
+ _queue, _mem, &pattern, sizeof (T), 0 , sizeof (inValues), 0 ,
89
+ nullptr , nullptr )),
90
+ PI_SUCCESS);
90
91
91
92
T outValues[_numElementsX] = {};
92
- ASSERT_EQ (
93
- (Plugins[0 ].call_nocheck <detail::PiApiKind::piEnqueueMemBufferRead>(
94
- _queue, _mem, PI_TRUE, 0 , _numElementsX * sizeof (T), outValues, 0 ,
95
- nullptr , nullptr )),
96
- PI_SUCCESS);
93
+ ASSERT_EQ ((plugin.call_nocheck <detail::PiApiKind::piEnqueueMemBufferRead>(
94
+ _queue, _mem, PI_TRUE, 0 , _numElementsX * sizeof (T),
95
+ outValues, 0 , nullptr , nullptr )),
96
+ PI_SUCCESS);
97
97
98
98
for (size_t i = 0 ; i < _numElementsX; ++i) {
99
99
ASSERT_EQ (pattern, outValues[i]);
100
100
}
101
101
}
102
102
};
103
103
104
- template <typename T>
105
- struct vec4 {
104
+ static std::vector<detail::plugin> Plugins = detail::pi::initialize();
105
+
106
+ INSTANTIATE_TEST_CASE_P (
107
+ EnqueueMemTestImpl, EnqueueMemTest, testing::ValuesIn(Plugins),
108
+ [](const testing::TestParamInfo<EnqueueMemTest::ParamType> &info) {
109
+ return pi::GetBackendString (info.param .getBackend ());
110
+ });
111
+
112
+ template <typename T> struct vec4 {
106
113
T x, y, z, w;
107
114
108
115
bool operator ==(const vec4 &rhs) const {
109
116
return x == rhs.x && y == rhs.y && z == rhs.z && w == rhs.w ;
110
117
}
111
118
112
- bool operator !=(const vec4 &rhs) const {
113
- return !(*this == rhs);
114
- }
119
+ bool operator !=(const vec4 &rhs) const { return !(*this == rhs); }
115
120
};
116
121
117
- template <typename T>
118
- struct vec2 {
122
+ template <typename T> struct vec2 {
119
123
T x, y;
120
124
121
- bool operator ==(const vec2 &rhs) const {
122
- return x == rhs.x && y == rhs.y ;
123
- }
125
+ bool operator ==(const vec2 &rhs) const { return x == rhs.x && y == rhs.y ; }
124
126
125
- bool operator !=(const vec2 &rhs) const {
126
- return !(*this == rhs);
127
- }
127
+ bool operator !=(const vec2 &rhs) const { return !(*this == rhs); }
128
128
};
129
129
130
- TEST_F (DISABLED_EnqueueMemTest , piEnqueueMemBufferFill) {
130
+ TEST_P (EnqueueMemTest , piEnqueueMemBufferFill) {
131
131
132
- TestBufferFill (float {1 });
133
- TestBufferFill (vec2<float >{1 , 2 });
134
- TestBufferFill (vec4<float >{1 , 2 , 3 , 4 });
132
+ TestBufferFill (float {1 });
133
+ TestBufferFill (vec2<float >{1 , 2 });
134
+ TestBufferFill (vec4<float >{1 , 2 , 3 , 4 });
135
135
136
- TestBufferFill (uint8_t {1 });
137
- TestBufferFill (vec2<uint8_t >{1 , 2 });
138
- TestBufferFill (vec4<uint8_t >{1 , 2 , 3 , 4 });
136
+ TestBufferFill (uint8_t {1 });
137
+ TestBufferFill (vec2<uint8_t >{1 , 2 });
138
+ TestBufferFill (vec4<uint8_t >{1 , 2 , 3 , 4 });
139
139
140
- TestBufferFill (uint16_t {1 });
141
- TestBufferFill (vec2<uint16_t >{1 , 2 });
142
- TestBufferFill (vec4<uint16_t >{1 , 2 , 3 , 4 });
140
+ TestBufferFill (uint16_t {1 });
141
+ TestBufferFill (vec2<uint16_t >{1 , 2 });
142
+ TestBufferFill (vec4<uint16_t >{1 , 2 , 3 , 4 });
143
143
144
- TestBufferFill (uint32_t {1 });
145
- TestBufferFill (vec2<uint32_t >{1 , 2 });
146
- TestBufferFill (vec4<uint32_t >{1 , 2 , 3 , 4 });
144
+ TestBufferFill (uint32_t {1 });
145
+ TestBufferFill (vec2<uint32_t >{1 , 2 });
146
+ TestBufferFill (vec4<uint32_t >{1 , 2 , 3 , 4 });
147
147
}
148
148
} // namespace
0 commit comments