Struct SparseUploader
Provides utility methods that you can use to upload data into GPU memory.
Namespace: Unity.Rendering
Syntax
public struct SparseUploader : IDisposable
Remarks
To add uploads from jobs, use a ThreadedSparseUploader which you can create using SparseUploader.Begin. If you add uploads from jobs, the ThreadedSparseUploader submits them to the GPU in a series of compute shader dispatches when you call SparseUploader.EndAndCommit.
Constructors
SparseUploader(GraphicsBuffer, Int32)
Constructs a new sparse uploader with the specified buffer as the target.
Declaration
public SparseUploader(GraphicsBuffer destinationBuffer, int bufferChunkSize = 16777216)
Parameters
Type | Name | Description |
---|---|---|
GraphicsBuffer | destinationBuffer | The target buffer to write uploads into. |
Int32 | bufferChunkSize | The upload buffer chunk size. |
Methods
Begin(Int32, Int32, Int32)
Begins a new upload frame and returns a new ThreadedSparseUploader that is valid until the next call to SparseUploader.EndAndCommit.
Declaration
public ThreadedSparseUploader Begin(int maxDataSizeInBytes, int biggestDataUpload, int maxOperationCount)
Parameters
Type | Name | Description |
---|---|---|
Int32 | maxDataSizeInBytes | An upper bound of total data size that you want to upload this frame. |
Int32 | biggestDataUpload | The size of the largest upload operation that will occur. |
Int32 | maxOperationCount | An upper bound of the total number of upload operations that will occur this frame. |
Returns
Type | Description |
---|---|
ThreadedSparseUploader | Returns a new ThreadedSparseUploader that must be passed to SparseUploader.EndAndCommit later. |
Remarks
You must follow this method with a call to SparseUploader.EndAndCommit later in the frame. You must also pass the returned value from a Begin method to the next SparseUploader.EndAndCommit.
ComputeStats()
Calculates statistics about the current and previous frame uploads.
Declaration
public SparseUploaderStats ComputeStats()
Returns
Type | Description |
---|---|
SparseUploaderStats | Returns a new statistics struct that contains information about the frame uploads. |
Dispose()
Disposes of the SparseUploader.
Declaration
public void Dispose()
EndAndCommit(ThreadedSparseUploader)
Ends an upload frame and dispatches any upload operations added to the passed in ThreadedSparseUploader.
Declaration
public void EndAndCommit(ThreadedSparseUploader tsu)
Parameters
Type | Name | Description |
---|---|---|
ThreadedSparseUploader | tsu | The ThreadedSparseUploader to consume and process upload dispatches for. You must have created this with a call to SparseUploader.Begin. |
FrameCleanup()
Cleans up internal data and recovers buffers into the free buffer pool.
Declaration
public void FrameCleanup()
Remarks
You should call this once per frame.
ReplaceBuffer(GraphicsBuffer, Boolean)
Replaces the destination GPU buffer with a new one.
Declaration
public void ReplaceBuffer(GraphicsBuffer buffer, bool copyFromPrevious = false)
Parameters
Type | Name | Description |
---|---|---|
GraphicsBuffer | buffer | The new buffer to replace the old one with. |
Boolean | copyFromPrevious | Indicates whether to copy the contents of the old buffer to the new buffer. |
Remarks
If the new buffer is non-null and copyFromPrevious is true, this method dispatches a copy operation that copies data from the previous buffer to the new one.
This is useful when the persistent storage buffer needs to grow.