diff --git a/doc/source/runtime.rst b/doc/source/runtime.rst index 3b714df32057a7d6cc7a5d6e6990a3bb63f54981..cea471d0e157aaa5733803aee1b30d403a25da13 100644 --- a/doc/source/runtime.rst +++ b/doc/source/runtime.rst @@ -489,10 +489,10 @@ Images .. function:: enqueue_read_image(queue, mem, origin, region, hostbuf, row_pitch=0, slice_pitch=0, wait_for=None, is_blocking=True) - |std-enqueue-blurb| - |copy-depr| + |std-enqueue-blurb| + .. versionchanged:: 0.91 *pitch* arguments defaults to zero, moved. @@ -502,6 +502,8 @@ Images .. function:: enqueue_write_image(queue, mem, origin, region, hostbuf, row_pitch=0, slice_pitch=0, wait_for=None, is_blocking=True) + |copy-depr| + |std-enqueue-blurb| .. versionchanged:: 0.91 diff --git a/pyopencl/__init__.py b/pyopencl/__init__.py index 8e508bcb8fa738ecb677d3296f2408681ff2364f..6ab8d83f4f5e49aa660167e036a8b6eadab6fee7 100644 --- a/pyopencl/__init__.py +++ b/pyopencl/__init__.py @@ -533,6 +533,13 @@ def enqueue_copy(queue, dest, src, **kwargs): # assume from-host origin = kwargs.pop("origin") region = kwargs.pop("region") + + pitches = kwargs.pop("pitches", (0,0)) + if len(pitches) == 1: + kwargs["row_pitch"], = pitches + else: + kwargs["row_pitch"], kwargs["slice_pitch"] = pitches + return _cl._enqueue_write_image(queue, dest, origin, region, src, **kwargs) else: @@ -544,13 +551,16 @@ def enqueue_copy(queue, dest, src, **kwargs): else: return _cl._enqueue_read_buffer(queue, src, dest, **kwargs) elif isinstance(src, Image): + origin = kwargs.pop("origin") + region = kwargs.pop("region") + pitches = kwargs.pop("pitches", (0,0)) if len(pitches) == 1: kwargs["row_pitch"], = pitches else: kwargs["row_pitch"], kwargs["slice_pitch"] = pitches - return _cl._enqueue_read_image(queue, src, dest, **kwargs) + return _cl._enqueue_read_image(queue, src, origin, region, dest, **kwargs) else: # assume from-host raise TypeError("enqueue_copy cannot perform host-to-host transfers")