diff --git a/girs/CudaGst-1.0.gir b/girs/CudaGst-1.0.gir
index 618a75650f..1618180087 100644
--- a/girs/CudaGst-1.0.gir
+++ b/girs/CudaGst-1.0.gir
@@ -621,6 +621,29 @@ and/or use gtk-doc annotations. -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/cuda/cuda-gst.h b/subprojects/gst-plugins-bad/gst-libs/gst/cuda/cuda-gst.h
index 9d295b4acc..0b60da275b 100644
--- a/subprojects/gst-plugins-bad/gst-libs/gst/cuda/cuda-gst.h
+++ b/subprojects/gst-plugins-bad/gst-libs/gst/cuda/cuda-gst.h
@@ -45,6 +45,12 @@ CUresult CUDAAPI CuCtxPushCurrent (CUcontext ctx);
GST_CUDA_API
CUresult CUDAAPI CuCtxSynchronize (void);
+GST_CUDA_API
+CUresult CUDAAPI CuCtxGetLimit (size_t *plimit, CUlimit limit);
+
+GST_CUDA_API
+CUresult CUDAAPI CuCtxSetLimit (CUlimit limit, size_t value);
+
GST_CUDA_API
CUresult CUDAAPI CuCtxEnablePeerAccess (CUcontext peerContext,
unsigned int Flags);
diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/cuda/gstcudaloader.cpp b/subprojects/gst-plugins-bad/gst-libs/gst/cuda/gstcudaloader.cpp
index 711792b7f1..39b0f711f2 100644
--- a/subprojects/gst-plugins-bad/gst-libs/gst/cuda/gstcudaloader.cpp
+++ b/subprojects/gst-plugins-bad/gst-libs/gst/cuda/gstcudaloader.cpp
@@ -76,6 +76,8 @@ typedef struct _GstNvCodecCudaVTable
CUresult (CUDAAPI * CuCtxPopCurrent) (CUcontext * pctx);
CUresult (CUDAAPI * CuCtxPushCurrent) (CUcontext ctx);
CUresult (CUDAAPI * CuCtxSynchronize) (void);
+ CUresult (CUDAAPI * CuCtxGetLimit) (size_t * plimit, CUlimit limit);
+ CUresult (CUDAAPI * CuCtxSetLimit) (CUlimit limit, size_t value);
CUresult (CUDAAPI * CuCtxEnablePeerAccess) (CUcontext peerContext,
unsigned int Flags);
@@ -354,6 +356,8 @@ gst_cuda_load_library_once_func (void)
LOAD_SYMBOL (cuCtxPushCurrent, CuCtxPushCurrent);
LOAD_SYMBOL (cuCtxEnablePeerAccess, CuCtxEnablePeerAccess);
LOAD_SYMBOL (cuCtxDisablePeerAccess, CuCtxDisablePeerAccess);
+ LOAD_SYMBOL (cuCtxGetLimit, CuCtxGetLimit);
+ LOAD_SYMBOL (cuCtxSetLimit, CuCtxSetLimit);
LOAD_SYMBOL (cuGraphicsMapResources, CuGraphicsMapResources);
LOAD_SYMBOL (cuGraphicsUnmapResources, CuGraphicsUnmapResources);
@@ -560,6 +564,22 @@ CuCtxDisablePeerAccess (CUcontext peerContext)
return gst_cuda_vtable.CuCtxDisablePeerAccess (peerContext);
}
+CUresult CUDAAPI
+CuCtxGetLimit (size_t *plimit, CUlimit limit)
+{
+ g_assert (gst_cuda_vtable.CuCtxGetLimit != nullptr);
+
+ return gst_cuda_vtable.CuCtxGetLimit (plimit, limit);
+}
+
+CUresult CUDAAPI
+CuCtxSetLimit (CUlimit limit, size_t value)
+{
+ g_assert (gst_cuda_vtable.CuCtxSetLimit != nullptr);
+
+ return gst_cuda_vtable.CuCtxSetLimit (limit, value);
+}
+
CUresult CUDAAPI
CuGraphicsMapResources (unsigned int count, CUgraphicsResource * resources,
CUstream hStream)
diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/cuda/stub/cuda.h b/subprojects/gst-plugins-bad/gst-libs/gst/cuda/stub/cuda.h
index 290963286d..658147c3e2 100644
--- a/subprojects/gst-plugins-bad/gst-libs/gst/cuda/stub/cuda.h
+++ b/subprojects/gst-plugins-bad/gst-libs/gst/cuda/stub/cuda.h
@@ -131,6 +131,20 @@ typedef enum
CU_EVENT_INTERPROCESS = 0x4,
} CUevent_flags;
+typedef enum
+{
+ CU_LIMIT_STACK_SIZE = 0x0,
+ CU_LIMIT_PRINTF_FIFO_SIZE = 0x1,
+ CU_LIMIT_MALLOC_HEAP_SIZE = 0x2,
+ CU_LIMIT_DEV_RUNTIME_SYNC_DEPTH = 0x3,
+ CU_LIMIT_DEV_RUNTIME_PENDING_LAUNCH_COUNT = 0x4,
+ CU_LIMIT_MAX_L2_FETCH_GRANULARITY = 0x5,
+ CU_LIMIT_PERSISTING_L2_CACHE_SIZE = 0x6,
+ CU_LIMIT_SHMEM_SIZE = 0x7,
+ CU_LIMIT_CIG_ENABLED = 0x8,
+ CU_LIMIT_CIG_SHMEM_FALLBACK_ENABLED = 0x9,
+} CUlimit;
+
typedef struct
{
gsize srcXInBytes;