4k @ 144Hz: DP, HDMI, USB-C Alt-Mode & cables…

в 8:58, , рубрики: 4k, 4k monitor, 4k@144Hz, displayport, hdmi, USB-C, Видеокарты, Мониторы и ТВ, Настольные компьютеры, Настройка Linux, Ноутбуки

О практических проблемах больших разрешений на большой частоте.

Лыдыбр: Я недавно сделал себе небольшой апгрейд и у меня появился монитор 4k@144Hz. Разумеется, на 144Hz он с пол-пинка не заработал. И с пачкой ноутбуков и USB-C кабелей тоже. Потому что нюансы. Мне пришлось в это нырнуть глубже, чем хотелось бы...
Моя старая видеокарта на компьютере сумела завести его на 4k @ 60Hz с помощью Display Port. (Либо 2k @ 144Hz). Я попытался воткнуть в монитор ноутбук (все 5 шт, какие нашлись у меня и знакомых) и обнаружил, что всё настолько сложно, что мне потребовалось несколько заходов чтения спецификации, пока я "это завёл". Выписываю свои наблюдения и эксперименты. Актуальность - первая половина 2022 года. Монитор under study: Gigabyte M32U, хотя, в принципе, это не существенно для обсуждаемого вопроса. У монитора в наличии разъёмы HDMI, DisplayPort (2 шт), USB-C. При том, что с десктопом моя проблема решилась "просто обновлением железа", я решил разобраться с проблемой поглубже, чтобы знать.

Разбирать проблему я буду слоями. Начём с физики и кабелей.

Физика

4k (3840х2160) на частоте 144Hz при глубине 1 байт на цвет (24 бита на пиксел) требует минимум 28665446400 бит в секунду (3840*2160*3*8*144), то есть около 30 гигабит/с, и это не считая накладных расходов кодирования (либо 8/10, либо 128/130), звукового потока, USB для подключения периферии и т.д. Любые кабели, в которых проходит меньше, нам не подойдут. Точнее, если мы сожмём передаваемый сигнал, то сможем "пролезть" в 20Гбит, но наше первое предположение: 20 гигабит - маловато. Про компрессию - см раздел в конце.
Поскольку ситуация очень плохая, то мы так же будем рассматривать как допустимые и 120Hz вместо 144Гц, то есть 23 Гбит/с.

Какие кабели могут нам столько дать (мы не смотрим на протоколы)

Кабели

  • HDMI 2.0 кабель даёт 18.0 Gbit/s. Такой кабель больше 90Гц не может. Названия кабелей (которые не годятся): Standard HDMI Cable, High Speed HDMI, Premium High Speed HDMI

  • HDMI 2.1 имеет подмножество кабелей с условным называнием Ultra High Speed HDMI Cable (UHS), которые умеют 48 Gbit/s. Другие название - Category 3 HDMI, HDMI 8k, HDMI 48G.

  • Display Port кабели старых поколений: RBR (reduced bit rate), HBR, HBR2 (High Bitrate). Другие названия: Standard DisplayPort Cable, Full HD.

  • High Bitrate 3 (HBR3) умеет 32.4 Gbit/s. До 120Гц. (144Гц в режиме компрессии). Другие названия: DP4k.

  • UHBR 10, 13.5 и 20 (Ultra High Bit Rate) Пришёл с display port 2.0. Даёт 40-80 Gbit/s. Наши родные 144Гц без выкрутасов. Альтернативное название: DP8k.

  • USB-C кабель USB3 - даже близко нет.

  • USB-C кабель USB4. Куча кабелей разной скорости, все (кроме того, что ниже не подходят) USB4 Gen 2×1, USB4 Gen 2×2 (?), USB4 Gen 3×1.

  • USB-C кабель USB4 Gen 3×2. В него проходит 40 Гбит. Обратите внимание, все остальные кабели USB4 не годятся (я не уверен про USB4 Gen 2x2, там всего лишь 20Гбит/с, что может быть, хватит для 120Гц с компрессией)

  • Thunderbolt 3 кабель является прародителем USB4, и по скорости 40Gbit/s должен работать, но ...я не знаю, работает он или нет. Сам TB3 обещает DP 1.2, который всего лишь "(3840 × 2160) at 120 Hz". Терпимо.

  • Thunderbolt 4 кабель точно работает, потому что 40Gbit/s, и в стандарте есть DP 2.0.

Заметим, я совсем не трогал вопрос с power delivery == PD (не путать с DP == Display Port), это отдельная ортогональная задача. Хотя кабель, который по USB-C делает PD - это мечта для подключения ноутбука. Воткнул один кабель - и готовая док-станция. Однако, по стандарту Thunderbolt 4, power delivery может быть всего 18Вт. Как я обнаружил, многие ноутбуки с питанием работают по схеме "всё или ничего", то есть от 18Вт не заряжаются даже в sleep. Редким исключением являются макбуки. Но это всё оффтопик - мы-то 4k@144 хотим...

Итог: Всё, что не в списке выше, будет или не работать, или будет работать странно (пропадающий сигнал), или будет работать на маленьких частотах (< 100Hz).

Таким образом, в общем случае, USB-C кабель без маркировки - вероятнее всего, не подойдёт.

Лыдыбр. С учётом цены правильных кабелей очевидно, что все usb-c кабели в моём хозяйстве, купленном под телефоны, оказались совершенно далеки от мира 'USB4 Gen 3x2', что объяснило большинсто моих неудач вначале.

Покупка кабелей

Наблюдение за кабелями в магазинах.

Найти правильный DP кабель легко. Найти правильный HDMI кабель ... относительно легко. А вот USB-C - вот тут вот безумие.

Во-первых, как было сказано выше, USB-C бывает кучи версий. Многие - USB3, т.е. для передачи сигнала видео совсем не подходят. Даже если вы найдёте USB4 кабель, то их огромное число и большая часть из них не подходит. Официальное название нужного кабеля - "Gen 3x2", удачи вам пробиться через магазинные поисковики с таким. А большая часть того, что найдено - 0.8м, потому что это максимальная длина пассивного кабеля, насколько я понял. Кабель большей длины - нужны чипы в кабеле, что резко повышает цену и сужает ассортимент.

Причём я говорю не про Али (где в описании кобелей собачье безумство), а про многие благородные магазины, и Амазон, и computeruniverse, и локальные компьютерные магазины Кипра. Наверное, в с этим не лучше и в других магазинах.

С огромным скрипом я нашёл правильные названия, и их цена... Впечатлила. В результате я остановился на активном сертифицированном Thunderbolt 4 кабеле за €50. Это слегка оверкилл, но зато точно всё в наличии и всё хорошо. Не-оверкилл с слегка более скромными спецификациями рядом был за €38, плюс €18 доставка...

Но! Этот кабель заработал. Я увидел честные 4k @ 144Hz на одном-единственном ноутбуке из всех доступных.

С кабелями разобрались. Дальше идут протоколы.

Протоколы

У нас есть выбор из двух: HDMI и DP, но всё осложняется тем, что оба их них могут оказаться внутри USB-C кабеля.

HDMI

В спецификации сказано, что:

  • HDMI 1.4 : 4k @ 30Hz.

  • HDMI 2.0: 4k @ 60 Hz

  • HDMI 2.1: 4k @ 120 Hz.

А как же 144 Hz? А никак. Упс... Таким образом, HDMI, даже в самом bleeding edge режиме (по состоянию на 22 год) не может показать желаемое. Хотя, 120Гц, в целом, почти достаточно. Таким образом, для "едва-едва" нам нужен HDMI 2.1 и не ниже. На 2.0 мы получим "обычные 60Гц", а "старый HDMI" нам покажет 30-герцовый кошмарик. При том, что кабель способен, стандарт не осилил.

