Foundation
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
GPUSceneImpl Struct Reference

All implementation state and machinery owned by GPUScene. More...

Classes

struct  GeometryResidency
 
struct  OpenTables
 
struct  PendingBufferUpload
 A plain device-local buffer copy; the payload is owned so the caller's source can go. More...
 
struct  PendingGeometryUpload
 A geometry resource reserved by Upload and finalized by Join / Poll. More...
 
struct  PendingTextureUpload
 
struct  TextureSlot
 Per-bindless-slot residency backing TextureHandle (one table per pool, since the 2D/3D pools have independent slot spaces). More...
 

Public Types

enum class  ResourceState : uint8_t { Queued , Uploading , Ready , Failed }
 
using Result = GPUScene::Result
 
using UpdateResult = GPUScene::UpdateResult
 
using GPUSceneTables = GPUScene::GPUSceneTables
 
using MemoryStat = GPUScene::MemoryStat
 
using TLASBuildResult = GPUScene::TLASBuildResult
 

Public Member Functions

Vector< TextureSlot > & TextureSlots (bool is3D)
 
Vector< TextureSlot > constTextureSlots (bool is3D) const
 
BindlessPoolTexturePool (bool is3D)
 
void FreeTextureSlot (bool is3D, uint32_t slot)
 
BindlessPoolSelectTexturePool (RHITextureDimension viewDimension)
 
BindlessPool constSelectTexturePool (RHITextureDimension viewDimension) const
 
uint32_t AcquireMeshBLASSlot ()
 
uint32_t AcquireCurveBLASSlot ()
 
GeometryResidencyResolveGeometry (GeometryHandle handle)
 
GeometryResidency constResolveGeometry (GeometryHandle handle) const
 
uint32_t AcquireGeometrySlot ()
 
void FreeGeometry (uint32_t slot)
 
void BuildBLAS (ImmediateContext *ctx, Span< const GSMesh > meshes, Span< uint32_t > outBLASIndices, ImmediateSubmitDesc const &firstSubmitDesc={})
 
void BuildCurveBLAS (ImmediateContext *ctx, Span< const GSCurveSet > curves, Span< uint32_t > outBLASIndices, ImmediateSubmitDesc const &firstSubmitDesc={})
 
bool DrainUploadBatch ()
 Drains all currently-queued uploads into one batch and processes it (returns false if nothing was queued).
 
void UploadWorker ()
 Persistent worker entry point: drains batches, sleeping while the queues are empty.
 
template<typename T >
void EnqueueUpload (MPMCQueue< T > &queue, T &&item)
 Enqueues one item, bumping the outstanding count and waking the worker.
 
Result ReserveMesh (FSerializedMesh const &src, GSMesh &outHeader, uint32_t &outOffset)
 Reserves final resident memory and computes the shader header (no staging yet).
 
Result ReserveCurve (FSerializedCurve const &src, GSCurveSet &outHeader, uint32_t &outOffset)
 
size_t StageMesh (ImmediateUpload *ctx, FSerializedMesh const &src, GSMesh const &header, uint32_t offset, Vector< GPUSceneBlobWrite > &outWrites)
 Stages a reserved resource into the upload context: writes the shader header inline and emits blob-decode jobs for its payloads.
 
size_t StageCurve (ImmediateUpload *ctx, FSerializedCurve const &src, GSCurveSet const &header, uint32_t offset, Vector< GPUSceneBlobWrite > &outWrites)
 
size_t StageTextureSubresource (ImmediateUpload *ctx, FSerializedTexture const &source, RHITexture *texture, uint32_t layer, uint32_t mip, Vector< GPUSceneBlobWrite > &outWrites)
 Stages one texture subresource (emits a blob-decode job); 0 when the lane is full.
 
void ProcessUploads (Vector< PendingGeometryUpload > &geometry, Vector< PendingTextureUpload > &textures, Vector< PendingBufferUpload > &buffers)
 Drains the pending upload queues: best-fit staging packing, threaded blob decode, transfer submission, BLAS build, residency patching, Ready marking.
 
