1ed49f92dd
This utilizes undocumented NtDll functions to change the current timer resolution from the default of 1ms.
39 lines
1.1 KiB
C++
39 lines
1.1 KiB
C++
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#pragma once
|
|
|
|
#include <chrono>
|
|
|
|
namespace Common::Windows {
|
|
|
|
/// Returns the minimum (least precise) supported timer resolution in nanoseconds.
|
|
std::chrono::nanoseconds GetMinimumTimerResolution();
|
|
|
|
/// Returns the maximum (most precise) supported timer resolution in nanoseconds.
|
|
std::chrono::nanoseconds GetMaximumTimerResolution();
|
|
|
|
/// Returns the current timer resolution in nanoseconds.
|
|
std::chrono::nanoseconds GetCurrentTimerResolution();
|
|
|
|
/**
|
|
* Sets the current timer resolution.
|
|
*
|
|
* @param timer_resolution Timer resolution in nanoseconds.
|
|
*
|
|
* @returns The current timer resolution.
|
|
*/
|
|
std::chrono::nanoseconds SetCurrentTimerResolution(std::chrono::nanoseconds timer_resolution);
|
|
|
|
/**
|
|
* Sets the current timer resolution to the maximum supported timer resolution.
|
|
*
|
|
* @returns The current timer resolution.
|
|
*/
|
|
std::chrono::nanoseconds SetCurrentTimerResolutionToMaximum();
|
|
|
|
/// Sleep for one tick of the current timer resolution.
|
|
void SleepForOneTick();
|
|
|
|
} // namespace Common::Windows
|