MCPcopy Create free account
hub / github.com/RenderKit/oidn / cudaImportExternalMemory

Function cudaImportExternalMemory

devices/cuda/curtn.cpp:1054–1111  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1052 }
1053
1054 cudaError_t CUDARTAPI cudaImportExternalMemory(cudaExternalMemory_t* extMem_out,
1055 const cudaExternalMemoryHandleDesc* memHandleDesc)
1056 {
1057 CUDA_EXTERNAL_MEMORY_HANDLE_DESC cuMemHandleDesc{};
1058
1059 switch (memHandleDesc->type)
1060 {
1061 case cudaExternalMemoryHandleTypeOpaqueFd:
1062 cuMemHandleDesc.type = CU_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD;
1063 break;
1064 case cudaExternalMemoryHandleTypeOpaqueWin32:
1065 cuMemHandleDesc.type = CU_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32;
1066 break;
1067 case cudaExternalMemoryHandleTypeOpaqueWin32Kmt:
1068 cuMemHandleDesc.type = CU_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT;
1069 break;
1070 case cudaExternalMemoryHandleTypeD3D12Heap:
1071 cuMemHandleDesc.type = CU_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP;
1072 break;
1073 case cudaExternalMemoryHandleTypeD3D12Resource:
1074 cuMemHandleDesc.type = CU_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE;
1075 break;
1076 case cudaExternalMemoryHandleTypeD3D11Resource:
1077 cuMemHandleDesc.type = CU_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_RESOURCE;
1078 break;
1079 case cudaExternalMemoryHandleTypeD3D11ResourceKmt:
1080 cuMemHandleDesc.type = CU_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_RESOURCE_KMT;
1081 break;
1082 case cudaExternalMemoryHandleTypeNvSciBuf:
1083 cuMemHandleDesc.type = CU_EXTERNAL_MEMORY_HANDLE_TYPE_NVSCIBUF;
1084 break;
1085 default:
1086 return Runtime::setError(cudaErrorInvalidValue);
1087 }
1088
1089 switch (memHandleDesc->type)
1090 {
1091 case cudaExternalMemoryHandleTypeOpaqueFd:
1092 cuMemHandleDesc.handle.fd = memHandleDesc->handle.fd;
1093 break;
1094 case cudaExternalMemoryHandleTypeNvSciBuf:
1095 cuMemHandleDesc.handle.nvSciBufObject = memHandleDesc->handle.nvSciBufObject;
1096 break;
1097 default:
1098 cuMemHandleDesc.handle.win32.handle = memHandleDesc->handle.win32.handle;
1099 cuMemHandleDesc.handle.win32.name = memHandleDesc->handle.win32.name;
1100 break;
1101 }
1102
1103 cuMemHandleDesc.size = memHandleDesc->size;
1104
1105 cuMemHandleDesc.flags = 0;
1106 if (memHandleDesc->flags & cudaExternalMemoryDedicated)
1107 cuMemHandleDesc.flags |= CUDA_EXTERNAL_MEMORY_DEDICATED;
1108
1109 CUresult result = cuImportExternalMemory((CUexternalMemory*)extMem_out, &cuMemHandleDesc);
1110 return Runtime::setError(result);
1111 }

Callers 1

initMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected