Foundation
Loading...
Searching...
No Matches
Classes | Functions | Variables
GPUScene.cpp File Reference
#include "GPUScene.hpp"
#include "Renderer.hpp"
#include "Precompute.hpp"
#include "Tables/GGX.hpp"
#include "Tables/GGX_IOR.hpp"
#include "Tables/LTCSheen.hpp"
#include "Tables/Sobol.hpp"
#include "Tables/ViewLUTs.hpp"
#include <Core/Allocator.hpp>
#include <Core/AllocatorStack.hpp>
#include <Core/Atomic.hpp>
#include <Core/AtomicQueue.hpp>
#include <Core/Paths.hpp>
#include <Core/Thread.hpp>
#include <Core/ThreadPool.hpp>
#include <bit>
#include <condition_variable>

Classes

struct  GPUSceneBlobWrite
 One deferred blob payload write: decode blob into the mapped destination dst. More...
 
struct  GSCurvePoint
 
struct  GSCurveSegment
 
struct  GPUSceneGeometry
 
struct  UploadGPURingBuffer< T >
 
struct  GPUSceneImpl
 All implementation state and machinery owned by GPUScene. More...
 
struct  GPUSceneImpl::TextureSlot
 Per-bindless-slot residency backing TextureHandle (one table per pool, since the 2D/3D pools have independent slot spaces). More...
 
struct  GPUSceneImpl::GeometryResidency
 
struct  GPUSceneImpl::PendingGeometryUpload
 A geometry resource reserved by Upload and finalized by Join / Poll. More...
 
struct  GPUSceneImpl::PendingTextureUpload
 
struct  GPUSceneImpl::PendingBufferUpload
 A plain device-local buffer copy; the payload is owned so the caller's source can go. More...
 
struct  GPUSceneImpl::OpenTables
 
struct  GPUSceneBlobDecodeJob
 

Functions

static size_t GPUSceneTextureSubresourceFootprint (FTextureHeader const &metadata, uint32_t layer, uint32_t mip)
 
static void GPUSceneCompleteJob (Atomic< size_t > *counter)
 
static void GPUSceneWaitJobs (Atomic< size_t > *counter)
 
static FTexture LoadLUT (Allocator *allocator, StringView path)
 
static FTexture MakeLUT (const float *data, RHIResourceFormat format, uint32_t width, uint32_t height=1, uint32_t depth=1, RHITextureDimension dimension=RHITextureDimension::E2D)
 
static bool IsTexture3DView (RHITextureDimension dimension)
 
static uint32_t GetTextureUploadAlignment (FTextureHeader const &metadata)
 
static FSerializedTexture MakeInMemoryTextureAdaptor (FTexture const &source, Allocator *alloc)
 
static void TransitionTextureLayout (RHICommandList *cmd, RHITexture *texture, FTextureHeader const &metadata, RHITextureLayout from, RHITextureLayout to)
 
static void CheckViewLUT (FTexture const &source, StringView name)
 
static RHITextureResolvePoolTexture (BindlessPool &pool, uint32_t index)
 

Variables

static constexpr size_t kUploadBudgetSlack = 1ull * (1ull << 20)
 
static constexpr size_t kUploadStagingBudgetSlack = 32ull * (1ull << 20)
 
static constexpr size_t kUploadStagingBuffers = 3u
 
static constexpr size_t kGPUSceneBufferQueueCapacity = 256u
 
static constexpr size_t kMinDirectGeometryUploadHeapSize = 512ull * (1ull << 20)
 
static constexpr uint32_t kGPUScenePersistentTexture3DBindings = 2u
 
static constexpr uint32_t kGPUSceneTextureBindingSlack = 8u
 
static constexpr size_t kGPUSceneByteBudgetSlack = 64u << 10u
 
 Mesh
 

Function Documentation

◆ CheckViewLUT()

static void CheckViewLUT ( FTexture const source,
StringView  name 
)
static

◆ GetTextureUploadAlignment()

static uint32_t GetTextureUploadAlignment ( FTextureHeader const metadata)
static

◆ GPUSceneCompleteJob()

static void GPUSceneCompleteJob ( Atomic< size_t > *  counter)
static

◆ GPUSceneTextureSubresourceFootprint()

static size_t GPUSceneTextureSubresourceFootprint ( FTextureHeader const metadata,
uint32_t  layer,
uint32_t  mip 
)
static

◆ GPUSceneWaitJobs()

static void GPUSceneWaitJobs ( Atomic< size_t > *  counter)
static

◆ IsTexture3DView()

static bool IsTexture3DView ( RHITextureDimension  dimension)
static

◆ LoadLUT()

static FTexture LoadLUT ( Allocator allocator,
StringView  path 
)
static

◆ MakeInMemoryTextureAdaptor()

static FSerializedTexture MakeInMemoryTextureAdaptor ( FTexture const source,
Allocator alloc 
)
static

◆ MakeLUT()

static FTexture MakeLUT ( const float data,
RHIResourceFormat  format,
uint32_t  width,
uint32_t  height = 1,
uint32_t  depth = 1,
RHITextureDimension  dimension = RHITextureDimension::E2D 
)
static

◆ ResolvePoolTexture()

static RHITexture * ResolvePoolTexture ( BindlessPool pool,
uint32_t  index 
)
static

◆ TransitionTextureLayout()

static void TransitionTextureLayout ( RHICommandList cmd,
RHITexture texture,
FTextureHeader const metadata,
RHITextureLayout  from,
RHITextureLayout  to 
)
static

Variable Documentation

◆ kGPUSceneBufferQueueCapacity

constexpr size_t kGPUSceneBufferQueueCapacity = 256u
staticconstexpr

◆ kGPUSceneByteBudgetSlack

constexpr size_t kGPUSceneByteBudgetSlack = 64u << 10u
staticconstexpr

◆ kGPUScenePersistentTexture3DBindings

constexpr uint32_t kGPUScenePersistentTexture3DBindings = 2u
staticconstexpr

◆ kGPUSceneTextureBindingSlack

constexpr uint32_t kGPUSceneTextureBindingSlack = 8u
staticconstexpr

◆ kMinDirectGeometryUploadHeapSize

constexpr size_t kMinDirectGeometryUploadHeapSize = 512ull * (1ull << 20)
staticconstexpr

◆ kUploadBudgetSlack

constexpr size_t kUploadBudgetSlack = 1ull * (1ull << 20)
staticconstexpr

◆ kUploadStagingBudgetSlack

constexpr size_t kUploadStagingBudgetSlack = 32ull * (1ull << 20)
staticconstexpr

◆ kUploadStagingBuffers

constexpr size_t kUploadStagingBuffers = 3u
staticconstexpr

◆ Mesh

Mesh
Initial value:
= 1 << 0
struct GSCurveSet
{
uint32_t materialIndex;
}
Scoped move-only RAII handle wrapper for RHI Objects.
Definition Details.hpp:86
RHIScopedHandle< RHIDevice, T > RHIDeviceScopedHandle
Definition Details.hpp:209