|
Bicameral Engine
GPU-resident engine for a magic-research open-world game
|
Namespaces | |
| namespace | anonymous_namespace{debug_ring.cpp} |
| namespace | anonymous_namespace{device.cpp} |
| namespace | anonymous_namespace{graph_trace.cpp} |
| namespace | anonymous_namespace{swap_chain.cpp} |
| namespace | anonymous_namespace{work_graph.cpp} |
| namespace | anonymous_namespace{work_graph_stats.cpp} |
Classes | |
| struct | DebugArgument |
| struct | DebugMessage |
| struct | DebugRingContents |
| class | DebugRing |
| struct | DeviceOptions |
| class | Device |
| struct | DeviceRemovedReport |
| struct | GraphTraceFilter |
| struct | GraphTraceRecord |
| struct | GraphTraceFrame |
| class | GraphTrace |
| class | ImmediateQueue |
| class | Queue |
| class | ReadbackRing |
| struct | RootSignatureLayout |
| class | SwapChain |
| class | WorkGraph |
| struct | GraphNodeLimits |
| struct | GraphGaugeLimits |
| struct | GraphStatsLayout |
| struct | GraphNodeCounters |
| struct | GraphStatsSnapshot |
| struct | GraphFinding |
| class | WorkGraphStats |
Enumerations | |
| enum class | AdapterKind : uint8_t { Hardware , Warp } |
| enum class | BufferKind : uint8_t { UnorderedAccess , Readback , Upload } |
| enum class | GraphFindingKind : uint8_t { OutputsRefused , OutputsNearLimit , RecursionRefused , RecursionNearLimit , GaugeOverCapacity , GaugeNearCapacity , Count } |
Functions | |
| DebugMessage | DecodeDebugRecord (std::span< const uint32_t, DEBUG_RECORD_WORDS > record) |
| const char * | AdapterKindName (AdapterKind kind) |
| DeviceOptions | DefaultDeviceOptions () |
| DeviceRemovedReport | LogDeviceRemoved (ID3D12Device *device) |
| void | SortGraphTrace (std::vector< GraphTraceRecord > &records) |
| ComPtr< ID3D12Resource > | CreateBuffer (ID3D12Device *device, uint64_t sizeBytes, BufferKind kind) |
| bool | ReadBuffer (ID3D12Resource *readback, std::span< std::byte > destination) |
| D3D12_RESOURCE_BARRIER | Transition (ID3D12Resource *resource, D3D12_RESOURCE_STATES before, D3D12_RESOURCE_STATES after) |
| D3D12_RESOURCE_BARRIER | UavBarrier (ID3D12Resource *resource) |
| void | RecordCopyToReadback (ID3D12GraphicsCommandList *list, ID3D12Resource *source, ID3D12Resource *readback) |
| ComPtr< ID3D12RootSignature > | CreateRootSignature (ID3D12Device *device, const RootSignatureLayout &layout) |
| ComPtr< ID3D12PipelineState > | CreateComputePipeline (ID3D12Device *device, ID3D12RootSignature *rootSignature, std::span< const std::byte > bytecode) |
| std::expected< std::vector< std::byte >, std::string > | LoadShader (std::string_view relativePath) |
| void | AccumulateGraphStats (GraphStatsSnapshot &total, const GraphStatsSnapshot &frame) |
| std::string | FormatGraphStats (const GraphStatsLayout &layout, const GraphStatsSnapshot &snapshot) |
| std::vector< GraphFinding > | EvaluateGraphStats (const GraphStatsLayout &layout, const GraphStatsSnapshot &snapshot) |
|
strong |
|
strong |
| Enumerator | |
|---|---|
| UnorderedAccess | |
| Readback | |
| Upload | |
Definition at line 18 of file resources.h.
|
strong |
| Enumerator | |
|---|---|
| OutputsRefused | |
| OutputsNearLimit | |
| RecursionRefused | |
| RecursionNearLimit | |
| GaugeOverCapacity | |
| GaugeNearCapacity | |
| Count | |
Definition at line 81 of file work_graph_stats.h.
| void bicameral::gpu::AccumulateGraphStats | ( | GraphStatsSnapshot & | total, |
| const GraphStatsSnapshot & | frame ) |
Definition at line 82 of file work_graph_stats.cpp.
References bicameral::gpu::GraphNodeCounters::deepestRecursion, bicameral::gpu::GraphStatsSnapshot::gaugePeaks, bicameral::gpu::GraphNodeCounters::inputRecords, bicameral::gpu::GraphNodeCounters::launches, bicameral::gpu::GraphStatsSnapshot::nodes, bicameral::gpu::GraphNodeCounters::outputRecords, bicameral::gpu::GraphNodeCounters::peakRequestedOutputs, bicameral::gpu::GraphNodeCounters::refusedOutputs, and bicameral::gpu::GraphNodeCounters::refusedRecursions.
Referenced by bicameral::frame::anonymous_namespace{frame_loop.cpp}::FrameLoop::AddStats(), and bicameral::frame::anonymous_namespace{frame_loop.cpp}::FrameLoop::ReportSimReadback().
|
nodiscard |
Definition at line 299 of file device.cpp.
References Warp.
|
nodiscard |
Definition at line 18 of file resources.cpp.
References BICAMERAL_CHECK_HR, bicameral::Gpu, Readback, and Upload.
Referenced by bicameral::gpu::GraphTrace::Create(), bicameral::gpu::ReadbackRing::Create(), bicameral::gpu::WorkGraph::Create(), bicameral::render::ScreenshotCapture::Create(), bicameral::sim::GpuImplicitBuild::Create(), bicameral::sim::GpuImplicitLevels::Create(), bicameral::sim::GpuLabBox::Create(), bicameral::sim::GpuImplicit::CreateBuffers(), bicameral::sim::GpuMultires::CreateBuffers(), bicameral::sim::GpuPhysics::CreateBuffers(), bicameral::sim::ProbeSim::CreateBuffers(), bicameral::sim::anonymous_namespace{gpu_multires.cpp}::CreateFilledUpload(), bicameral::sim::anonymous_namespace{probe_sim.cpp}::CreateFilledUpload(), bicameral::frame::anonymous_namespace{frame_loop.cpp}::FrameLoop::CreateFrameSlots(), bicameral::sim::ProbeSim::CreateFrameSlots(), bicameral::sim::ProbeSim::CreateSavePoints(), bicameral::sim::anonymous_namespace{gpu_physics.cpp}::CreateUploadBuffer(), bicameral::sim::ProbeSim::CreateWorld(), bicameral::sim::GpuPhysics::EnableProfiling(), and bicameral::sim::ProbeSim::RecordTableSwap().
|
nodiscard |
Definition at line 153 of file resources.cpp.
References BICAMERAL_CHECK_HR, and bicameral::Gpu.
Referenced by bicameral::sim::GpuImplicitBuild::Create(), bicameral::sim::GpuImplicitLevels::Create(), bicameral::sim::GpuLabBox::Create(), bicameral::sim::ProbePeek::Create(), bicameral::sim::GpuImplicit::CreatePipelines(), bicameral::sim::GpuPhysics::CreatePipelines(), bicameral::sim::anonymous_namespace{gpu_multires.cpp}::LoadComputePipeline(), and bicameral::sim::anonymous_namespace{probe_sim.cpp}::LoadComputePipeline().
|
nodiscard |
Definition at line 93 of file resources.cpp.
References BICAMERAL_CHECK_HR, bicameral::gpu::RootSignatureLayout::debugRing, bicameral::Error, bicameral::Gpu, bicameral::gpu::RootSignatureLayout::graphStats, bicameral::gpu::RootSignatureLayout::graphTrace, bicameral::Log(), bicameral::gpu::RootSignatureLayout::rootConstantCount, bicameral::gpu::RootSignatureLayout::srvCount, and bicameral::gpu::RootSignatureLayout::uavCount.
Referenced by bicameral::render::ProbeView::Create(), bicameral::sim::GpuImplicitLevels::Create(), bicameral::sim::GpuImplicit::CreatePipelines(), bicameral::sim::GpuMultires::CreatePipelines(), bicameral::sim::GpuPhysics::CreatePipelines(), and bicameral::sim::ProbeSim::CreatePipelines().
|
nodiscard |
Definition at line 139 of file debug_ring.cpp.
References bicameral::gpu::DebugMessage::channel, bicameral::gpu::DebugMessage::format, bicameral::gpu::DebugMessage::isAssert, bicameral::gpu::DebugMessage::line, bicameral::gpu::DebugMessage::text, and bicameral::gpu::DebugMessage::where.
Referenced by bicameral::gpu::DebugRing::Drain().
|
nodiscard |
Definition at line 303 of file device.cpp.
Referenced by bicameral::frame::anonymous_namespace{frame_loop.cpp}::LoopDeviceOptions().
|
nodiscard |
Definition at line 136 of file work_graph_stats.cpp.
References bicameral::gpu::GraphStatsSnapshot::gaugePeaks, bicameral::gpu::GraphStatsLayout::gauges, bicameral::gpu::GraphStatsLayout::nodes, and bicameral::gpu::GraphStatsSnapshot::nodes.
Referenced by bicameral::editor::anonymous_namespace{graph_panel.cpp}::BuildFindings(), and bicameral::gpu::WorkGraphStats::Report().
|
nodiscard |
Definition at line 108 of file work_graph_stats.cpp.
References bicameral::gpu::GraphNodeCounters::deepestRecursion, bicameral::gpu::GraphStatsSnapshot::gaugePeaks, bicameral::gpu::GraphStatsLayout::gauges, bicameral::gpu::GraphNodeCounters::inputRecords, bicameral::gpu::GraphNodeCounters::launches, bicameral::gpu::GraphStatsLayout::name, bicameral::gpu::GraphStatsLayout::nodes, bicameral::gpu::GraphStatsSnapshot::nodes, bicameral::gpu::GraphNodeCounters::outputRecords, bicameral::gpu::GraphNodeCounters::refusedOutputs, and bicameral::gpu::GraphNodeCounters::refusedRecursions.
Referenced by bicameral::frame::anonymous_namespace{frame_loop.cpp}::FrameLoop::LogStats(), and bicameral::gpu::WorkGraphStats::Report().
|
nodiscard |
Definition at line 169 of file resources.cpp.
References bicameral::ExecutableDirectory(), bicameral::ToUtf8(), and bicameral::ToWide().
Referenced by bicameral::render::ProbeView::Create(), bicameral::sim::GpuImplicitBuild::Create(), bicameral::sim::GpuImplicitLevels::Create(), bicameral::sim::GpuLabBox::Create(), bicameral::sim::ProbePeek::Create(), bicameral::sim::ProbeSim::CreateConductGraph(), bicameral::sim::GpuMultires::CreateConductionGraph(), bicameral::sim::GpuImplicit::CreatePipelines(), bicameral::sim::GpuMultires::CreatePipelines(), bicameral::sim::GpuPhysics::CreatePipelines(), bicameral::sim::anonymous_namespace{gpu_multires.cpp}::LoadComputePipeline(), and bicameral::sim::anonymous_namespace{probe_sim.cpp}::LoadComputePipeline().
| DeviceRemovedReport bicameral::gpu::LogDeviceRemoved | ( | ID3D12Device * | device | ) |
Definition at line 379 of file device.cpp.
References bicameral::gpu::DeviceRemovedReport::breadcrumbListCount, bicameral::DescribeHresult(), bicameral::gpu::DeviceRemovedReport::dredAvailable, bicameral::Error, bicameral::Gpu, bicameral::Log(), bicameral::gpu::DeviceRemovedReport::pageFaultAddress, and bicameral::Warning.
Referenced by bicameral::gpu::ImmediateQueue::ExecuteAndWait(), and bicameral::frame::anonymous_namespace{frame_loop.cpp}::FrameLoop::Finish().
|
nodiscard |
Definition at line 52 of file resources.cpp.
References BICAMERAL_CHECK_HR, and bicameral::Gpu.
Referenced by bicameral::sim::GpuPhysics::AccumulateProfile(), bicameral::frame::anonymous_namespace{frame_loop.cpp}::FrameLoop::CollectFrameSlot(), bicameral::gpu::ReadbackRing::Read(), bicameral::sim::GpuImplicit::Read(), bicameral::sim::GpuImplicitBuild::Read(), bicameral::sim::GpuImplicitLevels::Read(), bicameral::sim::GpuMultires::Read(), bicameral::sim::GpuPhysics::ReadBodies(), bicameral::sim::GpuImplicit::ReadCost(), bicameral::sim::ProbeSim::ReadFrame(), bicameral::sim::ProbeSim::ReadHashes(), bicameral::sim::GpuMultires::ReadSeeds(), bicameral::sim::GpuPhysics::ReadStats(), bicameral::sim::GpuImplicit::ReadTimestamps(), bicameral::sim::GpuImplicitBuild::ReadTimestamps(), bicameral::sim::GpuImplicitLevels::ReadTimestamps(), and bicameral::sim::GpuMultires::ReadTimestamps().
| void bicameral::gpu::RecordCopyToReadback | ( | ID3D12GraphicsCommandList * | list, |
| ID3D12Resource * | source, | ||
| ID3D12Resource * | readback ) |
Definition at line 78 of file resources.cpp.
Referenced by bicameral::sim::GpuImplicit::RecordCostReadback(), bicameral::sim::GpuImplicit::RecordReadback(), bicameral::sim::GpuMultires::RecordReadback(), bicameral::sim::GpuPhysics::RecordReadback(), and bicameral::sim::ProbeSim::RecordReadbacks().
| void bicameral::gpu::SortGraphTrace | ( | std::vector< GraphTraceRecord > & | records | ) |
Definition at line 44 of file graph_trace.cpp.
Referenced by bicameral::sim::UniqueProbeTrace(), and bicameral::sim::WriteProbeTraceFile().
|
nodiscard |
Definition at line 65 of file resources.cpp.
Referenced by bicameral::sim::anonymous_namespace{probe_save_point.cpp}::AppendTransitions(), bicameral::sim::GpuImplicit::BeginSkippable(), bicameral::sim::GpuImplicitLevels::BeginSkippable(), bicameral::sim::anonymous_namespace{gpu_implicit_build.cpp}::CopyToReadback(), bicameral::sim::anonymous_namespace{gpu_implicit_levels.cpp}::CopyToReadback(), bicameral::sim::GpuImplicit::EndSkippable(), bicameral::sim::GpuImplicitLevels::EndSkippable(), bicameral::render::ProbeView::Record(), bicameral::render::ScreenshotCapture::Record(), bicameral::sim::ProbeSim::RecordActiveListStates(), bicameral::gpu::GraphTrace::RecordBegin(), bicameral::gpu::ReadbackRing::RecordBegin(), bicameral::sim::GpuPhysics::RecordColorListStates(), bicameral::sim::GpuPhysics::RecordColorPredicateStates(), bicameral::sim::GpuLabBox::RecordCommandUpload(), bicameral::sim::ProbeSim::RecordConduct(), bicameral::sim::GpuMultires::RecordConductStage(), bicameral::sim::GpuImplicit::RecordCopies(), bicameral::sim::GpuImplicitBuild::RecordCopyTo(), bicameral::sim::GpuImplicitLevels::RecordCopyTo(), bicameral::sim::GpuImplicit::RecordCostReadback(), bicameral::sim::GpuMultires::RecordExpandPages(), bicameral::sim::ProbeSim::RecordFrame(), bicameral::sim::ProbeSim::RecordInitialization(), bicameral::sim::GpuImplicit::RecordPlan(), bicameral::sim::GpuMultires::RecordProcessRequests(), bicameral::gpu::ReadbackRing::RecordReadbackAndReset(), bicameral::sim::ProbeSim::RecordReadbacks(), bicameral::sim::GpuImplicit::RecordRelease(), bicameral::sim::GpuMultires::RecordRequests(), bicameral::sim::GpuImplicit::RecordReset(), bicameral::sim::GpuImplicit::RecordStep(), bicameral::sim::GpuMultires::RecordStepActive(), bicameral::sim::GpuMultires::RecordSubstepEnd(), bicameral::sim::ProbeSim::RecordTableSwap(), bicameral::sim::GpuImplicit::RecordUpload(), bicameral::sim::GpuMultires::RecordUpload(), and bicameral::editor::EditorOverlay::Submit().
|
nodiscard |
Definition at line 74 of file resources.cpp.
Referenced by bicameral::sim::GpuPhysics::RecordBroadphaseGraph(), bicameral::sim::ProbeSim::RecordEnqueue(), bicameral::sim::ProbeSim::RecordExtractAndHook(), bicameral::sim::GpuPhysics::RecordPass(), bicameral::sim::GpuPhysics::RecordSolveColorGraph(), bicameral::sim::ProbeSim::RecordUnit(), and bicameral::sim::anonymous_namespace{gpu_multires.cpp}::UavBarrier().