|
Bicameral Engine
GPU-resident engine for a magic-research open-world game
|
#include <gpu_multires.h>
Classes | |
| struct | ActivitySeeds |
| struct | RootConstants |
Public Member Functions | |
| GpuMultires (GpuMultires &&other) noexcept | |
| GpuMultires & | operator= (GpuMultires &&other) noexcept |
| GpuMultires (const GpuMultires &)=delete | |
| GpuMultires & | operator= (const GpuMultires &)=delete |
| ~GpuMultires () | |
| bool | RecordUpload (ID3D12GraphicsCommandList10 *list, const MultiresNest &nest) |
| bool | RecordRequests (ID3D12GraphicsCommandList10 *list, std::span< const multires::MrRequest > requests) |
| void | RecordFoldPages (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, uint64_t tick) |
| void | RecordFoldPages (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, uint64_t tick, const multires::MrFoldTolerance &tolerance) |
| void | RecordQuietRequests (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, uint64_t tick) |
| void | RecordQuietRequests (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, uint64_t tick, const multires::MrFoldTolerance &tolerance) |
| void | RecordProcessRequests (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing) |
| void | RecordExpandPass (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing) |
| void | RecordRefineShadow (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, uint32_t parentSlot, uint32_t firstChildSlot, uint32_t levelCount, const MultiresPoint &point) |
| void | RecordRemoveShadow (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, uint32_t firstSlot, uint32_t levelCount) |
| void | RecordStep (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, uint64_t worldSeed, uint64_t tick, const MultiresStepOptions &options={}) |
| bool | RecordStepActive (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, uint64_t worldSeed, uint64_t tick, const MultiresStepOptions &options={}) |
| void | RecordPullBack (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, uint32_t firstShadowSlot, uint32_t levelCount) |
| void | SetExternalViews (D3D12_GPU_VIRTUAL_ADDRESS first, D3D12_GPU_VIRTUAL_ADDRESS second) |
| void | RecordExternalDispatch (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, ID3D12PipelineState *pipeline, uint32_t groupCount, const std::array< uint32_t, 4 > &external) |
| ID3D12RootSignature * | RootSignature () const |
| uint32_t | BlockCapacity () const |
| void | RecordReadback (ID3D12GraphicsCommandList10 *list) |
| bool | Read (MultiresNest &nest) const |
| std::optional< ActivitySeeds > | ReadSeeds () const |
| void | RecordTimestamp (ID3D12GraphicsCommandList10 *list, uint32_t index) |
| std::vector< uint64_t > | ReadTimestamps (uint32_t count) const |
| uint64_t | GraphBackingMemoryBytes () const |
| bool | UseConductionGraph (bool use) |
| std::expected< void, std::string > | EnableImplicitConduction (ID3D12Device5 *device, const GpuMultiresImplicitLimits &limits) |
| void | StampImplicitPhases (bool stamp) |
| const GpuMultiresImplicit * | ImplicitConduction () const |
Static Public Member Functions | |
| static std::expected< GpuMultires, std::string > | Create (ID3D12Device5 *device, const BakedReactionTable &table, const MultiresCapacity &capacity, const GpuMultiresOptions &options={}) |
Static Public Attributes | |
| static constexpr uint32_t | REQUEST_UPLOAD_SLOTS = 16 |
Private Types | |
| enum | Buffer : uint8_t { BufferBlocks , BufferCells , BufferFractions , BufferCounters , BufferTreeWords , BufferFreeFractions , BufferLedger , BufferRequests , BufferStates , BufferConduction , BufferGraphInput , BufferCount } |
Private Member Functions | |
| GpuMultires ()=default | |
| std::expected< void, std::string > | CreatePipelines (ID3D12Device5 *device, const GpuMultiresOptions &options) |
| std::expected< void, std::string > | CreateBuffers (ID3D12Device5 *device, const BakedReactionTable &table) |
| void | BindRoot (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing) const |
| void | SetGraphProgram (ID3D12GraphicsCommandList10 *list) |
| void | SetActivityProgram (ID3D12GraphicsCommandList10 *list) |
| void | DispatchGraph (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, uint32_t entry, const void *record, uint32_t recordBytes) |
| void | RecordTreePass (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, uint32_t pass, uint32_t groupCount) |
| std::array< uint64_t, BufferCount > | BufferSizes () const |
| uint64_t | PageCount () const |
| uint64_t | ConductRecordsOffset () const |
| std::vector< std::byte > | MakeGraphInputImage () const |
| void | RecordExpandPages (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing) |
| void | RecordWake (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, uint32_t extraFlags) |
| void | RecordStepWait (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing) |
| void | RecordConductPass (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, uint32_t pass, uint32_t groupCount) |
| void | RecordConduction (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, const MultiresStepOptions &options, uint32_t wakeList) |
| void | RecordConductSubstep (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, const MultiresStepOptions &options) |
| void | RecordSubstepEnd (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, uint32_t wakeList) |
| void | RecordConductStage (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, uint32_t pass) |
| void | RecordImplicitConduction (ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, const MultiresStepOptions &options) |
| std::expected< void, std::string > | CreateConductionGraph (ID3D12Device5 *device) |
| std::vector< std::byte > | MakeTreeWordsImage (const MultiresNest &nest) const |
| uint64_t | ActivityBytes () const |
| std::vector< std::byte > | MakeActivityList (uint32_t list, std::span< const uint32_t > slots) const |
| void | SetTick (uint64_t worldSeed, uint64_t tick) |
Private Attributes | |
| MultiresCapacity | m_capacity |
| uint32_t | m_blockCapacity = 0 |
| ComPtr< ID3D12RootSignature > | m_rootSignature |
| ComPtr< ID3D12PipelineState > | m_wakePipeline |
| ComPtr< ID3D12PipelineState > | m_stepWaitPipeline |
| ComPtr< ID3D12PipelineState > | m_stepExpandedWaitPipeline |
| std::array< ComPtr< ID3D12PipelineState >, TREE_PASS_COUNT > | m_treePipelines |
| std::array< ComPtr< ID3D12PipelineState >, CONDUCT_PASS_COUNT > | m_conductPipelines |
| std::unique_ptr< gpu::WorkGraph > | m_conductGraph |
| bool | m_conductGraphInitialized = false |
| bool | m_useConductGraph = false |
| std::array< uint32_t, 4 > | m_conductEntries |
| std::unique_ptr< gpu::WorkGraph > | m_graph |
| bool | m_graphInitialized = false |
| std::array< uint32_t, 4 > | m_entries {} |
| std::unique_ptr< gpu::WorkGraph > | m_activityGraph |
| bool | m_activityGraphInitialized = false |
| std::array< uint32_t, 3 > | m_activityEntries |
| RootConstants | m_constants |
| std::array< ComPtr< ID3D12Resource >, BufferCount > | m_buffers |
| std::array< ComPtr< ID3D12Resource >, BufferCount > | m_uploads |
| std::array< ComPtr< ID3D12Resource >, BufferCount > | m_readbacks |
| ComPtr< ID3D12Resource > | m_requestUpload |
| uint32_t | m_requestUploadCursor = 0 |
| std::array< ComPtr< ID3D12Resource >, TABLE_COUNT > | m_tables |
| std::array< D3D12_GPU_VIRTUAL_ADDRESS, 2 > | m_externalViews {} |
| std::array< ComPtr< ID3D12Resource >, ACTIVITY_LISTS > | m_activity |
| ComPtr< ID3D12Resource > | m_activityUpload |
| ComPtr< ID3D12Resource > | m_activityReadback |
| uint32_t | m_activityCurrent = 0 |
| uint32_t | m_activityWrite = 0 |
| std::unique_ptr< GpuMultiresImplicit > | m_implicit |
| ComPtr< ID3D12QueryHeap > | m_timestamps |
| ComPtr< ID3D12Resource > | m_timestampReadback |
| uint32_t | m_timestampCount = 0 |
Static Private Attributes | |
| static constexpr uint32_t | TABLE_COUNT = 4 |
| static constexpr uint32_t | ACTIVITY_LISTS = 2 |
| static constexpr uint32_t | TREE_PASS_COUNT = 12 |
| static constexpr uint32_t | CONDUCT_PASS_COUNT = 6 |
| static constexpr uint32_t | MAX_TIMESTAMPS = 16 |
Definition at line 56 of file gpu_multires.h.
|
private |
| Enumerator | |
|---|---|
| BufferBlocks | |
| BufferCells | |
| BufferFractions | |
| BufferCounters | |
| BufferTreeWords | |
| BufferFreeFractions | |
| BufferLedger | |
| BufferRequests | |
| BufferStates | |
| BufferConduction | |
| BufferGraphInput | |
| BufferCount | |
Definition at line 178 of file gpu_multires.h.
|
defaultnoexcept |
References GpuMultires().
Referenced by Create(), GpuMultires(), GpuMultires(), operator=(), and operator=().
|
delete |
|
default |
|
privatedefault |
|
nodiscardprivate |
Definition at line 494 of file gpu_multires.cpp.
References m_capacity.
Referenced by CreateBuffers(), and ReadSeeds().
|
private |
Definition at line 588 of file gpu_multires.cpp.
References BufferCells, BufferCount, bicameral::gpu::RootSignatureLayout::DebugRingIndex(), m_activity, m_activityWrite, m_buffers, m_constants, m_externalViews, m_tables, bicameral::gpu::RootSignatureLayout::RootConstantIndex(), bicameral::gpu::RootSignatureLayout::SrvIndex(), and TABLE_COUNT.
Referenced by DispatchGraph(), RecordConductPass(), RecordConductStage(), RecordExpandPages(), RecordExternalDispatch(), RecordProcessRequests(), RecordStepActive(), RecordStepWait(), RecordSubstepEnd(), RecordTreePass(), and RecordWake().
|
inlinenodiscard |
Definition at line 116 of file gpu_multires.h.
References m_blockCapacity.
|
nodiscardprivate |
Definition at line 426 of file gpu_multires.cpp.
References BufferBlocks, BufferCells, BufferConduction, BufferCounters, BufferFractions, BufferFreeFractions, BufferGraphInput, BufferLedger, BufferRequests, BufferStates, BufferTreeWords, ConductRecordsOffset(), m_blockCapacity, m_capacity, and PageCount().
Referenced by CreateBuffers(), MakeGraphInputImage(), MakeTreeWordsImage(), Read(), and RecordUpload().
|
nodiscardprivate |
Definition at line 450 of file gpu_multires.cpp.
References m_capacity.
Referenced by BufferSizes(), and MakeGraphInputImage().
|
staticnodiscard |
Definition at line 238 of file gpu_multires.cpp.
References bicameral::sim::GpuMultires::RootConstants::blockCount, CreateBuffers(), CreatePipelines(), GpuMultires(), bicameral::sim::GpuMultires::RootConstants::indexEntries, bicameral::sim::MultiresCapacity::indexEntries, bicameral::sim::GpuMultires::RootConstants::ledgerColumns, bicameral::sim::MultiresCapacity::ledgerColumns, m_blockCapacity, m_capacity, m_constants, bicameral::sim::MultiresCapacity::observerBlocks, bicameral::sim::GpuMultires::RootConstants::rootLevel, bicameral::sim::MultiresCapacity::rootLevel, bicameral::sim::GpuMultires::RootConstants::worldBlocks, and bicameral::sim::MultiresCapacity::worldBlocks.
Referenced by bicameral::sim::GpuLabBox::Create(), and bicameral::sim::ProbePeek::Create().
|
nodiscardprivate |
Definition at line 373 of file gpu_multires.cpp.
References ActivityBytes(), BufferCount, BufferGraphInput, BufferSizes(), bicameral::gpu::CreateBuffer(), m_activity, m_activityReadback, m_activityUpload, m_buffers, m_constants, m_readbacks, m_requestUpload, m_tables, m_timestampReadback, m_timestamps, m_uploads, MAX_TIMESTAMPS, bicameral::sim::BakedReactionTable::rates, bicameral::gpu::Readback, REQUEST_UPLOAD_SLOTS, bicameral::sim::BakedReactionTable::ruleIndex, bicameral::sim::BakedReactionTable::rules, bicameral::sim::BakedReactionTable::species, bicameral::gpu::UnorderedAccess, and bicameral::gpu::Upload.
Referenced by Create().
|
nodiscardprivate |
Definition at line 351 of file gpu_multires.cpp.
References bicameral::gpu::WorkGraph::Create(), bicameral::gpu::LoadShader(), m_conductEntries, m_conductGraph, m_rootSignature, and m_useConductGraph.
Referenced by CreatePipelines().
|
nodiscardprivate |
Definition at line 279 of file gpu_multires.cpp.
References bicameral::sim::GpuMultiresOptions::activity, CONDUCT_PASS_COUNT, bicameral::sim::GpuMultiresOptions::conductionGraph, bicameral::gpu::WorkGraph::Create(), CreateConductionGraph(), bicameral::gpu::CreateRootSignature(), bicameral::gpu::LoadShader(), m_activityEntries, m_activityGraph, m_conductPipelines, m_constants, m_entries, m_graph, m_rootSignature, m_stepExpandedWaitPipeline, m_stepWaitPipeline, m_treePipelines, m_wakePipeline, and TREE_PASS_COUNT.
Referenced by Create().
|
private |
Definition at line 622 of file gpu_multires.cpp.
References BindRoot(), bicameral::gpu::WorkGraph::DispatchFromCpu(), m_entries, and SetGraphProgram().
Referenced by RecordPullBack(), RecordRefineShadow(), and RecordRemoveShadow().
|
nodiscard |
Definition at line 263 of file gpu_multires.cpp.
References bicameral::sim::GpuMultiresImplicit::Create(), m_capacity, and m_implicit.
|
inlinenodiscard |
Definition at line 135 of file gpu_multires.h.
References m_graph.
|
inlinenodiscard |
Definition at line 147 of file gpu_multires.h.
References m_implicit.
|
nodiscardprivate |
Definition at line 499 of file gpu_multires.cpp.
References m_activity, and m_activityEntries.
Referenced by RecordUpload().
|
nodiscardprivate |
Definition at line 456 of file gpu_multires.cpp.
References BufferGraphInput, BufferSizes(), ConductRecordsOffset(), m_activityEntries, m_activityGraph, m_buffers, m_conductEntries, and m_conductGraph.
Referenced by RecordUpload().
|
nodiscardprivate |
Definition at line 478 of file gpu_multires.cpp.
References BufferSizes(), BufferTreeWords, bicameral::sim::MultiresNest::claims, bicameral::sim::MultiresNest::freeBlocks, bicameral::sim::MultiresNest::index, and m_capacity.
Referenced by RecordUpload().
|
delete |
|
defaultnoexcept |
|
nodiscardprivate |
Definition at line 445 of file gpu_multires.cpp.
References m_capacity.
Referenced by BufferSizes().
|
nodiscard |
Definition at line 1063 of file gpu_multires.cpp.
References bicameral::sim::MultiresNest::blocks, BufferLedger, BufferSizes(), BufferTreeWords, bicameral::sim::MultiresNest::cells, bicameral::sim::MultiresNest::counters, bicameral::sim::MultiresNest::fractions, bicameral::sim::MultiresNest::freeBlocks, bicameral::sim::MultiresNest::freeFractions, bicameral::sim::MultiresNest::index, bicameral::sim::MultiresNest::ledger, m_blockCapacity, m_capacity, m_readbacks, bicameral::sim::MakeMultiresNest(), and bicameral::gpu::ReadBuffer().
|
nodiscard |
Definition at line 1090 of file gpu_multires.cpp.
References ActivityBytes(), m_activityReadback, m_capacity, bicameral::gpu::ReadBuffer(), and bicameral::sim::GpuMultires::ActivitySeeds::slots.
|
nodiscard |
Definition at line 1119 of file gpu_multires.cpp.
References m_timestampCount, m_timestampReadback, and bicameral::gpu::ReadBuffer().
|
private |
Definition at line 888 of file gpu_multires.cpp.
References bicameral::sim::MultiresStepOptions::implicitConduction, m_constants, bicameral::sim::MultiresStepOptions::maxSubcycleGap, bicameral::sim::MULTIRES_MAX_SUBCYCLE_GAP, RecordConductStage(), RecordConductSubstep(), RecordImplicitConduction(), and RecordSubstepEnd().
Referenced by RecordStep(), and RecordStepActive().
|
private |
Definition at line 875 of file gpu_multires.cpp.
References BindRoot(), m_conductPipelines, and m_rootSignature.
Referenced by RecordConductStage(), RecordConductSubstep(), and RecordStepActive().
|
private |
Definition at line 975 of file gpu_multires.cpp.
References BindRoot(), BufferGraphInput, bicameral::gpu::WorkGraph::DispatchFromGpu(), m_blockCapacity, m_buffers, m_conductGraph, m_conductGraphInitialized, m_constants, m_rootSignature, m_useConductGraph, RecordConductPass(), and bicameral::gpu::Transition().
Referenced by RecordConduction(), RecordConductSubstep(), and RecordSubstepEnd().
|
private |
Definition at line 922 of file gpu_multires.cpp.
References m_blockCapacity, m_constants, m_implicit, RecordConductPass(), RecordConductStage(), and RecordTreePass().
Referenced by RecordConduction().
|
private |
Definition at line 1014 of file gpu_multires.cpp.
References BindRoot(), BufferGraphInput, bicameral::gpu::WorkGraph::DispatchFromGpu(), m_buffers, RecordTreePass(), SetActivityProgram(), and bicameral::gpu::Transition().
Referenced by RecordStepActive().
| void bicameral::sim::GpuMultires::RecordExpandPass | ( | ID3D12GraphicsCommandList10 * | list, |
| D3D12_GPU_VIRTUAL_ADDRESS | debugRing ) |
Definition at line 1010 of file gpu_multires.cpp.
References RecordTreePass().
| void bicameral::sim::GpuMultires::RecordExternalDispatch | ( | ID3D12GraphicsCommandList10 * | list, |
| D3D12_GPU_VIRTUAL_ADDRESS | debugRing, | ||
| ID3D12PipelineState * | pipeline, | ||
| uint32_t | groupCount, | ||
| const std::array< uint32_t, 4 > & | external ) |
Definition at line 1036 of file gpu_multires.cpp.
References BindRoot(), m_constants, and m_rootSignature.
| void bicameral::sim::GpuMultires::RecordFoldPages | ( | ID3D12GraphicsCommandList10 * | list, |
| D3D12_GPU_VIRTUAL_ADDRESS | debugRing, | ||
| uint64_t | tick ) |
Definition at line 678 of file gpu_multires.cpp.
References RecordFoldPages().
Referenced by RecordFoldPages().
| void bicameral::sim::GpuMultires::RecordFoldPages | ( | ID3D12GraphicsCommandList10 * | list, |
| D3D12_GPU_VIRTUAL_ADDRESS | debugRing, | ||
| uint64_t | tick, | ||
| const multires::MrFoldTolerance & | tolerance ) |
|
private |
Definition at line 910 of file gpu_multires.cpp.
References bicameral::Error, bicameral::Gpu, bicameral::Log(), and m_implicit.
Referenced by RecordConduction().
| void bicameral::sim::GpuMultires::RecordProcessRequests | ( | ID3D12GraphicsCommandList10 * | list, |
| D3D12_GPU_VIRTUAL_ADDRESS | debugRing ) |
Definition at line 706 of file gpu_multires.cpp.
References BindRoot(), BufferGraphInput, bicameral::gpu::WorkGraph::DispatchFromGpu(), m_activityCurrent, m_activityWrite, m_buffers, m_capacity, RecordTreePass(), SetGraphProgram(), and bicameral::gpu::Transition().
| void bicameral::sim::GpuMultires::RecordPullBack | ( | ID3D12GraphicsCommandList10 * | list, |
| D3D12_GPU_VIRTUAL_ADDRESS | debugRing, | ||
| uint32_t | firstShadowSlot, | ||
| uint32_t | levelCount ) |
Definition at line 762 of file gpu_multires.cpp.
References DispatchGraph().
| void bicameral::sim::GpuMultires::RecordQuietRequests | ( | ID3D12GraphicsCommandList10 * | list, |
| D3D12_GPU_VIRTUAL_ADDRESS | debugRing, | ||
| uint64_t | tick ) |
Definition at line 692 of file gpu_multires.cpp.
References RecordQuietRequests().
Referenced by RecordQuietRequests().
| void bicameral::sim::GpuMultires::RecordQuietRequests | ( | ID3D12GraphicsCommandList10 * | list, |
| D3D12_GPU_VIRTUAL_ADDRESS | debugRing, | ||
| uint64_t | tick, | ||
| const multires::MrFoldTolerance & | tolerance ) |
| void bicameral::sim::GpuMultires::RecordReadback | ( | ID3D12GraphicsCommandList10 * | list | ) |
Definition at line 1050 of file gpu_multires.cpp.
References BufferLedger, m_activity, m_activityCurrent, m_activityReadback, m_buffers, m_readbacks, m_timestampCount, m_timestampReadback, m_timestamps, and bicameral::gpu::RecordCopyToReadback().
| void bicameral::sim::GpuMultires::RecordRefineShadow | ( | ID3D12GraphicsCommandList10 * | list, |
| D3D12_GPU_VIRTUAL_ADDRESS | debugRing, | ||
| uint32_t | parentSlot, | ||
| uint32_t | firstChildSlot, | ||
| uint32_t | levelCount, | ||
| const MultiresPoint & | point ) |
Definition at line 736 of file gpu_multires.cpp.
References DispatchGraph(), bicameral::sim::MultiresPoint::level, m_constants, bicameral::sim::MultiresPoint::x, bicameral::sim::MultiresPoint::y, and bicameral::sim::MultiresPoint::z.
| void bicameral::sim::GpuMultires::RecordRemoveShadow | ( | ID3D12GraphicsCommandList10 * | list, |
| D3D12_GPU_VIRTUAL_ADDRESS | debugRing, | ||
| uint32_t | firstSlot, | ||
| uint32_t | levelCount ) |
Definition at line 756 of file gpu_multires.cpp.
References DispatchGraph().
|
nodiscard |
Definition at line 641 of file gpu_multires.cpp.
References BufferCounters, BufferRequests, m_buffers, m_requestUpload, m_requestUploadCursor, REQUEST_UPLOAD_SLOTS, and bicameral::gpu::Transition().
| void bicameral::sim::GpuMultires::RecordStep | ( | ID3D12GraphicsCommandList10 * | list, |
| D3D12_GPU_VIRTUAL_ADDRESS | debugRing, | ||
| uint64_t | worldSeed, | ||
| uint64_t | tick, | ||
| const MultiresStepOptions & | options = {} ) |
Definition at line 836 of file gpu_multires.cpp.
References ACTIVITY_LISTS, bicameral::sim::MultiresStepOptions::conduction, m_constants, RecordConduction(), RecordStepWait(), RecordWake(), and SetTick().
|
nodiscard |
Definition at line 775 of file gpu_multires.cpp.
References BindRoot(), bicameral::sim::MultiresStepOptions::conduction, bicameral::gpu::WorkGraph::DispatchFromCpu(), bicameral::gpu::WorkGraph::DispatchFromGpu(), m_activity, m_activityCurrent, m_activityEntries, m_activityGraph, m_activityUpload, m_activityWrite, m_capacity, m_constants, RecordConduction(), RecordConductPass(), RecordExpandPages(), RecordWake(), SetActivityProgram(), SetTick(), and bicameral::gpu::Transition().
|
private |
Definition at line 860 of file gpu_multires.cpp.
References BindRoot(), m_blockCapacity, m_capacity, m_stepExpandedWaitPipeline, m_stepWaitPipeline, RecordTreePass(), and RecordWake().
Referenced by RecordStep().
|
private |
Definition at line 937 of file gpu_multires.cpp.
References ACTIVITY_LISTS, BindRoot(), bicameral::gpu::WorkGraph::DispatchFromGpu(), m_activity, m_activityUpload, m_activityWrite, m_constants, RecordConductStage(), SetActivityProgram(), and bicameral::gpu::Transition().
Referenced by RecordConduction().
| void bicameral::sim::GpuMultires::RecordTimestamp | ( | ID3D12GraphicsCommandList10 * | list, |
| uint32_t | index ) |
Definition at line 1111 of file gpu_multires.cpp.
References m_timestampCount, m_timestamps, and MAX_TIMESTAMPS.
|
private |
Definition at line 630 of file gpu_multires.cpp.
References BindRoot(), m_rootSignature, and m_treePipelines.
Referenced by RecordConductSubstep(), RecordExpandPages(), RecordExpandPass(), RecordProcessRequests(), and RecordStepWait().
|
nodiscard |
Definition at line 518 of file gpu_multires.cpp.
References ACTIVITY_LISTS, bicameral::sim::MultiresNest::blocks, BufferCells, BufferConduction, BufferCount, BufferLedger, BufferSizes(), BufferStates, bicameral::sim::MultiresNest::cells, bicameral::sim::MultiresNest::claims, bicameral::sim::MultiresNest::counters, bicameral::sim::MultiresNest::fractions, bicameral::sim::MultiresNest::freeBlocks, bicameral::sim::MultiresNest::freeFractions, bicameral::sim::MultiresNest::index, bicameral::sim::MultiresNest::ledger, m_activity, m_activityCurrent, m_activityUpload, m_activityWrite, m_blockCapacity, m_buffers, m_capacity, m_uploads, MakeActivityList(), MakeGraphInputImage(), MakeTreeWordsImage(), bicameral::sim::MultiresNest::requests, bicameral::sim::MultiresNest::seeds, bicameral::sim::SeedSlots(), and bicameral::gpu::Transition().
|
private |
Definition at line 849 of file gpu_multires.cpp.
References BindRoot(), m_blockCapacity, m_constants, m_rootSignature, and m_wakePipeline.
Referenced by RecordStep(), RecordStepActive(), and RecordStepWait().
|
inlinenodiscard |
Definition at line 115 of file gpu_multires.h.
References m_rootSignature.
Referenced by bicameral::sim::GpuLabBox::Create(), and bicameral::sim::ProbePeek::Create().
|
private |
Definition at line 616 of file gpu_multires.cpp.
References m_activityGraph, m_activityGraphInitialized, and m_rootSignature.
Referenced by RecordExpandPages(), RecordStepActive(), and RecordSubstepEnd().
| void bicameral::sim::GpuMultires::SetExternalViews | ( | D3D12_GPU_VIRTUAL_ADDRESS | first, |
| D3D12_GPU_VIRTUAL_ADDRESS | second ) |
Definition at line 1032 of file gpu_multires.cpp.
References m_externalViews.
|
private |
Definition at line 610 of file gpu_multires.cpp.
References m_graph, m_graphInitialized, and m_rootSignature.
Referenced by DispatchGraph(), and RecordProcessRequests().
|
private |
Definition at line 768 of file gpu_multires.cpp.
References m_constants.
Referenced by RecordStep(), and RecordStepActive().
| void bicameral::sim::GpuMultires::StampImplicitPhases | ( | bool | stamp | ) |
Definition at line 274 of file gpu_multires.cpp.
References m_implicit.
|
nodiscard |
Definition at line 1001 of file gpu_multires.cpp.
References m_conductGraph, and m_useConductGraph.
|
staticconstexprprivate |
Definition at line 194 of file gpu_multires.h.
Referenced by RecordStep(), RecordSubstepEnd(), and RecordUpload().
|
staticconstexprprivate |
Definition at line 196 of file gpu_multires.h.
Referenced by CreatePipelines().
|
private |
Definition at line 273 of file gpu_multires.h.
Referenced by BindRoot(), CreateBuffers(), MakeActivityList(), RecordReadback(), RecordStepActive(), RecordSubstepEnd(), and RecordUpload().
|
private |
Definition at line 276 of file gpu_multires.h.
Referenced by RecordProcessRequests(), RecordReadback(), RecordStepActive(), and RecordUpload().
|
private |
Definition at line 259 of file gpu_multires.h.
Referenced by CreatePipelines(), MakeActivityList(), MakeGraphInputImage(), and RecordStepActive().
|
private |
Definition at line 257 of file gpu_multires.h.
Referenced by CreatePipelines(), MakeGraphInputImage(), RecordStepActive(), and SetActivityProgram().
|
private |
Definition at line 258 of file gpu_multires.h.
Referenced by SetActivityProgram().
|
private |
Definition at line 275 of file gpu_multires.h.
Referenced by CreateBuffers(), ReadSeeds(), and RecordReadback().
|
private |
Definition at line 274 of file gpu_multires.h.
Referenced by CreateBuffers(), RecordStepActive(), RecordSubstepEnd(), and RecordUpload().
|
private |
Definition at line 277 of file gpu_multires.h.
Referenced by BindRoot(), RecordProcessRequests(), RecordStepActive(), RecordSubstepEnd(), and RecordUpload().
|
private |
Definition at line 239 of file gpu_multires.h.
Referenced by BlockCapacity(), BufferSizes(), Create(), Read(), RecordConductStage(), RecordConductSubstep(), RecordStepWait(), RecordUpload(), and RecordWake().
|
private |
Definition at line 264 of file gpu_multires.h.
Referenced by BindRoot(), CreateBuffers(), MakeGraphInputImage(), RecordConductStage(), RecordExpandPages(), RecordProcessRequests(), RecordReadback(), RecordRequests(), and RecordUpload().
|
private |
Definition at line 238 of file gpu_multires.h.
Referenced by ActivityBytes(), BufferSizes(), ConductRecordsOffset(), Create(), EnableImplicitConduction(), MakeTreeWordsImage(), PageCount(), Read(), ReadSeeds(), RecordProcessRequests(), RecordStepActive(), RecordStepWait(), and RecordUpload().
|
private |
Definition at line 252 of file gpu_multires.h.
Referenced by CreateConductionGraph(), and MakeGraphInputImage().
|
private |
Definition at line 249 of file gpu_multires.h.
Referenced by CreateConductionGraph(), MakeGraphInputImage(), RecordConductStage(), and UseConductionGraph().
|
private |
Definition at line 250 of file gpu_multires.h.
Referenced by RecordConductStage().
|
private |
Definition at line 248 of file gpu_multires.h.
Referenced by CreatePipelines(), and RecordConductPass().
|
private |
Definition at line 261 of file gpu_multires.h.
Referenced by BindRoot(), Create(), CreateBuffers(), CreatePipelines(), RecordConduction(), RecordConductStage(), RecordConductSubstep(), RecordExternalDispatch(), RecordRefineShadow(), RecordStep(), RecordStepActive(), RecordSubstepEnd(), RecordWake(), and SetTick().
|
private |
Definition at line 256 of file gpu_multires.h.
Referenced by CreatePipelines(), and DispatchGraph().
|
private |
Definition at line 270 of file gpu_multires.h.
Referenced by BindRoot(), and SetExternalViews().
|
private |
Definition at line 254 of file gpu_multires.h.
Referenced by CreatePipelines(), GraphBackingMemoryBytes(), and SetGraphProgram().
|
private |
Definition at line 255 of file gpu_multires.h.
Referenced by SetGraphProgram().
|
private |
Definition at line 280 of file gpu_multires.h.
Referenced by EnableImplicitConduction(), ImplicitConduction(), RecordConductSubstep(), RecordImplicitConduction(), and StampImplicitPhases().
|
private |
Definition at line 266 of file gpu_multires.h.
Referenced by CreateBuffers(), Read(), and RecordReadback().
|
private |
Definition at line 267 of file gpu_multires.h.
Referenced by CreateBuffers(), and RecordRequests().
|
private |
Definition at line 268 of file gpu_multires.h.
Referenced by RecordRequests().
|
private |
Definition at line 242 of file gpu_multires.h.
Referenced by CreateConductionGraph(), CreatePipelines(), RecordConductPass(), RecordConductStage(), RecordExternalDispatch(), RecordTreePass(), RecordWake(), RootSignature(), SetActivityProgram(), and SetGraphProgram().
|
private |
Definition at line 246 of file gpu_multires.h.
Referenced by CreatePipelines(), and RecordStepWait().
|
private |
Definition at line 245 of file gpu_multires.h.
Referenced by CreatePipelines(), and RecordStepWait().
|
private |
Definition at line 269 of file gpu_multires.h.
Referenced by BindRoot(), and CreateBuffers().
|
private |
Definition at line 285 of file gpu_multires.h.
Referenced by ReadTimestamps(), RecordReadback(), and RecordTimestamp().
|
private |
Definition at line 284 of file gpu_multires.h.
Referenced by CreateBuffers(), ReadTimestamps(), and RecordReadback().
|
private |
Definition at line 283 of file gpu_multires.h.
Referenced by CreateBuffers(), RecordReadback(), and RecordTimestamp().
|
private |
Definition at line 247 of file gpu_multires.h.
Referenced by CreatePipelines(), and RecordTreePass().
|
private |
Definition at line 265 of file gpu_multires.h.
Referenced by CreateBuffers(), and RecordUpload().
|
private |
Definition at line 251 of file gpu_multires.h.
Referenced by CreateConductionGraph(), RecordConductStage(), and UseConductionGraph().
|
private |
Definition at line 244 of file gpu_multires.h.
Referenced by CreatePipelines(), and RecordWake().
|
staticconstexprprivate |
Definition at line 197 of file gpu_multires.h.
Referenced by CreateBuffers(), and RecordTimestamp().
|
staticconstexpr |
Definition at line 118 of file gpu_multires.h.
Referenced by CreateBuffers(), and RecordRequests().
|
staticconstexprprivate |
Definition at line 193 of file gpu_multires.h.
Referenced by BindRoot().
|
staticconstexprprivate |
Definition at line 195 of file gpu_multires.h.
Referenced by CreatePipelines().