@@ -85,22 +85,73 @@ TEST_P(urMemBufferCreateTest, InvalidHostPtrValidHost) {
85
85
urMemBufferCreate (context, flags, 4096 , &properties, buffer.ptr ()));
86
86
}
87
87
88
- using urMemBufferCreateWithHostPtrFlagsTest =
89
- urMemBufferCreateTestWithFlagsParam;
90
- UUR_DEVICE_TEST_SUITE_WITH_PARAM (
91
- urMemBufferCreateWithHostPtrFlagsTest,
92
- ::testing::Values (UR_MEM_FLAG_ALLOC_COPY_HOST_POINTER,
93
- UR_MEM_FLAG_USE_HOST_POINTER),
94
- uur::deviceTestWithParamPrinter<ur_mem_flag_t>);
88
+ TEST_P (urMemBufferCreateTest, CopyHostPointer) {
89
+ std::vector<unsigned char > dataWrite{};
90
+ dataWrite.resize (4096 );
91
+ std::vector<unsigned char > dataRead{};
92
+ dataRead.resize (dataWrite.size ());
93
+ for (size_t i = 0 ; i < dataWrite.size (); i++) {
94
+ dataWrite[i] = i & 0xff ;
95
+ dataRead[i] = 1 ;
96
+ }
97
+
98
+ ur_buffer_properties_t properties{UR_STRUCTURE_TYPE_BUFFER_PROPERTIES,
99
+ nullptr , dataWrite.data ()};
100
+
101
+ ur_queue_handle_t queue;
102
+ ASSERT_SUCCESS (urQueueCreate (context, device, nullptr , &queue));
103
+
104
+ uur::raii::Mem buffer = nullptr ;
105
+ ASSERT_SUCCESS (urMemBufferCreate (context, UR_MEM_FLAG_ALLOC_COPY_HOST_POINTER,
106
+ dataWrite.size (), &properties,
107
+ buffer.ptr ()));
108
+
109
+ for (size_t i = 0 ; i < dataWrite.size (); i++) {
110
+ dataWrite[i] = 2 ;
111
+ }
112
+ dataWrite.resize (0 );
113
+
114
+ ASSERT_SUCCESS (urEnqueueMemBufferRead (queue, buffer, true , 0 , dataRead.size (),
115
+ dataRead.data (), 0 , nullptr , nullptr ));
95
116
96
- TEST_P (urMemBufferCreateWithHostPtrFlagsTest, SUCCESS) {
97
- uur::raii::Mem host_ptr_buffer = nullptr ;
98
- ASSERT_SUCCESS (urMemBufferCreate (context, UR_MEM_FLAG_ALLOC_HOST_POINTER,
99
- 4096 , nullptr , host_ptr_buffer.ptr ()));
117
+ for (size_t i = 0 ; i < dataWrite.size (); i++) {
118
+ ASSERT_EQ (dataRead[i], i & 0xff );
119
+ }
120
+ }
121
+
122
+ TEST_P (urMemBufferCreateTest, UseHostPointer) {
123
+ // These all copy memory instead of mapping it
124
+ UUR_KNOWN_FAILURE_ON (uur::LevelZero{}, uur::LevelZeroV2{}, uur::HIP{},
125
+ uur::CUDA{}, uur::OpenCL{" Intel(R) UHD Graphics 770" });
126
+
127
+ std::vector<unsigned char > dataWrite{};
128
+ dataWrite.resize (4096 );
129
+ std::vector<unsigned char > dataRead{};
130
+ dataRead.resize (dataWrite.size ());
131
+ for (size_t i = 0 ; i < dataWrite.size (); i++) {
132
+ dataWrite[i] = i & 0xff ;
133
+ dataRead[i] = 1 ;
134
+ }
100
135
101
136
ur_buffer_properties_t properties{UR_STRUCTURE_TYPE_BUFFER_PROPERTIES,
102
- nullptr , host_ptr_buffer.ptr ()};
137
+ nullptr , dataWrite.data ()};
138
+
139
+ ur_queue_handle_t queue;
140
+ ASSERT_SUCCESS (urQueueCreate (context, device, nullptr , &queue));
141
+
103
142
uur::raii::Mem buffer = nullptr ;
104
- ASSERT_SUCCESS (
105
- urMemBufferCreate (context, getParam (), 4096 , &properties, buffer.ptr ()));
143
+ ASSERT_SUCCESS (urMemBufferCreate (context, UR_MEM_FLAG_USE_HOST_POINTER,
144
+ dataWrite.size (), &properties,
145
+ buffer.ptr ()));
146
+
147
+ for (size_t i = 0 ; i < dataWrite.size (); i++) {
148
+ dataWrite[i] = i & 0x0f ;
149
+ }
150
+
151
+ ASSERT_SUCCESS (urEnqueueMemBufferRead (queue, buffer, true , 0 , dataRead.size (),
152
+ dataRead.data (), 0 , nullptr , nullptr ));
153
+
154
+ for (size_t i = 0 ; i < dataWrite.size (); i++) {
155
+ ASSERT_EQ (dataRead[i], i & 0x0f );
156
+ }
106
157
}
0 commit comments