OpenCL to Vulkan A Porting Guide part one and two