Image.ImageFormat format = new Image.ImageFormat(Image.ImageChannelOrder.RGBA, Image.ImageChannelType.FLOAT); Image.ImageDescriptor descr = new Image.ImageDescriptor(Image.ImageType.IMAGE_2D, 1920, 1080, 0, 0); Image image = clContext.createImage(MemoryAccess.READ_WRITE, format, descr); format = new Image.ImageFormat(Image.ImageChannelOrder.RGBA, Image.ImageChannelType.FLOAT); descr = new Image.ImageDescriptor(Image.ImageType.IMAGE_2D, 512, 512, 0, 0); Image image2 = clContext.createImage(MemoryAccess.READ_WRITE, format, descr);
@Override public ImageFormat[] querySupportedFormats(MemoryAccess access, Image.ImageType type) { long memFlags = Utils.getMemoryAccessFlags(access); int typeFlag = LwjglImage.decodeImageType(type); Utils.tempBuffers[0].b16i.rewind(); //query count int ret = CL10.clGetSupportedImageFormats(context, memFlags, typeFlag, null, Utils.tempBuffers[0].b16i); Utils.checkError(ret, "clGetSupportedImageFormats"); int count = Utils.tempBuffers[0].b16i.get(0); if (count == 0) { return new ImageFormat[0]; } //get formats CLImageFormat.Buffer formatsB = new CLImageFormat.Buffer(BufferUtils.createByteBuffer(count * CLImageFormat.SIZEOF)); ret = CL10.clGetSupportedImageFormats(context, memFlags, typeFlag, formatsB, (IntBuffer) null); Utils.checkError(ret, "clGetSupportedImageFormats"); //convert formats ImageFormat[] formats = new ImageFormat[count]; for (int i=0; i<count; ++i) { CLImageFormat f = formatsB.get(); Image.ImageChannelOrder channelOrder = LwjglImage.encodeImageChannelOrder(f.image_channel_order()); Image.ImageChannelType channelType = LwjglImage.encodeImageChannelType(f.image_channel_data_type()); formats[i] = new ImageFormat(channelOrder, channelType); } return formats; }
@Override public ImageFormat getImageFormat() { Utils.b80.rewind(); CLImageFormat format = new CLImageFormat(Utils.b80); int limit = Utils.b80.limit(); Utils.b80.limit(format.sizeof()); int ret = CL10.clGetImageInfo(image, CL10.CL_IMAGE_FORMAT, Utils.b80, null); Utils.b80.limit(limit); Utils.checkError(ret, "clGetImageInfo"); return new ImageFormat(encodeImageChannelOrder(format.image_channel_order()), encodeImageChannelType(format.image_channel_data_type())); }
@Override public ImageFormat[] querySupportedFormats(MemoryAccess access, Image.ImageType type) { long memFlags = Utils.getMemoryAccessFlags(access); int typeFlag = LwjglImage.decodeImageType(type); Utils.tempBuffers[0].b16i.rewind(); //query count int ret = CL10.clGetSupportedImageFormats(context, memFlags, typeFlag, null, Utils.tempBuffers[0].b16i); Utils.checkError(ret, "clGetSupportedImageFormats"); int count = Utils.tempBuffers[0].b16i.get(0); if (count == 0) { return new ImageFormat[0]; } //get formats ByteBuffer formatsB = BufferUtils.createByteBuffer(count * 8); ret = CL10.clGetSupportedImageFormats(context, memFlags, typeFlag, formatsB, null); Utils.checkError(ret, "clGetSupportedImageFormats"); //convert formats ImageFormat[] formats = new ImageFormat[count]; IntBuffer formatsBi = formatsB.asIntBuffer(); formatsBi.rewind(); for (int i=0; i<count; ++i) { Image.ImageChannelOrder channelOrder = LwjglImage.encodeImageChannelOrder(formatsBi.get()); Image.ImageChannelType channelType = LwjglImage.encodeImageChannelType(formatsBi.get()); formats[i] = new ImageFormat(channelOrder, channelType); } return formats; }
@Override public ImageFormat[] querySupportedFormats(MemoryAccess access, Image.ImageType type) { long memFlags = Utils.getMemoryAccessFlags(access); int typeFlag = LwjglImage.decodeImageType(type); Utils.tempBuffers[0].b16i.rewind(); //query count int ret = CL10.clGetSupportedImageFormats(context, memFlags, typeFlag, null, Utils.tempBuffers[0].b16i); Utils.checkError(ret, "clGetSupportedImageFormats"); int count = Utils.tempBuffers[0].b16i.get(0); if (count == 0) { return new ImageFormat[0]; } //get formats CLImageFormat.Buffer formatsB = new CLImageFormat.Buffer(BufferUtils.createByteBuffer(count * CLImageFormat.SIZEOF)); ret = CL10.clGetSupportedImageFormats(context, memFlags, typeFlag, formatsB, (IntBuffer) null); Utils.checkError(ret, "clGetSupportedImageFormats"); //convert formats ImageFormat[] formats = new ImageFormat[count]; for (int i=0; i<count; ++i) { CLImageFormat f = formatsB.get(); Image.ImageChannelOrder channelOrder = LwjglImage.encodeImageChannelOrder(f.image_channel_order()); Image.ImageChannelType channelType = LwjglImage.encodeImageChannelType(f.image_channel_data_type()); formats[i] = new ImageFormat(channelOrder, channelType); } return formats; }
@Override public ImageFormat[] querySupportedFormats(MemoryAccess access, Image.ImageType type) { if (type != Image.ImageType.IMAGE_2D && type != Image.ImageType.IMAGE_3D) { throw new UnsupportedOperationException("Jocl only supports 2D and 3D images"); } long memFlags = Utils.getMemoryAccessFlags(access); CLImageFormat[] fx; if (type == Image.ImageType.IMAGE_2D) { fx = context.getSupportedImage2dFormats(Mem.valueOf((int) memFlags)); } else { fx = context.getSupportedImage3dFormats(Mem.valueOf((int) memFlags)); } //convert formats ImageFormat[] formats = new ImageFormat[fx.length]; for (int i=0; i<fx.length; ++i) { Image.ImageChannelOrder channelOrder = JoclImage.encodeImageChannelOrder(fx[i].getFormatImpl().getImageChannelOrder()); Image.ImageChannelType channelType = JoclImage.encodeImageChannelType(fx[i].getFormatImpl().getImageChannelDataType()); formats[i] = new ImageFormat(channelOrder, channelType); } return formats; }
@Override public ImageFormat getImageFormat() { Utils.tempBuffers[0].b16i.rewind(); int ret = cl.clGetImageInfo(id, CL.CL_IMAGE_FORMAT, 8, Utils.tempBuffers[0].b16i, null); Utils.checkError(ret, "clGetImageInfo"); int channelOrder = Utils.tempBuffers[0].b16i.get(0); int channelType = Utils.tempBuffers[0].b16i.get(1); return new ImageFormat(encodeImageChannelOrder(channelOrder), encodeImageChannelType(channelType)); }
@Override public ImageFormat getImageFormat() { Utils.b80.rewind(); CLImageFormat format = new CLImageFormat(Utils.b80); int limit = Utils.b80.limit(); Utils.b80.limit(format.sizeof()); int ret = CL10.clGetImageInfo(image, CL10.CL_IMAGE_FORMAT, Utils.b80, null); Utils.b80.limit(limit); Utils.checkError(ret, "clGetImageInfo"); return new ImageFormat(encodeImageChannelOrder(format.image_channel_order()), encodeImageChannelType(format.image_channel_data_type())); }
@Override public ImageFormat getImageFormat() { CLImageFormat format = image.getImageFormat(); return new ImageFormat( encodeImageChannelOrder(format.getChannelOrder()), encodeImageChannelType(format.getChannelType())); }