size = MTLSize(width: inputWidth, height: inputHeight let region = MTLRegion(origin: MTLOrigin(x: 0, y: 0, z: 0 size: size) network.srcImage.texture.replace( region: region, mipmapLevel: 0, slice: 0, withBytes: context.data!, bytesPerRow: inputWidth, bytesPerImage: 0) Need to know Metal to use MPSCNN let origin = MTLOrigin(x: 0, y: 0, z: 0) let size = MTLSize(width: 1, height: 1, depth: 1) finalLayer.texture.getBytes(&(result_half_array[4*i]), bytesPerRow: MemoryLayout<UIn bytesPerImage: MemoryLayout<U from: MTLRegion(origin: origi size: size), mipmapLevel: 0, slice: i)