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]

Reply via email to