add UploadAndWait method to ResourceInitializer
parent
a207f404b9
commit
848b1c706c
|
@ -181,6 +181,30 @@ namespace MoonWorks.Graphics
|
|||
/// Uploads all the data corresponding to the created resources.
|
||||
/// </summary>
|
||||
public void Upload()
|
||||
{
|
||||
CopyToTransferBuffer();
|
||||
|
||||
var commandBuffer = Device.AcquireCommandBuffer();
|
||||
RecordUploadCommands(commandBuffer);
|
||||
Device.Submit(commandBuffer);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Uploads and then blocks until the upload is finished.
|
||||
/// This is useful for keeping memory usage down during threaded upload.
|
||||
/// </summary>
|
||||
public void UploadAndWait()
|
||||
{
|
||||
CopyToTransferBuffer();
|
||||
|
||||
var commandBuffer = Device.AcquireCommandBuffer();
|
||||
RecordUploadCommands(commandBuffer);
|
||||
var fence = Device.SubmitAndAcquireFence(commandBuffer);
|
||||
Device.WaitForFences(fence);
|
||||
Device.ReleaseFence(fence);
|
||||
}
|
||||
|
||||
private void CopyToTransferBuffer()
|
||||
{
|
||||
if (TransferBuffer == null || TransferBuffer.Size < dataSize)
|
||||
{
|
||||
|
@ -190,9 +214,10 @@ namespace MoonWorks.Graphics
|
|||
|
||||
var dataSpan = new Span<byte>(data, (int) dataSize);
|
||||
TransferBuffer.SetData(dataSpan, SetDataOptions.Discard);
|
||||
}
|
||||
|
||||
var commandBuffer = Device.AcquireCommandBuffer();
|
||||
|
||||
private void RecordUploadCommands(CommandBuffer commandBuffer)
|
||||
{
|
||||
commandBuffer.BeginCopyPass();
|
||||
|
||||
foreach (var (gpuBuffer, offset, size) in BufferUploads)
|
||||
|
@ -222,7 +247,6 @@ namespace MoonWorks.Graphics
|
|||
}
|
||||
|
||||
commandBuffer.EndCopyPass();
|
||||
Device.Submit(commandBuffer);
|
||||
|
||||
BufferUploads.Clear();
|
||||
TextureUploads.Clear();
|
||||
|
|
Loading…
Reference in New Issue