Постоянные жалобы людей на низкую скорость и недостаточную поддержку OpenGL 3.x сподвергли Мартина Переса (Martin Peres), одного из разработчиков Open Source драйвера Nouveau для видеокарт NVIDIA, написать опровержение:
Прежде всего, у нас уже есть работающее 2D и 3D ускорение (вплоть до версии 3.0 и базовая поддержка работы DirectX 10/11 приложений уже присутствует в виде возможности запуска демонстрации Unigine Heaven) для всех карт вплоть до Riva TNT2 (конечно, она аппаратно OpenGL 3.0 не поддерживает). OpenGL уже достаточно продолжительное время для меня работает – так, на всех видеокартах NVIDIA, которые у меня есть, кроме одной, я могу запускать с приличной скоростью большое количество игр; различные композитные менеджеры рабочего стола также работают. Единственный чип, который требует в данный момент не поддерживается вовсе – это на днях вышедшая видеокарта поколения Kepler (nvd9), известная под именем GTX 680.
Вплоть до G50 (видеокарты 8xxx) у NVIDIA не было никакой технологии для управления питанием. Частоты ядра и памяти устанавливались при загрузке и этого было для нас достаточно. С появлением G50 компания представила динамическое управление частотами для мобильных версий чипа. При загрузке видеокарта устанавливает не стандартные частоты, а минимально возможные (обычно половина от максимального значения).
С выходом чипа GT215 (видеокарты 2xx) управление частотами было добавлено и в desktop-версии видеокарт. Видеоадаптеры Fermi в некотором смысле усугубили ситуацию, ибо для них минимальные частоты были ещё сильнее снижены (ядро – 50МГц, память – 100МГц).
На моей GTX460, Nouveau отлично справляется с KDE 4.8 (KWin показывает 100 кадров в секунду при использовании OpenGL backend'a), но игры работают очень медленно, например в Xonotic я получаю всего 30 к/с.
Тем не менее, стоит отметить, что при равных частотах Nouveau выдаёт 80% производительности проприетарного драйвера, что является неплохим для нас результатом. Наша настоящая проблема состоит в том, что нам нужно добавить поддержку смены частот, чтобы получить всё возможное от чипа. Мы работаем над этом уже полтора года и поверьте мне, NVIDIA видеокарты – это не самый лёгкий продукт для обратного инжиниринга.
Каково на данный момент состояние поддержки управления частотами?
- Видеокарты G50->GT200: нужные частоты могут быть выставлены и работа должна быть стабильной. Некоторые карты ещё не работают, но мы активно этим занимаемся. В некоторых случаях экран может погаснуть на несколько миллисекунд – эта ошибка также известна, и мы над ней работаем.
- Видеокарты G215 -> GF100: частоты можно выставить для всех streaming движков и для памяти, но в конечном результате ничего не работает, ибо требуется какая-то чёрная магия, которую мы ещё не выяснили. Мы над этим работаем.
- Видеокарты GF100: частоты можно выставить только для streaming движков. Также есть очень экспериментальная поддержка смены частот памяти. Мы над этим работаем.
- Видеокарты Kepler: были выпущены только 22 марта, пока у большинства разработчиков их просто нет.
Нужно отметить, что если мы реализуем полноценную поддержку смены частот, то динамическая смена частот – реализуется элементарным образом.
В качестве резюме добавлю, что аппаратное ускорение работает на всех картах, кроме Kepler. Единственная и самая существенная проблема работы 3D – это отсутствие правильного управления питанием – в этом направлении ведётся активная работа. Я надеюсь, что поддержка 3D для Kepler будет добавлена до выхода следующей архитектуры.
В свою защиту хочу напомнить, что мы, в отличие от проприетарного драйвера, Nouveau поддерживает карты, начиная с TNT2 и прямо из коробки предоставляет поддержку 3D ускорения, достаточного для использования на десктоп-системах. Также хочется заметить, что над Nouveau работают только 10 человек (в основном студенты) и только один человек получает за это зарплату (речь идёт о разработчике из Red Hat).