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.
|
/// Uploads all the data corresponding to the created resources.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Upload()
|
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)
|
if (TransferBuffer == null || TransferBuffer.Size < dataSize)
|
||||||
{
|
{
|
||||||
|
@ -190,9 +214,10 @@ namespace MoonWorks.Graphics
|
||||||
|
|
||||||
var dataSpan = new Span<byte>(data, (int) dataSize);
|
var dataSpan = new Span<byte>(data, (int) dataSize);
|
||||||
TransferBuffer.SetData(dataSpan, SetDataOptions.Discard);
|
TransferBuffer.SetData(dataSpan, SetDataOptions.Discard);
|
||||||
|
}
|
||||||
|
|
||||||
var commandBuffer = Device.AcquireCommandBuffer();
|
private void RecordUploadCommands(CommandBuffer commandBuffer)
|
||||||
|
{
|
||||||
commandBuffer.BeginCopyPass();
|
commandBuffer.BeginCopyPass();
|
||||||
|
|
||||||
foreach (var (gpuBuffer, offset, size) in BufferUploads)
|
foreach (var (gpuBuffer, offset, size) in BufferUploads)
|
||||||
|
@ -222,7 +247,6 @@ namespace MoonWorks.Graphics
|
||||||
}
|
}
|
||||||
|
|
||||||
commandBuffer.EndCopyPass();
|
commandBuffer.EndCopyPass();
|
||||||
Device.Submit(commandBuffer);
|
|
||||||
|
|
||||||
BufferUploads.Clear();
|
BufferUploads.Clear();
|
||||||
TextureUploads.Clear();
|
TextureUploads.Clear();
|
||||||
|
|
Loading…
Reference in New Issue