void FlushDirectGeometryUpload ()
 
Pair< GSInstance *, uint32_tAllocateInstance (uint32_t count)
 
Pair< GSMaterial *, uint32_tAllocateMaterial (uint32_t count)
 
Pair< GSLight *, uint32_tAllocateLight (uint32_t count)
 
Pair< GSAlias *, uint32_tAllocateLightAliasTable (uint32_t count)
 
uint32_t CountLiveInstances () const
 
uint32_t CountTLASInstances () const
 
void EnsureTLASCapacity (uint32_t totalInstances)
 
 GPUSceneImpl (GPUScene &owner, RHIDevice *device, Allocator *allocator, GPUSceneDesc const &desc, AllocatorStack *frameScratch)
 
 ~GPUSceneImpl ()
 
Result Upload (FBlobDeserializer *blobs, FSerializedMesh const &source, GeometryHandle &outHandle)
 
Result Upload (FBlobDeserializer *blobs, FSerializedCurve const &source, GeometryHandle &outHandle)
 
Result UploadDynamic (FBlobDeserializer *blobs, FSerializedMesh const &source, GeometryHandle &outHandle)
 
Result Upload (FBlobDeserializer *blobs, FSerializedTexture const &source, TextureHandle &outTexture, const char *debugName=nullptr, bool pinned=false)
 
Result Upload (FTexture const &source, TextureHandle &outTexture, const char *debugName=nullptr, bool pinned=false)
 
Result Upload (RHIBuffer *dst, Span< const unsigned char > data, uint32_t dstOffset=0)
 
Result Query (GeometryHandle handle) const
 
Result Query (TextureHandle texture) const
 
void Join ()
 
Result Poll ()
 
Result UploadViewLUTs (FTexture const &sdr, FTexture const &hdr)
 
Result UploadEnvMap (FTexture const &source)
 
GPUSceneTables BeginScene (uint32_t instanceCount, uint32_t materialCount, uint32_t lightCount)
 
UpdateResult EndScene (GPUSceneTables &tables)
 
void DbgGetMemoryStatistics (Vector< MemoryStat > &outStats) const
 
String DbgGetBufferStatistics () const
 
TLASBuildResult BuildTLAS (RHICommandList *cmd, bool update)
 
void Collect ()
 
void Reset ()
 
uint32_t DynamicRegionBase (GeometryResidency const &g, uint32_t slot) const
 
void WriteDynamicHeader (GeometryResidency &g, uint32_t slot)
 
void AllocateDynamicBLAS (GeometryResidency &g)
 
bool HasDynamicGeometry () const
 
void BeginDynamicGeometryUpdate ()
 
Span< std::byte > UpdateDynamicGeometry (GeometryHandle handle)
 
void EndDynamicGeometryUpdate ()
 
void BuildBLAS (RHICommandList *cmd)
 

Public Attributes

GPUSceneowner
 
RHIDevicemDevice {nullptr}
 
AllocatormAllocator {GLOBAL_ALLOC}
 
AllocatorStackmFrameScratch {nullptr}
 
charmPrimitiveMapped {nullptr}
 
bool mDirectGeometryUpload {false}
 
RHIDeviceScopedHandle< RHIVirtualAllocatormPrimitiveAlloc
 
RHIDeviceScopedHandle< RHIBuffermDynamicPrimitiveBuffer
 
charmDynamicPrimitiveMapped {nullptr}
 
RHIDeviceScopedHandle< RHIVirtualAllocatormDynamicPrimitiveAlloc
 
uint32_t mDynamicFrameCount {0}
 
uint32_t mDynamicFrameSlot {0}
 
bool mDynamicUpdateOpen {false}
 
uint32_t mDynamicRebuildCadence {64}
 
uint32_t mLastRefitCount {0}
 
uint32_t mLastRebuildCount {0}
 
Vector< uint32_tmDynamicGeometrySlots
 
uint32_t mMeshletGlobalCounter {0}
 
UploadGPURingBuffer< GSInstancemInstanceBuffer
 
