Foundation
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
Foundation::RenderCore::ImmediateReadback Struct Reference

Single persistent staging buffer + immediate context for quick, batchable readbacks. More...

#include <ImmediateContext.hpp>

Public Member Functions

 ImmediateReadback (RHIDevice *device, size_t capacity, RHIDeviceQueueType type=RHIDeviceQueueType::Graphics)
 
void Begin ()
 
charReadback (RHIBuffer *src, size_t dataSize, size_t srcOffset=0)
 
charReadback (RHITexture *src, size_t dataSize, RHITextureSubresourceLayer srcLayer={.aspect=RHITextureAspectFlagBits::Color}, RHIOffset2D srcOffset={}, RHIExtent2D srcExtent={})
 
charReadback (RHITexture *src, size_t dataSize, RHITextureSubresourceLayer srcLayer, RHIOffset3D srcOffset, RHIExtent3D srcExtent)
 
bool Align (uint32_t alignment)
 
void End (RHIDeviceFence *completionFence=nullptr)
 
void End (ImmediateSubmitDesc const &desc)
 
void WaitIdle ()
 

Public Attributes

ImmediateContext ctx
 
RHIDeviceScopedHandle< RHIBufferstaging
 
charbegin
 
charptr
 
charend
 

Detailed Description

Single persistent staging buffer + immediate context for quick, batchable readbacks.

Constructor & Destructor Documentation

◆ ImmediateReadback()

Foundation::RenderCore::ImmediateReadback::ImmediateReadback ( RHIDevice device,
size_t  capacity,
RHIDeviceQueueType  type = RHIDeviceQueueType::Graphics 
)
inline

Member Function Documentation

◆ Align()

bool Foundation::RenderCore::ImmediateReadback::Align ( uint32_t  alignment)

◆ Begin()

void Foundation::RenderCore::ImmediateReadback::Begin ( )

Resets the readback context for a new series of readbacks. This MUST be called before any Readback calls.

◆ End() [1/2]

void Foundation::RenderCore::ImmediateReadback::End ( ImmediateSubmitDesc const desc)

◆ End() [2/2]

void Foundation::RenderCore::ImmediateReadback::End ( RHIDeviceFence completionFence = nullptr)

Finalizes the readback context, submitting the copy commands.

Parameters
completionFenceOptional fence to signal upon completion.

◆ Readback() [1/3]

char * Foundation::RenderCore::ImmediateReadback::Readback ( RHIBuffer src,
size_t  dataSize,
size_t  srcOffset = 0 
)

Reads data from src buffer with a staging copy.

Returns
nullptr when readback fails (out of staging memory). At which point, a flush with End() -> WaitIdle() -> Begin() is required. A mapped, readable pointer to the staging memory where the buffer data will be available after End() and WaitIdle().

◆ Readback() [2/3]

char * Foundation::RenderCore::ImmediateReadback::Readback ( RHITexture src,
size_t  dataSize,
RHITextureSubresourceLayer  srcLayer,
RHIOffset3D  srcOffset,
RHIExtent3D  srcExtent 
)

◆ Readback() [3/3]

char * Foundation::RenderCore::ImmediateReadback::Readback ( RHITexture src,
size_t  dataSize,
RHITextureSubresourceLayer  srcLayer = {.aspect = RHITextureAspectFlagBits::Color},
RHIOffset2D  srcOffset = {},
RHIExtent2D  srcExtent = {} 
)

Reads data from src texture with a staging copy.

Returns
nullptr when readback fails (out of staging memory). At which point, a flush with End() -> WaitIdle() -> Begin() is required. A mapped, readable pointer to the staging memory where the texture data will be available after End() and WaitIdle().

◆ WaitIdle()

void Foundation::RenderCore::ImmediateReadback::WaitIdle ( )

Member Data Documentation

◆ begin

char* Foundation::RenderCore::ImmediateReadback::begin

◆ ctx

ImmediateContext Foundation::RenderCore::ImmediateReadback::ctx

◆ end

char * Foundation::RenderCore::ImmediateReadback::end

◆ ptr

char * Foundation::RenderCore::ImmediateReadback::ptr

◆ staging

RHIDeviceScopedHandle<RHIBuffer> Foundation::RenderCore::ImmediateReadback::staging

The documentation for this struct was generated from the following files: