28#include "common/graph_trace.hlsli"
41 uint64_t
tickEnd = std::numeric_limits<uint64_t>::max();
42 std::array<uint32_t, 3>
boxMin = {0, 0, 0};
43 std::array<uint32_t, 3>
boxMax = {std::numeric_limits<uint32_t>::max(), std::numeric_limits<uint32_t>::max(),
44 std::numeric_limits<uint32_t>::max()};
69 [[nodiscard]]
static std::expected<GraphTrace, std::string>
Create(ID3D12Device* device,
71 uint32_t slotCount = 1,
72 uint32_t capacity = 0);
75 [[nodiscard]] D3D12_GPU_VIRTUAL_ADDRESS
GpuAddress()
const {
return m_ring.GpuAddress(); }
84 void RecordBegin(ID3D12GraphicsCommandList* list, uint32_t slot = 0);
91 [[nodiscard]] std::expected<GraphTraceFrame, std::string>
Read(uint32_t slot = 0)
const;
GraphTraceFilter m_filter
const GraphTraceFilter & Filter() const
void RecordReadbackAndReset(ID3D12GraphicsCommandList *list, uint32_t slot=0) const
void RecordBegin(ID3D12GraphicsCommandList *list, uint32_t slot=0)
D3D12_GPU_VIRTUAL_ADDRESS GpuAddress() const
uint32_t Capacity() const
void SetFilter(const GraphTraceFilter &filter)
std::byte * m_filterMapped
static std::expected< GraphTrace, std::string > Create(ID3D12Device *device, const GraphTraceFilter &filter, uint32_t slotCount=1, uint32_t capacity=0)
GraphTrace(ReadbackRing &&ring, ComPtr< ID3D12Resource > filterUpload, std::byte *filterMapped, uint32_t capacity, uint32_t slotCount)
ComPtr< ID3D12Resource > m_filterUpload
std::vector< GraphTraceFilter > m_slotFilters
std::expected< GraphTraceFrame, std::string > Read(uint32_t slot=0) const
void SortGraphTrace(std::vector< GraphTraceRecord > &records)
std::array< uint32_t, 3 > boxMax
std::array< uint32_t, 3 > boxMin
std::vector< GraphTraceRecord > records
friend auto operator<=>(const GraphTraceRecord &, const GraphTraceRecord &)=default