I'm getting some seemingly odd results when I try to update a float3 variable in an OpenCL kernel. Boiling it down:
float3 vel = float3( 0 );   // a
vel = float3( 0, 1, 0 );    // b
vel = (float3)( 0, 2, 0 );  // c
If I print vel after each call with:
if( get_global_id( 0 ) == 0 )
    printf( "[%d]: vel: ( %f, %f, %f )\n", index, vel.x, vel.y, vel.z );
Then I see that a) correctly initializes vel, however b) doesn't do anything. c) works. Does anyone know why I can't update the variable with a new float3 object as I'm doing in b? This is how I'm used to doing it in C++ and glsl. Or possibly a driver bug?
Using OpenCL 1.2 on macbook pro running OS X 10.11.5.
 
     
     
    