UploadGPURingBuffer< GSMaterialmMaterialBuffer
 
UploadGPURingBuffer< GSLightmLightBuffer
 
UploadGPURingBuffer< GSAliasmLightAliasTableBuffer
 
BindlessPool mTexture2DPool
 
BindlessPool mTexture3DPool
 
Vector< TextureSlotmTexture2DSlots
 
Vector< TextureSlotmTexture3DSlots
 
Vector< RHIDeviceScopedHandle< RHIAccelerationStructure > > mBLASes
 
Vector< RHIDeviceScopedHandle< RHIBuffer > > mBLASBuffers
 
Vector< uint32_tmFreeBLASSlots
 
Vector< RHIDeviceScopedHandle< RHIAccelerationStructure > > mCurveBLASes
 
Vector< RHIDeviceScopedHandle< RHIBuffer > > mCurveBLASBuffers
 
Vector< uint32_tmFreeCurveBLASSlots
 
RHIDeviceScopedHandle< RHIBuffermCurveAABBBuffer
 
charmCurveAABBMapped {nullptr}
 
RHIDeviceScopedHandle< RHIVirtualAllocatormCurveAABBAlloc
 
Vector< GeometryResidencymGeometry
 
Vector< uint32_tmFreeGeometrySlots
 
MPMCQueue< PendingGeometryUploadmGeometryQueue
 
MPMCQueue< PendingTextureUploadmTextureQueue
 
MPMCQueue< PendingBufferUploadmBufferQueue
 
Thread mUploadThread
 
Mutex mWorkMutex
 
CondVar mWorkCV
 
CondVar mDoneCV
 
bool mHasWork {false}
 
bool mStop {false}
 
bool mWorkerStarted {false}
 
Atomic< size_tmOutstanding {0}
 
Atomic< boolmUploadFailed {false}
 
Mutex mResidencyMutex
 
struct GPUSceneImpl::OpenTables mOpenTables
 
Vector< InstanceDescmInstanceScratch
 
uint32_t mTLASInstanceStride {0}
 
RHIDeviceScopedHandle< RHIBuffermTLASBuffer
 
RHIDeviceScopedHandle< RHIBuffermScratchBufferTLAS
 
UploadGPURingBuffer< charmTLASInstances
 
RHIDeviceScopedHandle< RHIBuffermLightGeometryBuffer
 
RHIDeviceScopedHandle< RHIAccelerationStructuremRectBLAS
 
RHIDeviceScopedHandle< RHIAccelerationStructuremDiskBLAS
 
RHIDeviceScopedHandle< RHIBuffermLightBLASBuffer
 

Detailed Description

All implementation state and machinery owned by GPUScene.

Note
Lives entirely in GPUScene.cpp via GPUScene::mImpl. The committed-snapshot tables, the LUT/env bindless indices and the plain primitive/TLAS/sobol/default buffer handles remain direct members of the facade (so the hot read getters stay inline); this struct reaches them through owner.

Member Typedef Documentation

◆ GPUSceneTables

◆ MemoryStat

◆ Result

◆ TLASBuildResult

◆ UpdateResult

Member Enumeration Documentation

◆ ResourceState

Enumerator
Queued 
Uploading 
Ready 
Failed 

Constructor & Destructor Documentation

◆ GPUSceneImpl()

GPUSceneImpl::GPUSceneImpl ( GPUScene owner,
RHIDevice device,
Allocator allocator,
GPUSceneDesc const desc,
AllocatorStack frameScratch 
)

◆ ~GPUSceneImpl()

GPUSceneImpl::~GPUSceneImpl ( )

Member Function Documentation

◆ AcquireCurveBLASSlot()

uint32_t GPUSceneImpl::AcquireCurveBLASSlot ( )

◆ AcquireGeometrySlot()

uint32_t GPUSceneImpl::AcquireGeometrySlot ( )

◆ AcquireMeshBLASSlot()

uint32_t GPUSceneImpl::AcquireMeshBLASSlot ( )

◆ AllocateDynamicBLAS()

