diff options
author | Wade Walker <[email protected]> | 2014-04-06 15:05:46 -0500 |
---|---|---|
committer | Wade Walker <[email protected]> | 2014-04-06 15:05:46 -0500 |
commit | f98767152049ac141e115dcbb6a6ac66f4831d6a (patch) | |
tree | e41c7dfd1ba0e11f230c25f843b59d444af69dd3 | |
parent | 00f4325c5a46bf7c46be8646c1eb6f53b632f30a (diff) |
Fix CL-GL interoperability tests on Mac.
Fixed detection of compatible interoperability platforms (was silently
skipping platform because GL vendor was Nvidia, but CL vendor was
Apple). Also fixed CL kernel syntax error about signed-unsigned
comparison that ATI's driver on Windows didn't find, and fixed the CL
memory object to be write-only instead of read-only (which ATI's Windows
driver just ignored).
-rw-r--r-- | src/com/jogamp/opencl/util/CLPlatformFilters.java | 8 | ||||
-rw-r--r-- | test/com/jogamp/opencl/gl/CLGLTest.java | 6 |
2 files changed, 8 insertions, 6 deletions
diff --git a/src/com/jogamp/opencl/util/CLPlatformFilters.java b/src/com/jogamp/opencl/util/CLPlatformFilters.java index 14e1507e..451c6b1f 100644 --- a/src/com/jogamp/opencl/util/CLPlatformFilters.java +++ b/src/com/jogamp/opencl/util/CLPlatformFilters.java @@ -100,15 +100,17 @@ public class CLPlatformFilters { } /** - * We need this test because on at least some AMD cards, the GL vendor is ATI, - * but the CL vendor is AMD. + * We need this test because: + * - On at least some AMD cards, the GL vendor is ATI, but the CL vendor is AMD. + * - On at least some Macs, the GL vendor is Nvidia, but the CL vendor is Apple. * @param glVendor OpenGL vendor string. * @param clVendor OpenCL vendor string. * @return true if the strings are either the same, or indicate that they're part of the same card. */ private static boolean areVendorsCompatible(final String glVendor, final String clVendor) { return( clVendor.equals(glVendor) - || (glVendor.contains("ATI Technologies") && clVendor.contains("Advanced Micro Devices"))); + || (glVendor.contains("ATI Technologies") && clVendor.contains("Advanced Micro Devices")) + || (glVendor.contains("NVIDIA Corporation") && clVendor.contains("Apple"))); } /** diff --git a/test/com/jogamp/opencl/gl/CLGLTest.java b/test/com/jogamp/opencl/gl/CLGLTest.java index 8c729c08..8c477002 100644 --- a/test/com/jogamp/opencl/gl/CLGLTest.java +++ b/test/com/jogamp/opencl/gl/CLGLTest.java @@ -284,13 +284,13 @@ public class CLGLTest extends UITestCase { // create CLGL buffer ByteBuffer bufferCL = Buffers.newDirectByteBuffer(texWidth*texHeight*4); - CLGLTexture2d<ByteBuffer> clTexture = clglcontext.createFromGLTexture2d(bufferCL, GL2.GL_TEXTURE_2D, id[0], 0, CLBuffer.Mem.READ_ONLY); + CLGLTexture2d<ByteBuffer> clTexture = clglcontext.createFromGLTexture2d(bufferCL, GL2.GL_TEXTURE_2D, id[0], 0, CLBuffer.Mem.WRITE_ONLY); // set texel values to a formula that can be read back and verified String sourceCL = "__kernel void writeTexture (__write_only image2d_t imageTex, unsigned w, unsigned h ) \n" + "{ \n" + - " for(int y=1; y<=h; ++y) { \n" + - " for(int x=1; x<=w; ++x) { \n" + + " for(unsigned y=1; y<=h; ++y) { \n" + + " for(unsigned x=1; x<=w; ++x) { \n" + " write_imagef(imageTex, (int2)(x-1,y-1), (float4)(((float)x)/((float)(4*w)), ((float)y)/((float)(4*h)), 0.0f, 1.0f)); \n" + " } \n" + " } \n" + |