Out of curiosity I played with the latest cycles-x branch and tried to port it to metal - more or less as a personal exercise.
The first annoying thing was, that the metal compiler needs an explicit address space qualifier for each and every pointer or reference, which floods the code with it, but at least it is probably solvable with brute force and much typing. It would be nice, if Apple would add at least add a compiler flag to treat every pointer as “thread”, except it has an other qualifier.
The bigger problem is, that metal until now (2.4) does not support lambdas, which are used in the cycles code quite a lot. The next metal version will usually be presented at the next WWDC 2022 and it is not guaranteed, that this will be included. It would technically for sure be possible to rewrite it or maintain two versions of these parts, but that would uglify everything and is not very tempting.
Fore sure there are more obstacles, but I did only scratch the surface so far.
So my questions to the developer team are:
Do you know more? If my observations are correct, would you wait for Apple do catch up the other platforms with the metal framework in order to not fragment the cycles code even more? (would mean no cycles metal port before summer 2022)