Лыдыбр: что, собственно и оказалось в переходнике USB-C -> HDMI, который у меня был. Внутри HDMI 1.4. Enjoy your 30 out of 144.

P.S. Оказалось, что всё сложнее и у HDMI 2.1 есть разновдиности. См комментарии.

Display Port

Display Port куда более продвинутая технология:

  • Display Port 1.0, режим "HBR": 4k @ 30Hz.

  • Display Port 1.2, режим "HBR2": 4k @ 75 Hz (внезапно!)

  • Display Port 1.3, режим "HBR3": 4k @ 120Hz (почти...)

  • Display Port 1.4, режим "HBR3 4k @ 120Hz, но есть DSC или YCrBr 4:2:0, которые, теоретически должны дать 144 Hz...

  • Display Port 2.0, режим UBHR10: 4k @ 144Hz, UBR20: 4k @ 240Hz. Даже перелёт.

Итого, Display port в версии 1.3 такой же "едва", как HDMI 2.1. Версия 1.4a минимально подходит, а версия 2.0 - это то, что нам нужно.

Thunderbolt

Сам Thunderbolt нас не касается, но он поддерживает некоторые интересные режимы, касающиеся видео.

В Thunderbolt 3 может быть три режима работы интерфейса: DP (это не display port!), SP и LP. Какой достанется вам - загадка. Главное, внутри там может быть Display Port 1.2 или Display Port 1.4. Комбинация поддержки со стороны кабеля и со стороны хоста - получается чистая лотерея. В контексте 4k@120Hz я бы на работспособность Thunderbolt 3 портов не надеялся.

Thunderbolt 4 резко улучшил ситуацию: мы уже можем быть точно уверены в Display Port 1.4, и, может быть, получим Display Port 2.0 в alt-mode.

USB-C

Я специально назвал этот раздел неправильно (потому что это не протокол, а разъём), потому что всё, что USB-C - это безумие. Если TB3/4 имеет явную маркировку, то с USB-C - катастрофа.

Я считаю, что usb-c кабель давно надо переменовать в 'a cable', чтобы фраза звучала так: 'a monitor is connected to a computer using a cable'. Или так: 'this device uses a cable'. Потому что у USB, помимо самого USB, есть так называемый 'alt mode', который позволяет пропускать по кабелю аналоговый звук, Display Port, Hdmi, чёрта в ступе и даже USB.

Не смотря на все свои поиски я не нашёл USB4 Gen 3x2 нигде, т.к. для "ценителей" есть TB с простыми версиями.

Alt-mode-безумие

Из безумства выше нас интересуют следующие протоколы:

  • DisplayPort

  • HDMI

Теоретически, там ещё есть MHL для сотовых телефонов, но я не хочу идти по этой дорожке.

Вопрос: а что реализовано внутри монитора? Либо USB4, и тогда там DP 2.0 (ура!), либо HDMI 2.1 (увы!), либо там TB, и на самом деле там чёрт в ступе (DP от 1.2 до 2.0).

Может быть так, что там реализованы оба протокола, а решает видеокарта?

Спецификация моего монитора говорит:

HDMI 2.1 (support 4K 144Hz 4:4:4 @ DSC enabled or 4K 144Hz 4:2:0) x2
Display port 1.4 (DSC) x1
USB Type-C x1

Это то, что нам обещает производитель. Про содержимое USB Type-C ни слова. Это, хотя бы, USB4?

После практического эксперимента, мой ноутбук сказал, что монитор через USB-C - это DP-0. Значит, Display Port. Я не знаю метода понять, какой вариант используется - alt mode или родной протокол.

Но из спецификации монитора до покупки понять, что внутри USB-С будет DP невозможно.

Хост

Хост, это то, что делает сигнал. Дискретная видеокарта, ноутбук или активный переходник.

Ноутбуки

С ноутбуками (для которых USB-C и задуман) выяснить, что именно он умеет, становится почти невозможно.

