Correctly return number of IPC handles in zexMemGetIpcHandles

Signed-off-by: Jaime Arteaga <jaime.a.arteaga.molina@intel.com>
This commit is contained in:
Jaime Arteaga
2022-07-07 07:37:56 +00:00
committed by Compute-Runtime-Automation
parent e1ba6d825a
commit 235e167565
2 changed files with 35 additions and 2 deletions

View File

@@ -436,12 +436,17 @@ ze_result_t ContextImp::getIpcMemHandles(const void *ptr,
if (allocData) {
auto alloc = allocData->gpuAllocations.getDefaultGraphicsAllocation();
uint32_t numHandles = alloc->getNumHandles();
if (pIpcHandles == nullptr) {
UNRECOVERABLE_IF(numIpcHandles == nullptr);
if (*numIpcHandles == 0 || *numIpcHandles > numHandles) {
*numIpcHandles = numHandles;
}
if (pIpcHandles == nullptr) {
return ZE_RESULT_SUCCESS;
}
for (uint32_t i = 0; i < numHandles; i++) {
for (uint32_t i = 0; i < *numIpcHandles; i++) {
int handle = static_cast<int>(allocData->gpuAllocations.getDefaultGraphicsAllocation()->peekInternalHandle(this->driverHandle->getMemoryManager(), i));
memcpy_s(reinterpret_cast<void *>(pIpcHandles[i].data),
sizeof(ze_ipc_mem_handle_t),