19#include "common/implicit_conduction.hlsli"
43 std::vector<multires::ImGpuNode>
nodes;
44 std::vector<multires::ImGpuLink>
links;
61 [[nodiscard]]
static std::expected<GpuImplicitLevels, std::string>
Create(ID3D12Device5* device,
66 void RecordBuild(ID3D12GraphicsCommandList* list, D3D12_GPU_VIRTUAL_ADDRESS debugRing,
74 [[nodiscard]] std::expected<GpuImplicitLevelSystem, std::string>
Read()
const;
75 [[nodiscard]] std::vector<uint64_t>
ReadTimestamps(uint32_t count)
const;
99 void Dispatch(ID3D12GraphicsCommandList* list, uint32_t pass, uint32_t groups);
100 [[nodiscard]]
bool UsesTail()
const;
101 void BeginSkippable(ID3D12GraphicsCommandList* list, uint32_t coarsening);
ComPtr< ID3D12Resource > m_links
uint32_t DispatchCount() const
void BeginSkippable(ID3D12GraphicsCommandList *list, uint32_t coarsening)
static constexpr uint32_t MAX_TIMESTAMPS
uint32_t m_dispatchRounds
ComPtr< ID3D12Resource > m_childrenReadback
void EndSkippable(ID3D12GraphicsCommandList *list)
void RecordCopyTo(ID3D12GraphicsCommandList *list, GpuImplicit &implicit)
static std::expected< GpuImplicitLevels, std::string > Create(ID3D12Device5 *device, const GpuImplicitBuild &build, const GpuImplicitLevelLimits &limits)
uint32_t m_timestampCount
ComPtr< ID3D12Resource > m_timestampReadback
ComPtr< ID3D12Resource > m_linksReadback
ComPtr< ID3D12Resource > m_children
GpuImplicitLevels()=default
ComPtr< ID3D12Resource > m_headerReadback
std::vector< ComPtr< ID3D12PipelineState > > m_pipelines
void RecordReadback(ID3D12GraphicsCommandList *list)
std::expected< GpuImplicitLevelSystem, std::string > Read() const
void RecordTimestamp(ID3D12GraphicsCommandList *list, uint32_t index)
void RecordBuild(ID3D12GraphicsCommandList *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, const GpuImplicitBuild &build)
ComPtr< ID3D12Resource > m_nodes
ComPtr< ID3D12Resource > m_predicate
ComPtr< ID3D12RootSignature > m_rootSignature
void Dispatch(ID3D12GraphicsCommandList *list, uint32_t pass, uint32_t groups)
ComPtr< ID3D12Resource > m_nodesReadback
ComPtr< ID3D12Resource > m_work
ComPtr< ID3D12QueryHeap > m_timestamps
std::vector< uint64_t > ReadTimestamps(uint32_t count) const
GpuImplicitLevelImages MakeGpuImplicitLevelImages(const ImplicitGrid &grid)
std::vector< multires::ImGpuLink > links
std::vector< uint32_t > children
std::vector< uint32_t > levelOffsets
std::vector< multires::ImGpuNode > nodes
std::vector< uint32_t > linkOffsets
GpuImplicitLevelImages images