wrap of MTLBufferProtocol to handle specific code related to ios/osx TODO: check if there is a more idiomatic way to do this
MTLBufferProtocol is used to store buffer send to GPU when using shaders