В описании одного из ноутбуков написано:

* Thunderbolt 4/USB-C 4.0 Gen3×2 (DisplayPort 1.a: yes, Power Delivery: yes*)
* USB-C 3.2 Gen2×2

Скажите, что такое DisplayPort 1.a? Между 1.2a и 1.4a находится граница между успехом и безнадёжностью... Хотя обещали Thunderbolt 4, и он должен быть DisplayPort 2.0...

И сразу понятно, что второй USB-C порт нам полностью не подходит, потому что он 3.2 (а не 4).

... Когда ко мне таки приехал сертифицированный Thunderbolt 4 кабель, выяснилось, что внутри ноутбука какая-то халтура и монитор с ним 144 Hz получает (ура!) но теряет его почти сразу же. Так что dp оказался действительно "1.a".

Вот, другой ноутбук:

One USB 3.0 (Type-C) port
Thunderbolt 3 (USB Type-C) port
One HDMI 2.0 port
One Mini DisplayPort 1.2

А у Thunderbolt 3 по спецификации DP может гулять от 1.2 до 1.4. Впрочем, рядом упомянут mini-DP 1.2, так что внутри там будет, вероятнее всего, DP 1.2, то есть "ничего больше 75 Hz не светит".

А вот третий:

Ports
(2) Intel® Thunderbolt™ 3 (Type-C)
(2) USB 3.1 Gen 1 (Type A)
(1) HDMI 2.0

Опять Thunderbolt 3 без уточнения что внутри.

Получается, по бумаге вообще невозможно понять, будет оно работать или нет. Боль? Боль!

Хотя с сертифицированным TB4 кабелем он таки выдал честные 144 Hz. К сожалению, это не мой ноутбук, он на винде, так что понять что именно там в выводе xrandr невозможно, ибо Винда. Может быть, это DP 1.4? Интел обещает это в некоторых процессорах/встроенных видеокартах. Монитор говорит, что это USB-C вход, а что там внутри - шут его знает.

Созерцание версий протоколов с хоста

Но, можем ли мы что-то определить про версию протокола в кабеле из линукса? Вообще, мой look-n-feel в отношении кабелей в Linux оставил неприятное ощущение "ничерта не понятно", но это до момента, пока я не посмотрел как те же проблемы выглядят в Windows. Если в Linux трудно ответить "почему в настройках монитора нет такого режима", то в Windows невозможно даже посмотреть список всех режимов монитора, да и режим подключения монитора (через USB-C) не понятен. Это DP или HDMI? В Linux это обнаруживается по типу дисплея в xrandr - HDMI-0 vs DP-0.

Ещё я обнаружил, что nvidia-settings может чуть-чуть расказать про Display Port.

4k @ 144Hz: DP, HDMI, USB C Alt Mode &amp; cables… HBR2, Display Port 1.2 (source: wikipedia)" title="DP, 2 lanes @ 5.4 -> HBR2, Display Port 1.2 (source: wikipedia)" width="514" height="274" data-src="https://habrastorage.org/getpro/habr/upload_files/9a8/a9a/a1d/9a8a9aa1d5414735ea96bd1befba225c.png"/>
DP, 2 lanes @ 5.4 -> HBR2, Display Port 1.2 (source: wikipedia)

Откуда она его берёт я так и не понял, даже из strace. Fun fact: HBR2 должен дать мне 4k@75hz. Ограничение 4k@60Hz - это ограничение чипа на моей старой видеокарте.

Дискретные видеокарты

Моя старая видеокарта показала 60-Гц лимит (на практике и в спеках):

Maximum DP resolution: 4096 x 2160 @ 60 Hz
Maximum DVI resolution: 2560 x 1600
Maximum HDMI resolution: 4096 x 2160 @ 24 Hz or 3840 x 2160 @ 30 Hz

Ну старьё, старьё, надо обновлять.

Берём килограмм денег, приносим продавцу и обнаруживаем что...

