Metal.BufferRepresents a block of untyped memory accessible by the GPU. See MTLBuffer.
val sexp_of_t : t -> Sexplib0.Sexp.tval super : t -> Resource.tval on_device : Device.t -> length:int -> ResourceOptions.t -> tval on_device_with_bytes : 
  Device.t ->
  bytes:unit Ctypes.ptr ->
  length:int ->
  ResourceOptions.t ->
  tCreates a buffer and initializes its contents by copying from a pointer.
val on_device_with_bytes_no_copy : 
  Device.t ->
  bytes:unit Ctypes.ptr ->
  length:int ->
  ?deallocator:(unit -> unit) ->
  ResourceOptions.t ->
  tCreates a buffer that wraps existing memory without copying.
val length : t -> intGets the length of the buffer in bytes.
val contents : t -> unit Ctypes.ptrGets a pointer to the buffer's contents (requires appropriate storage/cache mode and synchronization).
Informs Metal that a range of a managed buffer was modified by the CPU. This is not needed for shared buffers (NOTE: validation layer will report an error).
val remove_all_debug_markers : t -> unitval get_gpu_address : t -> Unsigned.ULLong.tGets the GPU virtual address of the buffer.