Bicameral Engine
GPU-resident engine for a magic-research open-world game
Loading...
Searching...
No Matches
bicameral::sim::GpuImplicitBuild Class Reference

#include <gpu_implicit_build.h>

Collaboration diagram for bicameral::sim::GpuImplicitBuild:
[legend]

Public Member Functions

void RecordBuild (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, GpuMultires &multires, const MultiresStepOptions &options, bool useFrozenMarks=false, bool afterAdmit=false)
void RecordAdmit (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, GpuMultires &multires, const MultiresStepOptions &options)
void RecordApply (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, GpuMultires &multires, const MultiresStepOptions &options, ID3D12Resource *solvedCells)
void RecordCopyTo (ID3D12GraphicsCommandList *list, GpuImplicit &implicit)
void StampPasses (bool stamp)
void RecordTimestamp (ID3D12GraphicsCommandList *list, uint32_t index)
void RecordReadback (ID3D12GraphicsCommandList *list)
std::expected< GpuImplicitSystem, std::string > Read () const
std::vector< uint64_t > ReadTimestamps (uint32_t count) const
const GpuImplicitBuildLimits & Limits () const
ID3D12Resource * WorkBuffer () const
ID3D12Resource * SystemBuffer () const
uint64_t FacesOffset () const
uint64_t ListsOffset () const
uint32_t ListCellsWord () const
uint32_t CellKeysWord () const

Static Public Member Functions

static std::expected< GpuImplicitBuild, std::string > Create (ID3D12Device5 *device, const GpuMultires &multires, const MultiresCapacity &capacity, const GpuImplicitBuildLimits &limits)
static uint32_t StageCount ()
static const char * StageName (uint32_t pass)

Static Public Attributes

static constexpr uint32_t MAX_TIMESTAMPS = 32

Private Member Functions

 GpuImplicitBuild ()=default
void RecordPasses (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, GpuMultires &multires, const MultiresStepOptions &options, bool useFrozenMarks, uint32_t firstPass, uint32_t endPass)
std::array< uint32_t, 4 > ExternalConstants (const MultiresStepOptions &options, bool useFrozenMarks) const

Private Attributes

GpuImplicitBuildLimits m_limits
uint32_t m_worldBlocks = 0
uint64_t m_workBytes = 0
uint64_t m_systemBytes = 0
std::vector< ComPtr< ID3D12PipelineState > > m_pipelines
ComPtr< ID3D12PipelineState > m_applyPipeline
ComPtr< ID3D12Resource > m_work
ComPtr< ID3D12Resource > m_system
ComPtr< ID3D12Resource > m_workReadback
ComPtr< ID3D12Resource > m_systemReadback
ComPtr< ID3D12QueryHeap > m_timestamps
ComPtr< ID3D12Resource > m_timestampReadback
uint32_t m_timestampCount = 0
bool m_stampPasses = false

Detailed Description

Definition at line 45 of file gpu_implicit_build.h.

Constructor & Destructor Documentation

◆ GpuImplicitBuild()

bicameral::sim::GpuImplicitBuild::GpuImplicitBuild ( )
privatedefault

Referenced by Create().

Here is the caller graph for this function:

Member Function Documentation

◆ CellKeysWord()

uint32_t bicameral::sim::GpuImplicitBuild::CellKeysWord ( ) const
nodiscard

Definition at line 191 of file gpu_implicit_build.cpp.

References ListCellsWord(), and m_limits.

Referenced by bicameral::sim::GpuImplicitLevels::Create().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Create()

std::expected< GpuImplicitBuild, std::string > bicameral::sim::GpuImplicitBuild::Create ( ID3D12Device5 * device,
const GpuMultires & multires,
const MultiresCapacity & capacity,
const GpuImplicitBuildLimits & limits )
staticnodiscard

Definition at line 115 of file gpu_implicit_build.cpp.

References bicameral::sim::GpuImplicitBuildLimits::cells, bicameral::gpu::CreateBuffer(), bicameral::gpu::CreateComputePipeline(), GpuImplicitBuild(), ListsOffset(), bicameral::gpu::LoadShader(), m_applyPipeline, m_limits, m_pipelines, m_system, m_systemBytes, m_systemReadback, m_timestampReadback, m_timestamps, m_work, m_workBytes, m_workReadback, m_worldBlocks, MAX_TIMESTAMPS, bicameral::gpu::Readback, bicameral::sim::GpuImplicitBuildLimits::unknowns, bicameral::gpu::UnorderedAccess, and bicameral::sim::MultiresCapacity::worldBlocks.

Referenced by bicameral::sim::GpuMultiresImplicit::Create().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ExternalConstants()

std::array< uint32_t, 4 > bicameral::sim::GpuImplicitBuild::ExternalConstants ( const MultiresStepOptions & options,
bool useFrozenMarks ) const
nodiscardprivate

Definition at line 259 of file gpu_implicit_build.cpp.

