Loading...
Searching...
No Matches
CudaFunctions.hpp File Reference

Shared dlopen'd CUDA driver-API table for score-plugin-gfx. More...

Detailed Description

Shared dlopen'd CUDA driver-API table for score-plugin-gfx.

Avoids the CUDAToolkit link-time dependency: we declare the subset of CUDA types/structs/enums we use, then load libcuda.so.1 (Linux) or nvcuda.dll (Windows) at runtime and resolve every entry point through dlsym/GetProcAddress.

Consumers in-tree:

  • Gfx/Graph/decoders/HWCUDA.hpp — zero-copy NVDEC → Vulkan path
  • Gfx/Graph/interop/ — vendor-neutral CUDA interop (CudaInterop, RdmaGpuBuffer, HostPinnedRing, CudaVmmAllocator, GpuCapabilities): AJA RDMA, planned Magewell + Rivermax

Each embeds a CudaFunctions and calls load() once. The function pointers are versioned symbol names (_v2 where appropriate) — see CUDA Driver API headers for the canonical naming.

Go to the source code of this file.

Classes

struct  CUmemLocation_st
 
struct  CUmemAllocationProp_st
 
struct  CUmemAccessDesc_st
 
struct  CUDA_EXTERNAL_MEMORY_HANDLE_DESC_st
 
struct  CUDA_EXTERNAL_MEMORY_BUFFER_DESC_st
 
struct  CUDA_ARRAY3D_DESCRIPTOR_st
 
struct  CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC_st
 
struct  CUDA_MEMCPY2D_st
 
struct  CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC_st
 
struct  CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS_st
 
struct  score::gfx::CudaFunctions
 Runtime-loaded CUDA driver-API table. Owns the libcuda handle. More...
 

Namespaces

namespace  score
 Base toolkit upon which the software is built.
 
namespace  score::gfx
 Graphics rendering pipeline for ossia score.
 

Macros

#define CU_GRAPHICS_REGISTER_FLAGS_NONE   0x00
 
#define CU_GRAPHICS_REGISTER_FLAGS_READ_ONLY   0x01
 
#define CU_GRAPHICS_REGISTER_FLAGS_WRITE_DISCARD   0x02
 
#define CU_GRAPHICS_REGISTER_FLAGS_SURFACE_LDST   0x04
 
#define CU_GRAPHICS_REGISTER_FLAGS_TEXTURE_GATHER   0x08
 
#define CU_CTX_SCHED_AUTO   0x00
 

Typedefs

typedef struct CUctx_st * CUcontext
 
typedef struct CUstream_st * CUstream
 
typedef struct CUmod_st * CUmodule
 
typedef struct CUfunc_st * CUfunction
 
typedef struct CUextMemory_st * CUexternalMemory
 
typedef struct CUextSemaphore_st * CUexternalSemaphore
 
typedef struct CUmipmappedArray_st * CUmipmappedArray
 
typedef struct CUarray_st * CUarray
 
typedef struct CUgraphicsResource_st * CUgraphicsResource
 
typedef int CUdevice
 
typedef unsigned int CUdeviceptr
 
typedef enum cudaError_enum CUresult
 
typedef enum CUdevice_attribute_enum CUdevice_attribute
 
typedef enum CUexternalMemoryHandleType_enum CUexternalMemoryHandleType
 
typedef enum CUexternalSemaphoreHandleType_enum CUexternalSemaphoreHandleType
 
typedef enum CUarray_format_enum CUarray_format
 
typedef enum CUmemorytype_enum CUmemorytype
 
typedef unsigned long long CUmemGenericAllocationHandle
 
typedef enum CUmemAllocationType_enum CUmemAllocationType
 
typedef enum CUmemAllocationHandleType_enum CUmemAllocationHandleType
 
typedef enum CUmemLocationType_enum CUmemLocationType
 
typedef enum CUmemAccess_flags_enum CUmemAccess_flags
 
typedef enum CUmemAllocationGranularity_flags_enum CUmemAllocationGranularity_flags
 
typedef enum CUmemRangeHandleType_enum CUmemRangeHandleType
 
typedef struct CUmemLocation_st CUmemLocation
 
typedef struct CUmemAllocationProp_st CUmemAllocationProp
 
typedef struct CUmemAccessDesc_st CUmemAccessDesc
 
typedef struct CUDA_EXTERNAL_MEMORY_HANDLE_DESC_st CUDA_EXTERNAL_MEMORY_HANDLE_DESC
 
