diff options
author | Michael Bien <[email protected]> | 2011-03-29 02:45:16 +0200 |
---|---|---|
committer | Michael Bien <[email protected]> | 2011-03-29 02:45:16 +0200 |
commit | 612fd3e9e9c157cc28d42791fd04711701def6e3 (patch) | |
tree | 45f5ae34d90091945aaa681d2ebb99a3610813a2 /src/com/jogamp/opencl/util | |
parent | 3e5066589244d812a218433ab25fe6d6f6e1fe84 (diff) |
added CLDeviceFilters utility api.
Diffstat (limited to 'src/com/jogamp/opencl/util')
-rw-r--r-- | src/com/jogamp/opencl/util/CLDeviceFilters.java | 90 | ||||
-rw-r--r-- | src/com/jogamp/opencl/util/CLPlatformFilters.java | 21 |
2 files changed, 109 insertions, 2 deletions
diff --git a/src/com/jogamp/opencl/util/CLDeviceFilters.java b/src/com/jogamp/opencl/util/CLDeviceFilters.java new file mode 100644 index 00000000..a69b11a1 --- /dev/null +++ b/src/com/jogamp/opencl/util/CLDeviceFilters.java @@ -0,0 +1,90 @@ +/* + * Copyright 2011 JogAmp Community. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of JogAmp Community. + */ + +package com.jogamp.opencl.util; + +import com.jogamp.opencl.CLDevice; +import java.nio.ByteOrder; +import java.util.Arrays; + +/** + * Pre-defined filters. + * @author Michael Bien + * @see com.jogamp.opencl.CLPlatform#listCLDevices(com.jogamp.opencl.util.Filter[]) + * @see com.jogamp.opencl.CLPlatform#getMaxFlopsDevice(com.jogamp.opencl.util.Filter[]) + */ +public class CLDeviceFilters { + + /** + * Accepts all devices of the given type. + */ + public static Filter<CLDevice> type(final CLDevice.Type type) { + return new Filter<CLDevice>() { + public boolean accept(CLDevice item) { + if(type.equals(CLDevice.Type.ALL)) { + return true; + } + return item.getType().equals(type); + } + }; + } + + /** + * Accepts all devices of the given {@link ByteOrder}. + */ + public static Filter<CLDevice> byteOrder(final ByteOrder order) { + return new Filter<CLDevice>() { + public boolean accept(CLDevice item) { + return item.getByteOrder().equals(order); + } + }; + } + + /** + * Accepts all devices which support OpenGL-OpenCL interoparability. + */ + public static Filter<CLDevice> glSharing() { + return new Filter<CLDevice>() { + public boolean accept(CLDevice item) { + return item.isGLMemorySharingSupported(); + } + }; + } + + /** + * Accepts all devices supporting the given extensions. + */ + public static Filter<CLDevice> extension(final String... extensions) { + return new Filter<CLDevice>() { + public boolean accept(CLDevice item) { + return item.getExtensions().containsAll(Arrays.asList(extensions)); + } + }; + } + +} diff --git a/src/com/jogamp/opencl/util/CLPlatformFilters.java b/src/com/jogamp/opencl/util/CLPlatformFilters.java index 3d23a45c..f5a4f55f 100644 --- a/src/com/jogamp/opencl/util/CLPlatformFilters.java +++ b/src/com/jogamp/opencl/util/CLPlatformFilters.java @@ -62,11 +62,28 @@ public class CLPlatformFilters { } }; } + + /** + * Accepts all platforms containing at least one devices of which supports OpenGL-OpenCL interoparability. + */ + public static Filter<CLPlatform> glSharing() { + return new Filter<CLPlatform>() { + public boolean accept(CLPlatform item) { + CLDevice[] devices = item.listCLDevices(); + for (CLDevice device : devices) { + if(device.isGLMemorySharingSupported()) { + return true; + } + } + return false; + } + }; + } /** - * Accepts all platforms containing devices of the given extensions. + * Accepts all platforms supporting the given extensions. */ - public static Filter<CLPlatform> extensions(final String... extensions) { + public static Filter<CLPlatform> extension(final String... extensions) { return new Filter<CLPlatform>() { public boolean accept(CLPlatform item) { return item.getExtensions().containsAll(Arrays.asList(extensions)); |