@@ -156,15 +156,15 @@ UR_APIEXPORT ur_result_t UR_APICALL urCommandBufferAppendKernelLaunchExp(
156156 cl_mutable_command_khr *OutCommandHandle =
157157 hCommandBuffer->IsUpdatable ? &CommandHandle : nullptr ;
158158
159- cl_ndrange_kernel_command_properties_khr UpdateProperties[] = {
159+ cl_command_properties_khr UpdateProperties[] = {
160160 CL_MUTABLE_DISPATCH_UPDATABLE_FIELDS_KHR,
161161 CL_MUTABLE_DISPATCH_GLOBAL_OFFSET_KHR |
162162 CL_MUTABLE_DISPATCH_GLOBAL_SIZE_KHR |
163163 CL_MUTABLE_DISPATCH_LOCAL_SIZE_KHR |
164164 CL_MUTABLE_DISPATCH_ARGUMENTS_KHR | CL_MUTABLE_DISPATCH_EXEC_INFO_KHR,
165165 0 };
166166
167- cl_ndrange_kernel_command_properties_khr *Properties =
167+ cl_command_properties_khr *Properties =
168168 hCommandBuffer->IsUpdatable ? UpdateProperties : nullptr ;
169169 CL_RETURN_ON_FAILURE (clCommandNDRangeKernelKHR (
170170 hCommandBuffer->CLCommandBuffer , nullptr , Properties,
@@ -176,8 +176,11 @@ UR_APIEXPORT ur_result_t UR_APICALL urCommandBufferAppendKernelLaunchExp(
176176 auto URCommandHandle =
177177 std::make_unique<ur_exp_command_buffer_command_handle_t_>(
178178 hCommandBuffer, CommandHandle, workDim, pLocalWorkSize != nullptr );
179- *phCommandHandle = URCommandHandle.release ();
180- hCommandBuffer->CommandHandles .push_back (*phCommandHandle);
179+ ur_exp_command_buffer_command_handle_t Handle = URCommandHandle.release ();
180+ hCommandBuffer->CommandHandles .push_back (Handle);
181+ if (phCommandHandle) {
182+ *phCommandHandle = Handle;
183+ }
181184 } catch (...) {
182185 return UR_RESULT_ERROR_OUT_OF_RESOURCES;
183186 }
@@ -222,7 +225,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urCommandBufferAppendMemBufferCopyExp(
222225 cl_ext::CommandCopyBufferName, &clCommandCopyBufferKHR));
223226
224227 CL_RETURN_ON_FAILURE (clCommandCopyBufferKHR (
225- hCommandBuffer->CLCommandBuffer , nullptr ,
228+ hCommandBuffer->CLCommandBuffer , nullptr , nullptr ,
226229 cl_adapter::cast<cl_mem>(hSrcMem), cl_adapter::cast<cl_mem>(hDstMem),
227230 srcOffset, dstOffset, size, numSyncPointsInWaitList, pSyncPointWaitList,
228231 pSyncPoint, nullptr ));
@@ -256,7 +259,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urCommandBufferAppendMemBufferCopyRectExp(
256259 cl_ext::CommandCopyBufferRectName, &clCommandCopyBufferRectKHR));
257260
258261 CL_RETURN_ON_FAILURE (clCommandCopyBufferRectKHR (
259- hCommandBuffer->CLCommandBuffer , nullptr ,
262+ hCommandBuffer->CLCommandBuffer , nullptr , nullptr ,
260263 cl_adapter::cast<cl_mem>(hSrcMem), cl_adapter::cast<cl_mem>(hDstMem),
261264 OpenCLOriginRect, OpenCLDstRect, OpenCLRegion, srcRowPitch, srcSlicePitch,
262265 dstRowPitch, dstSlicePitch, numSyncPointsInWaitList, pSyncPointWaitList,
@@ -274,9 +277,6 @@ ur_result_t UR_APICALL urCommandBufferAppendMemBufferWriteExp(
274277 [[maybe_unused]] const ur_exp_command_buffer_sync_point_t
275278 *pSyncPointWaitList,
276279 [[maybe_unused]] ur_exp_command_buffer_sync_point_t *pSyncPoint) {
277-
278- cl_adapter::die (" Experimental Command-buffer feature is not "
279- " implemented for OpenCL adapter." );
280280 return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
281281}
282282
@@ -343,7 +343,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urCommandBufferAppendMemBufferFillExp(
343343 cl_ext::CommandFillBufferName, &clCommandFillBufferKHR));
344344
345345 CL_RETURN_ON_FAILURE (clCommandFillBufferKHR (
346- hCommandBuffer->CLCommandBuffer , nullptr ,
346+ hCommandBuffer->CLCommandBuffer , nullptr , nullptr ,
347347 cl_adapter::cast<cl_mem>(hBuffer), pPattern, patternSize, offset, size,
348348 numSyncPointsInWaitList, pSyncPointWaitList, pSyncPoint, nullptr ));
349349
@@ -556,8 +556,6 @@ UR_APIEXPORT ur_result_t UR_APICALL urCommandBufferUpdateKernelLaunchExp(
556556 cl_mutable_command_khr command =
557557 cl_adapter::cast<cl_mutable_command_khr>(hCommand->CLMutableCommand );
558558 cl_mutable_dispatch_config_khr dispatch_config = {
559- CL_STRUCTURE_TYPE_MUTABLE_DISPATCH_CONFIG_KHR,
560- nullptr ,
561559 command,
562560 static_cast <cl_uint>(CLArgs.size ()), // num_args
563561 static_cast <cl_uint>(CLUSMArgs.size ()), // num_svm_args
@@ -570,10 +568,12 @@ UR_APIEXPORT ur_result_t UR_APICALL urCommandBufferUpdateKernelLaunchExp(
570568 CLGlobalWorkSize.data (), // global_work_size
571569 CLLocalWorkSize.data (), // local_work_size
572570 };
573- cl_mutable_base_config_khr config = {
574- CL_STRUCTURE_TYPE_MUTABLE_BASE_CONFIG_KHR, nullptr , 1 , &dispatch_config};
575- CL_RETURN_ON_FAILURE (
576- clUpdateMutableCommandsKHR (hCommandBuffer->CLCommandBuffer , &config));
571+ cl_uint num_configs = 1 ;
572+ cl_command_buffer_update_type_khr config_types[1 ] = {
573+ CL_STRUCTURE_TYPE_MUTABLE_DISPATCH_CONFIG_KHR};
574+ const void *configs[1 ] = {&dispatch_config};
575+ CL_RETURN_ON_FAILURE (clUpdateMutableCommandsKHR (
576+ hCommandBuffer->CLCommandBuffer , num_configs, config_types, configs));
577577
578578 return UR_RESULT_SUCCESS;
579579}
0 commit comments