References bicameral::sim::MultiresStepOptions::implicitMaxGap, m_limits, and bicameral::sim::MultiresStepOptions::subcycleBaseLevel.

Referenced by RecordApply(), and RecordPasses().

Here is the caller graph for this function:

◆ FacesOffset()

uint64_t bicameral::sim::GpuImplicitBuild::FacesOffset ( ) const
nodiscard

Definition at line 195 of file gpu_implicit_build.cpp.

References m_limits.

Referenced by bicameral::sim::GpuImplicitLevels::Create(), ListsOffset(), Read(), and RecordCopyTo().

Here is the caller graph for this function:

◆ Limits()

const GpuImplicitBuildLimits & bicameral::sim::GpuImplicitBuild::Limits ( ) const
inlinenodiscard

Definition at line 84 of file gpu_implicit_build.h.

References m_limits.

Referenced by bicameral::sim::GpuImplicitLevels::Create().

Here is the caller graph for this function:

◆ ListCellsWord()

uint32_t bicameral::sim::GpuImplicitBuild::ListCellsWord ( ) const
nodiscard

Definition at line 179 of file gpu_implicit_build.cpp.

References m_limits, and m_worldBlocks.

Referenced by CellKeysWord(), and bicameral::sim::GpuImplicitLevels::Create().

Here is the caller graph for this function:

◆ ListsOffset()

uint64_t bicameral::sim::GpuImplicitBuild::ListsOffset ( ) const
nodiscard

Definition at line 199 of file gpu_implicit_build.cpp.

References FacesOffset(), and m_limits.

Referenced by Create(), bicameral::sim::GpuImplicitLevels::Create(), Read(), and RecordCopyTo().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Read()

std::expected< GpuImplicitSystem, std::string > bicameral::sim::GpuImplicitBuild::Read ( ) const
nodiscard

◆ ReadTimestamps()

std::vector< uint64_t > bicameral::sim::GpuImplicitBuild::ReadTimestamps ( uint32_t count) const
nodiscard

Definition at line 338 of file gpu_implicit_build.cpp.

References m_timestampCount, m_timestampReadback, and bicameral::gpu::ReadBuffer().

Here is the call graph for this function:

◆ RecordAdmit()

void bicameral::sim::GpuImplicitBuild::RecordAdmit ( ID3D12GraphicsCommandList10 * list,
D3D12_GPU_VIRTUAL_ADDRESS debugRing,
GpuMultires & multires,
const MultiresStepOptions & options )

Definition at line 211 of file gpu_implicit_build.cpp.

References RecordPasses().

Here is the call graph for this function:

◆ RecordApply()

void bicameral::sim::GpuImplicitBuild::RecordApply ( ID3D12GraphicsCommandList10 * list,
D3D12_GPU_VIRTUAL_ADDRESS debugRing,
GpuMultires & multires,
const MultiresStepOptions & options,
ID3D12Resource * solvedCells )

Definition at line 268 of file gpu_implicit_build.cpp.

References ExternalConstants(), m_applyPipeline, m_limits, and m_work.

Here is the call graph for this function:

◆ RecordBuild()

void bicameral::sim::GpuImplicitBuild::RecordBuild ( ID3D12GraphicsCommandList10 * list,
D3D12_GPU_VIRTUAL_ADDRESS debugRing,
GpuMultires & multires,
const MultiresStepOptions & options,
bool useFrozenMarks = false,
bool afterAdmit = false )

Definition at line 203 of file gpu_implicit_build.cpp.

References RecordPasses().

Here is the call graph for this function:

◆ RecordCopyTo()

void bicameral::sim::GpuImplicitBuild::RecordCopyTo ( ID3D12GraphicsCommandList * list,
GpuImplicit & implicit )

Definition at line 277 of file gpu_implicit_build.cpp.

References FacesOffset(), ListsOffset(), m_system, m_work, bicameral::sim::GpuImplicit::RecordCopySystem(), and bicameral::gpu::Transition().

Here is the call graph for this function:

◆ RecordPasses()

void bicameral::sim::GpuImplicitBuild::RecordPasses ( ID3D12GraphicsCommandList10 * list,
D3D12_GPU_VIRTUAL_ADDRESS debugRing,
GpuMultires & multires,
const MultiresStepOptions & options,
bool useFrozenMarks,
uint32_t firstPass,
uint32_t endPass )
private

Definition at line 216 of file gpu_implicit_build.cpp.

References ExternalConstants(), m_limits, m_pipelines, m_stampPasses, m_system, m_work, m_worldBlocks, and RecordTimestamp().

Referenced by RecordAdmit(), and RecordBuild().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RecordReadback()

void bicameral::sim::GpuImplicitBuild::RecordReadback ( ID3D12GraphicsCommandList * list)

◆ RecordTimestamp()

void bicameral::sim::GpuImplicitBuild::RecordTimestamp ( ID3D12GraphicsCommandList * list,
uint32_t index )

