| #pragma once |
| |
| #include <stdint.h> |
| |
| #include "pw_ring_buffer/prefixed_entry_ring_buffer.h" |
| |
| namespace kudzu { |
| |
| class FrameCounter { |
| public: |
| FrameCounter(); |
| |
| void StartFrame(); |
| void EndDraw(); |
| void EndFlush(); |
| void EndFrame(); |
| |
| uint32_t frame_start_millis; |
| uint32_t frames; |
| uint32_t start; |
| float delta_time; |
| int frames_per_second; |
| std::byte draw_buffer[30 * sizeof(uint32_t)]; |
| std::byte flush_buffer[30 * sizeof(uint32_t)]; |
| pw::ring_buffer::PrefixedEntryRingBuffer draw_times; |
| pw::ring_buffer::PrefixedEntryRingBuffer flush_times; |
| }; |
| |
| /// Given a ring buffer full of uint32_t values, return the average value or |
| /// zero if empty (or iteration error). |
| uint32_t CalcAverageUint32Value( |
| pw::ring_buffer::PrefixedEntryRingBuffer& ring_buffer); |
| |
| } // namespace kudzu |