vtn: handle struct kernel arguments passed by value
Due to LLVM ABI reasons the SPIRV-LLVM-Translator always uses pointers to private memory for struct function parameters. This includes kenrel entry points.
However technically it's also legal to pass those parameters by value according to the OpenCL SPIR-V Env spec.
One compiler making use of this is e.g. artic based on Thorin.
Closes: #12149 (closed)
Cc: mesa-stable