I do not really have something substantial new, but here is what I have tried in the meantime.
My goal was to find the point, where I would hit a wall, while trying to port the CUDA-driver to METAL.
First step was pretty straightforward. Adding properties for a metal driver, getting a metal device from the OS.
Next step, building an empty metal kernel inside the blender build system and loading it successfully on render was a bit harder, but seems to work now.
Next on the list would have been the port of the CUDA-kernel (now GPU-kernel) and see if it would compile. This is where my story ended for now. Blender already uses a lot of macros and metal would need even more (i.e. for address space qualifiers, extra atomic types, …), which would pollute the generic driver parts a bit more. But the real showstopper for me have been c+±lambdas, which is a feature, that the newest metal version (2.4) simply does not support. Porting back cycles-x to an older c+±standard is probably not an option and code duplication only for metal does not sound much better.
There may be more obstacles further down the way, but in my serial approach, this is all I know for now (=believe to know).
Please remember, that I was for sure fare away from a working version and maybe even on the wrong path. But I am optimistic, that a person with more inside knowledge of cycles (= not me) could be successful.