UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FGPUWorkGroupLoadBalancer Class Reference

#include <GPUWorkGroupLoadBalancer.h>

+ Inheritance diagram for FGPUWorkGroupLoadBalancer:

Classes

struct  FPackedItem
 
struct  FWorkGroupInfo
 

Public Member Functions

FWorkGroupInfo PackWorkGroupInfo (uint32 FirstItem, uint32 NumItems, uint32 Payload, uint32 CarryOverStartOffset, uint64 WorkGroupWorkBoundary)
 
FPackedItem PackItem (bool bHasCarryOver, uint32 NumChildren, uint32 Payload, uint32 BatchPrefixSum)
 
void ReserveStorage (int32 NumBatches, int32 NumItems, int32 NumWork)
 
template<typename PayloadGeneratorType >
void Add (PayloadGeneratorType &PayloadGenerator, uint32 NumChildren)
 
bool IsEmpty () const
 
template<typename PayloadGeneratorType >
void FinalizeBatches (PayloadGeneratorType &PayloadGenerator)
 
void GetParametersAsync (FRDGBuilder &GraphBuilder, FShaderParameters &OutShaderParameters)
 
void FinalizeParametersAsync (FShaderParameters &OutShaderParameters)
 
FIntVector GetWrappedCsGroupCount () const
 
uint32 GetTotalChildren () const
 

Static Public Member Functions

static void SetShaderDefines (FShaderCompilerEnvironment &OutEnvironment)
 

Static Public Attributes

static constexpr uint32 ThreadGroupSizeLog2 = 6U
 
static constexpr uint32 ThreadGroupSize = 1u << ThreadGroupSizeLog2
 
static constexpr uint32 PrefixBits = ThreadGroupSizeLog2
 
static constexpr uint32 PrefixBitMask = (1U << PrefixBits) - 1U
 
static constexpr uint32 NumItemBits = PrefixBits
 
static constexpr uint32 NumItemMask = (1U << NumItemBits) - 1U
 
static constexpr uint32 PayLoadBits = 32u - (1 + NumItemBits + PrefixBits)
 

Protected Attributes

TArray< FWorkGroupInfo, SceneRenderingAllocatorWorkGroupInfos
 
TArray< FPackedItem, SceneRenderingAllocatorItems
 
uint32 CurrentWorkGroupPrefixSum = 0u
 
uint32 CurrentWorkGroupNumItems = 0U
 
uint32 CurrentWorkGroupFirstItem = 0U
 
uint32 TotalChildren = 0U
 
uint32 CurrentWorkGroupCarryOver = 0u
 
uint64 CurrentWorkGroupWorkBoundary = 0ull
 

Member Function Documentation

◆ Add()

void FGPUWorkGroupLoadBalancer::Add ( PayloadGeneratorType PayloadGenerator,
uint32  NumChildren 
)
inline

Add parent work item and child count to be processed.

◆ FinalizeBatches()

void FGPUWorkGroupLoadBalancer::FinalizeBatches ( PayloadGeneratorType PayloadGenerator)
inline

Call when finished adding work items to the balancer to flush any in-progress batches.

◆ FinalizeParametersAsync()

void FGPUWorkGroupLoadBalancer::FinalizeParametersAsync ( FShaderParameters OutShaderParameters)

◆ GetParametersAsync()

void FGPUWorkGroupLoadBalancer::GetParametersAsync ( FRDGBuilder GraphBuilder,
FShaderParameters OutShaderParameters 
)

◆ GetTotalChildren()

uint32 FGPUWorkGroupLoadBalancer::GetTotalChildren ( ) const
inline

◆ GetWrappedCsGroupCount()

FIntVector FGPUWorkGroupLoadBalancer::GetWrappedCsGroupCount ( ) const

Returns a 3D group count that is large enough to generate one group per batch using FComputeShaderUtils::GetGroupCountWrapped. Use GetUnWrappedDispatchGroupId in the shader to retrieve the linear index.

◆ IsEmpty()

bool FGPUWorkGroupLoadBalancer::IsEmpty ( ) const
inline

◆ PackItem()

FPackedItem FGPUWorkGroupLoadBalancer::PackItem ( bool  bHasCarryOver,
uint32  NumChildren,
uint32  Payload,
uint32  BatchPrefixSum 
)
inline

◆ PackWorkGroupInfo()

FWorkGroupInfo FGPUWorkGroupLoadBalancer::PackWorkGroupInfo ( uint32  FirstItem,
uint32  NumItems,
uint32  Payload,
uint32  CarryOverStartOffset,
uint64  WorkGroupWorkBoundary 
)
inline

◆ ReserveStorage()

void FGPUWorkGroupLoadBalancer::ReserveStorage ( int32  NumBatches,
int32  NumItems,
int32  NumWork 
)
inline

◆ SetShaderDefines()

void FGPUWorkGroupLoadBalancer::SetShaderDefines ( FShaderCompilerEnvironment OutEnvironment)
static

Member Data Documentation

◆ CurrentWorkGroupCarryOver

uint32 FGPUWorkGroupLoadBalancer::CurrentWorkGroupCarryOver = 0u
protected

◆ CurrentWorkGroupFirstItem

uint32 FGPUWorkGroupLoadBalancer::CurrentWorkGroupFirstItem = 0U
protected

◆ CurrentWorkGroupNumItems

uint32 FGPUWorkGroupLoadBalancer::CurrentWorkGroupNumItems = 0U
protected

◆ CurrentWorkGroupPrefixSum

uint32 FGPUWorkGroupLoadBalancer::CurrentWorkGroupPrefixSum = 0u
protected

◆ CurrentWorkGroupWorkBoundary

uint64 FGPUWorkGroupLoadBalancer::CurrentWorkGroupWorkBoundary = 0ull
protected

◆ Items

TArray<FPackedItem, SceneRenderingAllocator> FGPUWorkGroupLoadBalancer::Items
protected

◆ NumItemBits

constexpr uint32 FGPUWorkGroupLoadBalancer::NumItemBits = PrefixBits
staticconstexpr

◆ NumItemMask

constexpr uint32 FGPUWorkGroupLoadBalancer::NumItemMask = (1U << NumItemBits) - 1U
staticconstexpr

◆ PayLoadBits

constexpr uint32 FGPUWorkGroupLoadBalancer::PayLoadBits = 32u - (1 + NumItemBits + PrefixBits)
staticconstexpr

◆ PrefixBitMask

constexpr uint32 FGPUWorkGroupLoadBalancer::PrefixBitMask = (1U << PrefixBits) - 1U
staticconstexpr

◆ PrefixBits

constexpr uint32 FGPUWorkGroupLoadBalancer::PrefixBits = ThreadGroupSizeLog2
staticconstexpr

◆ ThreadGroupSize

constexpr uint32 FGPUWorkGroupLoadBalancer::ThreadGroupSize = 1u << ThreadGroupSizeLog2
staticconstexpr

◆ ThreadGroupSizeLog2

constexpr uint32 FGPUWorkGroupLoadBalancer::ThreadGroupSizeLog2 = 6U
staticconstexpr

◆ TotalChildren

uint32 FGPUWorkGroupLoadBalancer::TotalChildren = 0U
protected

◆ WorkGroupInfos

TArray<FWorkGroupInfo, SceneRenderingAllocator> FGPUWorkGroupLoadBalancer::WorkGroupInfos
protected

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