void GPUSceneImpl::AllocateDynamicBLAS ( GeometryResidency g)

◆ AllocateInstance()

Pair< GSInstance *, uint32_t > GPUSceneImpl::AllocateInstance ( uint32_t  count)

◆ AllocateLight()

Pair< GSLight *, uint32_t > GPUSceneImpl::AllocateLight ( uint32_t  count)

◆ AllocateLightAliasTable()

Pair< GSAlias *, uint32_t > GPUSceneImpl::AllocateLightAliasTable ( uint32_t  count)

◆ AllocateMaterial()

Pair< GSMaterial *, uint32_t > GPUSceneImpl::AllocateMaterial ( uint32_t  count)

◆ BeginDynamicGeometryUpdate()

void GPUSceneImpl::BeginDynamicGeometryUpdate ( )

◆ BeginScene()

GPUScene::GPUSceneTables GPUSceneImpl::BeginScene ( uint32_t  instanceCount,
uint32_t  materialCount,
uint32_t  lightCount 
)

◆ BuildBLAS() [1/2]

void GPUSceneImpl::BuildBLAS ( ImmediateContext ctx,
Span< const GSMesh meshes,
Span< uint32_t outBLASIndices,
ImmediateSubmitDesc const firstSubmitDesc = {} 
)

◆ BuildBLAS() [2/2]

void GPUSceneImpl::BuildBLAS ( RHICommandList cmd)

◆ BuildCurveBLAS()

void GPUSceneImpl::BuildCurveBLAS ( ImmediateContext ctx,
Span< const GSCurveSet curves,
Span< uint32_t outBLASIndices,
ImmediateSubmitDesc const firstSubmitDesc = {} 
)

◆ BuildTLAS()

GPUScene::TLASBuildResult GPUSceneImpl::BuildTLAS ( RHICommandList cmd,
bool  update 
)

◆ Collect()

void GPUSceneImpl::Collect ( )

◆ CountLiveInstances()

uint32_t GPUSceneImpl::CountLiveInstances ( ) const

◆ CountTLASInstances()

uint32_t GPUSceneImpl::CountTLASInstances ( ) const

◆ DbgGetBufferStatistics()

String GPUSceneImpl::DbgGetBufferStatistics ( ) const

◆ DbgGetMemoryStatistics()

void GPUSceneImpl::DbgGetMemoryStatistics ( Vector< MemoryStat > &  outStats) const

◆ DrainUploadBatch()

bool GPUSceneImpl::DrainUploadBatch ( )

Drains all currently-queued uploads into one batch and processes it (returns false if nothing was queued).

◆ DynamicRegionBase()

uint32_t GPUSceneImpl::DynamicRegionBase ( GeometryResidency const g,
uint32_t  slot 
) const
inline

◆ EndDynamicGeometryUpdate()

void GPUSceneImpl::EndDynamicGeometryUpdate ( )

◆ EndScene()

GPUScene::UpdateResult GPUSceneImpl::EndScene ( GPUSceneTables tables)

◆ EnqueueUpload()

template<typename T >
void GPUSceneImpl::EnqueueUpload ( MPMCQueue< T > &  queue,
T &&  item 
)

Enqueues one item, bumping the outstanding count and waking the worker.

◆ EnsureTLASCapacity()

void GPUSceneImpl::EnsureTLASCapacity ( uint32_t  totalInstances)

◆ FlushDirectGeometryUpload()

void GPUSceneImpl::FlushDirectGeometryUpload ( )

◆ FreeGeometry()

void GPUSceneImpl::FreeGeometry ( uint32_t  slot)

◆ FreeTextureSlot()

void GPUSceneImpl::FreeTextureSlot ( bool  is3D,
uint32_t  slot 
)

◆ HasDynamicGeometry()

bool GPUSceneImpl::HasDynamicGeometry ( ) const

◆ Join()

void GPUSceneImpl::Join ( )

◆ Poll()

GPUScene::Result GPUSceneImpl::Poll ( )

◆ ProcessUploads()

void GPUSceneImpl::ProcessUploads ( Vector< PendingGeometryUpload > &  geometry,
Vector< PendingTextureUpload > &  textures,
Vector< PendingBufferUpload > &  buffers 
)

Drains the pending upload queues: best-fit staging packing, threaded blob decode, transfer submission, BLAS build, residency patching, Ready marking.

Drains one batch of queued uploads: best-fit staging packing, threaded blob decode, transfer submission, BLAS build, residency patching, Ready marking.

◆ Query() [1/2]

GPUScene::Result GPUSceneImpl::Query ( GeometryHandle  handle) const

◆ Query() [2/2]

GPUScene::Result GPUSceneImpl::Query ( TextureHandle  texture) const

◆ ReserveCurve()

GPUScene::Result GPUSceneImpl::ReserveCurve ( FSerializedCurve const src,
GSCurveSet outHeader,
uint32_t outOffset 
)

◆ ReserveMesh()

GPUScene::Result GPUSceneImpl::ReserveMesh ( FSerializedMesh const src,
GSMesh outHeader,
uint32_t outOffset 
)

Reserves final resident memory and computes the shader header (no staging yet).

◆ Reset()

void GPUSceneImpl::Reset ( )

◆ ResolveGeometry() [1/2]

GPUSceneImpl::GeometryResidency * GPUSceneImpl::ResolveGeometry ( GeometryHandle  handle)

◆ ResolveGeometry() [2/2]

GPUSceneImpl::GeometryResidency const * GPUSceneImpl::ResolveGeometry ( GeometryHandle  handle) const

◆ SelectTexturePool() [1/2]

BindlessPool & GPUSceneImpl::SelectTexturePool ( RHITextureDimension  viewDimension)

◆ SelectTexturePool() [2/2]

BindlessPool const & GPUSceneImpl::SelectTexturePool ( RHITextureDimension  viewDimension) const

◆ StageCurve()

size_t GPUSceneImpl::StageCurve ( ImmediateUpload ctx,
FSerializedCurve const src,
GSCurveSet const header,
uint32_t  offset,
Vector< GPUSceneBlobWrite > &  outWrites 
)

◆ StageMesh()

size_t GPUSceneImpl::StageMesh ( ImmediateUpload ctx,
FSerializedMesh const src,
GSMesh const header,
uint32_t  offset,
Vector< GPUSceneBlobWrite > &  outWrites 
)

Stages a reserved resource into the upload context: writes the shader header inline and emits blob-decode jobs for its payloads.

Returns
Bytes staged, or 0 when the staging lane is full (caller flushes and retries).

◆ StageTextureSubresource()

size_t GPUSceneImpl::StageTextureSubresource ( ImmediateUpload ctx,
FSerializedTexture const source,
RHITexture texture,
uint32_t  layer,
uint32_t  mip,
Vector< GPUSceneBlobWrite > &  outWrites 
)

Stages one texture subresource (emits a blob-decode job); 0 when the lane is full.

◆ TexturePool()

BindlessPool & GPUSceneImpl::TexturePool ( bool  is3D)
inline

◆ TextureSlots() [1/2]

Vector< TextureSlot > & GPUSceneImpl::TextureSlots ( bool  is3D)
inline

◆ TextureSlots() [2/2]

Vector< TextureSlot > const & GPUSceneImpl::TextureSlots ( bool  is3D) const
inline

◆ UpdateDynamicGeometry()

Span< std::byte > GPUSceneImpl::UpdateDynamicGeometry ( GeometryHandle  handle)

◆ Upload() [1/5]

GPUScene::Result GPUSceneImpl::Upload ( FBlobDeserializer blobs,
FSerializedCurve const source,
GeometryHandle outHandle 
)

◆ Upload() [2/5]

GPUScene::Result GPUSceneImpl::Upload ( FBlobDeserializer blobs,
FSerializedMesh const source,
GeometryHandle outHandle 
)

◆ Upload() [3/5]

GPUScene::Result GPUSceneImpl::Upload ( FBlobDeserializer blobs,
FSerializedTexture const source,
TextureHandle outTexture,
const char debugName = nullptr,
bool  pinned = false 
)

◆ Upload() [4/5]

GPUScene::Result GPUSceneImpl::Upload ( FTexture const source,
TextureHandle outTexture,
const char debugName = nullptr,
bool  pinned = false 
)

◆ Upload() [5/5]

GPUScene::Result GPUSceneImpl::Upload ( RHIBuffer dst,
Span< const unsigned char data,
uint32_t  dstOffset = 0 
)

◆ UploadDynamic()

GPUScene::Result GPUSceneImpl::UploadDynamic ( FBlobDeserializer blobs,
FSerializedMesh const source,
GeometryHandle outHandle 
)

◆ UploadEnvMap()

GPUScene::Result GPUSceneImpl::UploadEnvMap ( FTexture const source)

◆ UploadViewLUTs()

GPUScene::Result GPUSceneImpl::UploadViewLUTs ( FTexture const sdr,
FTexture const hdr 
)

◆ UploadWorker()

void GPUSceneImpl::UploadWorker ( )

Persistent worker entry point: drains batches, sleeping while the queues are empty.

◆ WriteDynamicHeader()

void GPUSceneImpl::WriteDynamicHeader ( GeometryResidency g,
uint32_t  slot 
)

Member Data Documentation

◆ mAllocator

Allocator* GPUSceneImpl::mAllocator {GLOBAL_ALLOC}

◆ mBLASBuffers

Vector<RHIDeviceScopedHandle<RHIBuffer> > GPUSceneImpl::mBLASBuffers

◆ mBLASes

◆ mBufferQueue

MPMCQueue<PendingBufferUpload> GPUSceneImpl::mBufferQueue

◆ mCurveAABBAlloc

RHIDeviceScopedHandle<RHIVirtualAllocator> GPUSceneImpl::mCurveAABBAlloc

◆ mCurveAABBBuffer

RHIDeviceScopedHandle<RHIBuffer> GPUSceneImpl::mCurveAABBBuffer

◆ mCurveAABBMapped

char* GPUSceneImpl::mCurveAABBMapped {nullptr}

◆ mCurveBLASBuffers

Vector<RHIDeviceScopedHandle<RHIBuffer> > GPUSceneImpl::mCurveBLASBuffers

◆ mCurveBLASes

Vector<RHIDeviceScopedHandle<RHIAccelerationStructure> > GPUSceneImpl::mCurveBLASes

◆ mDevice

RHIDevice* GPUSceneImpl::mDevice {nullptr}

◆ mDirectGeometryUpload

bool GPUSceneImpl::mDirectGeometryUpload {false}

◆ mDiskBLAS

◆ mDoneCV

CondVar GPUSceneImpl::mDoneCV

◆ mDynamicFrameCount

uint32_t GPUSceneImpl::mDynamicFrameCount {0}

◆ mDynamicFrameSlot

uint32_t GPUSceneImpl::mDynamicFrameSlot {0}

◆ mDynamicGeometrySlots

Vector<uint32_t> GPUSceneImpl::mDynamicGeometrySlots

◆ mDynamicPrimitiveAlloc

RHIDeviceScopedHandle<RHIVirtualAllocator> GPUSceneImpl::mDynamicPrimitiveAlloc

◆ mDynamicPrimitiveBuffer

RHIDeviceScopedHandle<RHIBuffer> GPUSceneImpl::mDynamicPrimitiveBuffer

◆ mDynamicPrimitiveMapped

char* GPUSceneImpl::mDynamicPrimitiveMapped {nullptr}

◆ mDynamicRebuildCadence

uint32_t GPUSceneImpl::mDynamicRebuildCadence {64}

◆ mDynamicUpdateOpen

bool GPUSceneImpl::mDynamicUpdateOpen {false}

◆ mFrameScratch

AllocatorStack* GPUSceneImpl::mFrameScratch {nullptr}

◆ mFreeBLASSlots

