Diligent Engine
 
Loading...
Searching...
No Matches
Diligent::ScheduleTextureUpdateInfo Struct Reference

Structure describing a texture update operation to be scheduled by IGPUUploadManager::ScheduleTextureUpdate(). More...

#include <GPUUploadManager.h>

Public Attributes

IDeviceContextpContext = nullptr
 
ITexturepDstTexture = nullptr
 
TEXTURE_FORMAT Format = TEX_FORMAT_UNKNOWN
 Destination texture format, used when pDstTexture is null.
 
RESOURCE_STATE_TRANSITION_MODE DstTextureTransitionMode = RESOURCE_STATE_TRANSITION_MODE_TRANSITION
 
Uint32 DstMipLevel = 0
 
Uint32 DstSlice = 0
 
Box DstBox = {}
 Destination box in the texture where the update will be applied.
 
const void * pSrcData = nullptr
 
Uint64 Stride = 0
 Source data stride in bytes.
 
Uint64 DepthStride = 0
 Source data depth stride in bytes.
 
WriteStagingTextureDataCallbackType WriteDataCallback = nullptr
 
void * pWriteDataCallbackUserData = nullptr
 Optional pointer to user data that will be passed to the WriteDataCallback.
 
CopyStagingTextureCallbackType CopyTexture = nullptr
 
CopyStagingD3D11TextureCallbackType CopyD3D11Texture = nullptr
 
void * pCopyTextureData = nullptr
 Optional pointer to user data that will be passed to the CopyTexture callback.
 
GPUTextureUploadEnqueuedCallbackType UploadEnqueued = nullptr
 
void * pUploadEnqueuedData = nullptr
 Optional pointer to user data that will be passed to the UploadEnqueued callback.
 

Detailed Description

Structure describing a texture update operation to be scheduled by IGPUUploadManager::ScheduleTextureUpdate().

Member Data Documentation

◆ CopyD3D11Texture

CopyStagingD3D11TextureCallbackType Diligent::ScheduleTextureUpdateInfo::CopyD3D11Texture = nullptr

Optional Direct3D11-specific callback to perform the copy operation. This callback is only called for Direct3D11 backend.

◆ CopyTexture

CopyStagingTextureCallbackType Diligent::ScheduleTextureUpdateInfo::CopyTexture = nullptr

Optional callback to perform the copy operation. If this parameter is null, the manager will perform the copy from the source data to the destination texture using its internal staging buffer and copy command. If the callback is provided, it must perform the copy operation itself. The manager will pass the necessary parameters to the callback.

Note
This callback is used on all graphics backends, except Direct3D11 because it does not support copying from a buffer to a texture. For Direct3D11, the CopyD3D11Texture callback is used instead, which provides a pointer to the staging texture

◆ DstMipLevel

Uint32 Diligent::ScheduleTextureUpdateInfo::DstMipLevel = 0

Destination mip level in the texture where the update will be applied. This parameter is ignored if CopyTexture callback is provided.

◆ DstSlice

Uint32 Diligent::ScheduleTextureUpdateInfo::DstSlice = 0

Destination array slice in the texture where the update will be applied. This parameter is ignored if CopyTexture callback is provided.

◆ DstTextureTransitionMode

RESOURCE_STATE_TRANSITION_MODE Diligent::ScheduleTextureUpdateInfo::DstTextureTransitionMode = RESOURCE_STATE_TRANSITION_MODE_TRANSITION

State transition mode for the destination texture. This parameter is ignored if CopyTexture/CopyD3D11Texture callback is provided, and the callback is expected to perform any necessary state transitions itself.

◆ pContext

IDeviceContext* Diligent::ScheduleTextureUpdateInfo::pContext = nullptr

If calling ScheduleTextureUpdate() from the render thread, a pointer to the device context. If calling ScheduleTextureUpdate() from a worker thread, this parameter must be null.

◆ pDstTexture

ITexture* Diligent::ScheduleTextureUpdateInfo::pDstTexture = nullptr

Pointer to the destination texture to update. If CopyTexture callback is provided, the manager will keep a reference to the texture until the copy operation is scheduled by the callback. Otherwise, this texture will be used as the destination for the copy operation

◆ pSrcData

const void* Diligent::ScheduleTextureUpdateInfo::pSrcData = nullptr

Pointer to the source data to copy to the destination texture. The manager makes an internal copy of the source data, so the memory pointed to by this parameter can be safely released or reused after the method returns. If WriteDataCallback callback is provided, this parameter will be ignored, and the callback must write the source data to the staging texture when requested by the manager.

◆ UploadEnqueued

GPUTextureUploadEnqueuedCallbackType Diligent::ScheduleTextureUpdateInfo::UploadEnqueued = nullptr

Optional callback to be called when the GPU copy operation is scheduled for execution. If CopyTexture is provided, the callback will not be called, and the CopyTexture callback is expected to perform any necessary follow-up actions after scheduling the copy operation.

◆ WriteDataCallback

WriteStagingTextureDataCallbackType Diligent::ScheduleTextureUpdateInfo::WriteDataCallback = nullptr

Optional callback to write data to a staging texture. If provided, the pSrcData parameter is ignored, and the manager will call the callback with a pointer to the staging texture memory when it needs to write data to a staging texture page. The callback will be called from ScheduleTextureUpdate().