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

Function cudaImportExternalSemaphore

devices/cuda/curtn.cpp:1135–1193  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1133 }
1134
1135 cudaError_t CUDARTAPI cudaImportExternalSemaphore(cudaExternalSemaphore_t* extSem_out,
1136 const cudaExternalSemaphoreHandleDesc* semHandleDesc)
1137 {
1138 CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC cuSemHandleDesc{};
1139
1140 switch (semHandleDesc->type)
1141 {
1142 case cudaExternalSemaphoreHandleTypeOpaqueFd:
1143 cuSemHandleDesc.type = CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD;
1144 break;
1145 case cudaExternalSemaphoreHandleTypeOpaqueWin32:
1146 cuSemHandleDesc.type = CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32;
1147 break;
1148 case cudaExternalSemaphoreHandleTypeOpaqueWin32Kmt:
1149 cuSemHandleDesc.type = CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT;
1150 break;
1151 case cudaExternalSemaphoreHandleTypeD3D12Fence:
1152 cuSemHandleDesc.type = CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE;
1153 break;
1154 case cudaExternalSemaphoreHandleTypeD3D11Fence:
1155 cuSemHandleDesc.type = CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE;
1156 break;
1157 case cudaExternalSemaphoreHandleTypeNvSciSync:
1158 cuSemHandleDesc.type = CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_NVSCISYNC;
1159 break;
1160 case cudaExternalSemaphoreHandleTypeKeyedMutex:
1161 cuSemHandleDesc.type = CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_KEYED_MUTEX;
1162 break;
1163 case cudaExternalSemaphoreHandleTypeKeyedMutexKmt:
1164 cuSemHandleDesc.type = CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_KEYED_MUTEX_KMT;
1165 break;
1166 case cudaExternalSemaphoreHandleTypeTimelineSemaphoreFd:
1167 cuSemHandleDesc.type = CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_TIMELINE_SEMAPHORE_FD;
1168 break;
1169 case cudaExternalSemaphoreHandleTypeTimelineSemaphoreWin32:
1170 cuSemHandleDesc.type = CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_TIMELINE_SEMAPHORE_WIN32;
1171 break;
1172 default:
1173 return Runtime::setError(cudaErrorInvalidValue);
1174 }
1175
1176 switch (semHandleDesc->type)
1177 {
1178 case cudaExternalSemaphoreHandleTypeOpaqueFd:
1179 case cudaExternalSemaphoreHandleTypeTimelineSemaphoreFd:
1180 cuSemHandleDesc.handle.fd = semHandleDesc->handle.fd;
1181 break;
1182 case cudaExternalSemaphoreHandleTypeNvSciSync:
1183 cuSemHandleDesc.handle.nvSciSyncObj = semHandleDesc->handle.nvSciSyncObj;
1184 break;
1185 default:
1186 cuSemHandleDesc.handle.win32.handle = semHandleDesc->handle.win32.handle;
1187 cuSemHandleDesc.handle.win32.name = semHandleDesc->handle.win32.name;
1188 break;
1189 }
1190
1191 CUresult result = cuImportExternalSemaphore((CUexternalSemaphore*)extSem_out, &cuSemHandleDesc);
1192 return Runtime::setError(result);

Callers 1

initMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected