Как получить поддерживаемый показатель refre sh на Linux? - PullRequest
0 голосов
/ 08 марта 2020

drmModeModeInfo структура из DRM содержит поле uint32_t vrefresh;, и значения там на самом деле хорошие, т.е. я получаю 24-75 Гц для разных режимов видео. Но показатели refre sh не являются целыми числами, это рациональные числа, сейчас для моего дисплея это значение 59997 / 1000.

Возможно ли получить точные числа на Linux? Или хотя бы значение с плавающей запятой?

1 Ответ

0 голосов
/ 08 марта 2020

Числитель - drmModeModeInfo::clock * 1000, поле clock - в килогерцах, и нам нужна Гц для формулы.

Знаменатель - это произведение полей drmModeModeInfo::htotal и drmModeModeInfo::vtotal.

Для лучшего результата я упрощаю рациональное, деля числитель и знаменатель на их наибольший общий делитель. Для этой части я использовал алгоритм из Википедии .

Я не уверен, поддерживает ли дисплей текущие частоты сигналов выше 2 ^ 32 Гц = 4,29 ГГц, но даже если они этого не делают будущие могут сделать это, то есть лучше использовать 64-битное целочисленное вычисление.

...