Hi,
Khronos' specs about setting kernel arguments are a bit obscure. So I set up a series of kernels and commented out the ones that don't compile on nVidia's implementation while the rest compiles fine (see code).
However, I get different results with ATI-Stream 2.0 beta 4 XP. Namely this:
------------------| Start Kernel args test |------------------
C:\Users\xxx\AppData\Local\Temp\OCL9414.tmp.cl(4): error: kernel pointer
arguments must point to addrSpace global, local, or constant
kernel void k03( image3d_t img ) {}
^
C:\Users\xxx\AppData\Local\Temp\OCL9414.tmp.cl(14): error: a parameter
cannot be allocated in a named address space
kernel void k11( global image3d_t img ) {}
^
C:\Users\xxx\AppData\Local\Temp\OCL9414.tmp.cl(14): error: kernel pointer
arguments must point to addrSpace global, local, or constant
kernel void k11( global image3d_t img ) {}
^
3 errors detected in the compilation of "C:\Users\xxx\AppData\Local\Temp\OCL94
14.tmp.cl".
image3d_t im
-------------------| End Kernel args test |-------------------
I'm not implying that this is a bug on ATI's implementation. Is someone able to tell me which behaviour is the right one?
kernel void k01( float num ) {} // kernel void k02( float * num ) {} kernel void k03( image3d_t img ) {} kernel void k04( sampler_t smp ) {} // kernel void k05( constant float num ) {} kernel void k06( constant float * num ) {} // kernel void k07( constant image3d_t img ) {} // kernel void k08( constant sampler_t smp ) {} // kernel void k09( global float num ) {} kernel void k10( global float * num ) {} kernel void k11( global image3d_t img ) {} // kernel void k12( global sampler_t smp ) {} // kernel void k13( local float num ) {} kernel void k14( local float * num ) {} // kernel void k15( local image3d_t img ) {} // kernel void k16( local sampler_t smp ) {}