I've run into a problem where I would like to pass one or more simple structures to my OpenCL kernel. I am aware of potential issues of packing and endian-ness. I'm prepared to work with those carefully, but I don' think that's what's going on now.

Bottom line: I can't pass a simple structure as a kernel argument into my kernel complied on Mac OS X 10.7.2, for NVIDIA GeForce 8600M GT. (OpenCL 1.0 supported)

Struct passing works as expected when on the same machine, compiled for an Intel CPU. Also works fine on a linux machine compiled for a Fermi GPU (CUDA 4.1).

I'm thinking this is a bug with Apple's implementation, but want to see what the community thinks before reporting it. Also, can anyone confirm this bug on a different Mac GPU device?

Links are for two simple demo programs. The first demonstrates the struct problem (at least run on my setup. Desired output is:
Input to kernel was: 2002, output back was 2002.
The second demonstrates successful results when the native type is passed directly (not contained in the struct).

The key point is that passing a kernel argument
Code :
struct { int intMember }
does not work while the native-type argument
Code :
int nativeArg
does.

Struct Argument http://dl.dropbox.com/u/54478577/sup...roblemDemo.cpp

Native Argument: http://dl.dropbox.com/u/54478577/sup...alarOKDemo.cpp

Build commands are in the leading source file comments.

Thanks.