15 void TraceCapture::Add(std::span<const gpu::GraphTraceRecord> records, uint32_t droppedCount) {
19 const size_t taken = std::min(room, records.size());
20 m_records.insert(
m_records.end(), records.begin(), records.begin() +
static_cast<ptrdiff_t
>(taken));
25 if (
m_filter.tickEnd == std::numeric_limits<uint64_t>::max())
28 return latestStateTick >=
m_filter.tickEnd;
33 if (
m_path.has_parent_path()) {
34 std::error_code error;
35 fs::create_directories(
m_path.parent_path(), error);
37 return std::unexpected(std::format(
"トレースのフォルダを作れない: {}", pathText));
40 const size_t recordCount =
m_records.size();
44 return std::unexpected(std::format(
"{}: {}", written.error(), pathText));
gpu::GraphTraceFilter m_filter
std::vector< gpu::GraphTraceRecord > m_records
void Add(std::span< const gpu::GraphTraceRecord > records, uint32_t droppedCount)
std::expected< void, std::string > Write()
static constexpr size_t MAX_RECORDS
bool IsComplete(uint64_t latestStateTick) const
std::expected< void, std::string > WriteProbeTraceFile(const fs::path &path, std::vector< gpu::GraphTraceRecord > records, const gpu::GraphTraceFilter &filter, uint64_t droppedCount)
void Log(Channel channel, Level level, FormatWithLocation< std::type_identity_t< Args >... > pattern, Args &&... args)
std::string ToUtf8(std::wstring_view text)