P4 to Git Change 1546224 by skudchad@skudchad_test2_win_opencl on 2018/04/25 12:24:40

SWDEV-145570 - [HIP] - Add hipMemcpyTo/FromArray APIs.

	ReviewBoardURL = http://ocltc.amd.com/reviews/r/14696/diff/

Affected files ...

... //depot/stg/opencl/drivers/opencl/api/hip/hip_memory.cpp#12 edit


[ROCm/hip commit: 18c7c164c6]
Este commit está contenido en:
foreman
2018-04-25 12:32:11 -04:00
padre 066a072226
commit 67731a083a
+78 -6
Ver fichero
@@ -555,22 +555,94 @@ hipError_t hipMemcpy2DToArray(hipArray* dst, size_t wOffset, size_t hOffset, con
return hipErrorUnknown;
}
hipError_t hipMemcpyToArray(hipArray* dst, size_t wOffset, size_t hOffset, const void* src,
hipError_t hipMemcpyToArray(hipArray* dstArray, size_t wOffset, size_t hOffset, const void* src,
size_t count, hipMemcpyKind kind) {
HIP_INIT_API(dst, wOffset, hOffset, src, count, kind);
HIP_INIT_API(dstArray, wOffset, hOffset, src, count, kind);
assert(0 && "Unimplemented");
amd::Device* device = g_context->devices()[0];
return hipErrorUnknown;
amd::HostQueue* queue = new amd::HostQueue(*g_context, *device, 0,
amd::CommandQueue::RealTimeDisabled,
amd::CommandQueue::Priority::Normal);
if (!queue) {
return hipErrorOutOfMemory;
}
amd::Command* command;
amd::Command::EventWaitList waitList;
amd::Memory* memory;
amd::Coord3D dstOffset(wOffset, hOffset, 0);
switch (kind) {
case hipMemcpyDeviceToHost:
assert(!"Invalid case");
/* fall thru */
case hipMemcpyHostToDevice:
memory = amd::SvmManager::FindSvmBuffer(dstArray->data);
command = new amd::WriteMemoryCommand(*queue, CL_COMMAND_WRITE_BUFFER, waitList,
*memory->asBuffer(), dstOffset, count, src);
break;
default:
assert(!"Shouldn't reach here");
break;
}
if (!command) {
return hipErrorOutOfMemory;
}
command->enqueue();
command->awaitCompletion();
command->release();
queue->release();
return hipSuccess;
}
hipError_t hipMemcpyFromArray(void* dst, hipArray_const_t srcArray, size_t wOffset, size_t hOffset,
size_t count, hipMemcpyKind kind) {
HIP_INIT_API(dst, srcArray, wOffset, hOffset, count, kind);
assert(0 && "Unimplemented");
amd::Device* device = g_context->devices()[0];
return hipErrorUnknown;
amd::HostQueue* queue = new amd::HostQueue(*g_context, *device, 0,
amd::CommandQueue::RealTimeDisabled,
amd::CommandQueue::Priority::Normal);
if (!queue) {
return hipErrorOutOfMemory;
}
amd::Command* command;
amd::Command::EventWaitList waitList;
amd::Memory* memory;
amd::Coord3D srcOffset(wOffset, hOffset, 0);
switch (kind) {
case hipMemcpyHostToDevice:
assert(!"Invalid case");
/* fall thru */
case hipMemcpyDeviceToHost:
memory = amd::SvmManager::FindSvmBuffer(srcArray->data);
command = new amd::ReadMemoryCommand(*queue, CL_COMMAND_READ_BUFFER, waitList,
*memory->asBuffer(), srcOffset, count, dst);
break;
default:
assert(!"Shouldn't reach here");
break;
}
if (!command) {
return hipErrorOutOfMemory;
}
command->enqueue();
command->awaitCompletion();
command->release();
queue->release();
return hipSuccess;
}
hipError_t hipMemcpyHtoA(hipArray* dstArray, size_t dstOffset, const void* srcHost, size_t count) {