@@ -872,17 +872,20 @@ ur_result_t ur_queue_immediate_in_order_t::enqueueUSMMemcpy2D(
872872 bool blocking, void *pDst, size_t dstPitch, const void *pSrc,
873873 size_t srcPitch, size_t width, size_t height, uint32_t numEventsInWaitList,
874874 const ur_event_handle_t *phEventWaitList, ur_event_handle_t *phEvent) {
875- std::ignore = blocking;
876- std::ignore = pDst;
877- std::ignore = dstPitch;
878- std::ignore = pSrc;
879- std::ignore = srcPitch;
880- std::ignore = width;
881- std::ignore = height;
882- std::ignore = numEventsInWaitList;
883- std::ignore = phEventWaitList;
884- std::ignore = phEvent;
885- return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
875+ TRACK_SCOPE_LATENCY (" ur_queue_immediate_in_order_t::enqueueUSMMemcpy2D" );
876+
877+ ur_rect_offset_t zeroOffset{0 , 0 , 0 };
878+ ur_rect_region_t region{width, height, 0 };
879+
880+ std::scoped_lock<ur_shared_mutex> lock (this ->Mutex );
881+
882+ ur_usm_handle_t_ srcHandle (hContext, 0 , pSrc);
883+ ur_usm_handle_t_ dstHandle (hContext, 0 , pDst);
884+
885+ return enqueueRegionCopyUnlocked (&srcHandle, &dstHandle, blocking, zeroOffset,
886+ zeroOffset, region, srcPitch, 0 , dstPitch, 0 ,
887+ numEventsInWaitList, phEventWaitList,
888+ phEvent, UR_COMMAND_MEM_BUFFER_COPY_RECT);
886889}
887890
888891static void *getGlobalPointerFromModule (ze_module_handle_t hModule,
0 commit comments