@@ -85,22 +85,73 @@ TEST_P(urMemBufferCreateTest, InvalidHostPtrValidHost) {
8585 urMemBufferCreate (context, flags, 4096 , &properties, buffer.ptr ()));
8686}
8787
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 ));
95116
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+ }
100135
101136 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+
103142 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+ }
106157}
0 commit comments