Vector<uint32_t> GPUSceneImpl::mFreeBLASSlots

◆ mFreeCurveBLASSlots

Vector<uint32_t> GPUSceneImpl::mFreeCurveBLASSlots

◆ mFreeGeometrySlots

Vector<uint32_t> GPUSceneImpl::mFreeGeometrySlots

◆ mGeometry

Vector<GeometryResidency> GPUSceneImpl::mGeometry

◆ mGeometryQueue

MPMCQueue<PendingGeometryUpload> GPUSceneImpl::mGeometryQueue

◆ mHasWork

bool GPUSceneImpl::mHasWork {false}

◆ mInstanceBuffer

UploadGPURingBuffer<GSInstance> GPUSceneImpl::mInstanceBuffer

◆ mInstanceScratch

Vector<InstanceDesc> GPUSceneImpl::mInstanceScratch

◆ mLastRebuildCount

uint32_t GPUSceneImpl::mLastRebuildCount {0}

◆ mLastRefitCount

uint32_t GPUSceneImpl::mLastRefitCount {0}

◆ mLightAliasTableBuffer

UploadGPURingBuffer<GSAlias> GPUSceneImpl::mLightAliasTableBuffer

◆ mLightBLASBuffer

RHIDeviceScopedHandle<RHIBuffer> GPUSceneImpl::mLightBLASBuffer

◆ mLightBuffer

UploadGPURingBuffer<GSLight> GPUSceneImpl::mLightBuffer

◆ mLightGeometryBuffer

RHIDeviceScopedHandle<RHIBuffer> GPUSceneImpl::mLightGeometryBuffer

◆ mMaterialBuffer

UploadGPURingBuffer<GSMaterial> GPUSceneImpl::mMaterialBuffer

◆ mMeshletGlobalCounter

uint32_t GPUSceneImpl::mMeshletGlobalCounter {0}

◆ mOpenTables

struct GPUSceneImpl::OpenTables GPUSceneImpl::mOpenTables

◆ mOutstanding

Atomic<size_t> GPUSceneImpl::mOutstanding {0}

◆ mPrimitiveAlloc

RHIDeviceScopedHandle<RHIVirtualAllocator> GPUSceneImpl::mPrimitiveAlloc

◆ mPrimitiveMapped

char* GPUSceneImpl::mPrimitiveMapped {nullptr}

◆ mRectBLAS

◆ mResidencyMutex

Mutex GPUSceneImpl::mResidencyMutex
mutable

◆ mScratchBufferTLAS

RHIDeviceScopedHandle<RHIBuffer> GPUSceneImpl::mScratchBufferTLAS

◆ mStop

bool GPUSceneImpl::mStop {false}

◆ mTexture2DPool

BindlessPool GPUSceneImpl::mTexture2DPool

◆ mTexture2DSlots

Vector<TextureSlot> GPUSceneImpl::mTexture2DSlots

◆ mTexture3DPool

BindlessPool GPUSceneImpl::mTexture3DPool

◆ mTexture3DSlots

Vector<TextureSlot> GPUSceneImpl::mTexture3DSlots

◆ mTextureQueue

MPMCQueue<PendingTextureUpload> GPUSceneImpl::mTextureQueue

◆ mTLASBuffer

RHIDeviceScopedHandle<RHIBuffer> GPUSceneImpl::mTLASBuffer

◆ mTLASInstances

UploadGPURingBuffer<char> GPUSceneImpl::mTLASInstances

◆ mTLASInstanceStride

uint32_t GPUSceneImpl::mTLASInstanceStride {0}

◆ mUploadFailed

Atomic<bool> GPUSceneImpl::mUploadFailed {false}

◆ mUploadThread

Thread GPUSceneImpl::mUploadThread

◆ mWorkCV

CondVar GPUSceneImpl::mWorkCV

◆ mWorkerStarted

bool GPUSceneImpl::mWorkerStarted {false}

◆ mWorkMutex

Mutex GPUSceneImpl::mWorkMutex

◆ owner

GPUScene& GPUSceneImpl::owner

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