20#include "common/work_graph_stats.hlsli"
43 std::vector<GraphNodeLimits>
nodes;
44 std::vector<GraphGaugeLimits>
gauges;
67 std::vector<GraphNodeCounters>
nodes;
106 [[nodiscard]]
static std::expected<WorkGraphStats, std::string>
Create(ID3D12Device* device,
108 uint32_t slotCount = 1);
115 void RecordBegin(ID3D12GraphicsCommandList* list)
const;
121 [[nodiscard]] std::expected<GraphStatsSnapshot, std::string>
Read(uint32_t slot = 0)
const;
void RecordReadbackAndReset(ID3D12GraphicsCommandList *list, uint32_t slot=0) const
std::expected< GraphStatsSnapshot, std::string > Read(uint32_t slot=0) const
const GraphStatsLayout & Layout() const
GraphStatsLayout m_layout
WorkGraphStats(ReadbackRing &&ring, GraphStatsLayout &&layout)
D3D12_GPU_VIRTUAL_ADDRESS GpuAddress() const
std::vector< GraphFinding > Report(const GraphStatsSnapshot &snapshot)
static std::expected< WorkGraphStats, std::string > Create(ID3D12Device *device, GraphStatsLayout layout, uint32_t slotCount=1)
static constexpr uint64_t WARNING_REPEAT_REPORTS
std::vector< uint64_t > m_lastWarnedReport
void RecordBegin(ID3D12GraphicsCommandList *list) const
std::string FormatGraphStats(const GraphStatsLayout &layout, const GraphStatsSnapshot &snapshot)
std::vector< GraphFinding > EvaluateGraphStats(const GraphStatsLayout &layout, const GraphStatsSnapshot &snapshot)
void AccumulateGraphStats(GraphStatsSnapshot &total, const GraphStatsSnapshot &frame)
uint32_t refusedRecursions
friend bool operator==(const GraphNodeCounters &, const GraphNodeCounters &)=default
uint32_t deepestRecursion
uint32_t peakRequestedOutputs
uint32_t maxRecursionDepth
uint32_t maxOutputRecords
uint32_t warnOutputRecords
std::vector< GraphNodeLimits > nodes
std::vector< GraphGaugeLimits > gauges
std::vector< uint32_t > gaugePeaks
friend bool operator==(const GraphStatsSnapshot &, const GraphStatsSnapshot &)=default
std::vector< GraphNodeCounters > nodes