dst | 写入的缓冲区切片。 |
src | 应写入缓冲区的 CPU 内存中的数组。该数组必须保持有效,直到写入操作完成。 |
id | 用于跟踪写入完成情况的事件的 ID。 |
将数据写入由上下文分配的内存缓冲区。
这是一个异步操作。根据需要,传递一个使用IDeviceContext.CreateEvent创建的EventID以跟踪完成状态。在将命令排入上下文后,WriteBuffer 方法会立即返回。
注意:EventID是单次使用的。一旦EventID传递给该函数,就不能传递给后续IDeviceContext.WriteBuffer或IDeviceContext.ReadBuffer调用。这样做会导致未定义的行为。
IDeviceContext ctx = new RadeonRaysContext(); ctx.Initialize(); uint length = 8; var input = new NativeArray<byte>((int)length, Allocator.Persistent); for (int i = 0; i < length; ++i) input[i] = (byte)i; BufferID id = ctx.CreateBuffer(8); var writeEvent = ctx.CreateEvent(); ctx.WriteBuffer(id.Slice<byte>(), input, writeEvent); bool flushOk = ctx.Flush(); Assert.IsTrue(flushOk); bool eventOk = ctx.Wait(writeEvent); Assert.IsTrue(eventOk); ctx.DestroyEvent(writeEvent);
// The contents of the input buffer has now been transferred into the buffer allocated by the context.
input.Dispose(); ctx.DestroyBuffer(id); ctx.Dispose();