private static ChannelOrder getBestFImageChannelOrder(CLContext context) { CLImageFormat[] formats = context.getSupportedImageFormats(CLMem.Flags.ReadWrite, CLMem.ObjectType.Image2D); List<ChannelOrder> found = new ArrayList<ChannelOrder>(); for (CLImageFormat fmt : formats) { if (fmt.getChannelDataType() == ChannelDataType.Float) found.add(fmt.getChannelOrder()); } for (ChannelOrder co : bestFImageChannels) { if (found.contains(co)) return co; } return ChannelOrder.RGBA; }
AbstractCommon(CLDevice device) { this.device = device; platform = device.getPlatform(); context = platform.createContext(null, device); queue = context.createDefaultQueue(); device = context.getDevices()[0]; formatsRead2D = context.getSupportedImageFormats(CLMem.Flags.ReadOnly, CLMem.ObjectType.Image2D); formatsWrite2D = context.getSupportedImageFormats(CLMem.Flags.WriteOnly, CLMem.ObjectType.Image2D); formatsRead3D = context.getSupportedImageFormats(CLMem.Flags.ReadOnly, CLMem.ObjectType.Image3D); formatsWrite3D = context.getSupportedImageFormats(CLMem.Flags.WriteOnly, CLMem.ObjectType.Image3D); formatsReadWrite2D = context.getSupportedImageFormats(CLMem.Flags.ReadWrite, CLMem.ObjectType.Image2D); formatsReadWrite3D = context.getSupportedImageFormats(CLMem.Flags.ReadWrite, CLMem.ObjectType.Image3D); }
Comparable extractValue(CLDevice device) { if (!device.hasImageSupport()) return 0; // TODO: fix that ugly hack ? CLContext context = JavaCL.createContext(null, device); try { return (Integer)context.getSupportedImageFormats(CLMem.Flags.ReadWrite, CLMem.ObjectType.Image2D).length; } finally { context.release(); } } };
Comparable extractValue(CLDevice device) { if (!device.hasImageSupport()) return 0; // TODO: fix that ugly hack ? CLContext context = JavaCL.createContext(null, device); try { return (Integer)context.getSupportedImageFormats(CLMem.Flags.ReadWrite, CLMem.ObjectType.Image2D).length; } finally { context.release(); } } };
List<CLImageFormat> formats = Arrays.asList(context.getSupportedImageFormats(CLMem.Flags.WriteOnly, CLMem.ObjectType.Image2D));