Do I take it correctly from the specs, that now structs or classes can be passed to kernels? Or what exactly is the difference in capturing variables and passing them as lamdba parameters?
Yes, SYCL allows you to pass any struct that is POD and doesn't contain pointers.
Variables that are captured by the lambda are kernel arguments, these can be accessors, samplers and POD data types which don't contain pointers. The lambda parameters are specific types that are constructed within the kernel that are used to give host/device compatible access to the current work item's id information. For example, the parallel_for API takes an item object as the lambda's parameter.
Is there any way to get early access to the reference implementation done by Codeplay? Or at least get an estimate, as to when it will be available? (Although I would be glad to give it a spin)
The Codeplay implementation of SYCL is not a reference implementation and is currently still in development, however anyone looking to get involved with the development of SYCL can contact us to discuss it further. Additionally there is an open source implementation of SYCL called triSYCL, which is still in the early stages of development, this can be found here.
Tags for this Thread