28 [[nodiscard]]
static std::expected<LabSession, std::string>
Create(ID3D12Device5* device,
29 D3D12_COMMAND_LIST_TYPE queueType,
33 bool Place(
LabCellPosition cell, std::span<const SpeciesAmount> contents, uint32_t temperatureMilliKelvin);
37 [[nodiscard]] std::expected<void, std::string>
Step(uint32_t tickCount);
40 [[nodiscard]] std::expected<void, std::string>
Reset();
60 [[nodiscard]] std::vector<Command>
TakeCommands(uint64_t tick);
61 [[nodiscard]] std::expected<void, std::string>
StepOne();
const MultiresNest & Cpu() const
std::optional< LabMismatch > m_mismatch
std::vector< uint64_t > m_hashes
bool Queue(const Command &command)
std::expected< void, std::string > Step(uint32_t tickCount)
const BakedReactionTable & Table() const
std::vector< Command > m_history
bool SetTemperature(LabCellPosition cell, uint32_t temperatureMilliKelvin)
BakedReactionTable m_table
std::optional< uint64_t > m_replayDivergence
std::expected< void, std::string > Replay(const LabRecording &recording)
std::optional< uint64_t > ReplayDivergence() const
std::expected< void, std::string > StepOne()
LabRecording Recording() const
std::expected< void, std::string > Reset()
std::vector< Command > m_scheduled
uint64_t NextTick() const
std::vector< uint64_t > m_replayHashes
static std::expected< LabSession, std::string > Create(ID3D12Device5 *device, D3D12_COMMAND_LIST_TYPE queueType, const BakedReactionTable &table)
std::vector< Command > m_pending
bool Place(LabCellPosition cell, std::span< const SpeciesAmount > contents, uint32_t temperatureMilliKelvin)
const std::optional< LabMismatch > & Mismatch() const
size_t PendingCommands() const
gpu::ImmediateQueue m_queue
const MultiresNest & Gpu() const
std::vector< Command > TakeCommands(uint64_t tick)
LabSession(BakedReactionTable table, gpu::ImmediateQueue queue, gpu::DebugRing ring, GpuLabBox box)