dynlink_cuda.h 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483
  1. /*
  2. * This copyright notice applies to this header file only:
  3. *
  4. * Copyright (c) 2016
  5. *
  6. * Permission is hereby granted, free of charge, to any person
  7. * obtaining a copy of this software and associated documentation
  8. * files (the "Software"), to deal in the Software without
  9. * restriction, including without limitation the rights to use,
  10. * copy, modify, merge, publish, distribute, sublicense, and/or sell
  11. * copies of the software, and to permit persons to whom the
  12. * software is furnished to do so, subject to the following
  13. * conditions:
  14. *
  15. * The above copyright notice and this permission notice shall be
  16. * included in all copies or substantial portions of the Software.
  17. *
  18. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  19. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
  20. * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  21. * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  22. * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
  23. * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  24. * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  25. * OTHER DEALINGS IN THE SOFTWARE.
  26. */
  27. #if !defined(FFNV_DYNLINK_CUDA_H) && !defined(CUDA_VERSION)
  28. #define FFNV_DYNLINK_CUDA_H
  29. #include <stddef.h>
  30. #include <stdint.h>
  31. #define CUDA_VERSION 7050
  32. #if defined(_WIN32) || defined(__CYGWIN__)
  33. #define CUDAAPI __stdcall
  34. #else
  35. #define CUDAAPI
  36. #endif
  37. #define CU_CTX_SCHED_BLOCKING_SYNC 4
  38. typedef int CUdevice;
  39. #if defined(__x86_64) || defined(AMD64) || defined(_M_AMD64) || defined(__LP64__) || defined(__aarch64__)
  40. typedef unsigned long long CUdeviceptr;
  41. #else
  42. typedef unsigned int CUdeviceptr;
  43. #endif
  44. typedef unsigned long long CUtexObject;
  45. typedef struct CUarray_st *CUarray;
  46. typedef struct CUctx_st *CUcontext;
  47. typedef struct CUstream_st *CUstream;
  48. typedef struct CUevent_st *CUevent;
  49. typedef struct CUfunc_st *CUfunction;
  50. typedef struct CUmod_st *CUmodule;
  51. typedef struct CUmipmappedArray_st *CUmipmappedArray;
  52. typedef struct CUgraphicsResource_st *CUgraphicsResource;
  53. typedef struct CUextMemory_st *CUexternalMemory;
  54. typedef struct CUextSemaphore_st *CUexternalSemaphore;
  55. typedef struct CUeglStreamConnection_st *CUeglStreamConnection;
  56. typedef struct CUlinkState_st *CUlinkState;
  57. typedef enum cudaError_enum {
  58. CUDA_SUCCESS = 0,
  59. CUDA_ERROR_NOT_READY = 600,
  60. CUDA_ERROR_LAUNCH_TIMEOUT = 702,
  61. CUDA_ERROR_UNKNOWN = 999
  62. } CUresult;
  63. /**
  64. * Device properties (subset)
  65. */
  66. typedef enum CUdevice_attribute_enum {
  67. CU_DEVICE_ATTRIBUTE_CLOCK_RATE = 13,
  68. CU_DEVICE_ATTRIBUTE_TEXTURE_ALIGNMENT = 14,
  69. CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT = 16,
  70. CU_DEVICE_ATTRIBUTE_INTEGRATED = 18,
  71. CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY = 19,
  72. CU_DEVICE_ATTRIBUTE_COMPUTE_MODE = 20,
  73. CU_DEVICE_ATTRIBUTE_CONCURRENT_KERNELS = 31,
  74. CU_DEVICE_ATTRIBUTE_PCI_BUS_ID = 33,
  75. CU_DEVICE_ATTRIBUTE_PCI_DEVICE_ID = 34,
  76. CU_DEVICE_ATTRIBUTE_TCC_DRIVER = 35,
  77. CU_DEVICE_ATTRIBUTE_MEMORY_CLOCK_RATE = 36,
  78. CU_DEVICE_ATTRIBUTE_GLOBAL_MEMORY_BUS_WIDTH = 37,
  79. CU_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT = 40,
  80. CU_DEVICE_ATTRIBUTE_UNIFIED_ADDRESSING = 41,
  81. CU_DEVICE_ATTRIBUTE_PCI_DOMAIN_ID = 50,
  82. CU_DEVICE_ATTRIBUTE_TEXTURE_PITCH_ALIGNMENT = 51,
  83. CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR = 75,
  84. CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR = 76,
  85. CU_DEVICE_ATTRIBUTE_MANAGED_MEMORY = 83,
  86. CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD = 84,
  87. CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD_GROUP_ID = 85,
  88. } CUdevice_attribute;
  89. typedef enum CUarray_format_enum {
  90. CU_AD_FORMAT_UNSIGNED_INT8 = 0x01,
  91. CU_AD_FORMAT_UNSIGNED_INT16 = 0x02,
  92. CU_AD_FORMAT_UNSIGNED_INT32 = 0x03,
  93. CU_AD_FORMAT_SIGNED_INT8 = 0x08,
  94. CU_AD_FORMAT_SIGNED_INT16 = 0x09,
  95. CU_AD_FORMAT_SIGNED_INT32 = 0x0a,
  96. CU_AD_FORMAT_HALF = 0x10,
  97. CU_AD_FORMAT_FLOAT = 0x20
  98. } CUarray_format;
  99. typedef enum CUmemorytype_enum {
  100. CU_MEMORYTYPE_HOST = 1,
  101. CU_MEMORYTYPE_DEVICE = 2,
  102. CU_MEMORYTYPE_ARRAY = 3
  103. } CUmemorytype;
  104. typedef enum CUlimit_enum {
  105. CU_LIMIT_STACK_SIZE = 0,
  106. CU_LIMIT_PRINTF_FIFO_SIZE = 1,
  107. CU_LIMIT_MALLOC_HEAP_SIZE = 2,
  108. CU_LIMIT_DEV_RUNTIME_SYNC_DEPTH = 3,
  109. CU_LIMIT_DEV_RUNTIME_PENDING_LAUNCH_COUNT = 4
  110. } CUlimit;
  111. typedef enum CUresourcetype_enum {
  112. CU_RESOURCE_TYPE_ARRAY = 0x00,
  113. CU_RESOURCE_TYPE_MIPMAPPED_ARRAY = 0x01,
  114. CU_RESOURCE_TYPE_LINEAR = 0x02,
  115. CU_RESOURCE_TYPE_PITCH2D = 0x03
  116. } CUresourcetype;
  117. typedef enum CUaddress_mode_enum {
  118. CU_TR_ADDRESS_MODE_WRAP = 0,
  119. CU_TR_ADDRESS_MODE_CLAMP = 1,
  120. CU_TR_ADDRESS_MODE_MIRROR = 2,
  121. CU_TR_ADDRESS_MODE_BORDER = 3
  122. } CUaddress_mode;
  123. typedef enum CUfilter_mode_enum {
  124. CU_TR_FILTER_MODE_POINT = 0,
  125. CU_TR_FILTER_MODE_LINEAR = 1
  126. } CUfilter_mode;
  127. typedef enum CUgraphicsRegisterFlags_enum {
  128. CU_GRAPHICS_REGISTER_FLAGS_NONE = 0,
  129. CU_GRAPHICS_REGISTER_FLAGS_READ_ONLY = 1,
  130. CU_GRAPHICS_REGISTER_FLAGS_WRITE_DISCARD = 2,
  131. CU_GRAPHICS_REGISTER_FLAGS_SURFACE_LDST = 4,
  132. CU_GRAPHICS_REGISTER_FLAGS_TEXTURE_GATHER = 8
  133. } CUgraphicsRegisterFlags;
  134. typedef enum CUexternalMemoryHandleType_enum {
  135. CU_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD = 1,
  136. CU_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32 = 2,
  137. CU_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT = 3,
  138. CU_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP = 4,
  139. CU_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE = 5,
  140. } CUexternalMemoryHandleType;
  141. typedef enum CUexternalSemaphoreHandleType_enum {
  142. CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD = 1,
  143. CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32 = 2,
  144. CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT = 3,
  145. CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE = 4,
  146. CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_TIMELINE_SEMAPHORE_FD = 9,
  147. CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_TIMELINE_SEMAPHORE_WIN32 = 10,
  148. } CUexternalSemaphoreHandleType;
  149. typedef enum CUjit_option_enum
  150. {
  151. CU_JIT_MAX_REGISTERS = 0,
  152. CU_JIT_THREADS_PER_BLOCK = 1,
  153. CU_JIT_WALL_TIME = 2,
  154. CU_JIT_INFO_LOG_BUFFER = 3,
  155. CU_JIT_INFO_LOG_BUFFER_SIZE_BYTES = 4,
  156. CU_JIT_ERROR_LOG_BUFFER = 5,
  157. CU_JIT_ERROR_LOG_BUFFER_SIZE_BYTES = 6,
  158. CU_JIT_OPTIMIZATION_LEVEL = 7,
  159. CU_JIT_TARGET_FROM_CUCONTEXT = 8,
  160. CU_JIT_TARGET = 9,
  161. CU_JIT_FALLBACK_STRATEGY = 10,
  162. CU_JIT_GENERATE_DEBUG_INFO = 11,
  163. CU_JIT_LOG_VERBOSE = 12,
  164. CU_JIT_GENERATE_LINE_INFO = 13,
  165. CU_JIT_CACHE_MODE = 14,
  166. CU_JIT_NEW_SM3X_OPT = 15,
  167. CU_JIT_FAST_COMPILE = 16,
  168. CU_JIT_GLOBAL_SYMBOL_NAMES = 17,
  169. CU_JIT_GLOBAL_SYMBOL_ADDRESSES = 18,
  170. CU_JIT_GLOBAL_SYMBOL_COUNT = 19,
  171. CU_JIT_NUM_OPTIONS
  172. } CUjit_option;
  173. typedef enum CUjitInputType_enum
  174. {
  175. CU_JIT_INPUT_CUBIN = 0,
  176. CU_JIT_INPUT_PTX = 1,
  177. CU_JIT_INPUT_FATBINARY = 2,
  178. CU_JIT_INPUT_OBJECT = 3,
  179. CU_JIT_INPUT_LIBRARY = 4,
  180. CU_JIT_NUM_INPUT_TYPES
  181. } CUjitInputType;
  182. typedef enum CUeglFrameType
  183. {
  184. CU_EGL_FRAME_TYPE_ARRAY = 0,
  185. CU_EGL_FRAME_TYPE_PITCH = 1,
  186. } CUeglFrameType;
  187. typedef enum CUeglColorFormat
  188. {
  189. CU_EGL_COLOR_FORMAT_YUV420_PLANAR = 0x00,
  190. CU_EGL_COLOR_FORMAT_YUV420_SEMIPLANAR = 0x01,
  191. CU_EGL_COLOR_FORMAT_YVU420_SEMIPLANAR = 0x15,
  192. CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR = 0x17,
  193. CU_EGL_COLOR_FORMAT_Y12V12U12_420_SEMIPLANAR = 0x19,
  194. } CUeglColorFormat;
  195. #ifndef CU_UUID_HAS_BEEN_DEFINED
  196. #define CU_UUID_HAS_BEEN_DEFINED
  197. typedef struct CUuuid_st {
  198. char bytes[16];
  199. } CUuuid;
  200. #endif
  201. typedef struct CUDA_MEMCPY2D_st {
  202. size_t srcXInBytes;
  203. size_t srcY;
  204. CUmemorytype srcMemoryType;
  205. const void *srcHost;
  206. CUdeviceptr srcDevice;
  207. CUarray srcArray;
  208. size_t srcPitch;
  209. size_t dstXInBytes;
  210. size_t dstY;
  211. CUmemorytype dstMemoryType;
  212. void *dstHost;
  213. CUdeviceptr dstDevice;
  214. CUarray dstArray;
  215. size_t dstPitch;
  216. size_t WidthInBytes;
  217. size_t Height;
  218. } CUDA_MEMCPY2D;
  219. typedef struct CUDA_RESOURCE_DESC_st {
  220. CUresourcetype resType;
  221. union {
  222. struct {
  223. CUarray hArray;
  224. } array;
  225. struct {
  226. CUmipmappedArray hMipmappedArray;
  227. } mipmap;
  228. struct {
  229. CUdeviceptr devPtr;
  230. CUarray_format format;
  231. unsigned int numChannels;
  232. size_t sizeInBytes;
  233. } linear;
  234. struct {
  235. CUdeviceptr devPtr;
  236. CUarray_format format;
  237. unsigned int numChannels;
  238. size_t width;
  239. size_t height;
  240. size_t pitchInBytes;
  241. } pitch2D;
  242. struct {
  243. int reserved[32];
  244. } reserved;
  245. } res;
  246. unsigned int flags;
  247. } CUDA_RESOURCE_DESC;
  248. typedef struct CUDA_TEXTURE_DESC_st {
  249. CUaddress_mode addressMode[3];
  250. CUfilter_mode filterMode;
  251. unsigned int flags;
  252. unsigned int maxAnisotropy;
  253. CUfilter_mode mipmapFilterMode;
  254. float mipmapLevelBias;
  255. float minMipmapLevelClamp;
  256. float maxMipmapLevelClamp;
  257. float borderColor[4];
  258. int reserved[12];
  259. } CUDA_TEXTURE_DESC;
  260. /* Unused type */
  261. typedef struct CUDA_RESOURCE_VIEW_DESC_st CUDA_RESOURCE_VIEW_DESC;
  262. typedef unsigned int GLenum;
  263. typedef unsigned int GLuint;
  264. /*
  265. * Prefix type name to avoid collisions. Clients using these types
  266. * will include the real headers with real definitions.
  267. */
  268. typedef int32_t ffnv_EGLint;
  269. typedef void *ffnv_EGLStreamKHR;
  270. typedef enum CUGLDeviceList_enum {
  271. CU_GL_DEVICE_LIST_ALL = 1,
  272. CU_GL_DEVICE_LIST_CURRENT_FRAME = 2,
  273. CU_GL_DEVICE_LIST_NEXT_FRAME = 3,
  274. } CUGLDeviceList;
  275. typedef struct CUDA_EXTERNAL_MEMORY_HANDLE_DESC_st {
  276. CUexternalMemoryHandleType type;
  277. union {
  278. int fd;
  279. struct {
  280. void *handle;
  281. const void *name;
  282. } win32;
  283. } handle;
  284. unsigned long long size;
  285. unsigned int flags;
  286. unsigned int reserved[16];
  287. } CUDA_EXTERNAL_MEMORY_HANDLE_DESC;
  288. typedef struct CUDA_EXTERNAL_MEMORY_BUFFER_DESC_st {
  289. unsigned long long offset;
  290. unsigned long long size;
  291. unsigned int flags;
  292. unsigned int reserved[16];
  293. } CUDA_EXTERNAL_MEMORY_BUFFER_DESC;
  294. typedef struct CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC_st {
  295. CUexternalSemaphoreHandleType type;
  296. union {
  297. int fd;
  298. struct {
  299. void *handle;
  300. const void *name;
  301. } win32;
  302. } handle;
  303. unsigned int flags;
  304. unsigned int reserved[16];
  305. } CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC;
  306. typedef struct CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS_st {
  307. struct {
  308. struct {
  309. unsigned long long value;
  310. } fence;
  311. unsigned int reserved[16];
  312. } params;
  313. unsigned int flags;
  314. unsigned int reserved[16];
  315. } CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS;
  316. typedef CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS;
  317. typedef struct CUDA_ARRAY3D_DESCRIPTOR_st {
  318. size_t Width;
  319. size_t Height;
  320. size_t Depth;
  321. CUarray_format Format;
  322. unsigned int NumChannels;
  323. unsigned int Flags;
  324. } CUDA_ARRAY3D_DESCRIPTOR;
  325. typedef struct CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC_st {
  326. unsigned long long offset;
  327. CUDA_ARRAY3D_DESCRIPTOR arrayDesc;
  328. unsigned int numLevels;
  329. unsigned int reserved[16];
  330. } CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC;
  331. #define CU_EGL_FRAME_MAX_PLANES 3
  332. typedef struct CUeglFrame_st {
  333. union {
  334. CUarray pArray[CU_EGL_FRAME_MAX_PLANES];
  335. void* pPitch[CU_EGL_FRAME_MAX_PLANES];
  336. } frame;
  337. unsigned int width;
  338. unsigned int height;
  339. unsigned int depth;
  340. unsigned int pitch;
  341. unsigned int planeCount;
  342. unsigned int numChannels;
  343. CUeglFrameType frameType;
  344. CUeglColorFormat eglColorFormat;
  345. CUarray_format cuFormat;
  346. } CUeglFrame;
  347. #define CU_STREAM_NON_BLOCKING 1
  348. #define CU_EVENT_BLOCKING_SYNC 1
  349. #define CU_EVENT_DISABLE_TIMING 2
  350. #define CU_TRSF_READ_AS_INTEGER 1
  351. typedef void CUDAAPI CUstreamCallback(CUstream hStream, CUresult status, void *userdata);
  352. typedef CUresult CUDAAPI tcuInit(unsigned int Flags);
  353. typedef CUresult CUDAAPI tcuDeviceGetCount(int *count);
  354. typedef CUresult CUDAAPI tcuDeviceGet(CUdevice *device, int ordinal);
  355. typedef CUresult CUDAAPI tcuDeviceGetAttribute(int *pi, CUdevice_attribute attrib, CUdevice dev);
  356. typedef CUresult CUDAAPI tcuDeviceGetName(char *name, int len, CUdevice dev);
  357. typedef CUresult CUDAAPI tcuDeviceGetUuid(CUuuid *uuid, CUdevice dev);
  358. typedef CUresult CUDAAPI tcuDeviceComputeCapability(int *major, int *minor, CUdevice dev);
  359. typedef CUresult CUDAAPI tcuCtxCreate_v2(CUcontext *pctx, unsigned int flags, CUdevice dev);
  360. typedef CUresult CUDAAPI tcuCtxSetLimit(CUlimit limit, size_t value);
  361. typedef CUresult CUDAAPI tcuCtxPushCurrent_v2(CUcontext pctx);
  362. typedef CUresult CUDAAPI tcuCtxPopCurrent_v2(CUcontext *pctx);
  363. typedef CUresult CUDAAPI tcuCtxDestroy_v2(CUcontext ctx);
  364. typedef CUresult CUDAAPI tcuMemAlloc_v2(CUdeviceptr *dptr, size_t bytesize);
  365. typedef CUresult CUDAAPI tcuMemAllocPitch_v2(CUdeviceptr *dptr, size_t *pPitch, size_t WidthInBytes, size_t Height, unsigned int ElementSizeBytes);
  366. typedef CUresult CUDAAPI tcuMemAllocManaged(CUdeviceptr *dptr, size_t bytesize, unsigned int flags);
  367. typedef CUresult CUDAAPI tcuMemsetD8Async(CUdeviceptr dstDevice, unsigned char uc, size_t N, CUstream hStream);
  368. typedef CUresult CUDAAPI tcuMemFree_v2(CUdeviceptr dptr);
  369. typedef CUresult CUDAAPI tcuMemcpy(CUdeviceptr dst, CUdeviceptr src, size_t bytesize);
  370. typedef CUresult CUDAAPI tcuMemcpyAsync(CUdeviceptr dst, CUdeviceptr src, size_t bytesize, CUstream hStream);
  371. typedef CUresult CUDAAPI tcuMemcpy2D_v2(const CUDA_MEMCPY2D *pcopy);
  372. typedef CUresult CUDAAPI tcuMemcpy2DAsync_v2(const CUDA_MEMCPY2D *pcopy, CUstream hStream);
  373. typedef CUresult CUDAAPI tcuMemcpyHtoD_v2(CUdeviceptr dstDevice, const void *srcHost, size_t ByteCount);
  374. typedef CUresult CUDAAPI tcuMemcpyHtoDAsync_v2(CUdeviceptr dstDevice, const void *srcHost, size_t ByteCount, CUstream hStream);
  375. typedef CUresult CUDAAPI tcuMemcpyDtoH_v2(void *dstHost, CUdeviceptr srcDevice, size_t ByteCount);
  376. typedef CUresult CUDAAPI tcuMemcpyDtoHAsync_v2(void *dstHost, CUdeviceptr srcDevice, size_t ByteCount, CUstream hStream);
  377. typedef CUresult CUDAAPI tcuMemcpyDtoD_v2(CUdeviceptr dstDevice, CUdeviceptr srcDevice, size_t ByteCount);
  378. typedef CUresult CUDAAPI tcuMemcpyDtoDAsync_v2(CUdeviceptr dstDevice, CUdeviceptr srcDevice, size_t ByteCount, CUstream hStream);
  379. typedef CUresult CUDAAPI tcuGetErrorName(CUresult error, const char** pstr);
  380. typedef CUresult CUDAAPI tcuGetErrorString(CUresult error, const char** pstr);
  381. typedef CUresult CUDAAPI tcuCtxGetDevice(CUdevice *device);
  382. typedef CUresult CUDAAPI tcuDevicePrimaryCtxRetain(CUcontext *pctx, CUdevice dev);
  383. typedef CUresult CUDAAPI tcuDevicePrimaryCtxRelease(CUdevice dev);
  384. typedef CUresult CUDAAPI tcuDevicePrimaryCtxSetFlags(CUdevice dev, unsigned int flags);
  385. typedef CUresult CUDAAPI tcuDevicePrimaryCtxGetState(CUdevice dev, unsigned int *flags, int *active);
  386. typedef CUresult CUDAAPI tcuDevicePrimaryCtxReset(CUdevice dev);
  387. typedef CUresult CUDAAPI tcuStreamCreate(CUstream *phStream, unsigned int flags);
  388. typedef CUresult CUDAAPI tcuStreamQuery(CUstream hStream);
  389. typedef CUresult CUDAAPI tcuStreamSynchronize(CUstream hStream);
  390. typedef CUresult CUDAAPI tcuStreamDestroy_v2(CUstream hStream);
  391. typedef CUresult CUDAAPI tcuStreamAddCallback(CUstream hStream, CUstreamCallback *callback, void *userdata, unsigned int flags);
  392. typedef CUresult CUDAAPI tcuEventCreate(CUevent *phEvent, unsigned int flags);
  393. typedef CUresult CUDAAPI tcuEventDestroy_v2(CUevent hEvent);
  394. typedef CUresult CUDAAPI tcuEventSynchronize(CUevent hEvent);
  395. typedef CUresult CUDAAPI tcuEventQuery(CUevent hEvent);
  396. typedef CUresult CUDAAPI tcuEventRecord(CUevent hEvent, CUstream hStream);
  397. typedef CUresult CUDAAPI tcuLaunchKernel(CUfunction f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, CUstream hStream, void** kernelParams, void** extra);
  398. typedef CUresult CUDAAPI tcuLinkCreate(unsigned int numOptions, CUjit_option* options, void** optionValues, CUlinkState* stateOut);
  399. typedef CUresult CUDAAPI tcuLinkAddData(CUlinkState state, CUjitInputType type, void* data, size_t size, const char* name, unsigned int numOptions, CUjit_option* options, void** optionValues);
  400. typedef CUresult CUDAAPI tcuLinkComplete(CUlinkState state, void** cubinOut, size_t* sizeOut);
  401. typedef CUresult CUDAAPI tcuLinkDestroy(CUlinkState state);
  402. typedef CUresult CUDAAPI tcuModuleLoadData(CUmodule* module, const void* image);
  403. typedef CUresult CUDAAPI tcuModuleUnload(CUmodule hmod);
  404. typedef CUresult CUDAAPI tcuModuleGetFunction(CUfunction* hfunc, CUmodule hmod, const char* name);
  405. typedef CUresult CUDAAPI tcuModuleGetGlobal(CUdeviceptr *dptr, size_t *bytes, CUmodule hmod, const char* name);
  406. typedef CUresult CUDAAPI tcuTexObjectCreate(CUtexObject* pTexObject, const CUDA_RESOURCE_DESC* pResDesc, const CUDA_TEXTURE_DESC* pTexDesc, const CUDA_RESOURCE_VIEW_DESC* pResViewDesc);
  407. typedef CUresult CUDAAPI tcuTexObjectDestroy(CUtexObject texObject);
  408. typedef CUresult CUDAAPI tcuGLGetDevices_v2(unsigned int* pCudaDeviceCount, CUdevice* pCudaDevices, unsigned int cudaDeviceCount, CUGLDeviceList deviceList);
  409. typedef CUresult CUDAAPI tcuGraphicsGLRegisterImage(CUgraphicsResource* pCudaResource, GLuint image, GLenum target, unsigned int Flags);
  410. typedef CUresult CUDAAPI tcuGraphicsUnregisterResource(CUgraphicsResource resource);
  411. typedef CUresult CUDAAPI tcuGraphicsMapResources(unsigned int count, CUgraphicsResource* resources, CUstream hStream);
  412. typedef CUresult CUDAAPI tcuGraphicsUnmapResources(unsigned int count, CUgraphicsResource* resources, CUstream hStream);
  413. typedef CUresult CUDAAPI tcuGraphicsSubResourceGetMappedArray(CUarray* pArray, CUgraphicsResource resource, unsigned int arrayIndex, unsigned int mipLevel);
  414. typedef CUresult CUDAAPI tcuImportExternalMemory(CUexternalMemory* extMem_out, const CUDA_EXTERNAL_MEMORY_HANDLE_DESC* memHandleDesc);
  415. typedef CUresult CUDAAPI tcuDestroyExternalMemory(CUexternalMemory extMem);
  416. typedef CUresult CUDAAPI tcuExternalMemoryGetMappedBuffer(CUdeviceptr* devPtr, CUexternalMemory extMem, const CUDA_EXTERNAL_MEMORY_BUFFER_DESC* bufferDesc);
  417. typedef CUresult CUDAAPI tcuExternalMemoryGetMappedMipmappedArray(CUmipmappedArray* mipmap, CUexternalMemory extMem, const CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC* mipmapDesc);
  418. typedef CUresult CUDAAPI tcuMipmappedArrayGetLevel(CUarray* pLevelArray, CUmipmappedArray hMipmappedArray, unsigned int level);
  419. typedef CUresult CUDAAPI tcuMipmappedArrayDestroy(CUmipmappedArray hMipmappedArray);
  420. typedef CUresult CUDAAPI tcuImportExternalSemaphore(CUexternalSemaphore* extSem_out, const CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC* semHandleDesc);
  421. typedef CUresult CUDAAPI tcuDestroyExternalSemaphore(CUexternalSemaphore extSem);
  422. typedef CUresult CUDAAPI tcuSignalExternalSemaphoresAsync(const CUexternalSemaphore* extSemArray, const CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS* paramsArray, unsigned int numExtSems, CUstream stream);
  423. typedef CUresult CUDAAPI tcuWaitExternalSemaphoresAsync(const CUexternalSemaphore* extSemArray, const CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS* paramsArray, unsigned int numExtSems, CUstream stream);
  424. typedef CUresult CUDAAPI tcuArray3DCreate(CUarray *pHandle, const CUDA_ARRAY3D_DESCRIPTOR* pAllocateArray);
  425. typedef CUresult CUDAAPI tcuArrayDestroy(CUarray hArray);
  426. typedef CUresult CUDAAPI tcuEGLStreamProducerConnect (CUeglStreamConnection* conn, ffnv_EGLStreamKHR stream, ffnv_EGLint width, ffnv_EGLint height);
  427. typedef CUresult CUDAAPI tcuEGLStreamProducerDisconnect (CUeglStreamConnection* conn);
  428. typedef CUresult CUDAAPI tcuEGLStreamConsumerDisconnect (CUeglStreamConnection* conn);
  429. typedef CUresult CUDAAPI tcuEGLStreamProducerPresentFrame (CUeglStreamConnection* conn, CUeglFrame eglframe, CUstream* pStream);
  430. typedef CUresult CUDAAPI tcuEGLStreamProducerReturnFrame (CUeglStreamConnection* conn, CUeglFrame* eglframe, CUstream* pStream);
  431. #endif