@@ -1131,6 +1131,24 @@ ur_result_t ur_command_list_manager::appendKernelLaunchWithArgsExpOld(
11311131 return UR_RESULT_SUCCESS;
11321132}
11331133
1134+ static void *computeZePtr (ur_mem_handle_t hMem, ur_device_handle_t hDevice,
1135+ ur_mem_buffer_t ::device_access_mode_t accessMode,
1136+ ze_command_list_handle_t zeCommandList,
1137+ wait_list_view &waitListView) {
1138+ void *zePtr = nullptr ;
1139+ if (hMem) {
1140+ if (!hMem->isImage ()) {
1141+ auto hBuffer = hMem->getBuffer ();
1142+ zePtr = hBuffer->getDevicePtr (hDevice, accessMode, 0 , hBuffer->getSize (),
1143+ zeCommandList, waitListView);
1144+ } else {
1145+ auto hImage = static_cast <ur_mem_image_t *>(hMem->getImage ());
1146+ zePtr = reinterpret_cast <void *>(hImage->getZeImage ());
1147+ }
1148+ }
1149+ return zePtr;
1150+ }
1151+
11341152ur_result_t ur_command_list_manager::appendKernelLaunchWithArgsExpNew (
11351153 ur_kernel_handle_t hKernel, uint32_t workDim,
11361154 const size_t *pGlobalWorkOffset, const size_t *pGlobalWorkSize,
@@ -1164,6 +1182,9 @@ ur_result_t ur_command_list_manager::appendKernelLaunchWithArgsExpNew(
11641182 hKernel->kernelMemObj .resize (numArgs, 0 );
11651183 hKernel->kernelArgs .resize (numArgs, 0 );
11661184
1185+ wait_list_view waitListView =
1186+ getWaitListView (phEventWaitList, numEventsInWaitList);
1187+
11671188 for (uint32_t argIndex = 0 ; argIndex < numArgs; argIndex++) {
11681189 switch (pArgs[argIndex].type ) {
11691190 case UR_EXP_KERNEL_ARG_TYPE_LOCAL:
@@ -1176,12 +1197,11 @@ ur_result_t ur_command_list_manager::appendKernelLaunchWithArgsExpNew(
11761197 hKernel->kernelArgs [argIndex] = (void *)&pArgs[argIndex].value .pointer ;
11771198 break ;
11781199 case UR_EXP_KERNEL_ARG_TYPE_MEM_OBJ:
1179- // prepareForSubmission() will save zePtr in kernelMemObj[argIndex]
1200+ hKernel->kernelMemObj [argIndex] =
1201+ computeZePtr (pArgs[argIndex].value .memObjTuple .hMem , hDevice.get (),
1202+ ur_mem_buffer_t ::device_access_mode_t ::read_write,
1203+ getZeCommandList (), waitListView);
11801204 hKernel->kernelArgs [argIndex] = &hKernel->kernelMemObj [argIndex];
1181- UR_CALL (hKernel->addPendingMemoryAllocation (
1182- {pArgs[argIndex].value .memObjTuple .hMem ,
1183- ur_mem_buffer_t ::device_access_mode_t ::read_write,
1184- pArgs[argIndex].index }));
11851205 break ;
11861206 case UR_EXP_KERNEL_ARG_TYPE_SAMPLER:
11871207 hKernel->kernelArgs [argIndex] = &pArgs[argIndex].value .sampler ->ZeSampler ;
0 commit comments