7using namespace bicameral::multires;
29 return std::unexpected(
"陰解法の上限は全部の欄が要る(T-0178)");
36 return std::unexpected(build.error());
44 return std::unexpected(levels.error());
48 .nodes = limits.
nodes,
49 .links = limits.
links,
50 .levels = levelLimits.
levels};
53 return std::unexpected(implicit.error());
61 m_build.RecordAdmit(list, debugRing, multires, options);
72 const auto stamp = [&](uint32_t phase) {
77 m_build.RecordBuild(list, debugRing, multires, options,
true,
true);
86 [[maybe_unused]]
const bool recorded =
m_implicit.RecordStep(list, debugRing, TreeImplicitOptions(options),
90 m_build.RecordApply(list, debugRing, multires, options,
m_implicit.CellsBuffer());
static std::expected< GpuImplicitBuild, std::string > Create(ID3D12Device5 *device, const GpuMultires &multires, const MultiresCapacity &capacity, const GpuImplicitBuildLimits &limits)
static std::expected< GpuImplicitLevels, std::string > Create(ID3D12Device5 *device, const GpuImplicitBuild &build, const GpuImplicitLevelLimits &limits)
static constexpr uint32_t DEFAULT_MAX_LIMIT_ROUNDS
static std::expected< GpuImplicit, std::string > Create(ID3D12Device5 *device, const GpuImplicitLimits &limits, const GpuImplicitTuning &tuning={})
static GpuImplicitRecordShape ShapeFrom(const GpuImplicitCost &previous)
void RecordAdmit(ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, GpuMultires &multires, const MultiresStepOptions &options)
static constexpr uint32_t PHASE_STAMP_FIRST
static std::expected< GpuMultiresImplicit, std::string > Create(ID3D12Device5 *device, const GpuMultires &multires, const MultiresCapacity &capacity, const GpuMultiresImplicitLimits &limits)
GpuMultiresImplicit(GpuImplicitBuild build, GpuImplicitLevels levels, GpuImplicit implicit)
void Record(ID3D12GraphicsCommandList10 *list, D3D12_GPU_VIRTUAL_ADDRESS debugRing, GpuMultires &multires, const MultiresStepOptions &options)
GpuImplicitLevels m_levels
ImplicitOptions TreeImplicitOptions(const MultiresStepOptions &options)
constexpr MultiresImplicitBudget MakeMultiresImplicitBudget(const MultiresImplicitLimits &limits)
MultiresImplicitLimits GpuMultiresImplicitLimits
uint32_t toleranceMillikelvin
uint32_t implicitMaxCycles
ImplicitOverflow implicitOverflow