/// <summary>
 /// Enqueues a command to write data to an image.
 /// </summary>
 /// <param name="source"> A pointer to a memory area to read from. </param>
 /// <param name="destination"> The image to write to. </param>
 /// <param name="blocking"> The mode of operation of this command. If <c>true</c> this call will not return until the command has finished execution. </param>
 /// <param name="destinationOffset"> The <paramref name="destination"/> element position where writing starts. </param>
 /// <param name="region"> The region of elements to write. </param>
 /// <param name="destinationRowPitch"> The size of a row of pixels of <paramref name="destination"/> in bytes. </param>
 /// <param name="events"> A collection of events that need to complete before this particular command can be executed. If <paramref name="events"/> is not <c>null</c> a new event identifying this command is attached to the end of the collection. </param>
 public void WriteToImage(IntPtr source, OpenCLImage2D destination, bool blocking, SysIntX2 destinationOffset, SysIntX2 region, long destinationRowPitch, IReadOnlyList<OpenCLEventBase> events = null, IList<OpenCLEventBase> newEvents = null)
 {
     Write(destination, blocking, new SysIntX3(destinationOffset, 0), new SysIntX3(region, 1), destinationRowPitch, 0, source, events, newEvents);
 }
 /// <summary>
 /// Enqueues a command to copy data from an image to a buffer.
 /// </summary>
 /// <typeparam name="T"> The type of data in <paramref name="destination"/>. </typeparam>
 /// <param name="source"> The image to copy from. </param>
 /// <param name="destination"> The buffer to copy to. </param>
 /// <param name="sourceOffset"> The <paramref name="source"/> element position where reading starts. </param>
 /// <param name="destinationOffset"> The <paramref name="destination"/> element position where writing starts. </param>
 /// <param name="region"> The region of elements to copy. </param>
 /// <param name="events"> A collection of events that need to complete before this particular command can be executed. If <paramref name="events"/> is not <c>null</c> a new event identifying this command is attached to the end of the collection. </param>
 public void CopyImageToBuffer(OpenCLImage2D source, OpenCLBufferBase destination, SysIntX2 sourceOffset, long destinationOffset, SysIntX2 region, IReadOnlyList<OpenCLEventBase> events = null, IList<OpenCLEventBase> newEvents = null) 
 {
     Copy(source, destination, new SysIntX3(sourceOffset, 0), destinationOffset, new SysIntX3(region, 1), events, newEvents);
 }
 /// <summary>
 /// Enqueues a command to read data from an image.
 /// </summary>
 /// <param name="source"> The image to read from. </param>
 /// <param name="destination"> A valid pointer to a preallocated memory area to write to. </param>
 /// <param name="blocking"> The mode of operation of this command. If <c>true</c> this call will not return until the command has finished execution. </param>
 /// <param name="sourceOffset"> The <paramref name="source"/> element position where reading starts. </param>
 /// <param name="region"> The region of elements to read. </param>
 /// <param name="sourceRowPitch"> The size of a row of pixels of <paramref name="destination"/> in bytes. </param>
 /// <param name="events"> A collection of events that need to complete before this particular command can be executed. If <paramref name="events"/> is not <c>null</c> a new event identifying this command is attached to the end of the collection. </param>
 public void ReadFromImage(OpenCLImage2D source, IntPtr destination, bool blocking, SysIntX2 sourceOffset, SysIntX2 region, long sourceRowPitch, IReadOnlyList<OpenCLEventBase> events = null, IList<OpenCLEventBase> newEvents = null)
 {
     Read(source, blocking, new SysIntX3(sourceOffset, 0), new SysIntX3(region, 1), sourceRowPitch, 0, destination, events, newEvents);
 }
 /// <summary>
 /// Enqueues a command to copy data from a source image to a destination image.
 /// </summary>
 /// <param name="source"> The image to copy from. </param>
 /// <param name="destination"> The image to copy to. </param>
 /// <param name="sourceOffset"> The <paramref name="source"/> element position where reading starts. </param>
 /// <param name="destinationOffset"> The <paramref name="destination"/> element position where writing starts. </param>
 /// <param name="region"> The region of elements to copy. </param>
 /// <param name="events"> A collection of events that need to complete before this particular command can be executed. If <paramref name="events"/> is not <c>null</c> a new event identifying this command is attached to the end of the collection. </param>
 public void CopyImage(OpenCLImage3D source, OpenCLImage2D destination, SysIntX3 sourceOffset, SysIntX2 destinationOffset, SysIntX2 region, IReadOnlyList<OpenCLEventBase> events = null, IList<OpenCLEventBase> newEvents = null)
 {
     Copy(source, destination, sourceOffset, new SysIntX3(destinationOffset, 0), new SysIntX3(region, 1), events, newEvents);
 }