diff --git a/ur_level_zero_kernel.cpp b/ur_level_zero_kernel.cpp index 04bef4242b..367008fcc6 100644 --- a/ur_level_zero_kernel.cpp +++ b/ur_level_zero_kernel.cpp @@ -699,9 +699,25 @@ UR_APIEXPORT ur_result_t UR_APICALL urKernelSetArgMemObj( ur_mem_handle_t_ *UrMem = ur_cast(ArgValue); + ur_mem_handle_t_::access_mode_t UrAccessMode = ur_mem_handle_t_::read_write; + if (Properties) { + switch (Properties->memoryAccess) { + case UR_MEM_FLAG_READ_WRITE: + UrAccessMode = ur_mem_handle_t_::read_write; + break; + case UR_MEM_FLAG_WRITE_ONLY: + UrAccessMode = ur_mem_handle_t_::write_only; + break; + case UR_MEM_FLAG_READ_ONLY: + UrAccessMode = ur_mem_handle_t_::read_only; + break; + default: + return UR_RESULT_ERROR_INVALID_ARGUMENT; + } + } auto Arg = UrMem ? UrMem : nullptr; Kernel->PendingArguments.push_back( - {ArgIndex, sizeof(void *), Arg, ur_mem_handle_t_::read_write}); + {ArgIndex, sizeof(void *), Arg, UrAccessMode}); return UR_RESULT_SUCCESS; }