Nvidia RTX 30 series
Nvidia RTX 30 series
AMD  RX 6900 XT - 6600 XT
AMD RX 6900 XT - 6600 XT
Intel Arc по данным Intel Ark
Intel Arc по данным Intel Ark

Вот так вот. Из трёх вендоров только самый задохлик умеет DP 2.0. Остальные ютятся в категории, которую мы забраковали или почти забраковали. Монитор умеет, видеокарты - нет.

С другой стороны, нас ждёт волшебный YCbCr420 и DSC... Но про это ниже.

А пока получается, что в этом скудном режиме надо либо тормознуться на 120Hz (вместо 144Hz), либо надеяться, что DSC (компрессия) реально незаметна. AMD обещает RDNA3 где-то там в марте 2022 года, а сейчас уже апрель заканчивается...

Казалось бы, надо брать Arc, но он только в нотубуках, но мы и без помощи arc увидели 144 Hz у нотубука. А дискретной версии Arc нет.

На выходе победил баланс разума с пошедшими вниз ценами, и я стал обладателем скромной RX 6600 (без всяких "XT") за скромные же €350. Плюс €28 доставка. Кипр, блин. Но с ценой я ждал-ждал и дождался. Три месяца назад эта же скромность мне бы обошлась в €500, а пол-года назад - в €750.

Видеокарта приехала, xrand -r 144 и всё стало хорошо, быстро и ловко. Просто DP8k кабель (я не знаю какой из UHBR'ов). Как оно пролезло в DP 1.4, да ещё и в 10 бит (если верить xrandr --verbose), я не понимаю. Видимо, DSC. Где смотреть состояние DSC я пока не нашёл.

Извращения

Пока я ждал видеокарту, я решил выжать невозможное из своего железа и попробовать нестандартные подходы. Многие из них не заработали, но PBP получился.

PBP-режим

Есть такое извращение - PBP. Когда монитор делит экран на две половинки и каждая половинка показывает картинку со своего источника сигнала. В общем случае монитор можно подключить к двум компьютерам и смотреть с них обоих, но частный случай состоит в подключении монитора двумя кабелями к одному компьютеру

Казалось бы, ура. Но моя (старая) видеокарта в таком режиме работать не любит, и даёт только 60Hz. Более того, HDMI в этом режиме совсем бесится и даёт только такое:

1920x2160 59.93*+
1280x1024 75.02 60.02
1280x960 60.00
...

Т.е. теоретическая возможность есть, но на практике: 1) На Nvidia не работает по причине фашизма в драйверах. 2) На Intel (ноутбуке) работает, но требует два провода для подключения и нетривиальных манипуляций в настройках монитора и xrandr, что крайне далеко от 'plug and play'.

После долгого медитативного чтения я нашёл информацию, что Nvidia можно "уговорить" не фокусироваться на EDID'е (данных, которые отдаёт монитор).

У меня заработала такая конструкция: (`/etc/X11/xorg.conf.d/nvidia.conf`)

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    Option "ModeValidation" "AllowNonEdidModes,NoDisplayPortBandwidthCheck,NoVirtualSizeCheck,NoMaxPClkCheck,NoHorizSyncCheck,NoVertRefreshCheck,NoWidthAlignmentCheck" 
EndSection

После этого я сумел сделать невозможное - заставил HDMI (старый-престарый HDMI, который едва-едва умеет 4k@30Hz), сделать вот это "половинное" разрешение заработать на 75Hz. DP тоже согласился. DP может и больше, но у моей старой-престарой видеокарты только один DP, так что мне пришлось его ограничить тоже на 75Hz. На выходе получилось 4k@75Hz и фантастическая ерунда в текстововой консоли при загрузке (когда видеосигнал повторяется дважды на левую и правую половину экрана). Надо сказать, что 75Гц - это предел. Даже 76 не принимаются.