typedef struct CUDA_EXTERNAL_MEMORY_BUFFER_DESC_st CUDA_EXTERNAL_MEMORY_BUFFER_DESC
 
typedef struct CUDA_ARRAY3D_DESCRIPTOR_st CUDA_ARRAY3D_DESCRIPTOR
 
typedef struct CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC_st CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC
 
typedef struct CUDA_MEMCPY2D_st CUDA_MEMCPY2D
 
typedef struct CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC_st CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC
 
typedef struct CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS_st CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS
 

Enumerations

enum  cudaError_enum {
  CUDA_SUCCESS = 0 , CUDA_ERROR_INVALID_VALUE = 1 , CUDA_ERROR_OUT_OF_MEMORY = 2 , CUDA_ERROR_NOT_INITIALIZED = 3 ,
  CUDA_ERROR_NO_DEVICE = 100 , CUDA_ERROR_INVALID_DEVICE = 101 , CUDA_ERROR_UNKNOWN = 999
}
 
enum  CUdevice_attribute_enum { CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR = 75 , CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR = 76 , CU_DEVICE_ATTRIBUTE_UNIFIED_ADDRESSING = 41 , CU_DEVICE_ATTRIBUTE_DMA_BUF_SUPPORTED = 124 }
 
enum  CUexternalMemoryHandleType_enum {
  CU_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD = 1 , CU_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32 = 2 , CU_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT = 3 , CU_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP = 4 ,
  CU_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE = 5 , CU_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_RESOURCE = 6 , CU_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_RESOURCE_KMT = 7 , CU_EXTERNAL_MEMORY_HANDLE_TYPE_NVSCIBUF = 8
}
 
enum  CUexternalSemaphoreHandleType_enum {
  CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD = 1 , CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32 = 2 , CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT = 3 , CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE = 4 ,
  CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE = 5 , CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_NVSCISYNC = 6 , CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_KEYED_MUTEX = 7 , CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_KEYED_MUTEX_KMT = 8 ,
  CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_TIMELINE_SEMAPHORE_FD = 9 , CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_TIMELINE_SEMAPHORE_WIN32 = 10
}
 
enum  CUarray_format_enum {
  CU_AD_FORMAT_UNSIGNED_INT8 = 0x01 , CU_AD_FORMAT_UNSIGNED_INT16 = 0x02 , CU_AD_FORMAT_UNSIGNED_INT32 = 0x03 , CU_AD_FORMAT_SIGNED_INT8 = 0x08 ,
  CU_AD_FORMAT_SIGNED_INT16 = 0x09 , CU_AD_FORMAT_SIGNED_INT32 = 0x0a , CU_AD_FORMAT_HALF = 0x10 , CU_AD_FORMAT_FLOAT = 0x20
}
 
enum  CUmemorytype_enum { CU_MEMORYTYPE_HOST = 0x01 , CU_MEMORYTYPE_DEVICE = 0x02 , CU_MEMORYTYPE_ARRAY = 0x03 , CU_MEMORYTYPE_UNIFIED = 0x04 }
 
enum  CUmemAllocationType_enum { CU_MEM_ALLOCATION_TYPE_INVALID = 0 , CU_MEM_ALLOCATION_TYPE_PINNED = 1 }
 
enum  CUmemAllocationHandleType_enum { CU_MEM_HANDLE_TYPE_NONE = 0 , CU_MEM_HANDLE_TYPE_POSIX_FILE_DESCRIPTOR = 1 , CU_MEM_HANDLE_TYPE_WIN32 = 2 , CU_MEM_HANDLE_TYPE_WIN32_KMT = 4 }
 
enum  CUmemLocationType_enum { CU_MEM_LOCATION_TYPE_INVALID = 0 , CU_MEM_LOCATION_TYPE_DEVICE = 1 }
 
enum  CUmemAccess_flags_enum { CU_MEM_ACCESS_FLAGS_PROT_NONE = 0 , CU_MEM_ACCESS_FLAGS_PROT_READ = 1 , CU_MEM_ACCESS_FLAGS_PROT_READWRITE = 3 }
 
enum  CUmemAllocationGranularity_flags_enum { CU_MEM_ALLOC_GRANULARITY_MINIMUM = 0 , CU_MEM_ALLOC_GRANULARITY_RECOMMENDED = 1 }
 
enum  CUmemRangeHandleType_enum { CU_MEM_RANGE_HANDLE_TYPE_DMA_BUF_FD = 0x1 }
 
enum  { CU_MEM_RANGE_FLAG_DMA_BUF_MAPPING_TYPE_PCIE = 0x1 }