[gnome-remote-desktop] hwaccel-nvidia: Add APIs to allocate and free device memory



commit 2bcc500ca1bf03b754137418f781eb8ba1c2070f
Author: Pascal Nowack <Pascal Nowack gmx de>
Date:   Thu Jan 13 12:43:55 2022 +0100

    hwaccel-nvidia: Add APIs to allocate and free device memory
    
    These APIs will be used in the next commit to allow memory allocation
    and deallocation with CUDA outside of the class for hardware
    acceleration for NVIDIA GPUs.

 src/grd-hwaccel-nvidia.c | 27 +++++++++++++++++++++++++++
 src/grd-hwaccel-nvidia.h |  7 +++++++
 2 files changed, 34 insertions(+)
---
diff --git a/src/grd-hwaccel-nvidia.c b/src/grd-hwaccel-nvidia.c
index c3f0c705..cf139ee8 100644
--- a/src/grd-hwaccel-nvidia.c
+++ b/src/grd-hwaccel-nvidia.c
@@ -217,6 +217,33 @@ grd_hwaccel_nvidia_destroy_cuda_stream (GrdHwAccelNvidia *hwaccel_nvidia,
   hwaccel_nvidia->cuda_funcs->cuStreamDestroy (cuda_stream);
 }
 
+gboolean
+grd_hwaccel_nvidia_alloc_mem (GrdHwAccelNvidia *hwaccel_nvidia,
+                              CUdeviceptr      *device_ptr,
+                              size_t            size)
+{
+  CudaFunctions *cuda_funcs = hwaccel_nvidia->cuda_funcs;
+
+  if (cuda_funcs->cuMemAlloc (device_ptr, size) != CUDA_SUCCESS)
+    {
+      g_warning ("[HWAccel.CUDA] Failed to allocate memory");
+      return FALSE;
+    }
+
+  return TRUE;
+}
+
+void
+grd_hwaccel_nvidia_clear_mem_ptr (GrdHwAccelNvidia *hwaccel_nvidia,
+                                  CUdeviceptr      *device_ptr)
+{
+  if (!(*device_ptr))
+    return;
+
+  hwaccel_nvidia->cuda_funcs->cuMemFree (*device_ptr);
+  *device_ptr = 0;
+}
+
 static uint32_t
 get_next_free_encode_session_id (GrdHwAccelNvidia *hwaccel_nvidia)
 {
diff --git a/src/grd-hwaccel-nvidia.h b/src/grd-hwaccel-nvidia.h
index 18c3e7d4..66f6f935 100644
--- a/src/grd-hwaccel-nvidia.h
+++ b/src/grd-hwaccel-nvidia.h
@@ -69,6 +69,13 @@ gboolean grd_hwaccel_nvidia_create_cuda_stream (GrdHwAccelNvidia *hwaccel_nvidia
 void grd_hwaccel_nvidia_destroy_cuda_stream (GrdHwAccelNvidia *hwaccel_nvidia,
                                              CUstream          cuda_stream);
 
+gboolean grd_hwaccel_nvidia_alloc_mem (GrdHwAccelNvidia *hwaccel_nvidia,
+                                       CUdeviceptr      *device_ptr,
+                                       size_t            size);
+
+void grd_hwaccel_nvidia_clear_mem_ptr (GrdHwAccelNvidia *hwaccel_nvidia,
+                                       CUdeviceptr      *device_ptr);
+
 gboolean grd_hwaccel_nvidia_create_nvenc_session (GrdHwAccelNvidia *hwaccel_nvidia,
                                                   uint32_t         *encode_session_id,
                                                   uint16_t          surface_width,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]