如何在Linux上获得受支持的显示刷新率?

问题描述 投票:0回答:1

drmModeModeInfo中的[DRM结构包含uint32_t vrefresh;字段,并且该值实际上在那里很好,即,对于不同的视频模式,我得到24-75Hz。但是刷新率不是整数,而是有理数,现在对于我的显示,值为59997/1000。

是否可以在Linux上获得准确的数字?还是至少有一个浮点值?

c++ linux debian drm
1个回答
0
投票

分子为drmModeModeInfo::clock * 1000clock字段为千赫兹,公式需要Hz。

分母是drmModeModeInfo::htotaldrmModeModeInfo::vtotal字段的乘积。

为了获得更好的结果,我通过将分子和分母除以它们的最大公约数来简化有理数。对于这一部分,我使用了algorithm from Wikipedia

我不确定当前的显示器是否支持2 ^ 32 Hz = 4.29 GHz以上的信号频率,但是即使它们不支持,将来的信号频率也可能支持,即您最好在此处使用64位整数数学。

© www.soinside.com 2019 - 2024. All rights reserved.