Avoiding data alignment in OpenCL

Hi there,

I need to pass a complex data type to OpenCL as a buffer and I want (if possible) to avoid the buffer alignment.

In OpenCL I need to use two structures to differentiate the data passed in the buffer casting to them:

typedef struct
{
   char a;
   float2 position;
} s1;

typedef struct
{
   char a;
   float2 position;
   char b;
} s2;

I define the kernel in this way:

__kernel void 
Foo(
   __global const void* bufferData,
   const int amountElements // in the buffer
)
{
   // Now I cast to one of the structs depending on an extra value
   __global s1* x = (__global s1*)bufferData;

}

And it works well only when I align the data passed in the buffer.

The question is: Is there a way to use attribute ((packed)) or attribute((aligned(1))) to avoid the alignment in data passed in the buffer?

Thank you.