/// <inheritdoc/> protected override void DisposeAcceleratorObject(bool disposing) { CLException.VerifyDisposed( disposing, CurrentAPI.clReleaseEvent(EventPtr)); EventPtr = IntPtr.Zero; }
/// <summary> /// Disposes this OpenCL buffer. /// </summary> protected override void DisposeAcceleratorObject(bool disposing) { CLException.VerifyDisposed( disposing, CurrentAPI.ReleaseBuffer(NativePtr)); NativePtr = IntPtr.Zero; }
/// <summary> /// Disposes this OpenCL stream. /// </summary> protected override void DisposeAcceleratorObject(bool disposing) { if (!responsibleForHandle || queuePtr == IntPtr.Zero) { return; } CLException.VerifyDisposed( disposing, CurrentAPI.ReleaseCommandQueue(queuePtr)); queuePtr = IntPtr.Zero; }
/// <summary> /// Disposes this OpenCL kernel. /// </summary> protected override void DisposeAcceleratorObject(bool disposing) { // Free the kernel if (kernelPtr != IntPtr.Zero) { CLException.VerifyDisposed( disposing, CurrentAPI.ReleaseKernel(kernelPtr)); kernelPtr = IntPtr.Zero; } // Free the surrounding program if (programPtr != IntPtr.Zero) { CLException.VerifyDisposed( disposing, CurrentAPI.ReleaseProgram(programPtr)); programPtr = IntPtr.Zero; } }
/// <summary> /// Disposes the current OpenCL context. /// </summary> protected override void DisposeAccelerator_SyncRoot(bool disposing) => // Dispose the current context CLException.VerifyDisposed( disposing, CurrentAPI.ReleaseContext(NativePtr));