Definition at line 299 of file gpu_implicit_build.cpp.

References m_timestampCount, m_timestamps, and MAX_TIMESTAMPS.

Referenced by RecordPasses().

Here is the caller graph for this function:

◆ StageCount()

uint32_t bicameral::sim::GpuImplicitBuild::StageCount ( )
staticnodiscard

Definition at line 290 of file gpu_implicit_build.cpp.

◆ StageName()

const char * bicameral::sim::GpuImplicitBuild::StageName ( uint32_t pass)
staticnodiscard

Definition at line 295 of file gpu_implicit_build.cpp.

◆ StampPasses()

void bicameral::sim::GpuImplicitBuild::StampPasses ( bool stamp)
inline

Definition at line 74 of file gpu_implicit_build.h.

References m_stampPasses.

◆ SystemBuffer()

ID3D12Resource * bicameral::sim::GpuImplicitBuild::SystemBuffer ( ) const
inlinenodiscard

Definition at line 86 of file gpu_implicit_build.h.

References m_system.

Referenced by bicameral::sim::GpuImplicitLevels::RecordBuild().

Here is the caller graph for this function:

◆ WorkBuffer()

ID3D12Resource * bicameral::sim::GpuImplicitBuild::WorkBuffer ( ) const
inlinenodiscard

Definition at line 85 of file gpu_implicit_build.h.

References m_work.

Referenced by bicameral::sim::GpuImplicitLevels::RecordBuild().

Here is the caller graph for this function:

Member Data Documentation

◆ m_applyPipeline

ComPtr<ID3D12PipelineState> bicameral::sim::GpuImplicitBuild::m_applyPipeline
private

Definition at line 108 of file gpu_implicit_build.h.

Referenced by Create(), and RecordApply().

◆ m_limits

GpuImplicitBuildLimits bicameral::sim::GpuImplicitBuild::m_limits
private

◆ m_pipelines

std::vector<ComPtr<ID3D12PipelineState> > bicameral::sim::GpuImplicitBuild::m_pipelines
private

Definition at line 107 of file gpu_implicit_build.h.

Referenced by Create(), and RecordPasses().

◆ m_stampPasses

bool bicameral::sim::GpuImplicitBuild::m_stampPasses = false
private

Definition at line 116 of file gpu_implicit_build.h.

Referenced by RecordPasses(), and StampPasses().

◆ m_system

ComPtr<ID3D12Resource> bicameral::sim::GpuImplicitBuild::m_system
private

◆ m_systemBytes

uint64_t bicameral::sim::GpuImplicitBuild::m_systemBytes = 0
private

Definition at line 105 of file gpu_implicit_build.h.

Referenced by Create(), Read(), and RecordReadback().

◆ m_systemReadback

ComPtr<ID3D12Resource> bicameral::sim::GpuImplicitBuild::m_systemReadback
private

Definition at line 112 of file gpu_implicit_build.h.

Referenced by Create(), Read(), and RecordReadback().

◆ m_timestampCount

uint32_t bicameral::sim::GpuImplicitBuild::m_timestampCount = 0
private

Definition at line 115 of file gpu_implicit_build.h.

Referenced by ReadTimestamps(), RecordReadback(), and RecordTimestamp().

◆ m_timestampReadback

ComPtr<ID3D12Resource> bicameral::sim::GpuImplicitBuild::m_timestampReadback
private

Definition at line 114 of file gpu_implicit_build.h.

Referenced by Create(), ReadTimestamps(), and RecordReadback().

◆ m_timestamps

ComPtr<ID3D12QueryHeap> bicameral::sim::GpuImplicitBuild::m_timestamps
private

Definition at line 113 of file gpu_implicit_build.h.

Referenced by Create(), RecordReadback(), and RecordTimestamp().

◆ m_work

ComPtr<ID3D12Resource> bicameral::sim::GpuImplicitBuild::m_work
private

◆ m_workBytes

uint64_t bicameral::sim::GpuImplicitBuild::m_workBytes = 0
private

Definition at line 104 of file gpu_implicit_build.h.

Referenced by Create().

◆ m_workReadback

ComPtr<ID3D12Resource> bicameral::sim::GpuImplicitBuild::m_workReadback
private

Definition at line 111 of file gpu_implicit_build.h.

Referenced by Create(), Read(), and RecordReadback().

◆ m_worldBlocks

uint32_t bicameral::sim::GpuImplicitBuild::m_worldBlocks = 0
private

Definition at line 103 of file gpu_implicit_build.h.

Referenced by Create(), ListCellsWord(), and RecordPasses().

◆ MAX_TIMESTAMPS

uint32_t bicameral::sim::GpuImplicitBuild::MAX_TIMESTAMPS = 32
staticconstexpr

Definition at line 47 of file gpu_implicit_build.h.

Referenced by Create(), and RecordTimestamp().


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