20#include "common/implicit_conduction.hlsli"
40 std::vector<multires::ImGpuCell>
cells;
49 [[nodiscard]]
static std::expected<GpuImplicitBuild, std::string>
Create(ID3D12Device5* device,
57 void RecordBuild(ID3D12GraphicsCommandList10* list, D3D12_GPU_VIRTUAL_ADDRESS debugRing,
GpuMultires& multires,
62 void RecordAdmit(ID3D12GraphicsCommandList10* list, D3D12_GPU_VIRTUAL_ADDRESS debugRing,
GpuMultires& multires,
67 void RecordApply(ID3D12GraphicsCommandList10* list, D3D12_GPU_VIRTUAL_ADDRESS debugRing,
GpuMultires& multires,
76 [[nodiscard]]
static const char*
StageName(uint32_t pass);
80 [[nodiscard]] std::expected<GpuImplicitSystem, std::string>
Read()
const;
81 [[nodiscard]] std::vector<uint64_t>
ReadTimestamps(uint32_t count)
const;
96 void RecordPasses(ID3D12GraphicsCommandList10* list, D3D12_GPU_VIRTUAL_ADDRESS debugRing,
GpuMultires& multires,
100 bool useFrozenMarks)
const;
ComPtr< ID3D12Resource > m_workReadback
static constexpr uint32_t MAX_TIMESTAMPS
void RecordAdmit(ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, GpuMultires &multires, const MultiresStepOptions &options)
ComPtr< ID3D12Resource > m_system
std::vector< uint64_t > ReadTimestamps(uint32_t count) const
ID3D12Resource * SystemBuffer() const
uint64_t ListsOffset() const
GpuImplicitBuildLimits m_limits
uint32_t CellKeysWord() const
void RecordReadback(ID3D12GraphicsCommandList *list)
void RecordApply(ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, GpuMultires &multires, const MultiresStepOptions &options, ID3D12Resource *solvedCells)
uint32_t m_timestampCount
ComPtr< ID3D12PipelineState > m_applyPipeline
ComPtr< ID3D12QueryHeap > m_timestamps
void StampPasses(bool stamp)
static std::expected< GpuImplicitBuild, std::string > Create(ID3D12Device5 *device, const GpuMultires &multires, const MultiresCapacity &capacity, const GpuImplicitBuildLimits &limits)
const GpuImplicitBuildLimits & Limits() const
void RecordPasses(ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, GpuMultires &multires, const MultiresStepOptions &options, bool useFrozenMarks, uint32_t firstPass, uint32_t endPass)
std::expected< GpuImplicitSystem, std::string > Read() const
static const char * StageName(uint32_t pass)
void RecordTimestamp(ID3D12GraphicsCommandList *list, uint32_t index)
GpuImplicitBuild()=default
ComPtr< ID3D12Resource > m_timestampReadback
uint32_t ListCellsWord() const
void RecordCopyTo(ID3D12GraphicsCommandList *list, GpuImplicit &implicit)
uint64_t FacesOffset() const
std::vector< ComPtr< ID3D12PipelineState > > m_pipelines
ComPtr< ID3D12Resource > m_work
ID3D12Resource * WorkBuffer() const
std::array< uint32_t, 4 > ExternalConstants(const MultiresStepOptions &options, bool useFrozenMarks) const
void RecordBuild(ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, GpuMultires &multires, const MultiresStepOptions &options, bool useFrozenMarks=false, bool afterAdmit=false)
ComPtr< ID3D12Resource > m_systemReadback
static uint32_t StageCount()
std::vector< multires::ImGpuCell > cells
std::vector< uint32_t > lists
std::vector< multires::ImGpuFace > faceList