In most examples I‘ve seen builtin scalar parameters (ex. uint n) can be directly passed to kernels but arrays of builtin scalar and vectors (float *x and float4 *x4) are always passed using memory buffers. So does a struct always need to be packed into a memory buffer? What about a single builtin vector parameters (ex. uint4 n4)? Could someone be so kind as to explain when and why memory buffers are and aren‘t required. If it‘s not required but still used then I guess its just added overhead, but otherwise not harmful. Thanks for your help!