diff options
author | Michael Bien <[email protected]> | 2010-06-28 03:31:55 +0200 |
---|---|---|
committer | Michael Bien <[email protected]> | 2010-06-28 03:31:55 +0200 |
commit | c5dae5bba63a082fb8eac420b3b70786cdec54e1 (patch) | |
tree | 800ab8006fd3fd27260e4f21b74e7c2469ff4533 | |
parent | 467453f0752f162ce297de0db27d6a4fef67d15f (diff) |
image factory methods for CLContext.
-rw-r--r-- | src/com/jogamp/opencl/CLContext.java | 60 | ||||
-rw-r--r-- | src/com/jogamp/opencl/CLImageFormat.java | 28 |
2 files changed, 88 insertions, 0 deletions
diff --git a/src/com/jogamp/opencl/CLContext.java b/src/com/jogamp/opencl/CLContext.java index 34e23786..12d4f991 100644 --- a/src/com/jogamp/opencl/CLContext.java +++ b/src/com/jogamp/opencl/CLContext.java @@ -328,6 +328,66 @@ public class CLContext extends CLObject implements CLResource { return buffer; } + /** + * Creates a CLImage2d with the specified format, dimension and flags. + */ + public final CLImage2d<?> createImage2d(int width, int height, CLImageFormat format, Mem... flags) { + return createImage2d(null, width, height, 0, format, flags); + } + + /** + * Creates a CLImage2d with the specified format, dimension and flags. + */ + public final CLImage2d<?> createImage2d(int width, int height, int rowPitch, CLImageFormat format, Mem... flags) { + return createImage2d(null, width, height, rowPitch, format, flags); + } + + /** + * Creates a CLImage2d with the specified format, dimension and flags. + */ + public final <B extends Buffer> CLImage2d<B> createImage2d(B directBuffer, int width, int height, CLImageFormat format, Mem... flags) { + return createImage2d(directBuffer, width, height, 0, format, flags); + } + + /** + * Creates a CLImage2d with the specified format, dimension and flags. + */ + public final <B extends Buffer> CLImage2d<B> createImage2d(B directBuffer, int width, int height, int rowPitch, CLImageFormat format, Mem... flags) { + CLImage2d<B> image = CLImage2d.createImage(this, directBuffer, width, height, rowPitch, format, Mem.flagsToInt(flags)); + memoryObjects.add(image); + return image; + } + + /** + * Creates a CLImage3d with the specified format, dimension and flags. + */ + public final CLImage3d<?> createImage3d(int width, int height, CLImageFormat format, Mem... flags) { + return createImage3d(null, width, height, 0, format, flags); + } + + /** + * Creates a CLImage3d with the specified format, dimension and flags. + */ + public final CLImage3d<?> createImage3d(int width, int height, int depth, int rowPitch, CLImageFormat format, Mem... flags) { + return createImage3d(null, width, height, rowPitch, format, flags); + } + + /** + * Creates a CLImage3d with the specified format, dimension and flags. + */ + public final <B extends Buffer> CLImage3d<B> createImage3d(B directBuffer, int width, int height, int depth, CLImageFormat format, Mem... flags) { + return createImage3d(directBuffer, width, height, depth, 0, 0, format, flags); + } + + /** + * Creates a CLImage3d with the specified format, dimension and flags. + */ + public final <B extends Buffer> CLImage3d<B> createImage3d(B directBuffer, int width, int height, int depth, int rowPitch, int slicePitch, CLImageFormat format, Mem... flags) { + CLImage3d<B> image = CLImage3d.createImage(this, directBuffer, width, height, depth, rowPitch, slicePitch, format, Mem.flagsToInt(flags)); + memoryObjects.add(image); + return image; + } + CLCommandQueue createCommandQueue(CLDevice device, long properties) { CLCommandQueue queue = CLCommandQueue.create(this, device, properties); diff --git a/src/com/jogamp/opencl/CLImageFormat.java b/src/com/jogamp/opencl/CLImageFormat.java index e3eb3667..17b7bb6c 100644 --- a/src/com/jogamp/opencl/CLImageFormat.java +++ b/src/com/jogamp/opencl/CLImageFormat.java @@ -7,6 +7,8 @@ import static com.jogamp.opencl.CL.*; /** * Represents the OpenCL image format with its channeltype and order. * @author Michael Bien + * @see CLContext#getSupportedImage2dFormats(com.jogamp.opencl.CLMemory.Mem[]) + * @see CLContext#getSupportedImage3dFormats(com.jogamp.opencl.CLMemory.Mem[]) */ public final class CLImageFormat { @@ -56,6 +58,32 @@ public final class CLImageFormat { return "CLImageFormat["+getImageChannelOrder()+" "+getImageChannelDataType()+"]"; } + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final CLImageFormat other = (CLImageFormat) obj; + if (this.getImageChannelDataType() != other.getImageChannelDataType()) { + return false; + } + if (this.getImageChannelOrder() != other.getImageChannelOrder()) { + return false; + } + return true; + } + + @Override + public int hashCode() { + int hash = 5; + hash = 47 * hash + (this.getImageChannelDataType() != null ? this.getImageChannelDataType().hashCode() : 0); + hash = 47 * hash + (this.getImageChannelOrder() != null ? this.getImageChannelOrder().hashCode() : 0); + return hash; + } + /** * Specifies the number of channels and the channel layout i.e. the memory * layout in which channels are stored in the image. |