nvenc: Give more details about errors
[platform/upstream/gstreamer.git] / subprojects / gst-plugins-bad / gst-libs / gst / cuda / cuda-gst.h
1 #pragma once
2
3 #include "cuda-prelude.h"
4 #include <nvrtc.h>
5 #include <cuda.h>
6 #include <cudaGL.h>
7
8 G_BEGIN_DECLS
9
10 /* cuda.h */
11 GST_CUDA_API
12 CUresult CUDAAPI CuInit             (unsigned int Flags);
13
14 GST_CUDA_API
15 CUresult CUDAAPI CuGetErrorName     (CUresult error,
16                                      const char **pStr);
17
18 GST_CUDA_API
19 CUresult CUDAAPI CuGetErrorString   (CUresult error,
20                                      const char **pStr);
21
22 GST_CUDA_API
23 CUresult CUDAAPI CuCtxCreate        (CUcontext * pctx,
24                                      unsigned int flags,
25                                      CUdevice dev);
26
27 GST_CUDA_API
28 CUresult CUDAAPI CuCtxDestroy       (CUcontext ctx);
29
30 GST_CUDA_API
31 CUresult CUDAAPI CuCtxPopCurrent    (CUcontext * pctx);
32
33 GST_CUDA_API
34 CUresult CUDAAPI CuCtxPushCurrent   (CUcontext ctx);
35
36 GST_CUDA_API
37 CUresult CUDAAPI CuCtxEnablePeerAccess (CUcontext peerContext,
38                                              unsigned int Flags);
39
40 GST_CUDA_API
41 CUresult CUDAAPI CuCtxDisablePeerAccess (CUcontext peerContext);
42
43 GST_CUDA_API
44 CUresult CUDAAPI CuGraphicsMapResources     (unsigned int count,
45                                              CUgraphicsResource * resources,
46                                              CUstream hStream);
47
48 GST_CUDA_API
49 CUresult CUDAAPI CuGraphicsUnmapResources   (unsigned int count,
50                                              CUgraphicsResource * resources,
51                                              CUstream hStream);
52
53 GST_CUDA_API
54 CUresult CUDAAPI CuGraphicsSubResourceGetMappedArray    (CUarray * pArray,
55                                                          CUgraphicsResource resource,
56                                                          unsigned int arrayIndex,
57                                                          unsigned int mipLevel);
58
59 GST_CUDA_API
60 CUresult CUDAAPI CuGraphicsResourceGetMappedPointer     (CUdeviceptr * pDevPtr,
61                                                          size_t * pSize,
62                                                          CUgraphicsResource resource);
63
64 GST_CUDA_API
65 CUresult CUDAAPI CuGraphicsUnregisterResource           (CUgraphicsResource resource);
66
67 GST_CUDA_API
68 CUresult CUDAAPI CuMemAlloc         (CUdeviceptr * dptr,
69                                      unsigned int bytesize);
70
71 GST_CUDA_API
72 CUresult CUDAAPI CuMemAllocPitch    (CUdeviceptr * dptr,
73                                      size_t * pPitch,
74                                      size_t WidthInBytes,
75                                      size_t Height,
76                                      unsigned int ElementSizeBytes);
77
78 GST_CUDA_API
79 CUresult CUDAAPI CuMemAllocHost     (void **pp,
80                                      unsigned int bytesize);
81
82 GST_CUDA_API
83 CUresult CUDAAPI CuMemcpy2D         (const CUDA_MEMCPY2D * pCopy);
84
85 GST_CUDA_API
86 CUresult CUDAAPI CuMemcpy2DAsync    (const CUDA_MEMCPY2D *pCopy, CUstream hStream);
87
88 GST_CUDA_API
89 CUresult CUDAAPI CuMemFree          (CUdeviceptr dptr);
90
91 GST_CUDA_API
92 CUresult CUDAAPI CuMemFreeHost      (void *p);
93
94 GST_CUDA_API
95 CUresult CUDAAPI CuStreamCreate     (CUstream *phStream,
96                                      unsigned int Flags);
97
98 GST_CUDA_API
99 CUresult CUDAAPI CuStreamDestroy    (CUstream hStream);
100
101 GST_CUDA_API
102 CUresult CUDAAPI CuStreamSynchronize (CUstream hStream);
103
104 GST_CUDA_API
105 CUresult CUDAAPI CuDeviceGet        (CUdevice * device,
106                                      int ordinal);
107
108 GST_CUDA_API
109 CUresult CUDAAPI CuDeviceGetCount   (int *count);
110
111 GST_CUDA_API
112 CUresult CUDAAPI CuDeviceGetName    (char *name,
113                                      int len,
114                                      CUdevice dev);
115
116 GST_CUDA_API
117 CUresult CUDAAPI CuDeviceGetAttribute (int *pi,
118                                        CUdevice_attribute attrib,
119                                        CUdevice dev);
120
121 GST_CUDA_API
122 CUresult CUDAAPI CuDeviceCanAccessPeer (int *canAccessPeer,
123                                         CUdevice dev,
124                                         CUdevice peerDev);
125
126 GST_CUDA_API
127 CUresult CUDAAPI CuDriverGetVersion   (int * driverVersion);
128
129 GST_CUDA_API
130 CUresult CUDAAPI CuModuleLoadData     (CUmodule* module,
131                                        const void *image);
132
133 GST_CUDA_API
134 CUresult CUDAAPI CuModuleUnload      (CUmodule module);
135
136 GST_CUDA_API
137 CUresult CUDAAPI CuModuleGetFunction  (CUfunction* hfunc,
138                                        CUmodule hmod,
139                                        const char* name);
140
141 GST_CUDA_API
142 CUresult CUDAAPI CuTexObjectCreate    (CUtexObject *pTexObject,
143                                        const CUDA_RESOURCE_DESC *pResDesc,
144                                        const CUDA_TEXTURE_DESC *pTexDesc,
145                                        const CUDA_RESOURCE_VIEW_DESC *pResViewDesc);
146
147 GST_CUDA_API
148 CUresult CUDAAPI CuTexObjectDestroy   (CUtexObject texObject);
149
150 GST_CUDA_API
151 CUresult CUDAAPI CuLaunchKernel       (CUfunction f,
152                                        unsigned int gridDimX,
153                                        unsigned int gridDimY,
154                                        unsigned int gridDimZ,
155                                        unsigned int blockDimX,
156                                        unsigned int blockDimY,
157                                        unsigned int blockDimZ,
158                                        unsigned int sharedMemBytes,
159                                        CUstream hStream,
160                                        void **kernelParams,
161                                        void **extra);
162
163 /* cudaGL.h */
164 GST_CUDA_API
165 CUresult CUDAAPI CuGraphicsGLRegisterImage  (CUgraphicsResource * pCudaResource,
166                                              unsigned int image,
167                                              unsigned int target,
168                                              unsigned int Flags);
169
170 GST_CUDA_API
171 CUresult CUDAAPI CuGraphicsGLRegisterBuffer (CUgraphicsResource * pCudaResource,
172                                              unsigned int buffer,
173                                              unsigned int Flags);
174
175 GST_CUDA_API
176 CUresult CUDAAPI CuGraphicsResourceSetMapFlags (CUgraphicsResource resource,
177                                                 unsigned int flags);
178
179 GST_CUDA_API
180 CUresult CUDAAPI CuGLGetDevices (unsigned int * pCudaDeviceCount,
181                                  CUdevice * pCudaDevices,
182                                  unsigned int cudaDeviceCount,
183                                  CUGLDeviceList deviceList);
184
185
186 #ifdef GST_CUDA_HAS_D3D
187 /* cudaD3D11.h */
188 GST_CUDA_API
189 CUresult CUDAAPI CuGraphicsD3D11RegisterResource(CUgraphicsResource * pCudaResource,
190                                                  gpointer pD3DResource,
191                                                  unsigned int Flags);
192
193 GST_CUDA_API
194 CUresult CUDAAPI CuD3D11GetDevice(CUdevice * device,
195                                   gpointer pAdapter);
196
197 GST_CUDA_API
198 CUresult CUDAAPI CuD3D11GetDevices(unsigned int * pCudaDeviceCount,
199                                    CUdevice* pCudaDevices,
200                                    unsigned int cudaDeviceCount,
201                                    gpointer pD3D11Device,
202                                    CUD3D11DeviceList deviceList);
203 #endif
204
205 /* nvrtc.h */
206 GST_CUDA_API
207 nvrtcResult  NvrtcCompileProgram (nvrtcProgram prog,
208                                  int numOptions,
209                                  const char** options);
210
211 GST_CUDA_API
212 nvrtcResult  NvrtcCreateProgram  (nvrtcProgram* prog,
213                                  const char* src,
214                                  const char* name,
215                                  int numHeaders,
216                                  const char** headers,
217                                  const char** includeNames);
218
219 GST_CUDA_API
220 nvrtcResult  NvrtcDestroyProgram (nvrtcProgram* prog);
221
222 GST_CUDA_API
223 nvrtcResult  NvrtcGetPTX         (nvrtcProgram prog,
224                                  char* ptx);
225
226 GST_CUDA_API
227 nvrtcResult  NvrtcGetPTXSize     (nvrtcProgram prog,
228                                  size_t* ptxSizeRet);
229
230 GST_CUDA_API
231 nvrtcResult  NvrtcGetProgramLog (nvrtcProgram prog,
232                                 char* log);
233
234 GST_CUDA_API
235 nvrtcResult  NvrtcGetProgramLogSize (nvrtcProgram prog,
236                                     size_t* logSizeRet);
237
238 G_END_DECLS