Компания NVIDIA представила новую ветку проприетарного видеодрайвера NVIDIA 319.12, в которой реализована большая порция новшеств. Драйвер доступен для Linux, FreeBSD и Solaris. Ветка 319.12 пока позиционируется как бета-выпуск, придание статуса релиза ожидается после проведения дополнительного тестирования и стабилизации кода.
Наиболее заметным улучшением стала реализация технологии Optimus для платформы Linux, позволяющая на лету переключаться между встроенной энергоэффективной видеокартой на базе GPU Intel и дискретной картой NVIDIA. При незначительной нагрузке на графическую подсистему отличающаяся высоким энергопотреблением дискретная карта полностью обесточивается, а вывод перенаправляется на более энергоэффективный встроенный GPU Intel, что позволяет значительно продлить время работы портативных устройств в автономном режиме.
Вторым важным новшеством, сопутствующим поддержке Optimus, стала реализация расширения RandR 1.4, в котором добавлены объекты для выноса на дополнительные GPU операций рендеринга и отображения, что может использоваться для горячего перенаправления вывода на другое устройство или для организации совместной работы нескольких GPU, когда один GPU используется для вывода, а второй для рендеринга сцен (например, вывод осуществляется через USB-адаптер DisplayLink, а рендеринг на GPU NVIDIA). Данная возможность использована для обеспечения работы Optimus.
Пример настройки конфигурации X-сервера для работы Optimus можно найти на данной странице. Для работы Optimus необходимо наличие X.Org Server 1.13 и экспериментальной версии ядра Linux 3.9, собранной с опцией CONFIG_DRM, включающей поддержку функций-хелперов gem_prime_* и gem_drm_*. Указанные хелперы внесены в ядро разработчиками NVIDIA и позволяют использовать абстрактный набор простых вызовов, независимых от низкоуровневой реализации поддержки PRIME. Данные вызовы помогли организовать взаимодействие свободных драйверов с проприетарным драйвером NVIDIA без прямого обращения к API DMA-BUF, что позволило избежать нарушения лицензии GPL (стандартные функции DMA-BUF отнесены в ядре Linux к категории внутренних интерфейсов, которые экспортируются в группе EXPORT_SYMBOL_GPL, ограничивающей возможность использования только для модулей ядра, распространяемых под лицензией GPL).
Другие улучшения, добавленные в NVIDIA 319.12: