О практических проблемах больших разрешений на большой частоте.
Лыдыбр: Я недавно сделал себе небольшой апгрейд и у меня появился монитор 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.
Откуда она его берёт я так и не понял, даже из 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
Ну старьё, старьё, надо обновлять.
Берём килограмм денег, приносим продавцу и обнаруживаем что...
Вот так вот. Из трёх вендоров только самый задохлик умеет 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-кабелей.
Автор: Георгий Шуклин