Шукати в цьому блозі

пʼятниця, 23 жовтня 2009 р.

Как получить modeline

Немного о настройке X'ов. В секции Monitor каждый может заметить загадочные строки ModeLine, но не каждый может ответить на вопрос откуда берутся эти параметры.
Приоткроем завесу над этой тайной. Вот два метода позволяющий получить значения ModeLine.
$ aptitude install read-edid
$ aptitude install videogen
В первом пакете нас интересуют утилиты get-edid и parse-edid - первая из них получает, а вторая интерпретирует значение спецификации монитора используя VESA VBE DDC протокол.
videogen - это программа генерации Modelines для XFree86 сервера.
Теперь как пользоваться первой и второй из них.

Для начала рассмотрим пакет read-edid.
$ sudo get-edid | parse-edid
parse-edid: parse-edid version 2.0.0
get-edid: get-edid version 2.0.0

Performing real mode VBE call
Interrupt 0x10 ax=0x4f00 bx=0x0 cx=0x0
Function supported
Call successful

VBE version 200
VBE string at 0x2110 "ATI RV370"

VBE/DDC service about to be called
Report DDC capabilities

Performing real mode VBE call
Interrupt 0x10 ax=0x4f15 bx=0x0 cx=0x0
Function supported
Call successful

Monitor and video card combination does not support DDC1 transfers
Monitor and video card combination supports DDC2 transfers
0 seconds per 128 byte EDID block transfer
Screen is not blanked during DDC transfer

Reading next EDID block

VBE/DDC service about to be called
Read EDID

Performing real mode VBE call
Interrupt 0x10 ax=0x4f15 bx=0x1 cx=0x0
Function supported
Call successful

parse-edid: EDID checksum passed.

# EDID version 1 revision 3
Section "Monitor"
# Block type: 2:0 3:fd
# Block type: 2:0 3:fc
Identifier "SyncMaster"
VendorName "SAM"
ModelName "SyncMaster"
# Block type: 2:0 3:fd
HorizSync 30-81
VertRefresh 56-75
# Max dot clock (video bandwidth) 140 MHz
# Block type: 2:0 3:fc
# Block type: 2:0 3:ff
# DPMS capabilities: Active off:yes  Suspend:no  Standby:no

Mode  "1280x1024" # vfreq 60.020Hz, hfreq 63.981kHz
DotClock 108.000000
HTimings 1280 1328 1440 1688
VTimings 1024 1025 1028 1066
Flags "+HSync" "+VSync"
EndMode
# Block type: 2:0 3:fd
# Block type: 2:0 3:fc
# Block type: 2:0 3:ff
EndSection
Тут наиболее интересная для решения поставленной нами задачи информация содержится практически в самом конце. Для составления ModeLine нас интересуют строки начинающиеся с Mode, DotClock, HTimings, VTimings и Flags:
Mode  "1280x1024" # vfreq 60.020Hz, hfreq 63.981kHz
DotClock 108.000000
HTimings 1280 1328 1440 1688
VTimings 1024 1025 1028 1066
Flags "+HSync" "+VSync"
Итоговая ModeLine:
  • ModeLine "1280x1024" 108.00 1280 1328 1440 1688 1024 1025 1028 1066 +HSync +VSync

Перейдём ко второму методу, пакету videogen.
Тут всё значительно проще. Просто вызываем videogen с параметрами режима, максимального значения dot clock rate, максимальной частотой горизонтальной развёртки и максимальной частотой вертикальной развёртки:
$ videogen -m=1280x1024 -mdc=108 -mhf=81 -mvf=75
и получаем результирующую строку ModeLine:
  • Modeline "1280x1024" 108.00 1280 1320 1368 1640 1024 1026 1030 1078  # 108 MHz, 65.9 kHz, 61.1 Hz

Следует обратить внимание, что полученные двумя различными способами строки ModeLine слегка отличаются. Собственно это и не удивительно, если первый вариант считывает необходимые параметры с самого монитора то второй является простым калькулятором для ModeLine.

Собственно на этом всё ;)

Немає коментарів: