|
Foundation
|
Persistent staging buffer(s) + immediate context(s) for quick, batchable uploads. More...
#include <ImmediateContext.hpp>
Classes | |
| struct | UploadLane |
Public Member Functions | |
| ImmediateUpload (RHIDevice *device, size_t capacity, RHIDeviceQueueType type=RHIDeviceQueueType::Graphics, size_t buffers=1) | |
| RHICommandList * | Get () const |
| void | Begin () |
| char * | Upload (RHIBuffer *dst, size_t dataSize, size_t dstOffset) |
| char * | Upload (RHITexture *dst, size_t dataSize, RHITextureSubresourceLayer dstLayer={.aspect=RHITextureAspectFlagBits::Color}, RHIOffset2D dstOffset={}, RHIExtent2D dstExtent={}) |
| char * | Upload (RHITexture *dst, size_t dataSize, RHITextureSubresourceLayer dstLayer, RHIOffset3D dstOffset, RHIExtent3D dstExtent) |
| bool | Align (uint32_t alignment) |
| void | End (RHIDeviceFence *completionFence=nullptr) |
| void | End (ImmediateSubmitDesc const &desc) |
| void | WaitIdle () |
Public Attributes | |
| ImmediateContext | ctx |
| RHIDeviceScopedHandle< RHIBuffer > | staging |
| char * | begin |
| char * | ptr |
| char * | end |
Private Member Functions | |
| ImmediateContext & | CurrentContext () |
| ImmediateContext const & | CurrentContext () const |
| RHIBuffer * | CurrentStaging () const |
| char * | CurrentBegin () const |
| char * | CurrentEnd () const |
| size_t & | CurrentSignalValue () |
| void | WaitCurrentLaneReusable () |
| void | SelectCurrentLane () |
Private Attributes | |
| RHIDevice * | mDevice |
| size_t | mLaneCount {1} |
| size_t | mCurrentLane {0} |
| size_t | mNextSignalValue {1} |
| size_t | mLane0SignalValue {0} |
| char * | mLane0Begin {nullptr} |
| char * | mLane0End {nullptr} |
| RHIDeviceScopedHandle< RHIDeviceSemaphore > | mCompletionTimeline |
| Core::Vector< Core::UniquePtr< UploadLane > > | mLanes |
| Core::Vector< RHIDeviceQueue::TimelinePair > | mSubmitSignals |
Persistent staging buffer(s) + immediate context(s) for quick, batchable uploads.
| Foundation::RenderCore::ImmediateUpload::ImmediateUpload | ( | RHIDevice * | device, |
| size_t | capacity, | ||
| RHIDeviceQueueType | type = RHIDeviceQueueType::Graphics, |
||
| size_t | buffers = 1 |
||
| ) |
| void Foundation::RenderCore::ImmediateUpload::Begin | ( | ) |
Resets the upload context for a new series of uploads. This MUST be called before any Upload calls.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
| void Foundation::RenderCore::ImmediateUpload::End | ( | ImmediateSubmitDesc const & | desc | ) |
| void Foundation::RenderCore::ImmediateUpload::End | ( | RHIDeviceFence * | completionFence = nullptr | ) |
Finalizes the upload context, submitting the copy commands.
| completionFence | Optional fence to signal upon completion. |
| RHICommandList * Foundation::RenderCore::ImmediateUpload::Get | ( | ) | const |
|
private |
| char * Foundation::RenderCore::ImmediateUpload::Upload | ( | RHITexture * | dst, |
| size_t | dataSize, | ||
| RHITextureSubresourceLayer | dstLayer, | ||
| RHIOffset3D | dstOffset, | ||
| RHIExtent3D | dstExtent | ||
| ) |
| char * Foundation::RenderCore::ImmediateUpload::Upload | ( | RHITexture * | dst, |
| size_t | dataSize, | ||
| RHITextureSubresourceLayer | dstLayer = {.aspect = RHITextureAspectFlagBits::Color}, |
||
| RHIOffset2D | dstOffset = {}, |
||
| RHIExtent2D | dstExtent = {} |
||
| ) |
|
private |
| void Foundation::RenderCore::ImmediateUpload::WaitIdle | ( | ) |
| char* Foundation::RenderCore::ImmediateUpload::begin |
| ImmediateContext Foundation::RenderCore::ImmediateUpload::ctx |
| char * Foundation::RenderCore::ImmediateUpload::end |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
| char * Foundation::RenderCore::ImmediateUpload::ptr |
| RHIDeviceScopedHandle<RHIBuffer> Foundation::RenderCore::ImmediateUpload::staging |