public CuDevicePtrSafe( CuDevicePtr devicePtr, CuDevicePtrDeallocator deallocator) { DevicePtr = devicePtr; _deallocator = deallocator; }
/// <inheritdoc cref="LibCuda.MemFree(CuDevicePtr)"/> public void Dispose() { var handle = Interlocked.Exchange(ref Handle, IntPtr.Zero); if (handle == IntPtr.Zero) return; var obj = new CuDevicePtr { Handle = handle }; MemFree(obj); }
/// <inheritdoc cref="LibCuVideo.UnmapVideoFrame64(CuVideoDecoder, CuDevicePtr)"/> public void Dispose() { var handle = Interlocked.Exchange(ref Handle, IntPtr.Zero); if (handle == IntPtr.Zero) return; var obj = new CuDevicePtr { Handle = handle }; var result = Environment.Is64BitProcess ? UnmapVideoFrame64(_decoder, obj) : UnmapVideoFrame(_decoder, obj); CheckResult(result); }
public static extern CuResult IpcGetMemHandle(CuIpcMemHandle *pHandle, CuDevicePtr dptr);
public CuVideoFrame(CuDevicePtr devicePtr, CuVideoDecoder decoder) { Handle = devicePtr.Handle; _decoder = decoder; }
public static extern CuResult MapVideoFrame64(CuVideoDecoder decoder, int nPicIdx, out CuDevicePtr devPtr, out int pitch, ref CuVideoProcParams vpp);
public static extern CuResult MemsetD2D32Async(CuDevicePtr dstDevice, IntPtr dstPitch, int ui, IntPtr width, IntPtr height, CuStream hStream);
public static extern CuResult MemsetD8(CuDevicePtr dstDevice, byte uc, IntPtr n);
public static extern CuResult MemRangeGetAttributes(IntPtr data, IntPtr dataSizes, [MarshalAs(UnmanagedType.LPArray)] MemoryRangeAttribute[] attributes, IntPtr numAttributes, CuDevicePtr devPtr, IntPtr count);
public static extern CuResult MemRangeGetAttribute(IntPtr data, IntPtr dataSize, MemoryRangeAttribute attribute, CuDevicePtr devPtr, IntPtr count);
public static extern CuResult MemAdvise(CuDevicePtr devPtr, IntPtr count, MemoryAdvice advice, CuDevice device);
public static extern CuResult MemPrefetchAsync(CuDevicePtr devPtr, IntPtr count, CuDevice dstDevice, CuStream hStream);
public static extern CuResult PointerGetAttribute(IntPtr data, PointerAttribute attribute, CuDevicePtr ptr);
public static extern CuResult IpcCloseMemHandle(CuDevicePtr dptr);
public static extern CuResult IpcOpenMemHandle(out CuDevicePtr pdptr, CuIpcMemHandle handle, IpcMemoryFlags flags);
public static extern CuResult MemsetD16Async(CuDevicePtr dstDevice, short us, IntPtr n, CuStream hStream);
public static extern CuResult MemsetD32Async(CuDevicePtr dstDevice, int ui, IntPtr n, CuStream hStream);
public static extern void ResizeNv12( CuDevicePtr dstNv12, int dstPitch, int dstWidth, int dstHeight, CuDevicePtr srcNv12, int srcPitch, int srcWidth, int srcHeight, CuDevicePtr dstNv12UV);
public static extern CuResult MemsetD2D16Async(CuDevicePtr dstDevice, IntPtr dstPitch, short us, IntPtr width, IntPtr height, CuStream hStream);
public static extern CuResult GraphicsResourceGetMappedPointer(out CuDevicePtr pDevPtr, out IntPtr pSize, CuGraphicsResource resource);
public static extern CuResult MemsetD16(CuDevicePtr dstDevice, short us, IntPtr n);
public static extern CuResult MemsetD32(CuDevicePtr dstDevice, int ui, IntPtr n);
public static extern CuResult UnmapVideoFrame64(CuVideoDecoder decoder, CuDevicePtr devPtr);
public static extern CuResult MemsetD2D8(CuDevicePtr dstDevice, IntPtr dstPitch, byte uc, IntPtr width, IntPtr height);
public static extern CuResult MemsetD2D16(CuDevicePtr dstDevice, IntPtr dstPitch, short us, IntPtr width, IntPtr height);
public static extern CuResult MemsetD2D32(CuDevicePtr dstDevice, IntPtr dstPitch, int ui, IntPtr width, IntPtr height);
private CuDeviceMemory(CuDevicePtr devicePtr) { Handle = devicePtr.Handle; }
public static extern CuResult MemsetD8Async(CuDevicePtr dstDevice, byte uc, IntPtr n, CuStream hStream);
public static extern CuResult StreamAttachMemAsync(CuStream hStream, CuDevicePtr dptr, IntPtr length, MemoryAttachFlags flags);
public static extern CuResult StreamWriteValue64(CuStream stream, CuDevicePtr addr, long value, int flags);