|
Bicameral Engine
GPU-resident engine for a magic-research open-world game
|
#include <gpu_implicit_build.h>
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 |
Definition at line 45 of file gpu_implicit_build.h.
|
privatedefault |
|
nodiscard |
Definition at line 191 of file gpu_implicit_build.cpp.
References ListCellsWord(), and m_limits.
Referenced by bicameral::sim::GpuImplicitLevels::Create().
|
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().
|
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().
|
nodiscard |
Definition at line 195 of file gpu_implicit_build.cpp.
References m_limits.
Referenced by bicameral::sim::GpuImplicitLevels::Create(), ListsOffset(), Read(), and RecordCopyTo().
|
inlinenodiscard |
Definition at line 84 of file gpu_implicit_build.h.
References m_limits.
Referenced by bicameral::sim::GpuImplicitLevels::Create().
|
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().
|
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().
|
nodiscard |
Definition at line 316 of file gpu_implicit_build.cpp.
References bicameral::sim::GpuImplicitSystem::boundary, bicameral::sim::GpuImplicitSystem::cells, bicameral::sim::GpuImplicitSystem::faceList, bicameral::sim::GpuImplicitSystem::faces, FacesOffset(), bicameral::sim::GpuImplicitSystem::lists, ListsOffset(), m_systemBytes, m_systemReadback, m_workReadback, bicameral::sim::GpuImplicitSystem::overflow, bicameral::gpu::ReadBuffer(), and bicameral::sim::GpuImplicitSystem::unknowns.
|
nodiscard |
Definition at line 338 of file gpu_implicit_build.cpp.
References m_timestampCount, m_timestampReadback, and bicameral::gpu::ReadBuffer().
| 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().
| 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.
| 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().
| 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().
|
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().
| void bicameral::sim::GpuImplicitBuild::RecordReadback | ( | ID3D12GraphicsCommandList * | list | ) |
Definition at line 307 of file gpu_implicit_build.cpp.
References m_system, m_systemBytes, m_systemReadback, m_timestampCount, m_timestampReadback, m_timestamps, m_work, and m_workReadback.
| 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().
|
staticnodiscard |
Definition at line 290 of file gpu_implicit_build.cpp.
|
staticnodiscard |
Definition at line 295 of file gpu_implicit_build.cpp.
|
inline |
Definition at line 74 of file gpu_implicit_build.h.
References m_stampPasses.
|
inlinenodiscard |
Definition at line 86 of file gpu_implicit_build.h.
References m_system.
Referenced by bicameral::sim::GpuImplicitLevels::RecordBuild().
|
inlinenodiscard |
Definition at line 85 of file gpu_implicit_build.h.
References m_work.
Referenced by bicameral::sim::GpuImplicitLevels::RecordBuild().
|
private |
Definition at line 108 of file gpu_implicit_build.h.
Referenced by Create(), and RecordApply().
|
private |
Definition at line 102 of file gpu_implicit_build.h.
Referenced by CellKeysWord(), Create(), ExternalConstants(), FacesOffset(), Limits(), ListCellsWord(), ListsOffset(), RecordApply(), and RecordPasses().
|
private |
Definition at line 107 of file gpu_implicit_build.h.
Referenced by Create(), and RecordPasses().
|
private |
Definition at line 116 of file gpu_implicit_build.h.
Referenced by RecordPasses(), and StampPasses().
|
private |
Definition at line 110 of file gpu_implicit_build.h.
Referenced by Create(), RecordCopyTo(), RecordPasses(), RecordReadback(), and SystemBuffer().
|
private |
Definition at line 105 of file gpu_implicit_build.h.
Referenced by Create(), Read(), and RecordReadback().
|
private |
Definition at line 112 of file gpu_implicit_build.h.
Referenced by Create(), Read(), and RecordReadback().
|
private |
Definition at line 115 of file gpu_implicit_build.h.
Referenced by ReadTimestamps(), RecordReadback(), and RecordTimestamp().
|
private |
Definition at line 114 of file gpu_implicit_build.h.
Referenced by Create(), ReadTimestamps(), and RecordReadback().
|
private |
Definition at line 113 of file gpu_implicit_build.h.
Referenced by Create(), RecordReadback(), and RecordTimestamp().
|
private |
Definition at line 109 of file gpu_implicit_build.h.
Referenced by Create(), RecordApply(), RecordCopyTo(), RecordPasses(), RecordReadback(), and WorkBuffer().
|
private |
Definition at line 104 of file gpu_implicit_build.h.
Referenced by Create().
|
private |
Definition at line 111 of file gpu_implicit_build.h.
Referenced by Create(), Read(), and RecordReadback().
|
private |
Definition at line 103 of file gpu_implicit_build.h.
Referenced by Create(), ListCellsWord(), and RecordPasses().
|
staticconstexpr |
Definition at line 47 of file gpu_implicit_build.h.
Referenced by Create(), and RecordTimestamp().