mirror of
https://github.com/AxioDL/boo.git
synced 2025-12-09 05:27:58 +00:00
Remove targetFrameTime / Limiter
This commit is contained in:
@@ -15,26 +15,4 @@ void UpdateGammaLUT(ITextureD* tex, float gamma) {
|
||||
tex->unmap();
|
||||
}
|
||||
|
||||
void Limiter::Sleep(nanotime_t targetFrameTime) {
|
||||
OPTICK_EVENT();
|
||||
if (targetFrameTime == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto start = delta_clock::now();
|
||||
nanotime_t sleepTime = targetFrameTime - TimeSince(m_oldTime);
|
||||
m_overhead = std::accumulate(m_overheadTimes.begin(), m_overheadTimes.end(), nanotime_t{}) /
|
||||
static_cast<nanotime_t>(m_overheadTimes.size());
|
||||
if (sleepTime > m_overhead) {
|
||||
nanotime_t adjustedSleepTime = sleepTime - m_overhead;
|
||||
std::this_thread::sleep_for(std::chrono::nanoseconds(adjustedSleepTime));
|
||||
nanotime_t overslept = TimeSince(start) - adjustedSleepTime;
|
||||
if (overslept < targetFrameTime) {
|
||||
m_overheadTimes[m_overheadTimeIdx] = overslept;
|
||||
m_overheadTimeIdx = (m_overheadTimeIdx + 1) % m_overheadTimes.size();
|
||||
}
|
||||
}
|
||||
m_oldTime = delta_clock::now();
|
||||
}
|
||||
|
||||
} // namespace boo
|
||||
|
||||
@@ -285,22 +285,4 @@ public:
|
||||
#define SCOPED_GRAPHICS_DEBUG_GROUP(_, name, ...) OPTICK_EVENT(name)
|
||||
#endif
|
||||
|
||||
class Limiter {
|
||||
using delta_clock = std::chrono::steady_clock;
|
||||
using nanotime_t = std::chrono::nanoseconds::rep;
|
||||
|
||||
public:
|
||||
void Sleep(nanotime_t targetFrameTimeNs);
|
||||
|
||||
private:
|
||||
delta_clock::time_point m_oldTime;
|
||||
std::array<nanotime_t, 4> m_overheadTimes{};
|
||||
size_t m_overheadTimeIdx = 0;
|
||||
nanotime_t m_overhead = 0;
|
||||
|
||||
nanotime_t TimeSince(delta_clock::time_point start) {
|
||||
return std::chrono::duration_cast<std::chrono::nanoseconds>(delta_clock::now() - start).count();
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace boo
|
||||
|
||||
@@ -2883,8 +2883,6 @@ struct VulkanCommandQueue final : IGraphicsCommandQueue {
|
||||
|
||||
std::vector<boo::ObjToken<boo::IObj>> m_drawResTokens[2];
|
||||
|
||||
Limiter m_frameLimiter;
|
||||
|
||||
void resetCommandBuffer() {
|
||||
ThrowIfFailed(vk::ResetCommandBuffer(m_cmdBufs[m_fillBuf], 0));
|
||||
VkCommandBufferBeginInfo cmdBufBeginInfo = {};
|
||||
@@ -4163,7 +4161,6 @@ void VulkanCommandQueue::execute() {
|
||||
} else {
|
||||
ThrowIfFailed(res);
|
||||
}
|
||||
m_frameLimiter.Sleep(m_ctx->m_targetFrameTime);
|
||||
}
|
||||
|
||||
resetCommandBuffer();
|
||||
|
||||
Reference in New Issue
Block a user