/// <summary>Update a CPU-writable buffer by mapping it with write+discard flags, and calling memcpy.</summary> public static void writeBuffer(this IDeviceContext context, IBuffer buffer, ReadOnlySpan <byte> data) { unsafe { fixed(byte *pointer = &data.GetPinnableReference()) context.MapBufferWriteDiscard(buffer, (IntPtr)pointer, data.Length); } }
/// <summary>Update a CPU-writable buffer by mapping it with write+discard flags, and calling memcpy.</summary> public static void writeBuffer <T>(this IDeviceContext context, IBuffer buffer, T[] array) where T : unmanaged { int cb = Marshal.SizeOf <T>() * array.Length; unsafe { fixed(T *pointer = array) context.MapBufferWriteDiscard(buffer, (IntPtr)pointer, cb); } }
/// <summary>Update a CPU-writable buffer by mapping it with write+discard flags, and calling memcpy.</summary> public static void writeBuffer <T>(this IDeviceContext context, IBuffer buffer, ref T value) where T : unmanaged { int cb = Marshal.SizeOf <T>(); unsafe { fixed(T *pointer = &value) context.MapBufferWriteDiscard(buffer, (IntPtr)pointer, cb); } }