PR #6 opened by flowreen URL: https://code.ffmpeg.org/FFmpeg/nv-codec-headers/pulls/6 Patch URL: https://code.ffmpeg.org/FFmpeg/nv-codec-headers/pulls/6.patch
Adds the CUDA driver API definitions that FFmpeg needs for D3D11 interop through the external memory and external semaphore API, plus three error codes and one array format: * `CU_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_RESOURCE` (6) and `_KMT` (7) * `CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE` (5), `D3D11_KEYED_MUTEX` (7) and `_KMT` (8) * `CUDA_EXTERNAL_MEMORY_DEDICATED` (0x1) * `CU_AD_FORMAT_UNORM_INT_101010_2` (0x50) * `CUDA_ERROR_OUT_OF_MEMORY` (2), `CUDA_ERROR_INVALID_HANDLE` (400), `CUDA_ERROR_NOT_SUPPORTED` (801) Values taken from the CUDA driver API reference (cuda.h, `group__CUDA__TYPES`). No version bump. FFmpeg/FFmpeg#24316 (D3D11 to Vulkan and CUDA frame transfer) currently carries local `FF_` copies of these; once a release with them exists, FFmpeg can drop the copies and bump its ffnvcodec check. >From 466b82c4fc5185967fac8d1e4476179eaf42d059 Mon Sep 17 00:00:00 2001 From: flowreen <[email protected]> Date: Thu, 10 Sep 2026 23:36:28 +0200 Subject: [PATCH] Add missing D3D11 interop, array format and error code definitions --- include/ffnvcodec/dynlink_cuda.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/include/ffnvcodec/dynlink_cuda.h b/include/ffnvcodec/dynlink_cuda.h index 25077cd..c893a3b 100644 --- a/include/ffnvcodec/dynlink_cuda.h +++ b/include/ffnvcodec/dynlink_cuda.h @@ -66,8 +66,11 @@ typedef struct CUlinkState_st *CUlinkState; typedef enum cudaError_enum { CUDA_SUCCESS = 0, CUDA_ERROR_INVALID_VALUE = 1, + CUDA_ERROR_OUT_OF_MEMORY = 2, + CUDA_ERROR_INVALID_HANDLE = 400, CUDA_ERROR_NOT_READY = 600, CUDA_ERROR_LAUNCH_TIMEOUT = 702, + CUDA_ERROR_NOT_SUPPORTED = 801, CUDA_ERROR_UNKNOWN = 999 } CUresult; @@ -107,6 +110,7 @@ typedef enum CUarray_format_enum { CU_AD_FORMAT_SIGNED_INT32 = 0x0a, CU_AD_FORMAT_HALF = 0x10, CU_AD_FORMAT_FLOAT = 0x20, + CU_AD_FORMAT_UNORM_INT_101010_2 = 0x50, CU_AD_FORMAT_NV12 = 0xb0, CU_AD_FORMAT_P016 = 0xa1, CU_AD_FORMAT_NV16 = 0xa2, @@ -168,6 +172,8 @@ typedef enum CUexternalMemoryHandleType_enum { 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, } CUexternalMemoryHandleType; typedef enum CUexternalSemaphoreHandleType_enum { @@ -175,6 +181,9 @@ typedef enum CUexternalSemaphoreHandleType_enum { 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_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, } CUexternalSemaphoreHandleType; @@ -325,6 +334,8 @@ typedef enum CUGLDeviceList_enum { CU_GL_DEVICE_LIST_NEXT_FRAME = 3, } CUGLDeviceList; +#define CUDA_EXTERNAL_MEMORY_DEDICATED 0x1 + typedef struct CUDA_EXTERNAL_MEMORY_HANDLE_DESC_st { CUexternalMemoryHandleType type; union { -- 2.52.0 _______________________________________________ ffmpeg-devel mailing list -- [email protected] To unsubscribe send an email to [email protected]
