XII Release 0.1.0
Loading...
Searching...
No Matches
xiiGeometryResidencyManager Class Reference

#include <GeometryResidency.h>

Classes

struct  UploadHandles

Static Public Member Functions

static xiiResult Configure (const xiiGeometryResidencyDescription &description)
 Stores startup configuration or reapplies it while no geometry handles are active.
static const xiiGeometryResidencyDescription & GetConfiguration ()
static bool IsSubsystemInitialized ()
static bool IsInitialized ()
static xiiResult EnsureInitialized ()
static xiiGeometryHandle RegisterGeometry (const xiiGeometryDescription &description)
static void UnregisterGeometry (xiiGeometryHandle handle, xiiUInt64 uiFrameIndex)
static xiiGeometryHandle AcquireMeshGeometry (const xiiMeshResourceHandle &hMesh)
static void ReleaseMeshGeometry (xiiGeometryHandle hGeometry, xiiUInt64 uiFrameIndex)
static void RequestResidency (xiiGeometryHandle handle, xiiUInt32 uiMinimumLod, xiiUInt64 uiFrameIndex, xiiUInt32 uiVisibilityPriority=0U)
static void Touch (xiiGeometryHandle handle, xiiUInt64 uiFrameIndex)
static void ProcessStreaming (xiiUInt64 uiFrameIndex, xiiUInt64 uiCompletedFrame, xiiUInt64 uiUploadBudgetBytes)
static bool IsValid (xiiGeometryHandle handle)
static xiiEnum< xiiGeometryResidencyState > GetState (xiiGeometryHandle handle)
static const xiiGpuGeometryRecord * GetGpuRecord (xiiGeometryHandle handle)
static xiiResult GetPrimitiveRangeMeshletCounts (xiiGeometryHandle handle, xiiUInt32 uiFirstPrimitive, xiiUInt32 uiPrimitiveCount, xiiArrayPtr< xiiUInt32 > out_counts)
static xiiSharedPtr< xiiGALBuffer > GetMetadataBuffer ()
static xiiUInt32 GetMetadataBaseIndex (xiiUInt64 frameIndex)
 Shader-visible first element in the shared metadata frame slice.
static xiiSharedPtr< xiiGALBuffer > GetMeshletMetadataBuffer ()
static xiiGeometryResidencyStats GetStats ()
static UploadHandles AddUploadPass (xiiRenderGraph &graph, xiiUInt64 uiFrameIndex)

Detailed Description

Static subsystem facade for the stable GPU geometry table and mesh LOD residency service.

Allocator-backed CPU state is created during core startup and GPU resources are created during high-level startup. Callers never construct, own, cache, or destroy a manager object.

Member Function Documentation

◆ AcquireMeshGeometry()

xiiGeometryHandle xiiGeometryResidencyManager::AcquireMeshGeometry ( const xiiMeshResourceHandle & hMesh)
staticnodiscard

Acquires a shared residency record for an engine mesh resource. Multiple scene objects using the same content revision receive the same generation-checked geometry handle. Reloading publishes a new record; outstanding references retain the previous revision. Mesh LODs packed into one buffer are translated into reflected meshlet ranges by the subsystem. Call on the render thread, as with other residency mutations. Returns an invalid handle for unloaded data.

◆ EnsureInitialized()

xiiResult xiiGeometryResidencyManager::EnsureInitialized ( )
staticnodiscard

Allocates shared device buffers on first consumption. Concurrent initialization requests share one completed allocation; subsequent residency mutations use the render-frame scope.

◆ GetPrimitiveRangeMeshletCounts()

xiiResult xiiGeometryResidencyManager::GetPrimitiveRangeMeshletCounts ( xiiGeometryHandle handle,
xiiUInt32 uiFirstPrimitive,
xiiUInt32 uiPrimitiveCount,
xiiArrayPtr< xiiUInt32 > out_counts )
staticnodiscard

Counts meshlets overlapping a primitive range in each authored LOD, including unloaded LODs. A zero primitive count selects the entire LOD, matching GPU visibility. The output must have s_uiMaxLods entries and is cleared on failure. Reads source metadata in O(total meshlets); cache the result until the geometry handle or primitive range changes. Rejects reloaded source buffers belonging to a different revision. Call on the render thread.

◆ ReleaseMeshGeometry()

void xiiGeometryResidencyManager::ReleaseMeshGeometry ( xiiGeometryHandle hGeometry,
xiiUInt64 uiFrameIndex )
static

Releases the exact revision acquired through AcquireMeshGeometry(). After its last reference, the record and its GPU allocations remain valid until its last-use frame has completed.

◆ RequestResidency()

void xiiGeometryResidencyManager::RequestResidency ( xiiGeometryHandle handle,
xiiUInt32 uiMinimumLod,
xiiUInt64 uiFrameIndex,
xiiUInt32 uiVisibilityPriority = 0U )
static

Requests the finest required LOD. Concurrent view requests are merged toward the lowest LOD index and retain the strongest visibility priority until the missing range is resident.


The documentation for this class was generated from the following files:
  • /home/runner/work/XII/XII/Source/Engine/GraphicsCore/Geometry/GeometryResidency.h
  • /home/runner/work/XII/XII/Source/Engine/GraphicsCore/Geometry/Implementation/GeometryResidency.cpp