@@ -8411,35 +8411,43 @@ __urdlllocal ur_result_t UR_APICALL urCommandBufferUpdateKernelLaunchExp(
84118411
84128412 // Deal with any struct parameters that have handle members we need to
84138413 // convert.
8414- auto pUpdateKernelLaunchLocal = *pUpdateKernelLaunch;
8415-
8416- pUpdateKernelLaunchLocal. hCommand =
8417- reinterpret_cast < ur_exp_command_buffer_command_object_t *>(
8418- pUpdateKernelLaunchLocal. hCommand )
8419- -> handle ;
8420- if (pUpdateKernelLaunchLocal. hNewKernel )
8421- pUpdateKernelLaunchLocal.hNewKernel =
8422- reinterpret_cast <ur_kernel_object_t *>(
8423- pUpdateKernelLaunchLocal.hNewKernel )
8414+ std::vector< ur_exp_command_buffer_update_kernel_launch_desc_t >
8415+ pUpdateKernelLaunchVector = {};
8416+ std::vector<std::vector< ur_exp_command_buffer_update_memobj_arg_desc_t >>
8417+ ppUpdateKernelLaunchpNewMemObjArgList (numKernelUpdates);
8418+ for ( size_t Offset = 0 ; Offset < numKernelUpdates; Offset++) {
8419+ auto pUpdateKernelLaunchLocal = *pUpdateKernelLaunch ;
8420+
8421+ pUpdateKernelLaunchLocal.hCommand =
8422+ reinterpret_cast <ur_exp_command_buffer_command_object_t *>(
8423+ pUpdateKernelLaunchLocal.hCommand )
84248424 ->handle ;
8425-
8426- std::vector<ur_exp_command_buffer_update_memobj_arg_desc_t >
8427- pUpdateKernelLaunchpNewMemObjArgList;
8428- for (uint32_t i = 0 ; i < pUpdateKernelLaunch->numNewMemObjArgs ; i++) {
8429- ur_exp_command_buffer_update_memobj_arg_desc_t NewRangeStruct =
8430- pUpdateKernelLaunchLocal.pNewMemObjArgList [i];
8431- if (NewRangeStruct.hNewMemObjArg )
8432- NewRangeStruct.hNewMemObjArg =
8433- reinterpret_cast <ur_mem_object_t *>(NewRangeStruct.hNewMemObjArg )
8425+ if (pUpdateKernelLaunchLocal.hNewKernel )
8426+ pUpdateKernelLaunchLocal.hNewKernel =
8427+ reinterpret_cast <ur_kernel_object_t *>(
8428+ pUpdateKernelLaunchLocal.hNewKernel )
84348429 ->handle ;
84358430
8436- pUpdateKernelLaunchpNewMemObjArgList.push_back (NewRangeStruct);
8437- }
8438- pUpdateKernelLaunchLocal.pNewMemObjArgList =
8439- pUpdateKernelLaunchpNewMemObjArgList.data ();
8431+ std::vector<ur_exp_command_buffer_update_memobj_arg_desc_t >
8432+ &pUpdateKernelLaunchpNewMemObjArgList =
8433+ ppUpdateKernelLaunchpNewMemObjArgList[Offset];
8434+ for (uint32_t i = 0 ; i < pUpdateKernelLaunch->numNewMemObjArgs ; i++) {
8435+ ur_exp_command_buffer_update_memobj_arg_desc_t NewRangeStruct =
8436+ pUpdateKernelLaunchLocal.pNewMemObjArgList [i];
8437+ if (NewRangeStruct.hNewMemObjArg )
8438+ NewRangeStruct.hNewMemObjArg =
8439+ reinterpret_cast <ur_mem_object_t *>(NewRangeStruct.hNewMemObjArg )
8440+ ->handle ;
8441+
8442+ pUpdateKernelLaunchpNewMemObjArgList.push_back (NewRangeStruct);
8443+ }
8444+ pUpdateKernelLaunchLocal.pNewMemObjArgList =
8445+ pUpdateKernelLaunchpNewMemObjArgList.data ();
84408446
8441- // Now that we've converted all the members update the param pointers
8442- pUpdateKernelLaunch = &pUpdateKernelLaunchLocal;
8447+ pUpdateKernelLaunchVector.push_back (pUpdateKernelLaunchLocal);
8448+ pUpdateKernelLaunch++;
8449+ }
8450+ pUpdateKernelLaunch = pUpdateKernelLaunchVector.data ();
84438451
84448452 // forward to device-platform
84458453 result = pfnUpdateKernelLaunchExp (hCommandBuffer, numKernelUpdates,
0 commit comments