xrandr при этом справедливо считает, что это два монитора и транслирует это в window manager. После чего у нас панель задач только на одной половинке экрана, а окна "липнут" к середине, как обычно липнут к краям. И окно логина в половинке экрана, и перепрыгивает между левой-правой половинками, в зависимости от положения курсора мыши.

Интернеты подсказали, что xrandr'у можно сказать, что "два output'а - это один monitor".

xrandr --setmonitor chimera auto HDMI-0,DP-1

Но, как оказалось, у абстракции 'monitor' нет никаких последствий. Так что мимо.

На всякий случай, вот мой скрипт конфигурации PBP для DP-1 и HDMI-0:

xrandr --newmode "1920x2160x75" 335.7 1920 1928 1960 2000 2160 2224 2232 2238 +HSync -VSync
xrandr --output DP-1 --mode 1920x2160x75
xrandr --output HDMI-0 --mode 1920x2160x75

Итог: 75Гц и бешенные окна, которые даже толком в fullscreen не развернуть?

Я записал себе победу над спецификациями и здравым смыслом, но этот пост писался в обычном DP-режиме (4k@60Hz).

Компрессия

DSC в Display Port обещает компрессию сигнала и возможность пропихнуть 144 Hz через DP 1.4. К сожалению, моя старая видеокарта не умела такого.

Второе предложение - понижение качества картинки за счёт другого sub-sampling. В иксах sub-sampling настраивается в конфиге (не xrandr). В конфиг выше надо дописать:

Option "ColorSpace" "YCbCr444"

Только вот YCbCr444 не даёт эффекта по уменьшению используемой полосы. Для этого надо YCbCr420. А на это моя видеокарта говорит, что 'unsupported mode'. Хотя, наверное, на более новом устройстве будет лучше.

На новой RX 6600, я не нашёл как узнать, что именно включено, что у меня через DP 1.4 пролазит 144Hz... Более того, мне обещали, что DSC будет не заметен, но комбинация redshift и 144Hz начала давать на экране очень странные артефакты. Чаще всего их почти невидно, но в те моменты, когда они появляются, возникает ощущение "это у меня глюки или на экране?", потому что артефакты подозрительно напоминают хроматические абберации от очков на контрастных паттернах.

А оно того стоит?

Зачем мне 144Hz? Особенно, на 4K? Разумеется, не для игрушек.

Я начинал с 13" EGA. После нескольких итераций CRT превратился в LCD.

По мере того, как росли дюймы экрана я не мог отделаться от ощущения, что раньше всё было быстрее (или, как сейчас я могу уточить, "плавнее").

Я долго думал про эту проблему и понял, что она объективная, и не связанная с гигагерцами или bloatware на компьютере.

Если у нас 60 кадров в секунду, то чем больше (физически) экран, тем больше сантиметров проходит между двумя соседними кардрами при движении чего-либо по экрану. А с переходом на 4k - и в пикселях тоже.

Это приводит к дёрганной картинке в самых простых бытовых задачах - редактировании текста, движение окон, скроллинге, время реакции на печатать.

То есть я сделал себе 4k@144 ... для офисной работы. Комфортной офисной работы. И абсолютно, ни секунды не жалею. Переход с старого процессора на новый был приятным, и субъективно я бы сказал, что компьютер стал раза в полтора быстрее и перестал тормозить. Субъективно, конечно.

Вот это субъективное ощущение "всё тормозит" на 60Гц больших экранов вне зависимости от скорости железа и даже скорости софта, именно оно прошло после перехода на 144Гц. Наверное, разница 120-144 не ощутима, но разница 60 -> 120+ - это лучшее, что можно сделать для повышения комфорта работы на компьютере.

Postscriptum

Буквально за несколько дней до публикации (пока я прилизывал текст и исправлял ошибки) вышла новость, что AMD сертифицировала первый чип на DisplayPort 2.0, причём только на самый медленный из UBHR-кабелей.

Автор: Георгий Шуклин

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js