Перевод документации драйвера видеокарт NVIDIA для системы Linux

Оригинал перевода: nvworld.ru

Автор перевода: http://nvworld.ru

Перевод сделан на основе документа README к драйверу версии 173.14.05. Все права на оригинальную документацию драйвера принадлежат компании NVIDIA.

Вопросы по переводу задавайте на конференции.


Данная версия перевода избавлена от JavaScript и обьединена в одну страницу.

Сборка: bl0nx с http://xakep.ru

Версия: 0.1.1 от 17/06/2008

Изменения: Это измененная версия документа 0.1.0, которая была выложена на форуме http://www.nvworld.ru/ и явлалась переводом к драйверу версии 9746, данная сборка полность модифицирована, изменена и дополнена

материалом на основании перевода к драйверу версии 173.14.05.

СОДЕРЖАНИЕ:

  1. Вступление
  2. Минимальные требования к программному обеспечению
  3. Выбор и загрузка дистрибутива драйвера NVIDIA
  4. Установка драйвера NVIDIA
  5. Устанавливаемые компоненты
  6. Настройка X-интерфейса для драйвера NVIDIA
  7. Часто задаваемые вопросы
  8. Типичные проблемы
  9. Известные проблемы
  10. Размещение буферов DMA в 64-х битных системах
  11. Установка переменных среды OpenGL
  12. Настройка AGP
  13. Настройка TwinView
  14. Настройка поддержки GLX в Xinerama
  15. Организация нескольких экранов Х-интерфейса на одной видеокарте
  16. Настройка TV-Out
  17. Использование XRandR-расширения Х-интерфейса
  18. Настройка для ноутбуков
  19. Настройка видеорежимов
  20. Настройка Flipping и UBB
  21. Интерфейс файловой системы Proc
  22. Управление энергопотреблением
  23. Использование Composite-расширения Х-интерфейса
  24. Использование утилиты nvidia-settings
  25. Настройка режимов SLI и MultiGPU
  26. Настройка Framelock и Genlock
  27. Настройка видеовыхода SDI
  28. Настройка 30-битного цветового представления
  29. Поддерживаемые графические процессоры NVIDIA
  30. Опции настройки Х-интерфейса
  31. Система наименования дисплеев
  32. Поддержка GLX
  33. Понятие DPI
  34. Поддержка шины i2c
  35. Поддержка XvMC
  36. Советы для начинающих пользователей Linux

Вступление

Графический драйвер NVIDIA для Linux предоставляет аппаратное ускорение 2D операций и высокопроизводительную поддержку OpenGL при использовании графических процессоров NVIDIA (GPUs). Драйвер обеспечивает оптимальное программное ускорение для OpenGL- и X-приложений и поддерживает практически все современные графические процессоры NVIDIA (обратитесь к Главе 29 за перечнем поддерживаемых графических процессоров). Также в драйвере реализована поддержка функций TwinView, ТВ-выхода и цифровых плоских мониторов.

Этот документ содержит инструкции для установки и использования драйвера NVIDIA для Linux. Главы 3, 4, 6 описывают процесс загрузки, установки и настройки драйвера. Глава 7 содержит часто задаваемые вопросы и ответы по установке драйвер, и Глава 8 содержит решения типичных проблем. Прочие главы содержат описания различных функций драйвера NVIDIA для Linux. Часто задаваемые вопросы об отдельных задачах сведены в соответствующие главы. Эти страницы размещены на сайте NVIDIA и при установке драйвера копируются в '/usr/share/doc/NVIDIA_GLX-1.0/'.

Текст рассчитан на пользователя, имеющего представление об особенностях и терминологии Linux. Дополнительно, Глава 36 содержит информацию об этапах процесса установки, которая может быть полезна начинающим пользователям.

Минимальные требования к программному обеспечению

Программный компонентМинимальные требованияПроверить с помощью…
Ядро Linux kernel2.4.7`cat /proc/version`
XFree86/Xorg4.0.1/6.7`XFree86 -version / Xorg -version`
Утилита modutils2.1.121`insmod -v`

Если необходима сборка модуля уровня ядра NVIDIA:

Программный компонентМинимальные требованияПроверить с помощью…
binutils2.9.5`size --version`
GNU make3.77`make --version`
gcc2.91.66`gcc --version`
glibc2.0`ls /lib/libc.so.* >6`

Если собираете из исходных текстов RPM:

Требуемый программный компонентПроверить с помощью…
spec-helper rpm`rpm -qi spec-helper`

Все официальные реализации ядра с 2.4.0 и более новые поддерживаются, предварительные версии, такие как "2.4.3-pre2", не поддерживаются, равно как и версии для разработчиков, такие как 2.3.x или 2.5.x. Ядро Linux можно загрузить с сайта http://www.kernel.org или с одного из его зеркал.

Компоненты binutils и gcc можно загрузить с сайта http://www.gnu.org или одного из его зеркал.

Если используется интерфейс XFree86, но отсутствует файл '/var/log/XFree86.0.log', то это означает, что, скорее всего, используется версия 3.x XFree86, и необходимо обновление.

Если вы устанавливаете XFree86 версии 4.x в первый раз, часто проще начать с использования одного из драйверов с открытым исходным текстом, включенных в комплект XFree86 ("nv", "vga" или "vesa"). После того, как XFree86 начнет нормально работать с драйвером с открытым исходным текстом, можно будет перейти на драйвер NVIDIA.

Обратите внимание, что новые графические процессоры NVIDIA не заработают с драйвером "nv" из поставки XFree86 старых версий. Например, драйвер "nv" из XFree86 версии 4.0.1 не распознает видеокарты на базе графических процессоров GeForce2 и Quadro2 MXR. Это исправлено в XFree86 версии 4.0.2. Интерфейс XFree86 можно загрузить с сайта http://www.xfree86.org.

Эти программные пакеты можно получить и от поставщика дистрибутива Linux.

Выбор и загрузка дистрибутива драйвера NVIDIA

Драйверы NVIDIA могут быть загружены с сайта NVIDIA (http://www.nvidia.com).

Драйвер NVIDIA выполнен по унифицированной архитектуре, в которой один драйвер используется для всех поддерживаемых графических процессоров NVIDIA (обратитесь к Главе 29 за списком поддерживаемых чипов). Таким способом решена проблема выбора правильного драйвера пользователем, и драйвер доступен для загрузки как один файл, именуемый, например:
'NVIDIA-Linux-x86-1.0-ХХХХ-pkg1.run'

Суффикс '-pkg#' в имени файла используется для различения дистрибутивов, содержащих один и тот же драйвер, но с разным набором предварительно скомпилированных модулей интерфейса ядра операционной системы. Файл с наибольшим номером в суффиксе подходит для большинства систем.

Поддержка устаревших графических процессоров удалена из унифицированного драйвера. Они поддерживаются путем выпуска специальных дистрибутивов для устаревших чипов. Обратитесь к Главе 29 за списком поддерживаемых чипов. Загруженный файл представляет собой самораспаковывающийся установщик, и вы можете сохранить его в любое место в системе.

Установка драйвера NVIDIA

Эта глава содержит инструкции по установке драйвера NVIDIA. Обратите внимание, что после окончания установки, но перед началом использования драйвера, должны быть вручную выполнены шаги, описанные в Главе 6. Дополнительная информация, могущая быть полезной начинающим пользователям Linux, содержится в Главе 36.

ПЕРЕД НАЧАЛОМ УСТАНОВКИ

Перед началом установки вы должны выключить сервер Х-интерфейса и завершить все приложения, использующие OpenGL (учтите, что возможна работа некоторых приложений даже после остановки сервера Х-интерфейса). Вы также должны настроить запуск операционной системы на загрузку в консоль, а не напрямую в Х-интерфейс. Эта процедура облегчит восстановление в случае проблем в процессе установки драйвера. Обратитесь к Главе 36 за дополнительной информацией.

ЗАПУСК ИНСТАЛЛЯТОРА

После загрузки файла 'NVIDIA-Linux-x86-1.0-ХХХХ-pkg#.run' перейдите в каталог, содержащий файл дистрибутива и как пользователь 'root' запустите файл:

# cd каталог

# sh NVIDIA-Linux-x86-1.0-ХХХХ-pkg#.run

Файлы '.run' представляют собой самораспаковывающиеся архивы. При выполнении они извлекают содержимое архива и запускают утилиту 'nvidia-installer',предоставляющую интерактивный интерфейс, проводящий вас через процесс установки.

Приложение 'nvidia-installer' также устанавливает само себя в '/usr/bin/nvidia-installer',что будет полезным позже для деинсталляции драйвера, авто-обновления драйвера и тому подобных задачах. Использование утилиты подробнее описано ниже в этой главе.

Вы также можете указать ключи запуска '.run' файла.

Типичные ключи запуска '.run' :

--info

Вывод информации о '.run' файле и выход.

--check

Проверка целостности архива и выход.

--extract-only

Извлечение содержимого архива './NVIDIA-Linux-x86-1.0-ХХХХ.run' без запуска 'nvidia-installer'.

--help

Вывод информации о типовых ключах запуска и выход.

--advanced-options

Вывод информации о типовых и дополнительных ключах запуска и выход.

УСТАНОВКА ПОДДЕРЖКИ НА УРОВНЕ ЯДРА

Драйвер NVIDIA содержит специальный модуль интерфейса, который должен быть скомпилирован специально для каждого ядра. NVIDIA распространяет исходный код модуля интерфейса ядра наряду с предварительно скомпилированными файлами для большинства версий ядра операционной системы, входящих в состав популярных дистрибутивов Linux.

При запуске установщик драйвера определяет, есть ли готовый предварительно скомпилированный модуль интерфейса для использующейся версии ядра. Если не имеется ни одного, то проверяется наличие подходящей версии на FTP сайте NVIDIA (подразумевается наличие соединения с Интернет) и загружает его. Если файл не найден, как по причине отсутствия подходящего файла, так и по причине недоступности FTP сайта, инсталлятор проверяет наличие исходных текстов ядра и компилирует модуль интерфейса сам. Необходимо наличие в системе исходных текстов используемого ядра для успешной компиляции. В большинстве систем это означает необходимость нахождения и установки пакетов с исходными текстами, в некоторых новейших дистрибутивах установка дополнительных пакетов не требуется (например, Fedora Core 3, Red Hat Enterprise Linux 4).

Обратите внимание, что сборка (linking) модуля интерфейса ядра (в случае отдельной его загрузки или компилирования на месте) требует наличия в системе линкера. Линкер, обычно находящийся в '/usr/bin/ld', является частью пакета binutils. Если не удалось подобрать совместимого предварительно скомпилированного модуля интерфейса ядра, вы должны установить в системе линкер перед установкой драйвера NVIDIA.

ФУНКЦИИ ИНСТАЛЛЯТОРА

Без ключей запуска '.run' файл запускает установщик сразу после извлечения из архива. Установщик также может быть запущен отдельным шагом в ходе установки, или после установки для проверки обновлений и т.п. задач. Основные ключи запуска 'nvidia-installer' :

--uninstall

В процессе установки создаются резервные копии конфликтующих файлов и записи о скопированных новых файлах. Ключ uninstall откатывает установку драйвера, возвращая систему в исходное состояние.

--latest

Соединение с FTP сайтом NVIDIA и вывод последней доступной версии драйвера и ссылки для загрузки дистрибутива последней версии.

--update

Соединение с FTP сайтом NVIDIA, загрузка дистрибутива последней версии драйвера и его установка.

--ui=none

Инсталлятор использует графический интерфейс на основе библиотеки ncurses, если таковая присутствует в системе. Иначе используется стандартный интерфейс командной строки. Этот ключ отключает использование графического интерфейса.

Обратите внимание, что инсталлятор имеет возможность загрузки обновленных предварительно скомпилированных модулей интерфейса ядра с FTP сайта NVIDIA (для ядра версии, выпущенной после выхода дистрибутива драйвера NVIDIA).

Устанавливаемые компоненты

Драйвер NVIDIA для Linux содержит следующие компоненты (имена файлов в скобках — полные имена компонентов после установки, "x.y.z" обозначает текущую версию. В этих случаях соответствующие символические ссылки (symlinks) создаются в процессе установки):


_Драйвер X-интерфейса (/usr/X11R6/lib/modules/drivers/nvidia_drv.so); он требуется для использования сервером Х-интерфейса оборудования NVIDIA.

_Расширение GLX для X-интерфейса (/usr/X11R6/lib/modules/extensions/libglx.so.x.y.z); этот модуль используется сервером Х-интерфейса для обеспечения поддержки GLX со стороны сервера.

_Модуль X-интерфейса для программного рендеринга через враппер (/usr/X11R6/lib/modules/libnvidia-wfb.so.x.y.z и, возможно, дополнительно, /usr/X11R6/lib/modules/libwfb.so); этот модуль используется драйвером Х-интерфейса для выполнения программного рендеринга с графическими процессорами GeForce 8. Если библиотека libwfb.so уже присутствует в системе, nvidia-installer не перезаписывает ее, а создает символическую ссылку от libwfb.so к libnvidia-wfb.so.x.y.z.

_Библиотека OpenGL (/usr/lib/libGL.so.x.y.z); предоставляет точки входа API для всех вызовов функций OpenGL и GLX. С ней связываются OpenGL приложения во время выполнения.

_Библиотеке ядра OpenGL (/usr/lib/libGLcore.so.x.y.z); используется библиотеками libGL и libglx. Содержит основные функции аппаратного 3D ускорения. Вам не следует загружать ее через файл конфигурации Х-интерфейса — ею занимается libglx.

_Две библиотеки XvMC (компенсации движения X-видео): статическая библиотека и общая библиотека (/usr/X11R6/lib/libXvMCNVIDIA.a, /usr/X11R6/lib/libXvMCNVIDIA.so.x.y.z); обратитесь к Главе 35 за дополнительной информацией.

_Модуль уровня ядра (/lib/modules/`uname -r`/video/nvidia.o или /lib/modules/`uname -r`/kernel/drivers/video/nvidia.o); этот модуль предоставляет низкоуровневый доступ к оборудованию NVIDIA для всех прочих компонентов.

Он обычно загружается в ядро при запуске сервера Х-интерфейса и используется драйвером Х-интерфейса и OpenGL подсистемой.

Модуль nvidia.o состоит из двух частей: только исполняемое ядро, и интерфейс ядра, который должен быть скомпилирован специальной для используемого ядра.

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

_Файлы заголовков OpenGL и GLX (/usr/include/GL/gl.h, /usr/include/GL/glext.h, /usr/include/GL/glx.h, и /usr/include/GL/glext.h); также устанавливаются в /usr/share/doc/NVIDIA_GLX-1.0/include/GL/. Вы можете отключить установку этих файлов в /usr/include/GL/ с помощью ключа запуска "--no-opengl-headers" при запуске .run файла во время установки.

_Библиотеки nvidia-tls (/usr/lib/libnvidia-tls.so.x.y.z и /usr/lib/tls/libnvidia-tls.so.x.y.z); эти файлы предоставляют локальное хранилище процедур библиотек OpenGL NVIDIA (libGL, libGLcore, и libglx). Каждая библиотека nvidia-tls содержит поддержку определенной модели хранения процедур (такой как ELF TLS), и одна из них, подходящая для вашей системы, загружается при выполнении.

_Приложение nvidia-installer (/usr/bin/nvidia-installer) является инструментом NVIDIA для установки и обновления драйверов NVIDIA. Обратитесь к Главе 4 за дополнительной информацией.


Проблемы возникают, когда приложение использует неправильную версию библиотеки. Они имеют место быть, когда в системе остаются старые библиотеки libGL или устаревшие символические ссылки. Если вы подозреваете, что что-то не так пошло во время установки драйвера, проверьте наличие следующих файлов и символических ссылок (это все файлы драйвера NVIDIA для Linux, а также их символические ссылки):

/usr/X11R6/lib/modules/drivers/nvidia_drv.so

 

/usr/X11R6/lib/modules/extensions/libglx.so.x.y.z

/usr/X11R6/lib/modules/extensions/libglx.so —> libglx.so.x.y.z

(может также быть в /usr/lib/modules или /usr/lib/xorg/modules)

/usr/lib/libGL.so.x.y.z

/usr/lib/libGL.so.x —> libGL.so.x.y.z

/usr/lib/libGL.so —> libGL.so.x

 

/usr/lib/libGLcore.so.x.y.z

/usr/lib/libGLcore.so.x —> libGLcore.so.x.y.z

 

/lib/modules/`uname -r`/video/nvidia.o, or

/lib/modules/`uname -r`/kernel/drivers/video/nvidia.o

Если имеются библиотеки с созвучными именами библиотек NVIDIA, утилита ldconfig могла создать неправильные символические ссылки. Рекомендуется переименовать или удалить конфликтующие библиотеки (убедитесь, что новые имена библиотек не совпадают с теми, что ищет ldconfig — добавление "XXX" к имени библиотеки обычно срабатывает), перезапустите 'ldconfig', и проверьте, что были созданы правильные символические ссылки. Библиотеки, часто создающие конфликты — "/usr/X11R6/lib/libGL.so*" и "/usr/X11R6/lib/libGLcore.so*".

Если с библиотеками порядок, проверьте, что приложение использует правильные библиотеки. Например, чтобы проверить приложение /usr/X11R6/bin/glxgears на использование библиотек NVIDIA, выполните команду:

% ldd /usr/X11R6/bin/glxgears
linux-gate.so.1 => (0xffffe000)
libGL.so.1 => /usr/lib/libGL.so.1 (0xb7ed3000)
libXp.so.6 => /usr/lib/libXp.so.6 (0xb7eca000)
libXext.so.6 => /usr/lib/libXext.so.6 (0xb7eb9000)
libX11.so.6 => /usr/lib/libX11.so.6 (0xb7dd4000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7d82000)
libm.so.6 => /lib/libm.so.6 (0xb7d5f000)
libc.so.6 => /lib/libc.so.6 (0xb7c47000)
libGLcore.so.1 => /usr/lib/libGLcore.so.1 (0xb6c2f000)
libnvidia-tls.so.1 => /usr/lib/tls/libnvidia-tls.so.1 (0xb6c2d000)
libdl.so.2 => /lib/libdl.so.2 (0xb6c29000)
/lib/ld-linux.so.2 (0xb7fb2000)

Проверьте файлы, используемые для libGL и libGLcore — если это не библиотеки NVIDIA, то надо удалить эти файлы, или же настроить путь поиска ld используя переменную среды 'LD_LIBRARY_PATH'. Может быть полезным изучение страниц руководства по 'ldconfig' и 'ldd'.

Настройка X-интерфейса для драйвера NVIDIA

Файл конфигурации X-интерфейса хранит настройки сервера X. В этой главе описываются вносимые необходимые изменения для задействования драйвера NVIDIA. Полный список настроек содержится в Главе 30.

Дистрибутив драйвера NVIDIA включает в себя утилиту nvidia-xconfig, разработанную специально для облегчения редактирования файла конфигурации X-интерфейса. Разумеется, вы можете отредактировать файл и вручную.

ИСПОЛЬЗОВАНИЕ NVIDIA-XCONFIG ДЛЯ НАСТРОЙКИ X-ИНТЕРФЕЙСА

Утилита nvidia-xconfig находит Файл конфигурации X-интерфейса и изменяет его для использования драйвера NVIDIA. В большинстве случае достаточно ответить "Yes" когда установщик предложит выполнить nvidia-xconfig. Если вам понадобится изменить конфигурацию позднее, вы можете запустить nvidia-xconfig снова из терминала. Утилита делает резервную копию файла конфигурации X-интерфейса перед внесением в него изменений.

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

Дополнительная информация содержится в руководстве к nvidia-xconfig, которое может быть вызвано командой:

% man nvidia-xconfig

РЕДАКТИРОВАНИЕ ФАЙЛА КОНФИГУРАЦИИ ВРУЧНУЮ

В апреле 2004 организация X.org выпустила сервер Х-интерфейса, основанный на XFree86. Хотя ваша система может содержать X.org сервер Х-интерфейса вместо прежнего XFree86, различия между ними не имеют влияния на пользователей Linux за двумя исключениями:

_Файл конфигурации релиза X.org находится в '/etc/X11/xorg.conf', тогда как файл конфигурации XFree86 находится в '/etc/X11/XF86Config'. Оба файла используют одинаковый формат. В этом документе оба файла проходят как "Файл конфигурации X-интерфейса".

_Файл журнала сервера X.org находится в '/var/log/Xorg.#.log', тогда как журнал сервера XFree86 хранится в '/var/log/XFree86.#.log' (где '#' — номер сервера, обычно 0). Формат файлов почти идентичен. В этом документе оба файла проходят как "Файл журнала X-интерфейса".

Для изменения настроек сервера Х-интерфейса необходимо отредактировать файл конфигурации, используемый этим сервером. Хотя ничто не препятствует изменению обоих файлов, достаточно легко определить, какой файл используется путем поиска строки:

(==) Using config file:

в файле журнала X-интерфейса. Эта строка содержит имя и расположение файла конфигурации X-интерфейса.

Если не имеется рабочего файла конфигурации Х-интерфейса, есть ряд способов получить готовый. Образец заполнения файла конфигурации включен как в дистрибутив XFree86, так и в драйвер NVIDIA (в '/usr/share/doc/NVIDIA_GLX-1.0/'). Утилиты для создания файла конфигурации (такие как 'xf86config') обычно включены в поставку Linux. Дополнительная информация о формате файла конфигурации может быть найдена в руководстве XF86Config (`man XF86Config`или `man xorg.conf`).

Если имеется рабочий файл конфигурации X-интерфейса для иного драйвера (например, встроенных "nv" или "vesa"), тогда просто отредактируйте файл как показано ниже.

Удалите строку:

Driver "nv"

(или Driver "vesa")

(или Driver "fbdev")

и замените ее строкой:

Driver "nvidia"

Удалите следующие строки:

Load "dri"

Load "GLCore"

В секции "Module" добавьте строку (если она уже не имеется):

Load "glx"

Есть много опций файла конфигурации для настройки драйвера NVIDIA. Обратитесь к Главе 30 за полным списком.

После завершения редактирования файла вы можете перезапустить Х-интерфейс и начать использование аппаратного ускорения OpenGL. После перезапуска Х-интерфейса все приложения, использующие OpenGL должны автоматически начать использовать драйвер NVIDIA. При возникновении проблем обратитесь к Главе 8 за определением и решением типовых проблем.

Часто задаваемые вопросы

В этой главе приведены ответы на часто задаваемые вопросы, связанные с драйвером NVIDIA для Linux и его установкой. Типовые проблемы и их решения приведены в Главе 8, советы для начинающих пользователей содержатся в Главе 36. Дополнительная информация по специальной установке может быть найдена в приложениях.

УТИЛИТА NVIDIA-INSTALLER

Вопрос: Как мне извлечь содержимое '.run' пакета без установки драйвера?

Ответ: Запустите установку как показано ниже:

# sh NVIDIA-Linux-x86-1.0-ХХХХ-pkg1.run --extract-only

Будет создан каталог NVIDIA-Linux-x86-1.0-ХХХХ-pkg1 с распакованным содержимым '.run' файла.

Вопрос: Как посмотреть исходный текст модуля интерфейса ядра?

Ответ: Исходный текст размещен в каталоге usr/src/nv распакованного .run файла. Для получения исходного текста выполните:

# sh NVIDIA-Linux-x86-1.0-ХХХХ-pkg1.run --extract-only

# cd NVIDIA-Linux-x86-1.0-ХХХХ-pkg1/usr/src/nv/

Вопрос: Как и где создаются файлы устройств NVIDIA?

Ответ: В зависимости от конфигурации системы файлы устройств NVIDIA создаются одним из трех способов:

_Во время установки, используя mknod

_Во время загрузки модуля, через devfs (Linux device file system)

_Во время загрузки модуля, посредством hotplug/udev

В текущих версиях драйвера NVIDIA файлы устройств создаются или модифицируются драйвером Х-интерфейса когда запущен сервер Х-интерфейса.

По-умолчанию, драйвер NVIDIA пытается создать файлы устройств со следующими атрибутами:

UID:0-'root'
GID:0-'root'
Mode:0666-'rw-rw-rw-'

Имеющиеся файлы устройств изменяются, если их атрибуты не совпадают с умолчаниями. Если вы хотите, чтобы драйвер NVIDIA создавал файлы устройств с отличными от умолчаний атрибутами, вы можете задать их с помощью параметров модуля ядра NVIDIA "NVreg_DeviceFileUID" (пользователь), "NVreg_DeviceFileGID" (группа) и "NVreg_DeviceFileMode".

Например, драйвер NVIDIA может быть настроен создавать файлы устройств с UID=0 (root), GID=44 (video) и Mode=0660 применением следующих настроек:

NVreg_DeviceFileUID=0

NVreg_DeviceFileGID=44

NVreg_DeviceFileMode=0660

Параметр "NVreg_ModifyDeviceFiles" отключает динамическое управление файлами устройств, если его значение 0.


Вопрос: Почему NVIDIA больше не предлагает RPM пакеты?

Ответ: Не все дистрибутивы Linux используют RPM, NVIDIA старается предложить единое решение, должное работать со всеми дистрибутивами. Как указано в лицензионном соглашении NVIDIA, разработчикам дистрибутивов Linux разрешается переупаковывать и распространять драйвер NVIDIA в любом желаемом формате пакета.


Вопрос: Может ли nvidia-installer использовать прокси-сервер?

Ответ: Да, поскольку поддержка FTP в nvidia-installer реализована через snarf, то утилита понимает переменные среды 'FTP_PROXY', 'SNARF_PROXY' и 'PROXY'.


Вопрос: В чем смысл суффикса 'pkg#' в имени '.run' файла?

Ответ: Суффикс 'pkg#' используется для различения '.run' дистрибутивов, содержащих одну версию драйвера, но разный набор предварительно скомпилированных модулей интерфейса ядра. Если появляется новая версия ядра после выхода драйвера NVIDIA, текущий драйвер может быть перепакован с целью включения в дистрибутив предварительно скомпилированного модуля поддержки для нового ядра (в дополнение к модулям поддержки, включенным в предыдущую версию дистрибутива). Файлы '.run' с одинаковым номером версии, но разными номерами pkg различаются только включенными предварительно скомпилированными модулями интерфейса ядра. Дополнительно, файлы с большими pkg номерами содержат все, что было в файлах с меньшими номерами pkg.


Вопрос: Я обновил ядро операционной системы, и теперь модуль NVIDIA не загружается. Что не так?

Ответ: Интерфейс уровня ядра должен быть скомпилирован специально для используемого ядра операционной системы. Если ядро изменилось, проще всего переустановить драйвер.

ДОПОЛНИТЕЛЬНО: Вы можете установить модуль ядра для неактивного адра (например, если вы только что собрали и установили новое ядро, но еще не перезагрузились) с помощью команды наподобие:

# sh NVIDIA-Linux-x86-1.0-ХХХХ-pkg1.run --kernel-name='KERNEL_NAME'

Где 'KERNEL_NAME' — то же, что выдает команда uname -r' если ядро уже выполняется.


Вопрос: У меня уж установлен пакет NVIDIA-Linux-x86-1.0-ХХХХ-pkg1.run, но я заметил, что пакет NVIDIA-Linux-x86-1.0-ХХХХ-pkg2.run был только что выложен на сайте NVIDIA. Должен ли я загрузить и установить NVIDIA-Linux-x86-1.0-ХХХХ-pkg2.run?

Ответ: В этом нет необходимости. Драйвер, содержащийся во всех файлах '.run' одной версии 1.0-ХХХХ, один и тот же. Нет нужды в переустановке.


Вопрос: Могу я добавить скомпилированный модуль интерфейса для моей версии ядра в '.run' файл?

Ответ: Да, использование ключа запуска '.run' файла --add-this-kernel распакует файл, соберет и скомпилирует новый модуль интерфейса для выполняющегося в данный момент ядра, и запакует в '.run' файл, добавив '-custom' к имени файла. Это может быть полезным, например, если вы администрируете множество компьютеров с Linux, выполняющих ядро одной и той же версии.


Вопрос: Где найти исходный текст для утилиты 'nvidia-installer'?

Ответ: Утилита 'nvidia-installer' выпущена под лицензией GPL. Последняя версия исходных текстов доступна по адресу ftp://download.nvidia.com/XFree86/nvidia-installer

ДРАЙВЕР NVIDIA

Вопрос: С чего начать при обнаружении проблем с изображением?

Ответ: Одним из наиболее полезных инструментов является файл журнала Х-интерфейса, расположенный в '/var/log'. Строки, начинающиеся с "(II)", содержат информацию, с "(WW)" содержат предупреждения, с "(EE)" — ошибки. Необходимо удостоверится, что используется нужный файл конфигурации Х-интерфейса (тот, что вы редактируете); обратите внимание на строку, начинающуюся с:

(==) Using config file:

Также, убедитесь, что используется драйвер NVIDIA, а не встроенный "nv" или "vesa".

(II) LoadModule: "nvidia"

Сообщения драйвера должны начинаться с:

(II) NVIDIA(0)

Вопрос: Как расширить объем информации, записывающийся в файл журнала Х-интерфейса?

Ответ: По-умолчанию, драйвер NVIDIA отправляет только необходимый минимум сообщений в stderr и файл журнала. При необходимости решения проблем возможно задействовать расширенный вывод информации, используя ключи запуска сервера Х-интерфейса -verbose и -logverbose, для установки уровня выводимой информации в 'stderr' и сообщения в журнале. Драйвер NVIDIA выводит больше сообщений при уровне 5 и больше (по-умолчанию, X-интерфейс использует уровень 1 для 'stderr' и уровень 3 для файла журнала). Так что для увеличения объема информации от драйвера NVIDIA как в файле журнала, так и в 'stderr', вам надо запускать сервер Х-интерфейса с уровнем выводимой информации 5 следующим образом:

% startx -- -verbose 5 -logverbose 5


Вопрос: Где взять файлы 'gl.h' или 'glx.h' чтобы я мог скомпилировать OpenGL приложения?

Ответ: Большинство систем поставляется с предустановленными файлами заголовков. Однако, NVIDIA предлагает свои собственные файлы 'gl.h' and 'glx.h', которые устанавливаются по-умолчанию в ходе установки драйвера. Если вы предпочитаете, чтобы файлы OpenGL-заголовков от NVIDIA не устанавливались, вы можете использовать ключ запуска --no-opengl-headers для файла 'NVIDIA-Linux-x86-1.0-ХХХХ-pkg1.run' во время установки.


Вопрос: Могу ли я получать по электронной почте уведомления о выходе новых версий драйвера NVIDIA для Linux?

Ответ: Да. Заполните форму по адресу http://www.nvidia.com/view.asp?FO=driver_update


Вопрос: Какова политика NVIDIA в отношении версий ядра Linux, находящихся на стадии разработки?

Ответ: NVIDIA официально не поддерживает версии, находящиеся на стадии разработки. Однако, все исходные тексты модулей уровня ядра, взаимодействующих с ядром Linux, доступны в каталоге 'usr/src/nv/' файла '.run'. NVIDIA поощряет членов сообщества Linux, разрабатывающих патчи к этим исходным текстам для поддержки версий ядра, находящихся на стадии разработки. Поиск в сети, скорее всего, найдет некоторые разработанные сообществом патчи.


Вопрос: Почему X-интерфейс использует столько памяти?

Ответ: При любом измерении использования приложениями памяти следует разграничивать использование физической оперативной памяти и виртуальных отображений общих ресурсов. Например, большинство общих библиотек загружены в оперативную память в единственном экземпляре, но отображаются во множество процессов. Эта память должна быть учтена лишь единожды при подсчете общего использования оперативной памяти. Аналогично, видеопамять или регистры любого устройства могут отображаться во множество процессов. Эти отображения не потребляют обычную оперативную память.

Это часто обсуждаемая тема в рассылках XFree86; например: http://marc.theaimsgroup.com/?l=xfree-xpert&m=96835767116567&w=2

Описываемая там утилита 'pmap' доступна по адресу http://web.hexapodia.org/~adi/pmap.c и является полезным средством для разграничения видов использования памяти. Например, когда показатель 'top' может показать, что X-интерфейс использует несколько сот мегабайт памяти, последняя строка в отчете pmap покажет:

mapped: 287020 KB writable/private: 9932 KB shared: 264656 KB

что на самом деле Х-интерфейс использует всего около 10MB оперативной памяти ("writable/private" значения).

Обратите также внимание, что X-интерфейс занимает ресурсы в зависимости от количества и вида клиентов (менеджер окон, веб-броузер и т.д.); потребление памяти X-интерфейсом возрастет при увеличении числа затребованных клиентами ресурсов, таких как иконки, и уменьшится после закрытия Х приложений).


Вопрос: Где взять тарболлы (файлы в формате .tar.gz)?

Ответ: Такие файлы в чистом виде больше недоступны. Файл '.run' представляет собой тарболл со сценарием-оболочкой. Вы можете извлечь тарболл путем запуска '.run' файла с ключом --extract-only.


Вопрос: Где я могу найти драйверы прежних версий?

Ответ: Посмотрите по адресу ftp://download.nvidia.com/XFree86_40/


Вопрос:Как мне посмотреть, что исходные тексты ядра были установлены?

Ответ:Если используется дистрибутив с поддержкой RPM (Red Hat, Mandrake, SuSE), вы можете использовать 'rpm'. В командной строке введите:
% rpm -qa | grep kernel и посмотрите вывод. Вы должны увидеть пакет, соответствующий вашему ядру (обычно имеет название вида kernel-2.6.15-7), и пакет исходных текстов с тем же номером версии (обычно имеет название вида kernel-devel-2.6.15-7 или kernel-source-2.4.18-3). Если ни одна из строк не относится к пакету исходных текстов, то вам надо установить эти пакеты. Если отображаемые версии не совпадают (например, kernel-2.6.15-7 и kernel-devel-2.6.15-10), тогда вам нужен обновленный пакет kernel-devel, соответствующий установленному ядру. Если установлено несколько ядер, нужно установить пакет исходных текстов, соответствующий ядру, выполняющемуся в данный момент (или убедитесь, что уже установленный пакет ему соответствует). Вы можете это сделать, посмотрев вывод команды 'uname -r' и сравнивая версии..


Вопрос: Что такое SELinux и как это влияет на драйвер NVIDIA?

Ответ: Linux с повышенной безопасности (SELinux) — это набор модификаций ядра и ряда утилит Linux, вносящих архитектуру политик безопасности. При использовании требуется, чтобы тип доступа ко всем общим библиотекам был установлен в 'shlib_t'. Инсталлятор драйвера определяет, когда необходимо выставить тип доступа и выставляет его ко всем общим библиотекам, которые устанавливает. Ключ запуска --force-selinux для '.run' файла отключает обнаружение требования выставления типа доступа.


Вопрос: Используя утилиты конфигурирования GNOME я не могу получить разрешения выше 800x600. Что не так?

Ответ: Установка GNOME в дистрибутивах вроде Red Hat Enterprise Linux 4 содержит ряд путей для установки разрешения:

'System Settings' —> 'Display'

Что приводит к изменению файла конфигурации Х-интерфейса, и

'Applications' —> 'Preferences' —> 'Screen Resolution'

что определяет разрешение для каждого пользователя используя XRandR-расширение. Разрешение вашего рабочего стола определяется наименьшим из двух настроек. Убедитесь, что вы проверили их обе.


Вопрос: Почему использующие DGA приложения не запускаются?

Ответ: Драйвер NVIDIA не поддерживает графический компонент расширения ХFree86-DGA (Direct Graphics Access). Приложения могут использовать вызов XDGASelectInput() для отслеживания перемещения указателя, но такие функции как XDGASetMode() и XDGAOpenFramebuffer(), работать не будут.

Графический компонент ХFree86-DGA не поддерживается, поскольку требует отображения буфера кадров с использованием центрального процессора. В связи с непрерывным увеличением объема видеопамяти на видеокартах драйвер Х-интерфейса NVIDIA перешел на новый механизм динамического использования памяти, несовместимый с DGA. Дополнительно, DGA не взаимодействует с другими графическими библиотеками, такими как Xlib и OpenGL, поскольку те обращаются к ресурсам графического процессора напрямую.

Приложениям лучше использовать OpenGL или Xlib вместо DGA для отображения изображения. Использование графических библиотек, отличных от DGA, позволит несколько улучшить производительность и обеспечит лучшую совместимость с другими Х приложениями.


Вопрос: Журнал событий ядра содержит сообщения, начинающиеся с "Xid"; что это значит?

Ответ: Сообщения "Xid" показывают, что произошла общая ошибка в работе GPU, чаще всего из-за ошибки драйвера в программировании GPU или из-за порчи команд, посланных в GPU. Эти сообщения содержат информацию, которая может помочь NVIDIA в поиске и устранении сообщаемых проблем.


Вопрос: Какое оборудование NVIDIA поддерживает OpenGL расширение EXT_framebuffer_object?

Ответ: Расширение EXT_framebuffer_object поддерживается графическими процессорами GeForce FX, Quadro FX, и более новыми.


Вопрос: Я пользуюсь интерфейсом разгона Coolbits для изменения частот видеокарты, но частоты сбрасываются на умолчания после перезапуска Х-интерфейса. Как сделать изменения постоянными?

Ответ: Частоты не сохраняются/восстанавливаются автоматически по-умолчанию, воизбежание проблем со стабильностью работы системы и прочих проблем, могущих наступить при отходе от частот, установленных производителем. Вы можете включить приведенную ниже строку в файл '~/.xinitrc' для автоматического применения разгона при старте сервера Х-интерфейса:

# nvidia-settings -a GPUOverclockingState=1 -a GPU2DClockFreqs=<GPU>,<MEM> -a GPU3DClockFreqs=<GPU>,<MEM>

Где <GPU> и <MEM> — желаемые частоты графического процессора и видеопамяти (в МГц) соответственно.

Вопрос: Почему утилиты, использующие расширение Х-интерфейса XRandR (например, панель "Screen Resolution Preferences" интерфейса GNOME, команда `xrandr -q` и т.д.) неправильно показывают частоту обновления изображения?

Ответ: Расширение XRandR не учитывает возможность отображения на нескольких дисплеях одного экрана X-интерфейса; оно обращается только к значению параметра MetaMode, в котором может содержаться описание одного или нескольких текущих видеорежимов. Это означает, что если несколько метарежимов описано в одном параметре MetaModes, расширение XRandR не в состоянии их различить между собой.

Для поддержки DynamicTwinView драйвер Х-интерфейса NVIDIA должен каждый метарежим сделать уникальным для расширения XRandR. В настоящее время драйвер использует значение частоты обновления изображения в качестве уникального идентификатора. Вы можете воспользоваться командой `nvidia-settings -q RefreshRate` для просмотра текущей частоты обновления на каждом дисплее. Это поведение драйвера может быть отключено выставлением опции "DynamicTwinView" конфигурации Х-интерфейса в FALSE. За дополнительной информацией обратитесь к Главе 13.


Вопрос:Почему при запуске некоторых приложений появляются сообщения об ошибках Xlib, сообщающие об отсутствии расширений наподобие "XFree86-VidModeExtension" или "SHAPE"?

Ответ:Если ваш файл конфигурации X-интерфейса содержит секцию "Module", в которой не пречислен модуль "extmod", некоторые расширения X-интерфейса могут отсутствовать, приводя к сообщаениям об ошибках вида:

Xlib: extension "SHAPE" missing on display ":0.0"
Xlib: extension "XFree86-VidModeExtension" missing on display ":0.0"
Xlib: extension "XFree86-DGA" missing on display ":0.0"

Вы можете исправить эту проблему, добавив в файл конфигурации X-интерфейса в секцию "Module" строку:

Load "extmod"


Типичные проблемы

Эта глава содержит решения типовых проблем, возникающих при использовании драйвера NVIDIA для Linux.

Вопрос: Сервер Х-интерфейса не запускается, файл журнала Х-интерфейса содержит следующие ошибки:

(EE) NVIDIA(0):The NVIDIA kernel module does not appear to be receiving
(EE) NVIDIA(0):interrupts generated by the NVIDIA device PCI:x:x:x.
(EE) NVIDIA(0):Please see the COMMON PROBLEMS section in
(EE) NVIDIA(0):the README for additional information.

Ответ: Это может быть вызвано многими причинами, как то: ошибками маршрутизации прерываний PCI, проблемами с расширенным контроллером прерываний (I/O APIC), конфликтами устройств, использующих общую линию прерываний (или их драйверов).

Если возможно, сконфигурируйте систему так, чтобы видеокарта не использовала линию прерываний (IRQ) совместно с другими устройствами (переместите карту в другой слот, выгрузите/отключите драйвер устройства, которое использует линию прерываний видеокарты, или отключите/удалите само устройство).

В зависимости от причины проблемы, одна из нижеприведенных опций ядра операционной системы, или их комбинация, также могут помочь в решении проблемы:

ОпцияДействие
pci=noacpiне использовать ACPI для маршрутизации прерываний PCI
pci=biosirqиспользовать вызовы PCI BIOS для построения таблицы маршрутизации прерываний
noapicне использовать I/O APIC, имеющийся в системе
acpi=offотключить ACPI

Вопрос: Сервер Х-интерфейса не запускается, файл журнала Х-интерфейса содержит следующие ошибки:

(EE) NVIDIA(0): The interrupt for NVIDIA graphics device PCI:x:x:x

(EE) NVIDIA(0): appears to be edge-triggered. Please see the COMMON

(EE) NVIDIA(0): PROBLEMS section in the README for additional information.

Ответ: Сообщение об "edge-triggered interrupt" означает, что ядро операционной системы настроено на обнаружение прерываний по фронту сигнала, а не по уровню сигнала в расширенном программируемом контроллере прерываний (APIC). При обнаружении прерываний по фронту сигнала невозможно разделение линии прерываний между несколькими устройствами, в этом случае должно использоваться обнаружение по уровню сигнала. При обнаружении прерываний по фронту сигнала возможна ситуация, когда драйвер устройства не сможет получать сигнал о прерывании. Для пользователя это выглядит как отказ устройства, и может привести к аварийной остановка работы компьютера. Особенно вероятность возникновения таких проблем велика, когда несколько устройств совместно используют одну линию прерываний. Такая ситуация возникает, если ля программирования обработки прерываний в APIC не используется интерфейс ACPI. Это обычная проблема с ядрами операционной системы Linux версий 2.4, поддерживающих ACPI не в полном объеме, или ядрами версий 2.6 если интерфейс ACPI отключен или возник сбой при попытке его инициализации. В этом случае ядро Linux использует таблицы прерываний, предоставляемые BIOS материнской платы. Иногда в BIOS подразумевается использование ACPI для обработки прерываний, и в таблицах прерываний все прерывания ошибочно помечаются как распознаваемые по фронту сигнала. Текущую настройку прерываний можно посмотреть в /proc/interrupts.

Возможные решения включают в себя: обновление BIOS материнской платы, использование ядра операционной системы версий 2.6 с включенным интерфейсом ACPI, или включение опции ядра 'noapic' для обработки всех прерываний в устаревшем программируемом контроллере прерываний (PIC). Новые версии ядра также содержат механизм отложенной обработки прерываний в качестве пути обхода данной проблемы. Этот механизм можно включить опцией ядра 'irqpoll'. В настоящее время драйвер NVIDIA проверяет обнаружение прерываний по фронту сигнала и останавливает запуск сервера Х-интерфейса в этом случае (чтобы избегнуть проблем со стабильностью системы). Это поведение драйвера может быть отключено с помощью опции "NVreg_RMEdgeIntrCheck" модуля уровня ядра драйвера NVIDIA для Linux. По-умолчанию значение этого параметра "1", определение обнаружения прерываний по фронту сигнала включено. Установите значение опции в "0" для отключения данного обнаружения.


Вопрос: Х-интерфейс загружается, но OpenGL приложения завершают работу сразу после запуска.

Ответ: Если Х-интерфейс работает, но имеются проблемы с OpenGL, то это, скорее всего, проблема с прочими используемыми библиотеками или имеются устаревшие символические ссылки (symlinks). Обратитесь к Главе 5 за дополнительной информацией. Иногда достаточно просто перезапустить 'ldconfig'.

Вам также необходимо проверить наличие правильных расширений. Команда

% xdpyinfo

должна показать, что расширения "GLX" и "NV-GLX" присутствуют в системе. Если этих двух расширений нет, вероятно, имеют место быть проблемы с запуском модуля glx, или же невозможно неявное исполнение GLcore. Проверьте файл конфигурации Х-интерфейса и убедитесь, что в нем содержится строка загрузки glx (см. Главу 6). Если файл конфигурации корректен, проверьте файл журнала Х-интерфейса на предмет предупреждений/ошибок, связанных с GLX. Также проверьте наличие всех требуемых символических ссылок (см. Главу 5).


Вопрос: При использовании Xinerama, мои стереоочки работают только если стерео-приложение отображается на одном конкретном Х-дисплее. Если приложение отображается на других дисплеях, очки перестают работать.

Ответ: Эта проблема возникает с каналом DDC и стереоочками типа "blue line", которые получают стереосигнал из одного выхода видеокарты. Когда Х-дисплей не отображает информации, пригодной для вывода в стереорежиме, вывод стереосигнала на этот выход карты прекращается. Принудительное использование стереопереключения позволяет очкам работать непрерывно. Это возможно путем задействования опции OpenGL "Force Stereo Flipping" в утилите nvidia-settings, или путем добавления в файл конфигурации Х-интерфейса строки "ForceStereoFlipping" со значением "1".


Вопрос: Стереоизображение не синхронизировано между несколькими дисплеями.

Ответ: Есть две возможных причины этого. Если дисплеи подсоединены к одному и тому же GPU, и один из них потерял синхронизацию со стереоочками, вам нужно настроить мониторы на одинаковые параметры временной синхронизации; обратитесь к Главе 19 за дополнительной информацией.

Если дисплеи подключены к разным GPU, то единственный способ синхронизировать их — использовать специальное устройство G-Sync, поддерживаемое некоторыми видеокартами Quadro. Обратитесь к Главе 26 за дополнительной информацией. Это относится как к случаю отдельных GPU на отдельных видеокартах, так и к случаю нескольких GPU на одной видеокарте, такой как Quadro FX 4500 X2. Обратите внимание, что видеокарта Quadro FX 4500 X2 имеет только один DIN разъем для подключения стереоочков, принадлежащий нижнему GPU. Для синхронизации стереооизображения со вторым GPU нужно использовать специальное устройство G-Sync.


Вопрос: Сервер Х-интерфейса не запускается, файл журнала Х-интерфейса содержит следующие ошибки:

(EE) NVIDIA(0): Failed to load the NVIDIA kernel module!

Ответ: Драйвер Х-интерфейса выдает такую ошибку если модуль уровня ядра драйвера NVIDIA не загрузился. При получении такой ошибки вам необходимо проверить вывод команды `dmesg` на наличие ошибок ядра операционной системы и/или попыток явной загрузки модуля `modprobe nvidia`. Если сообщается о `unresolved symbols`, то, вероятнее всего, модуль собран с использованием исходных текстов (заголовков) для версии/конфигурации ядра операционной системы, не совпадающей с используемым ядром.

Вы можете задать расположение исходных текстов (заголовков) ядра при установке драйвера NVIDIA используя ключ запуска --kernel-source-path (смотрите команду `sh NVIDIA-Linux-x86-1.0-8178-pkg1.run --advanced-options` для дополнительной информации).

Старые версии пакета module-init-tools включают исполняемые файлы утилиты `modprobe`, сообщающие об ошибке при запуске модуля, который уже включен в ядро операционной системы. Обновите пакет module-init-tools если получаете сообщения об ошибке в данном случае.

Сервер Х-интерфейса обращается к '/proc/sys/kernel/modprobe', определяя местоположение утилиты `modprobe`, и к '/sbin/modprobe', если файл не был найден. Проверьте, что этот адрес правильный, и ведет к исполняемому файлу утилиты `modprobe`, совместимому с используемым ядром операционной системы.

Опция "LoadKernelModule" драйвера X-интерфейса может быть использована для изменения поведения по-умолчанию и отключения автозагрузки модуля уровня ядра.


Вопрос: Установка модуля уровня ядра драйвера NVIDIA выдает сообщения об ошибке вида:

#error Modules should never use kernel-headers system headers

#error but headers from an appropriate kernel-source

Ответ: Вам необходимо установить исходные тексты ядра операционной системы. В большинстве случаев достаточно установить пакет kernel-source из дистрибутива.


Вопрос: Приложения OpenGL аварийно завершаются со следующей ошибкой:

WARNING: Your system is running with a buggy dynamic loader.

This may cause crashes in certain applications. If you

experience crashes you can try setting the environment

variable __GL_SINGLE_THREADED to 1. For more information

please consult the FREQUENTLY ASKED QUESTIONS section in

the file /usr/share/doc/NVIDIA_GLX-1.0/README.txt.

Ответ: Динамический загрузчик в вашей системе имеет ошибку, приводящую к аварийному завершению приложений, собранных с помощью pthreads и многократно выполняющих запрос dlopen() libGL. Эта ошибка присутствует в старых версиях динамического загрузчика. К дистрибутивам, включающим в себя эту версию загрузчика, относятся (но ими не ограничивается) Red Hat Linux 6.2 и Mandrake Linux 7.1. Версии динамического загрузчика 2.2 и более поздние работают нормально. Если приложение не использует многопоточность, присвоение переменной среды

'__GL_SINGLE_THREADED' значения "1" позволит избежать ошибки. В диалоге утилиты bash надо ввести:

% export __GL_SINGLE_THREADED=1

и в утилите csh и ее производных:

% setenv __GL_SINGLE_THREADED 1

Предыдущие версии драйвера NVIDIA для Linux содержали способ обхода данной проблемы. К сожалению, этот способ приводил к проблемам с другими приложениями, и был удален в драйверах после версии 1.0-1541.


Вопрос: Игра Quake3 аварийно завершается при смене видеорежима.

Ответ: Вероятно, вы столкнулись с проблемой, описанной в предыдущем вопросе. Проверьте текстовый вывод приложения на предмет вышеупомянутого сообщения "WARNING". Присвоение переменной среды

'__GL_SINGLE_THREADED' значения "1" должно устранить неполадку.


Вопрос: Я не могу собрать модуль интерфейса ядра драйвера NVIDIA, или же модуль собирается, но modprobe/insmod не могут загрузить его в ядро. Что не так?

Ответ: Проблема обычно вызвана сборкой с неправильными файлами заголовков ядра (т.е. используемые при сборке файлы заголовков предназначены для версии ядра, отличной от используемой в данный момент). Стандартно файлы заголовков лежат в

'/usr/include/linux/', но путь

'/lib/modules/RELEASE/build/include' (где RELEASE — результат выполнения команды

'uname -r') имеет преимущество. Утилита

'nvidia-installer' должна сама определить их размещение в системе, однако, при возникновении затруднений, вы можете задать сборку с использованием определенных файлов заголовков путем ключа запуска

--kernel-include-dir установки. Для того, чтобы это сработало, вам необходимо наличие подходящих файлов заголовков в системе. Обратитесь к документации используемого дистрибутива, в некоторых дистрибутивах файлы заголовков не устанавливаются по-умолчанию, или же устанавливаются заголовки, не подходящие к используемому ядру.


Вопрос: Проблемы с запуском игры Heretic II.

Ответ: Игра Heretic II по-умолчанию создает символическую ссылку (symlink) под названием 'libGL.so' в каталоге игры. Вам надо удалить или переименовать эту ссылку, так как система дальше найдет и будет использовать стандартную 'libGL.so' (которую драйвер устанавливает в

'/usr/lib'). После этого вы сможете выставить используемым рендером OpenGL в меню Video игры. Также существует патч для игры от lokigames, доступный по адресу: http://www.lokigames.com/products/heretic2/updates.php3/


Вопрос: Система зависает при переключении в виртуальный терминал, если используется rivafb.

Ответ: Использование rivafb и модуля уровня ядра NVIDIA одновременно невозможно. Использование двух независимых драйверов для одного и того же оборудования — изначально плохая идея.


Вопрос: Компилирование модуля уровня ядра NVIDIA выдает следующую ошибку:

You appear to be compiling the NVIDIA kernel module with

a compiler different from the one that was used to compile

the running kernel. This may be perfectly fine, but there

are cases where this can lead to unexpected behavior and

system crashes.

 

If you know what you are doing and want to override this

check, you can do so by setting IGNORE_CC_MISMATCH.

 

In any other case, set the CC environment variable to the

name of the compiler that was used to compile the kernel.

Ответ: Вам надо скомпилировать модуль, используя ту же версию компилятора, которая использовалась при компилировании ядра. Некоторые структуры данных ядра Linux зависят от версии компилятора gcc, используемой для их компиляции, например, в 'include/linux/spinlock.h':

...
* Most gcc versions have a nasty bug with empty initializers.
*/
#if (__GNUC__ > 2)
typedef struct { } rwlock_t;
#define RW_LOCK_UNLOCKED (rwlock_t) { }
#else
typedef struct { int gcc_is_buggy; } rwlock_t;
#define RW_LOCK_UNLOCKED (rwlock_t) { 0 }
#endif

Если ядро компилировалось с gcc версии 2.x, но для компилирования модуля интерфейса ядра использовался gcc версии 3.x (и наоборот), размер rwlock_t будет различаться, и такие вызовы как ioremap приведут к сбою. Для выяснения версии gcc, использованной при компиляции вашего ядра, просмотрите вывод команды:

% cat /proc/version

Для проверки версии gcc, доступной в данный момент по переменной '$PATH', просмотрите вывод команды:

% gcc -v


Вопрос: Х-интерфейс завершается с ошибкой:

Failed to allocate LUT context DMA

Ответ: Это один из возможных примеров компилирования модуля уровня ядра NVIDIA с использованием версии gcc, отличной от версии gcc, использовавшейся для компилирования ядра (см. выше).


Вопрос: Я недавно обновил версии различных библиотек, используя утилиту обновления Linux, включенную в дистрибутив, и драйвер NVIDIA перестал работать.

Ответ: Конфликтующие версии библиотек могли быть установлены в процессе обновления, обратитесь к Главе 5 за дополнительной информацией по определению проблемы.


Вопрос: Я пересобрал модуль уровня ядра NVIDIA, но теперь при попытке его интеграции выдается сообщение об unresolved symbols.

Ответ: Сообщение Unresolved symbols чаще всего вызвано различием между исходными текстами ядра и используемым ядром. Они должны полностью совпадать для правильной сборки модуля. Убедитесь, что установлены и используются исходные тексты, совпадающие с используемым ядром операционной системы.


Вопрос: Как мне посмотреть, что исходные тексты ядра были установлены?

Ответ: Если используется дистрибутив с поддержкой RPM (Red Hat, Mandrake, SuSE), вы можете использовать 'rpm'. В командной строке введите:

% rpm -qa | grep kernel

и посмотрите вывод. Вы должны увидеть пакет, соответствующий вашему ядру (обычно имеет название вида kernel-2.6.15-7), и пакет исходных текстов с тем же номером версии (обычно имеет название вида kernel-devel-2.6.15-7 или kernel-source-2.4.18-3). Если ни одна из строк не относится к пакету исходных текстов, то вам надо установить эти пакеты. Если отображаемые версии не совпадают (например, kernel-2.6.15-7 и kernel-devel-2.6.15-10), тогда вам нужен обновленный пакет kernel-devel, соответствующий установленному ядру. Если установлено несколько ядер, нужно установить пакет исходных текстов, соответствующий ядру, выполняющемуся в данный момент (или убедитесь, что уже установленный пакет ему соответствует). Вы можете это сделать, посмотрев вывод команды 'uname -r' и сравнивая версии.


Вопрос: Я не могу загрузить модуль уровня ядра NVIDIA, который скомпилировал для ядра операционной системы Red Hat Linux 7.3 2.4.18-3bigmem kernel.

Ответ: Файлы заголовков ядра, которые Red Hat включала в дистрибутивы для Red Hat Linux 7.3 2.4.18-3bigmem kernel, неправильно настроены. Предварительно скомпилированный модуль уровня ядра NVIDIA может быть загружен, но если вы хотите сами его скомпилировать для этого ядра, вам необходимо проделать следующие действия:

# cd /lib/modules/`uname -r`/build/

# make mrproper

# cp configs/kernel-2.4.18-i686-bigmem.config .config

# make oldconfig dep

Обратите внимание: Red Hat Linux содержит файлы заголовков ядра, настроенные для всех ядер, включенных в дистрибутивы операционной системы с одним номером версии. Файл заголовка, создаваемый во время загрузки системы, устанавливает ряд параметров для выбора правильной конфигурации. Пересоздание заголовков ядра с помощью приведенных выше команд создаст файлы, подходящие только для ядра Red Hat Linux 7.3 2.4.18-3bigmem kernel, делая их непригодными для других вариантов.


Вопрос: Приложения OpenGL приводят к утечкам памяти в моей системе!

Ответ: Если ядро системы собиралось с использованием -rmap VM, система может терять память в связи с улучшениями в механизме управления памятью, введенными в -rmap14a. Опция -rmap VM используется в некоторых популярных дистрибутивах, утечка памяти присутствует в некоторых распространяемых версиях ядра. Проблема исправлена в -rmap15e.

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


Вопрос: Некоторые OpenGL приложения (такие как Quake3 Arena) аварийно завершаются при запуске их в Red Hat Linux 9.0.

Ответ: Некоторые версии пакета glibc, включенные в дистрибутивы Red Hat, поддерживающие TLS, неправильно используют вызов dlopen() для доступа к общим библиотекам, использующим TLS модели. Эта проблема наблюдается, например, когда Quake3 Area делает вызов dlopen() к библиотеке libGL NVIDIA. Установите пакет версии как минимум glibc-2.3.2-11.9, доступный в качестве обновления от Red Hat.


Вопрос: Я установил драйвер, но опция Enable 3D Acceleration по-прежнему недоступна.

Ответ: Многие утилиты конфигурирования, поставляемые в составе дистрибутивов, не определяют наличие драйвера NVIDIA с аппаратным ускорением, и не обновляют свое состояние после установки драйвера. Ваш драйвер, в случае правильной установки, должен работать в полном объеме.


Вопрос: X-интерфейс не восстанавливает изображение графической консоли при запуске на ТВ. Я получаю следующее сообщение об ошибке в файле журнала Х-интерфейса:

Unable to initialize the X int10 module; the console may not be restored correctly on your TV.

Ответ: Драйвер NVIDIA для X-интерфейса использует модуль обработки прерывания Int10 Х-интерфейса для сохранения и восстановления состояния консоли на ТВ, и не может нормально восстановить изображение консоли, если не используется модуль обработки прерывания Int10. Если вы собирали сервер Х-интерфейса самостоятельно, убедитесь, что модуль обработки прерывания Int10 был также собран. Если используется готовая сборка сервера, включенная в дистрибутив Linux, и модуль обработки прерывания Int10 отсутствует, обратитесь к поставщику дистрибутива.


Вопрос: При изменении настроек в играх типа Quake 3 Arena или Wolfenstein Enemy Territory, игра аварийно завершается со следующим сообщением:

...loading libGL.so.1: QGL_Init: dlopen libGL.so.1 failed:

/usr/lib/tls/libGL.so.1: shared object cannot be dlopen()ed:

static TLS memory too small

Ответ: Эти игры закрывают и запускают заново драйвер OpenGL NVIDIA (посредством вызовов dlopen() / dlclose()) при изменении настроек. С некоторыми версиями библиотеки glibc (например, с поставляемой в дистрибутиве Red Hat Linux 9), возникает ошибка, связанная с утечкой статических записей TLS. Эта ошибка glibc приводит к аварийному завершению OpenGL драйвера при его последующих перезагрузках. Это исправлено в более поздних версиях glibc; посмотрите отчет Red Hat об ошибке bug #89692: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=89692


Вопрос: X-интерфейс аварийно завершается во время 'startx', и файл журнала содержит следующее сообщение об ошибке:

(EE) NVIDIA(0): Failed to obtain a shared memory identifier.

Ответ: Драйвер OpenGL NVIDIA и драйвер Х-интерфейса NVIDIA требуют наличие общей памяти для обмена информацией, опция 'CONFIG_SYSVIPC' должна быть включена в ядре операционной системы.


Вопрос: Когда я пытаюсь установить драйвер, установщик сообщает, что Х-интерфейс запущен, даже если я вышел из Х.

Ответ: Установщик определяет присутствие сервера Х-интерфейса, проверяя наличие его временных файлов в '/tmp/.Xn-lock', где 'n' — номер Х-дисплея (инсталлятор проверяет номера от 0 до 7). Если вы вышли из Х-интерфейса, но один из временных файлов остался, вам необходимо удалить его вручную. Не удаляйте этот файл, если Х-интерфейс еще работает!


Вопрос: Система работает, но очень нестабильно. Что не так?

Ответ: Проблемы со стабильностью могут быть вызваны проблемами с AGP шиной. Обратитесь к Главе 12 за дополнительной информацией.


Вопрос: Приложения OpenGL работают слишком медленно.

Ответ: Возможно, приложение продолжает использовать библиотеку OpenGL, отличную от установленной драйвером NVIDIA. Обратитесь к Главе 5 за дополнительной информацией.


Вопрос: Проблемы с игрой Quake2.

Ответ: Игра Quake2 требует дополнительной небольшой настройки перед запуском. В первую очередь, в каталоге игры при установке создается символическая ссылка 'libGL.so', ведущая к библиотеке 'libMesaGL.so'. Эта ссылка должна быть удалена или переименована. Во вторых, для запуска игры с использованием OpenGL надо набирать:

% quake2 +set vid_ref glx +set gl_driver libGL.so

Quake2, похоже, не поддерживает ни в каком виде вывод на полный экран, но можно запустить Х-интерфейс с таким же разрешением, что и в игре, для имитации полноэкранного режима.


Вопрос: Я использую интегрированную видеокарту чипсетов nForce или nForce2 и наблюдаю в файле журнала Х-интерфейса следующее предупреждение:

Not using mode "1600x1200" (exceeds valid memory bandwidth usage)

Ответ: Встроенная видеокарта имеет меньшую полосу пропускания к памяти, что ограничивает доступные разрешение и частоту обновления экрана. В качестве обходного пути вы можете снизить максимальную частоту обновления уменьшением значения в строке VertRefresh в секции 'Monitor' файла конфигурации Х-интерфейса. Также, хотя это и не рекомендуется, можно отключить проверку полосы пропускания к памяти с помощью опции NoBandWidthTest файла конфигурации X-интерфейса.


Вопрос: X-интерфейс слишком долго загружается (до нескольких минут).

Ответ: Большинство проблем с длительным запуском Х-интерфейса, как выяснилось, вызвано некорректными данными в BIOS видеокарт о возможных подключениях дисплеев и о порте шины i2c, используемом для определения. Вы можете обойти проблему с помощью опции IgnoreDisplayDevices файла конфигурации Х-интерфейса (см. описание в Главе 30).


Вопрос: Шрифты имеют неправильные размеры после установки драйвера NVIDIA.

Ответ:

Неправильные размеры шрифтов обычно вызваны некорректным значением разрешения DPI (точек на дюйм) в системе. Вы можете проверить, какое значение физического размера монитора подразумевается в Х-интерфейсе выполнением:

% xdpyinfo | grep dimensions

Будет сообщен размер в пикселях и миллиметрах. Если эти значения неверны, их можно исправить изменением настроек разрешения DPI сервера Х-интерфейса. Обратитесь к Главе 33 за дополнительной информацией.


Вопрос: Общие проблемы с чипсетами Ali.

Ответ: Имеется ряд известных проблем с временной синхронизацией и целостностью сигнала в чипсетах ALi. Следующие советы могут помочь повысить стабильность проблемной системы:

_Отключите опцию TURBO AGP MODE в BIOS материнской платы.

_Если используется плата P5A обновите BIOS до версии Revision 1002 BETA2.

_Если используется версия BIOS 1007, 1007A или 1009, настройте опцию IO Recovery Time на 4 цикла.

_Возможности AGP отключены по-умолчанию при использовании некоторых чипсетов ALi (ALi1541, ALi1647) в целях избежать проблем со стабильностью системы. См. комментарии к опции 'EnableALiAGP' в 'nv-reg.h' для включения AGP в любом случае.


Вопрос:Приложения OpenGL не запускаются, в файл журнала записывается ошибка:

(EE) NVIDIA(0): Unable to map device node /dev/zero with read, write, and
(EE) NVIDIA(0): execute privileges. The GLX extension will be disabled
(EE) NVIDIA(0): on this X screen. Please see the COMMON PROBLEMS
(EE) NVIDIA(0): section in the README for more information.



Ответ:Драйвер OpenGL NVIDIA должен отобразить ветвь оборудования '/dev/zero' с разрешениями на чтение, запись и выполнение для корректной работы. Данная функция требуется драйверу для выделения исполняемой области памяти, используемой в оптимизациях, требующих создания программного кода «на лету». В настоящее время GLX не может исполняться без использования данных оптимизаций.

Проверьте, что файловая система оборудования '/dev' правильно установлена. Наиболее частая причина заключается в том, что файловая система '/dev' собрана с использованием опции 'noexec'. Если вы сами не изменяли настройки системы '/dev', обратитесь к поставщику дистрибутива операционной системы.


Известные проблемы

Следующие проблемы имеются в текущей версии драйвера и ожидают решения.

OpenGL и вызов dlopen()

Есть некоторые трудности со старыми версиями загрузчика glibc (в частности, с версией из дистрибутива Red Hat Linux 7.2) и приложениями, такими как Quake3 и Radiant, использующими вызовы dlopen(). Обратитесь к Главе 7 за дополнительной информацией.

Несколько видеокарт, несколько мониторов

В некоторых случаях, вторая видеокарта не инициализируется правильно модулем уровня ядра драйвера NVIDIA. Вы можете решить проблему, используя модуль XFree86 обработки прерывания Int10 для "мягкой" загрузки дополнительных видеокарт. Обратитесь к Главе 30 за дополнительной информацией.

Взаимодействие с pthreads

Однопоточные приложения, использующие вызовы dlopen() для загрузки библиотеки libGL NVIDIA, и одновременно для загрузки любых других библиотек, связанных с libpthread, аварийно завершают работу в libGL. Этого не происходит с новыми библиотеками OpenGL ELF TLS NVIDIA (см. Главе 5 за описанием библиотек ELF TLS OpenGL). Возможные действия в случае таких проблем:

_Загружать библиотеку, связанную с libpthread, перед загрузкой libGL.

_Связывать само приложение с libpthread.

Платформа X86-64 (AMD64/EM64T) и ядра операционной системы серии 2.6

Многие x86_64 версии ядра операционной системы серии 2.4 и 2.6 имеют неучтенные проблемы в реализации интерфейса ядра change_page_attr . Ранние версии 2.6 ядра содержали проверку, вызывающую событие BUG() при обнаружении подобной проблемы (результатом события BUG() является принудительное завершение работы текущего приложения ядром ОС); это приложение может быть как приложением OpenGL, так и сервером Х-интерфейса. Проблема устранена в ядре версии 2.6.11.

В драйвер добавлены специальные проверки для определения, что модуль уровня ядра NVIDIA скомпилирован для платформы x86-64 при используемом ядре операционной системы версии между 2.6.0 и 2.6.11. В этом случае отключается использование интерфейса ядра change_page_attr. Это позволяет избежать проблемы, но оставляет систему уязвимой для конфликтов информации в кеше (см. конфликты информации в кеше ниже для дополнительной информации о проблеме). Обратите внимание, что проблема change_page_attr и событие BUG() могут быть вызваны другими подсистемами ядра, зависящими от этого интерфейса.

Если вы используете ядро x86_64 версии 2.6, мы рекомендуем обновить ядро до версии 2.6.11 или более поздней.

Также обратите внимание на информацию о проблемах прямого обмена с памятью (DMA) в 64-битных системах в Главе 10.

Конфликты информации в кеше

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

NVIDIA обнаружила ошибки в некоторых версиях ядра Linux, связанные с конфликтом информации в кеше. Хотя некоторые системы работают абсолютно нормально при возникновении конфликтов, в других наблюдаются проблемы со стабильностью, вплоть до случайных зависаний. Пользователям, сталкивающимся с нестабильной работой системы из-за конфликтов информации в кеше лучше всего будет обновить ядро операционной системы до версии, не имеющей таких проблем.

NVIDIA добавила в драйвер механизм обнаружения случаев конфликтов информации в кеше, и выдает сообщение вроде:

NVRM: bad caching on address 0x1cdf000: actual 0x46 != expected 0x73

Если вы увидели это сообщение в файле журнала, и столкнулись с нестабильной работой системы, вам необходимо обновить ядро операционной системы до последней доступной версии.

Если сообщение продолжает появляться и после обновления ядра, направьте отчет об ошибке в NVIDIA.

64-битные BAR (Регистр базового адреса)

Начиная с первых графических процессоров с врожденной поддержкой PCI Express, графические процессоры NVIDIA сообщают о поддержке 64-битных регистров базового адреса (регистр базового адреса хранит информацию о положении области памяти для операций ввода-вывода PCI устройства, для регистров или кадрового буфера). Это означает, что область памяти для операций ввода-вывода графического процессора (регистров или кадрового буфера) может быть размещена за пределами адресуемого по 32-битной схеме пространства (первых четырех гигабайт памяти).

Выбор места размещения регистра базового адреса осуществляется BIOS материнской платы во время загрузки компьютера. Если BIOS поддерживает 64-битные регистры, то области памяти для операций ввода-вывода могут быть размещены за пределами адресуемого по 32-битной схеме пространства. Если же BIOS не поддерживает эту функцию, то области памяти для операций ввода-вывода будут помещены в пределах адресуемого по 32-битной схеме пространства так же, как это делалось раньше.

К сожалению, текущие реализации ядра Linux (включая версии 2.6.11.x) не поддерживают или не принимают 64-битные регистры базового адреса. Если BIOS разместит любую из областей ввода-вывода за пределами 32-битного адресуемого пространства, ядро системы откажется использовать регистр базового адреса и драйвер NVIDIA не будет работать. В настоящее время нет способа решения данной проблемы.

Исчерпание виртуального адресного пространства ядра в платформе X86

В системе X86 и системах AMD64/EM64T, использующих ядро X86, виртуальное адресное пространство имеет размер только доступно только 4 Гб, который ядро операционной системы Linux обычно делит между пользовательскими процессами и ядром в соотношении 3 Гб к 1 Гб. Часть, выделенная ядру, используется для создания прямых отображений оперативной памяти. В зависимости от объема оперативной памяти размер части ядра виртуального адресного пространства, доступной для прочих применений, колеблется и может составлять лишь 128 мегабайт, если установлен 1 Гб и более оперативной памяти. По-умолчанию, резервируется не менее 128 Мб.

Виртуальное адресное пространство ядра, оставшееся после создания прямых отображений оперативной памяти, используется как самим ядром операционной системы, так и драйверами для отображения ресурсов ввода/вывода и резервирования областей памяти. В зависимости от числа претендентов и их требований, виртуальное адресное пространство ядра может оказаться исчерпанным. Новые версии ядра операционной системы Linux выводят сообщение об ошибки в форме:

allocation failed: out of vmalloc space - use vmalloc=<size> to increase size.

Модуль уровня ядра драйвера NVIDIA требует определенный объем вирутально адресного пространства ядра для каждого графического процессора, и резервирования некоторых областей памяти. Если во время загрузки системы не больше 128 Мб пространства доступно для ядра и драйверов устройств, модуль уровня ядра NVIDIA возможно не сможет инициализировать все графические процессоры, или зарезервировать области памяти. Обычно таких проблем не возникает в системах с одним или двумя графическими процессорами, хотя это зависит от числа прочих драйверов и их потребностей, но в системах с 3 и более графическими процессорами эта проблема весьма вероятна.

Возможные решения проблемы включают в себя:

_Если доступен, то опция ядра 'vmalloc' может быть использована для увеличения объема виртуального адресного пространства, резервируемом ядром операционной системы Linux (изначально это 128 Мб). Рекомендуется плавно увеличивать значение до достижения баланса между доступным объемом виртуально адресного пространства и объемом прямых отображений оперативной памяти. Этого можно добиться последовательным заданием значений 'vmalloc=192M', 'vmalloc=256MB' и т.д. и проверкой, что вышеприведенное сообщение об ошибке продолжает появляться.

Обратите внимание, что некоторые версии загрузчика операционной системы GRUB имеют проблемы с вычислением распределения памяти и загрузкой initrd при использовании опции ядра 'vmalloc'. Команда 'uppermem' загрузчика GRUB может быть использована чтобы заставить GRUB загружать initrd в нижнюю область системной памяти в качестве обхода проблемы. Это не должно сильно повлиять на производительность системы после загрузки ядра. Требуемый формат команды:

titleKernel Title
uppermem524288
kernel(hdX,Y)/boot/vmlinuz...

Также заметьте, что опция ядра 'vmalloc' появилась только в ядре Linux версии 2.6.9 и более поздней. В старых системах объем памяти, используемый ядром может быть уменьшен с помощью опции ядра 'mem', которая заодно уменьшает объем прямых отображений памяти и увеличивает доступное ядру виртуальное адресное пространство. Например, 'mem=512M' заставит ядро операционной системы игнорировать всю оперативную память кроме первых 512 Мб. Хотя уменьшение доступной оперативной памяти и не лучший выход, этот подход может быть использован для проверки, что проблемы с инициализацией видеокарты вызваны именно исчерпанием виртуального адресного пространства.

_В некоторых случаях помогает отключение драйверов буфера кадров, таких как vesafb, так как эти драйверы могут пытаться отобразить всю или большую часть видеопамяти в виртуальное адресное пространство ядра, стремительно расходуя этот ресурс. Вы можете отключить драйвер vesafb установлением опции ядра: 'video=vesa:off vga=normal'.

_Некоторые версии ядра операционной системы Linux могут быть настроены на другое распределение виртуального адресного пространства (например, 2.8 Гб и 1.2 Гб, 2 Гб и 2 Гб). Такая возможность может быть использована для предотвращения исчерпания виртуального адресного пространства ядра без уменьшения объема прямых отображений оперативной памяти. В некоторых дистрибутивах также содержатся версии ядра, использующие раздельные адресные пространства размером 4 Гб для пользовательских процессов и ядра. Такие ядра предоставляют достаточный объем виртуального адресного пространства ядра в обычных системах.

_Если ваш компьютер оснащен 64-разрядным процессором (совместимым с AMD64/EM64T), рекомендуется перейти на использование 64-битных дистрибутивов операционной системы/ядра Linux. Благодаря значительно большему размеру адресуемого адресного пространства у 64-разрядных процессоров, X86-64 ядрам операционной системы не угрожает проблема исчерпания виртуального адресного пространства в обозримом будущем.

Valgrind

Реализация OpenGL NVIDIA использует самомодифицирующийся код. Для того, чтобы принудить Valgrind к восстановлению кода после изменения, необходимо запускать Valgrind с использованием опции командной строки:

--smc-check=all

Без этой опции Valgrind может выполнять некорректный код, что приводит к непредсказуемому поведению и ошибке вида:

==30313== Invalid write of size 4

Метод MMConfig управления адресным пространством конфигурации устройств PCI

Ядра операционной системы Linux версии 2.6 содержат поддержку отображения в оперативную память адресного пространства конфигурации устройств PCI. К сожалению, возникает много проблем с этой функцией, и последнии версии ядра операционной системы более осторожны в использовании этого способа. Драйвер NVIDIA может оказаться не в состоянии надежно осуществлять чтение и запись адресного пространства конфигурации устройств PCI видеокарт на базе NVIDIA при использовании ядром операционной системы метода MMCONFIG для работы с адресным пространством PCI, особенно при использовании нескольких графических процессоров и нескольких центральных процессоров в 32-битных версиях ядра. Использование метода MMConfig может быть определено по присутствию строки "PCI: Using MMCONFIG" в выводимой информации по команде 'dmesg'. Это метод управления может быть отключен с помощью параметра ядра "pci=nommconf" операционной системы.

Ноутбуки

Если используется ноутбук, обратитесь к секции "Известные проблемы с ноутбуками" в Главе 18.

Полноэкранное сглаживание (FSAA)

Когда включено полноэкранное сглаживание (переменной среды __GL_FSAA_MODE присвоено значение, включающее FSAA и выбрано использование мультисэмплинга), может наблюдаться искажение изображения при изменении размера окна.

Вызов завершения libGL DSO и pthreads

При выходе из мультипоточного приложения OpenGL возможна ситуация, когда вызов завершения DSO библиотеки libGL (также известный как деструктор или "_fini") вызывается в то время, как некоторые потоки еще выполняют OpenGL код. Вызов завершения требуется для высвобождения системных ресурсов, занятых libGL. Это может вызвать неполадки в работе потоков, еще использующих эти ресурсы. Присвоение переменной среды "__GL_NO_DSO_FINALIZER" значение "1" позволяет избежать проблем путем принуждения вызова завершения библиотеки libGL к сохранению ее ресурсов на месте. Эти ресурсы станут доступны операционной системе после завершения процесса. Обратите внимание, что вызов завершения также выполняется как часть процесса dlclose(3), так что если имеются приложения, постоянно осуществляющие вызовы dlopens(3) и dlcloses(3) к libGL, использование переменной "__GL_NO_DSO_FINALIZER" приведет к утечке ресурсов libGL до завершения процесса. Использование этой возможности может улучшить стабильность работы некоторых многопоточных приложений, включая приложения Java3D.

XVideo и расширение Composite X-интерфейса

XVideo работает неправильно при включенном расширении Composite, если используется более ранняя версия Х-интерфейса чем X.Org 7.1. Обратитесь к Главе 23.


В следующей секции описаны проблемы, которые не будут исправляться. Часто причина этих проблем находится не под контролем NVIDIA.

Проблемы, которые не будут исправлены

Материнская плата Gigabyte GA-6BX

В этой материнской плате используется регулятор напряжений LinFinity на линии 3.3 В, рассчитанный на максимальный ток в 5 A — меньше, чем предусмотрено стандартом AGP, требующим 6 A. Когда выполняется проверка или работают приложения, температура регулятора возрастает, приводя к падению напряжения, идущего на графический процессор NVIDIA вплоть до 2.2 В. В этих условиях, регулятор не может обеспечивать требуемое напряжение для графического процессора NVIDIA по линии 3.3 В.

Эта проблема не возникает, если видеокарта оснащена импульсным регулятором, или к линии 3.3 В подключено внешнее питание.

Чипсеты VIA KX133 и 694X с AGP 2x

На материнских платах для процессоров Athlon, построенных на чипсетах VIA KX133 или 694X, таких как ASUS K7V, драйверы NVIDIA по-умолчанию ограничивают скорость работы AGP порта 2x с целью избежать проблемы с недостаточным усилением одного из сигналов по шине.

Чипсеты Irongate с AGP 1x

AGP порт работает со скоростью 1x на материнских платах для процессоров Athlon, построенных на чипсетах Irongate, с целью избежать проблем с целостностью сигнала по шине.

Чипсеты ALi ALi1541 и ALi1647

С чипсетами ALi1541 и ALi1647 драйвер NVIDIA отключает AGP с целью избежать проблем с временной синхронизации и целостностью сигналов. Обратитесь к Главе 8 за дополнительной информацией о чипсетах ALi.

Расширение NV-CONTROL версий 1.8 и 1.9

В версии 1.8 расширения Х-интерфейса NV-CONTROL введено понятие типов объектов для выставления и проверки атрибутов и для получения сообщений о изменениях состояния объекта. В качестве объекта могут выступать экраны Х-интерфейса, GPU, устройства G-Sync. Ранее все атрибуты описывались применительно к экрану Х-интерфейса. Эта новая информация (сведения от типе объекта и его идентификаторе) сохранялась несовместимым способом в поток данных протокола, что при обращении к экрану Х-интерфейса с номером 1 или большим приводило к ошибкам протокола Х-интерфейса в случаях, когда клиент и сервер расширения NV-CONTROL имели разные версии.

Эта проблема была решена в протоколе версии 1.10 расширения NV-CONTROL, сделав возможным обмен между старыми (версии 1.7 и раньше) клиентами и серверами NV-CONTROL 1.10. Дополнительно, библиотека клиента NV-CONTROL версии 1.10 была доработана для внесения ошибки сохранения информации объекта в протоколе при обмене с сервером NV-CONTROL версии 1.8 или 1.9. Это означает, что библиотека клиента NV-CONTROL версии 1.10 позволяет работать с серверами NV-CONTROL любой версии.

Рекомендуется заново связать приложения-клиенты NV-CONTROL с библиотекой клиента NV-CONTROL версии 1.10 или более поздней (libXNVCtrl.a, в пакете nvidia-settings-1.0.tar.gz). Версия библиотеки клиента может быть определена проверкой значений NV_CONTROL_MAJOR и NV_CONTROL_MINOR в присоединенном nv_control.h.

Единственный выпущенный драйвер NVIDIA для Linux, имеющий описанную проблему (т.е. содержащий расширение Х-интерфейса версии 1.8 или 1.9) — 1.0-8756.

I/O APIC (многопроцессорная система)

Если вы столкнулись с проблемой нестабильной работы системы Linux на многопроцессорном компьютере SMP, и наблюдаете предупреждения I/O APIC от ядра Linux, надежность работы системы может быть многократно улучшена выставлением опции ядра "noapic".

Local APIC (однопроцессорная система)

В некоторых системах, использование опции ядра "Local APIC Support on Uniprocessors" может негативно повлиять на стабильность системы и производительность. Если вы столкнулись с зависаниями однопроцессорного компьютера с Linux и используется эта опция ядра, попробуйте отключить поддержку local APIC.

Чипсеты NForce2 и AGPGART

Некоторые ранние версии драйвера agpgart с поддержкой чипсета nForce2 имеют ошибки, приводящие к зависанию системы. В качестве возможных решений можно использовать NVAGP или обновить ядро операционной системы. Известные версии с этой проблемой содержат все дистрибутивы Red Hat Enterprise Linux 3 (до обновления 7). Если используется драйвер agpgart с ошибкой с чипсетом nForce2, драйвер NVIDIA попытается обойти эти ошибки насколько это возможно, путем восстановления после ошибок шины AGP и отключением AGP вообще.

Для использования NVAGP обратитесь к Главе 12.

Размещение буферов DMA в 64-х битных системах

Графические процессоры NVIDIA имеют ограничения по адресуемой оперативной памяти. Это напрямую влияет на буферы прямого обмена с памятью (DMA), так как буферы DMA, размещенные в оперативной памяти, недоступной графическому процессору, не могут быть использованы (или будут обрезаны, что приведет к обращению к неправильному адресу памяти).


Все графические процессоры, не поддерживающие шину PCI Express и процессоры, поддерживающие PCI Express посредством моста, ограничены 32-битной адресацией оперативной памяти, что равнозначно 4 гигабайтам памяти. В компьютерах, оснащенных более чем 4 Гб оперативной памяти, размещение доступных буферов DMA может оказаться проблемой. Поддерживающие PCI Express графические процессоры могут адресовать более 32-бит оперативной памяти и не испытывают таких проблем.


Новые версии ядра предоставляют простой способ размещения памяти с гарантией помещения в адресуемом по 32-битной схеме пространстве. Версия ядра 2.6.15 предоставляет такую возможность с помощью интерфейса __GFP_DMA32. Более ранние версии ядра предоставляют программные функции I/O TLB на платформе Intel EM64T и поддержку IOMMU на платформе AMD64.


К сожалению, некоторые проблемы имеют место быть с обоими интерфейсами. Ранние реализации SWIOTLB в Linux использовали очень небольшой объем памяти для своего буфера (всего 4 Мб). Также, при опустошении буфера, некоторые реализации SWIOTLB вызвали ошибку ядра «kernel panic». Это также верно для некоторых реализаций интерфейса IOMMU.


Ошибки «kernel panic» и сопутствующих проблем со стабильностью на платформе Intel EM64T можно избежать увеличением объема буфера SWIOTLB с помощью опции ядра 'swiotlb'. Этот параметр содержит величину желаемого размеры, деленную пополам. NVIDIA рекомендует увеличение объема буфера SWIOTLB до 64MB; это можно сделать, задав значение 'swiotlb=16384' для ядра. Обратите внимание, что в ядре версий 2.6 объема буфера SWIOTLB уже установлен в 64 Мб.


Начиная с ядра Linux версии 2.6.9, исходный размер памяти для SWIOTLB стал 64 Мб, и улучшена обработка переполнения. Оба изменения заметно повысили стабильность работы система на платформе Intel EM64T. Если вы решили обновить версию ядра для использования этих преимуществ, NVIDIA рекомендует обновиться до версии 2.6.11 или более поздней ядра Linux. Смотрите предыдущую секцию для дополнительной информации.


На платформе AMD64, объем памяти для IOMMU может быть настроен в BIOS материнской платы или, если опции BIOS для регулирования IOMMU нет, то через опцию ядра 'iommu=memaper'. Эта опция ядра задает ядру Linux создание IOMMU размером перекрываемой оперативной памяти 32 в степени значения опции. Если значение IOMMU по-умолчанию меньше 64 Мб, ядро Linux автоматически заменяет его IOMMU размером 64 Мб.


Это ограничение может быть изменено с помощью опции модуля уровня ядра драйвера NVIDIA 'NVreg_RemapLimit'. Если размер IOMMU/SWIOTLB больше 64 Мб, ограничение может быть расширено в большую сторону для использования преимущества дополнительного пространства. В опции 'NVreg_RemapLimit' задается желаемый размер в байтах.


NVIDIA рекомендует оставлять 4 Мб доступными для системы при увеличении ограничения. Например, если внутреннее ограничение должно быть расширено для размера IOMMU/SWIOTLB в 128 Мб, рекомендуемое значение ограничения – 124 Мб. Это ограничение может быть задано опцией 'NVreg_RemapLimit=0x7c00000' модуля уровня ядра NVIDIA.


Обратитесь к секции 'Платформа X86-64 (AMD64/EM64T) и ядра операционной системы серии 2.6' в Главе 9 за дополнительной информацией.


Установка переменных среды OpenGL

Полноэкранное сглаживание

Сглаживание углов (antialiasing) — это технология размытия краев объектов в сцене для уменьшения эффекта "лестницы", нередко проявляющегося в изображении. Полноэкранное сглаживание (FSAA) поддерживается графическими процессорами GeForce и более новыми. С помощью соответствующей переменной среды можно задействовать полноэкранное сглаживание во всех OpenGL приложениях при использовании соответствующих графических процессоров.

Имеется несколько способов сглаживания, и вы можете выбирать между ними с помощью переменной среды __GL_FSAA_MODE. Обратите внимание, что увеличение числа выборки в полноэкранном сглаживании может снизить производительность.

Следующая таблица показывает возможные значения переменной __GL_FSAA_MODE и ее действие для различных графических процессоров NVIDIA.

__GL_FSAA_MODE GeForce, GeForce2, Quadro и Quadro2 Pro
0FSAA отключено
1FSAA отключено
2FSAA отключено
3Суперсэмплинг с выборкой 1.5 x 1.5 пикселя
4Суперсэмплинг с выборкой 2 x 2 пикселя
5FSAA отключено
6FSAA отключено
7FSAA отключено
__GL_FSAA_MODE GeForce4 MX, GeForce4 4xx Go, Quadro4 380, 550, 580 XGL и Quadro4 NVS
0FSAA отключено
1Двулинейный мультисэмплинг с выборкой 2х
2Quincunx мультисэмплинг с выборкой 2x
3FSAA отключено
4Суперсэмплинг с выборкой 2 x 2 пикселя
5FSAA отключено
6FSAA отключено
7FSAA отключено
__GL_FSAA_MODE GeForce3, Quadro DCC, GeForce4 Ti, GeForce4 4200 Go, и Quadro4 700,750,780,900,980 XGL
0FSAA отключено
1Двулинейный мультисэмплинг с выборкой 2х
2Quincunx мультисэмплинг с выборкой 2x
3FSAA отключено
4двухлинейный мультисэмплинг с выборкой 4x
5Gaussian мультисэмплинг с выборкой 4x
6двухлинейный мультисэмплинг с выборкой 2х с использованием суперсэмплинга с выборкой 4x
7FSAA отключено
__GL_FSAA_MODE GeForce 8xxx, G8xGL
0FSAA отключено
1Двулинейный мультисэмплинг с выборкой 2х
2FSAA отключено
3FSAA отключено
4Двулинейный мультисэмплинг с выборкой 4x
5FSAA отключено
6FSAA отключено
7Двулинейный мультисэмплинг с выборкой 4х с использованием суперсэмплинга с выборкой 4x
8двухлинейный мультисэмплинг с выборкой 8х с использованием суперсэмплинга с выборкой 4x
__GL_FSAA_MODE GeForce FX, GeForce 6xxx, GeForce 7xxx, Quadro FX
0FSAA отключено
1двухлинейный мультисэмплинг с выборкой 2х
2Quincunx мультисэмплинг с выборкой 2x
3FSAA отключено
4двухлинейный мультисэмплинг с выборкой 4x
5Gaussian мультисэмплинг с выборкой 4x
6двухлинейный мультисэмплинг с выборкой 2х с использованием суперсэмплинга с выборкой 4x
7двухлинейный мультисэмплинг с выборкой 4х с использованием суперсэмплинга с выборкой 4x
8двухлинейный мультисэмплинг с выборкой 4х с использованием суперсэмплинга с выборкой 2x (доступно только для графических процессоров GeForce FX и более поздних; недоступно для графических процессоров Quadro)

Анизотропная фильтрация текстур

Автоматическая анизотропная фильтрация текстур может быть включена с помощью переменной среды __GL_LOG_MAX_ANISO. Возможные значения:

__GL_LOG_MAX_ANISO Тип фильтрации
0Без анизотропной фильтрации
1Анизотропная фильтрация с выборкой 2x
2Анизотропная фильтрация с выборкой 4x
3Анизотропная фильтрация с выборкой 8x
4Анизотропная фильтрация с выборкой 16x

Фильтрация с выборкой 4x и выше доступна только для графических процессоров GeForce3 и более новых; с выборкой 16x — только для GeForce 6800 и более новых.

Вертикальная синхронизация

Присвоение переменной среды__GL_SYNC_TO_VBLANK ненулевого значения заставляет функцию glXSwapBuffers синхронизироваться с частотой вертикальной синхронизации монитора (осуществляя замену изображения только в период гашения).

При использовании переменной __GL_SYNC_TO_VBLANK вместе с TwinView, OpenGL может синхронизироваться только с одним из двух дисплеев; это может вызвать разрывы в изображении на том дисплее, с которым OpenGL не синхронизируется. С помощью переменной среды __GL_SYNC_DISPLAY_DEVICE вы можете указать дисплей, с которым OpenGL должен синхронизироваться. Для этого надо присвоить переменной значение — имя дисплея, например: "CRT-1". Посмотрите строку "Connected display device(s):" в файле журнала Х-интерфейса для просмотра списка подключенных дисплеев и их имен. Вы также можете найти полезную информацию в Главе 13 (Настройка Twinview) и в секции Настройка временных параметров синхронизации в Главе 19.

Управление сортировкой атрибутов OpenGL FBCONFIGS

Реализация API GLX от NVIDIA сортирует атрибуты FBConfigs в списке, возвращаемом по вызову glXChooseFBConfig() в соответствии с требованиями спецификации GLX. Для изменения данного поведения, присвойте переменной среды __GL_SORT_FBCONFIGS значение 0, тогда в возвращаемом по вызову списке атрибуты FBConfigs будут перечислены в порядке очередности их получения от сервера X-интерфейса. Чтобы посмотреть возвращаемый сервером Х-интерфейса порядок атрибутов FBConfigs, выполните команду:



nvidia-settings --glxinfo

Эта опция может быть полезна при разрешении проблем с приложениями, получающими неожиданный атрибут FBConfig.

Порядок осуществления возврата OpenGL драйвером

В ряде случаев драйверу OpenGL NVIDIA приходится ожидать внешних изменений перед продолжением работы. Чтобы избежать излишнего расхода времени центрального процессора в таких случаях, драйвер осуществляет операцию возврата, так что ядро операционной системы сможет обслуживать другие процессы, пока драйвер находится в режиме ожидания. Например, при ожидании освобождения места в очереди команд, если место не освободилось в течение определенного количества итераций, драйвер осуществляет возврат до возобновления цикла.

По умолчанию, драйвер делает системный вызов sched_yield(). Однако, такой подход может приводить к весьма продолжительному простою, если имеются другие процессы с тем же приоритетом, конкурирующие за время центрального процессора. Например, когда основанный на OpenGL диспетчер расширения composite перемещает окно и одновременно сервер Х-интерфейса пытается обновить его содержимое во время перемещения, для чего в равной степени требуется значительное количество работы центрального процессора.

Вы можете воспользоваться переменной среды __GL_YIELD для решения подобных проблем. С помощью этой переменной можно задать поведение драйвера при осуществлении операции возврата. Возможные значения:


__GL_YIELDПоведение
нет значенияПо-умолчанию, драйвер OpenGL делает вызов sched_yield()
"NOTHING"Драйвер OpenGL не осуществляет операции возврата
"USLEEP"Драйвер OpenGL делает вызов usleep(0)

Доступность атрибутов OpenGL FBCONFIGS

Реализация API GLX от NVIDIA скрывает атрибуты FBConfigs, относящиеся к 32-битным ARGB областям вывода изображения, если определена переменная среды XLIB_SKIP_ARGB_VISUALS. Это соответствует поведению библиотеки libX11, скрывающей эти области вывода изображения от вызовов XGetVisualInfo and XMatchVisualInfo. Данная переменная может быть полезна, если у приложений возникают проблемы из-за наличия этих атрибутов FBConfigs.

Настройка AGP

Имеется несколько вариантов настройки модуля уровня ядра драйвера NVIDIA для использования AGP в Linux. Вы можете выбирать между использованием встроенного драйвера AGP NVIDIA (nvAGP), или же драйвера AGP в составе ядра Linux (AGPGART). Это задается в опции "NvAGP" файла конфигурации Х-интерфейса:

OptionДействие
Option "NvAGP" "0"… поддержка AGP отключена
Option "NvAGP" "1"… использовать NVAGP, если возможно
Option "NvAGP" "2"… использовать AGPGART, если возможно
Option "NvAGP" "3"… сначала пытаться использовать AGPGART; если не удалось, то использовать NVAGP

По-умолчанию значение 3 (до версии 1.0-1251 включительно было 1).

Следует использовать драйвер AGP, работающий лучше с вашим чипсетом материнской платы. В случае проблем со стабильностью можно попробовать загрузиться без поддержки AGP и посмотреть, решит ли это проблему. Затем вы можете попробовать использовать другой драйвер AGP.

Вы можете проверить использование AGP в любое время с помощью интерфейса '/proc' filesystem (см. Главу 21).

Для использования драйвера Linux 2.4 AGPGART, он должен быть скомпилирован вместе с ядром, статически связан с ядром, или же собран в модуль ядра и загружен. Для использования драйвера Linux 2.6 AGPGART, и общий модуль AGPGART 'apggart.ko', и модуль поддержки конкретного чипсета AGP ('nvidia-agp.ko', 'intel-agp.ko', 'via-agp.ko') должны быть статически связаны с ядром или собраны в модули ядра и загружены.

Поддержка AGP NVIDIA не может быть использована, если AGPGART драйвер загружен в ядро. В системе Linux 2.4 рекомендуется скомпилировать AGPGART как модуль и убедиться, что он не загружен перед попыткой использовать драйвер AGP NVIDIA. В системе Linux 2.6, модуль 'agpgart.ko' всегда должен быть загружен, так как модуль уровня ядра драйвера NVIDIA использует его для определения наличия модуля поддержки конкретного чипсета. Если планируется использовать драйвер AGP NVIDIA в Linux 2.6, рекомендуется, чтобы модули поддержки конкретного чипсета AGPGART были собраны как модули ядра и не загружались. Обратите внимание, что смена AGP драйвера требует перезагрузки перед началом действия сделанных изменений.

Если используется новое ядро Linux версии 2.6, в которое интегрирован драйвер Linux AGPGART (встречается в некоторых дистрибутивах), вы можете задать опцию ядра

agp=off


(через LILO или GRUB, например) для отключения поддержки AGPGART. Подобно Linux 2.6.11, большинство драйверов AGPGART должны поддерживать эту опцию.

Следующие чипсеты материнских плат поддерживаются AGP драйвером NVIDIA; для всех остальных рекомендуется использовать AGPGART.

Поддерживаемые чипсеты с AGP


Intel 440LX

Intel 440BX

Intel 440GX

Intel 815 ("Solano")

Intel 820 ("Camino")

Intel 830M

Intel 840 ("Carmel")

Intel 845 ("Brookdale")

Intel 845G

Intel 850 ("Tehama")

Intel 855 ("Odem")

Intel 860 ("Colusa")

Intel 865G ("Springdale")

Intel 875P ("Canterwood")

Intel E7205 ("Granite Bay")

Intel E7505 ("Placer")

AMD 751 ("Irongate")

AMD 761 ("IGD4")

AMD 762 ("IGD4 MP")

AMD 8151 ("Lokar")

VIA 8371

VIA 82C694X

VIA KT133

VIA KT266

VIA KT400

VIA P4M266

VIA P4M266A

VIA P4X400

VIA K8T800

VIA K8N800

VIA PT880

VIA KT880

RCC CNB20LE

RCC 6585HE

Micron SAMDDR ("Samurai")

Micron SCIDDR ("Scimitar")

NVIDIA nForce

NVIDIA nForce2

NVIDIA nForce3

ALi 1621

ALi 1631

ALi 1647

ALi 1651

ALi 1671

SiS 630

SiS 633

SiS 635

SiS 645

SiS 646

SiS 648

SiS 648FX

SiS 650

SiS 651

SiS 655

SiS 655FX

SiS 661

SiS 730

SiS 733

SiS 735

SiS 745

SiS 755

ATI RS200M


Если вы столкнулись с трудностями, связанными со стабильностью AGP, обратите внимание на следующие особенности:

Дополнительная информация о AGP

Поддержка процессорами Athlon страниц расширенного размера

Некоторые версии ядра Linux имеют ошибку в работе с кешем, проявляющуюся при использовании функции расширенного спекулятивного кеширования процессоров семейства AMD Athlon (AMD Athlon XP, AMD Athlon 4, AMD Athlon MP, и Models 6, а также соответствующих AMD Duron). Эта ошибка обычно проявляется при тяжелой нагрузке 3D-графикой видеокарты с шиной AGP.

Дистрибутивы Linux, основанные на ядре версий 2.4.19 и более поздних, должны включать исправление этой ошибки, но более ранние версии требуют вмешательства пользователя для отключения небольшого использования расширенного спекулятивного кеширования (обычно выполняемой посредством патча ядра) и включением специальной опции загрузки системы для работы исправления.

Драйвер NVIDIA автоматически отключает использование расширенного спекулятивного кеширования для отмеченных проблемой процессоров AMD без необходимости патча ядра; он также может использоваться, если ядро уже содержит патч. Дополнительно, для старых версий ядра пользователь должен использовать опцию загрузки для отключения использования страниц размером 4 Мб. Это можно сделать из консоли загрузчика вводом:


mem=nopentium

или добавлением следующей строки в файл /etc/lilo.conf:

append = "mem=nopentium"

Скорость работы AGP порта

Вы можете попробовать снизить скорость работы AGP порта если наблюдаются зависания при текущем значении. Для этого распакуйте файл '.run':

# sh NVIDIA-Linux-x86-1.0-ХХХХ-pkg1.run --extract-only

# cd NVIDIA-Linux-x86-1.0-ХХХХ-pkg1/usr/src/nv/

Затем отредактируйте os-registry.c, внеся следующие изменения:

- static int NVreg_ReqAGPRate = 15;

+ static int NVreg_ReqAGPRate = 4; /* force AGP Rate to 4x */

или

+ static int NVreg_ReqAGPRate = 2; /* force AGP Rate to 2x */

или

+ static int NVreg_ReqAGPRate = 1; /* force AGP Rate to 1x */

И разрешив параметр "ReqAGPRate":

- { NULL, "ReqAGPRate", &NVreg_ReqAGPRate, 0 },

+ { NULL, "ReqAGPRate", &NVreg_ReqAGPRate, 1 },

После этого перекомпилируйте и загрузите новый модуль уровня ядра. Для этого запустите утилиту 'nvidia-installer' с ключом запуска -n:

# cd ../../..; ./nvidia-installer -n

Опция усиления сигнала AGP в BIOS материнских плат, основанных на Via

Многие материнские платы, основанные на чипсетах Via, позволяют управлять усилением сигнала по шине AGP в BIOS. Изменение этой опции имеет значительное влияние на стабильность работы системы, значения из диапазона от 0xEA до 0xEE лучше всего подходят для оборудования NVIDIA. Значения от полубайта до 0xF обычно приводят к проблемам.

Если вы решились экспериментировать с этой настройкой, вы должны осознавать, что делаете это на свой страх и риск, и что неправильное значение может ввести систему в незагружаемое состояние до изменения в рабочее значение (с использованием видеокарты для шины PCI или сбросом настроек BIOS в исходное состояние).

Версия BIOS материнской платы

Убедитесь, что используется последняя версия BIOS от производителя материнской платы.

На чипсетах ALi1541 и ALi1647, драйвер NVIDIA отключает поддержку AGP в качестве способа решения проблем с целостностью сигнала и параметрами временной синхронизации. Вы можете включить принудительное использование AGP в системах с этими чипсетами изменением опции NVreg_EnableALiAGP в 1. Учтите, что это может сделать работу компьютера нестабильной.

Ранние версии BIOS материнской платы ASUS A7V8X-X, основанной на чипсете KT400, неправильно конфигурируют чипсет при использовании видеокарты стандарта AGP 2.x; если Х-интерфейс аварийно завершается в системе, построенной на ASUS KT400 как с драйвером Linux AGPGART, так и с NvAGP, и установленная видеокарта не является AGP 8x устройством, убедитесь, что используется последняя версия BIOS материнской платы.


Настройка TwinView

Технология TwinView поддерживается только графическими процессорами NVIDIA с возможностью использования двух дисплеев одновременно, такими как GeForce2 MX, GeForce2 Go, Quadro2 MXR, Quadro2 Go, и всеми процессорами серий GeForce4, Quadro4, GeForce FX, или Quadro FX GPUs. Обратитесь к производителю видеокарты за подтверждением, что технология TwinView ею поддерживается.

TwinView — это способ работы, при котором два дисплея (цифровых, электронно-лучевых или телевизора) могут отображать содержимое одного экрана Х-интерфейса в любой произвольной конфигурации. Этот метод использования мультимониторности имеет несколько преимуществ над другими технологиями, такими как Xinerama:

_Используется один экран Х-интерфейса. Драйвер NVIDIA прячет всю информацию мультимониторности от сервера Х-интерфейса до тех пор, пока Х-интерфейсу достаточно одного экрана.

_Оба дисплея используют единый кадровый буфер. Таким образом, вся функциональность, доступная для одного дисплея (например, аппаратное ускорение OpenGL), доступна в режиме TwinView.

_Не создается дополнительная нагрузка для эмуляции единого рабочего стола.

Если вы интересуетесь использование выводом отдельного экрана Х-интерфейса на каждом дисплее, обратитесь к Главе 15.

Настройки TWINVIEW для Х-интерфейса

Для использования TwinView вам надо включить следующие опции в секции Device файла конфигурации Х-интерфейса:

Option "TwinView"

Также можно задать, хотя это и необязательно, опции:

Option "MetaModes" "<список метарежимов>"
Option "SecondMonitorHorizSync" "<диапазон частот горизонтальной синхронизации>"
Option "SecondMonitorVertRefresh" "<диапазон частот вертикальной синхронизации>"
Option "HorizSync" "<диапазон частот горизонтальной синхронизации>"
Option "VertRefresh" "<диапазон частот вертикальной синхронизации>"
Option "TwinViewOrientation" "<взаимозависимости выходов 1 и 0>"
Option "ConnectedMonitor" "<список подключенных дисплеев>"

Смотрите детальные описания каждой опции ниже.

Как вариант, можно включить TwinView выполнив:

# nvidia-xconfig --twinview

и перезапустив сервер Х-интерфейса. Или можно настроить TwinView в любое время на закладке "Display Configuration" утилиты nvidia-settings.

Детальные описания настроек

TwinView

Эта опция требуется для использования TwinView; без нее все остальные настройки, связанные с TwinView, не действуют.

SecondMonitorHorizSync
SecondMonitorVertRefresh

Задайте характеристики второго дисплея с помощью этих опций. Значения и их действие совпадают с правилами опций "HorizSync" и "VertRefresh" в секции Monitor. В соответствии с руководством по XF86Config: возможности могут быть заданы в форме списка возможных значений, разделенных запятыми, и/или диапазонами значений в форме двух значений, разделенных двоеточием. Параметр HorizSync исчисляется в килогерцах, VertRefresh — в герцах.

Обычно в этих опциях нет нужды, драйвер Х-интерфейса NVIDIA узнает допустимые диапазоны из информации EDID дисплея (обратитесь к Главе 30 за описанием опции "UseEdidFreqs"). Опции SecondMonitor имеют приоритет над информацией, полученной от EDID.

HorizSync
VertRefresh

Часто не ясно, какой дисплей "первый", а какой "второй". С этой целью можно использовать эти опции вместо настроек SecondMonitor. В этих опциях можно задать диапазоны в форме граничных значения частоты, разделенные тире, каждый дополнительно может предваряться именем дисплея. Например:

Option"HorizSync""CRT-0:50-110;DFP-0:40-70"
Option"VertRefresh""CRT-0:60-120;DFP-0:60"

Обратитесь к Главе 31 за информацией об именовании дисплеев.
Обычно в этих опциях нет нужды, драйвер Х-интерфейса NVIDIA узнает допустимые диапазоны из информации EDID дисплея (обратитесь к Главе 30 за описанием опции "UseEdidFreqs"). Опции "HorizSync" и "VertRefresh" имеют приоритет над информацией, полученной от EDID, или частотами, заданными в опциях "SecondMonitorHorizSync" и "SecondMonitorVertRefresh".

MetaModes

Метарежимы являются упаковкой, хранящей информацию о том, какой видеорежим должен быть установлен на дисплее в каждый момент времени. Даже если имеется всего один дисплей, драйвер Х-интерфейса NVIDIA использует метарежим для хранения информации о видеорежимах каждого дисплея, так что можно включать TwinView на ходу. Список записей MetaModes определяет возможные комбинации видеорежимов и последовательность их использования. Когда драйвер NVIDIA сообщает Х-интерфейсу список доступных видеорежимов, в действительности минимальный набор метарежимов сообщается Х-интерфейсу, тогда как информация о режиме каждого дисплея остается внутри драйвера NVIDIA. В опции MetaMode режимы внутри метарежима разделяются запятыми, а несколько метарежимов разделяются точкой с запятой. Например:

"<mode name 0>, <mode name 1>; <mode name 2>, <mode name 3>"

Где <mode name 0> — название видеорежима, используемого для дисплея 0, а, соответственно, для дисплея 1. Переключение метарежима приводит к использованию видеорежима на дисплее 0 и для дисплея 1. Вот пример метарежима:

Option "MetaModes" "1280x1024,1280x1024; 1024x768,1024x768"

Если вы хотите, чтобы какой-то дисплей не был активен в конкретном метарежиме, вы можете использовать в качестве режима "NULL", или просто не вводить имя:

"1600x1200, NULL; NULL, 1024x768"

или

"1600x1200; , 1024x768"

Дополнительно, перечисление режимов может идти вместе со значениями смещения для определения места дисплея в виртуальном экране, например:

"1600x1200 +0+0, 1024x768 +1600+0; ..."

Описание смещений следует правилам использования ключа запуска Х-интерфейса "-geometry", т.е. положительные и отрицательные значения смещений вместе могут использоваться, тогда как только отрицательные можно использовать лишь если размер виртуального экрана явно задан в файле конфигурации Х-интерфейса.

Если не задано смещений для метарежима, значения смещений вычисляются по значению опции TwinViewOrientation (см. ниже). Обратите внимание, что если смещения заданы в любом видеорежиме в одном метарежиме, эти смещения будут использованы во всех видеорежимах одного метарежима, если только не заданы значения смещений +0+0.

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

В записи MetaMode дополнительно может быть задана область панорамирования, например:

"1024x768 @1600x1200, 800x600 @1600x1200"

Область панорамирования — это зона, в которой изображение виртуального экрана прокручивается в дисплее, следуя за движением мыши. Панорамирование используется на двух уровнях TwinView: во-первых, изображение прокручивается в одном дисплее в пределах области панорамирования до тех пор, пока находится внутри прямоугольника метарежима. Как только мышь пересекает границу прямоугольника метарежима, изображение панорамируется во всем метарежиме (во всех дисплеях вместе), следуя за мышью внутри виртуального экрана. Обратите внимание, что области панорамирования отдельных дисплеев по-умолчанию привязаны к положению дисплеев в виртуальном экране, так что изначально области вывода изображения на дисплей взаимно зафиксированы, и используется только второй тип панорамирования.

Лучшее применение панорамирования — устранение "мертвых зон" (областей виртуального экрана, недоступных вследствие использования дисплеев с разными разрешениями). Например:

"1600x1200, 1024x768"

создаст недоступную область под дисплеем с разрешением 1024x768. Задав область панорамирования для второго дисплея:

"1600x1200, 1024x768 @1024x1200"

Можно получить доступ к мертвой зоне, прокручивая изображение в дисплее размером 1024x768 вверх и вниз в области панорамирования 1024x1200.

Смещения могут быть использованы в сочетании с областями панорамирования для задания позиции областей панорамирования в пространстве виртуального экрана (учтите, что смещение касается только области панорамирования, и затронет только область вывода изображения на дисплей, содержащуюся внутри области панорамирования). Например, следующая строка описывает два видеорежима, оба с областью панорамирования шириной 1900 пикселей, и второй дисплей расположен под первым:

"1600x1200 @1900x1200 +0+0, 1024x768 @1900x768 +0+1200"

Поскольку часто неочевидно, какой видеорежим из метарежима будет использован на каждом дисплее, описание режима в метарежиме может предваряться названием дисплея. Например:

"CRT-0: 1600x1200, DFP-0: 1024x768"

Если значение опции MetaMode не задано, драйвер Х-интерфейса использует видеорежимы, перечисленные в соответствующих секциях "Display", пытаясь подобрать совпадающие режимы для каждого дисплея.

TwinViewOrientation

Эта опция управляет положением второго дисплея относительно первого в виртуальном экране Х-интерфейса, когда смещения не заданы в опции MetaModes. Возможные значения:

"RightOf"(справа, по умолчанию)
"LeftOf"(слева)
"Above"(выше)
"Below"(ниже)
"Clone"(клон)

Если задано значение "Clone", оба дисплея будут помещены со смещением 0,0.

Поскольку часто неочевидно, какой дисплей "первый", а какой "второй", опция TwinViewOrientation может привести к неожиданному результату. Вы можете дополнительно использовать имена устройств в TwinViewOrientation для описания, какой дисплей относительно какого как расположен. Например:

"CRT-0 LeftOf DFP-0"

ConnectedMonitor

С помощью этой опции вы можете изменить информацию о подключенных устройствах, определенных модулем уровня ядра драйвера NVIDIA. Эта возможность может пригодиться, если некоторые дисплеи не поддерживают протокол Display Data Channel (DDC). Правильными значениями является список имен дисплеев, разделенных запятыми, например:

"CRT-0, CRT-1"

"CRT"

"CRT-1, DFP-0"

Предупреждение: эта опция имеет приоритет над результатами определения модулем уровня ядра подключенных к видеокарте дисплеев, и нужна крайне редко.

Действительно понадобиться ее использование может, если один из ваших дисплеев не обнаружен, как по причине отсутствия информации DDC от него, так и в случае, если используется переключатель KVM (Клавиатура-Видео-Мышь). Во всех остальных случаях лучше не задавать эту опцию.

Так же, как и в остальных опциях конфигурации Х-интерфейса, пробелы игнорируются и все значения нечувствительны к регистру.

DYNAMIC TWINVIEW

Используя расширение Х-интерфейса NV-CONTROL можно динамически изменять конфигурация дисплеев, используемых экраном Х-интерфейса, список видеорежимов, доступных для каждого дисплея, и метарежимы для каждого экрана Х-интерфейса. Закладка "Display Configuration" утилиты nvidia-settings использует эти функции для изменения списка метарежимов MetaMode, а затем расширение XRandR для переключения между метарежимами. Таким образом можно на ходу менять конфигурацию TwinView.

Детально работа данной функции описана в примере nv-control-dpy.c клиента NV-CONTROL в пакете исходных кодов утилиты nvidia-settings.

Поскольку теперь драйвер Х-интерфейса NVIDIA может включать и выключать режим TwinView без перезагрузки, метарежимы всегда используются только внутри драйвера, вне зависимости от числа дисплеев, используемых экраном Х-интерфейса и от значения опции TwinView файла конфигурации X-интерфейса.

Одно из последствий данной реализации — необходимость уникальной идентификации каждого метарежима расширением Х-интерфейса XRandR. К сожалению, два метарежима в одной записи MetaModes для XRandR выглядят одинаково. Например, два метарежима с разной ориентацией изображения:

"CRT:1600x1200+0+0,DFP:1600x1200+1600+0"
"CRT:1600x1200+1600+0,DFP:1600x1200+0+0"

будут выглядеть одинаковыми для расширений XRandR или XF86VidMode X-интерфейса, так как имеют одинаковое разрешение (3200x1200), и утилита nvidia-settings не сможет использовать XRandR для переключения между этими метарежимами. В качестве решения этой проблемы драйвер Х-интерфейса NVIDIA искажает сообщаемые значения частоты обновления изображения из записей MetaMode, используя частоту обновления метарежима как уникальный идентификатор.

Расширение XRandR в настоящее время находится на стадии пересмотра в организации X.Org, так что данное использование значения частоты обновления может быть удалено в будущем. Также его можно отключить, присвоив опции "DynamicTwinView" конфигурации X-интерфейса значение FALSE, что отключит поддержку расширения NV-CONTROL для управления метарежимами, но заставит расширения XRandR и XF86VidMode сообщать истинную частоту обновления изображения.

Часто задаваемые вопросы о TWINVIEW

Вопрос: Ничего не отображается на втором мониторе, что не так?

Ответ: Мониторы, не поддерживающие протокол Display Data Channel (DDC) (включая многие старые мониторы), не определяются как подключенные к видеокарте. Вам надо специально задать драйверу Х-интерфейса NVIDIA подсоединенные к видеокарте устройства в опции "ConnectedMonitor", например:

Option "ConnectedMonitor" "CRT, CRT"

Вопрос: Диспетчеры окон могут правильно размещать окна, избегая расположения сразу на обоих дисплеях, или помещения в недоступные участки виртуального рабочего стола?

Ответ: Да. Драйвер Х-интерфейса NVIDIA поддерживает расширение Xinerama, которое клиенты Х-интерфейса (такие, как диспетчеры окон) могут использовать для определения текущей конфигурации TwinView. Учтите, что протокол Xinerama не предусматривает оповещения клиентов об изменениях конфигурации, так что если вы переключились в другой метарежим, диспетчер окон по-прежнему будет считать, что используется предыдущая конфигурация. Используя расширение Xinerama совместно с расширение XF86VidMode для сообщения о событиях изменения режима, диспетчер окон может отслеживать конфигурацию TwinView в любой момент времени.

К сожалению, данные, сообщаемые по вызову XineramaQueryScreens() могут сбить настройки некоторых диспетчеров окон. В качестве обходного пути в случае таких ошибочно работающих диспетчеров окон, вы можете отключить обмен информацией с TwinView о режиме экрана с помощью опции "NoTwinViewXineramaInfo" конфигурации X-интерфейса (обратитесь к Главе 30 за дополнительной информацией).

Порядок следования дисплеев в информации о TwinView для расширения Xinerama может быть определен в опции TwinViewXineramaInfoOrder конфигурации X-интерфейса.

Обратите внимание, что драйвер NVIDIA не может поддерживать расширение Xinerama, если используется встроенная поддержка Xinerama сервера Х-интерфейса. Явное включение Xinerama в файле конфигурации Х-интерфейса или в ключе запуска сервера Х-интерфейса воспрепятствует установке поддержки расширения Xinerama от NVIDIA, так что проверьте, что файл журнала Х-интерфейса не содержит строку:

(++) Xinerama: enabled

если вы хотите использовать поддержку Xinerama драйвера NVIDIA в режиме TwinView.

Другое решение заключается в использовании областей панорамирования для устранения недоступных частей виртуального экрана (см. описание опции MetaMode выше).

Третье решение заключается в использовании двух отдельных экранов Х-интерфейса вместо TwinView. Обратитесь к Главе 15.


Вопрос: Почему я не могу получить разрешение 1600x1200 на втором дисплее при использовании видеокарты GeForce2 MX?

Ответ: Поскольку поддержка второго дисплея GeForce2 MX была разработана для поддержки цифровых плоских мониторов, максимальная пиксельная частота для второго дисплея ограничена 150 МГц. Это автоматически ограничивает разрешение для второго дисплея 1280x1024 (за описанием, как пиксельная частота ограничивает возможные видеорежимы смотрите документ XFree86 Video Timings HOWTO). Этого ограничения нет в видеопроцессорах GeForce4 или GeForce FX — максимальная пиксельная частота одинакова для обоих выходов.


Вопрос: Работает ли видеоналожение сразу для двух дисплеев?

Ответ: Аппаратные видеоналожения работают только для первого дисплея. В настоящее время для отображения видео в режимах TwinView используется блиттинг (bit block transfer).


Вопрос: Как определяется размер виртуального экрана в TwinView?

Ответ: После проверки доступности всех запрошенных видеорежимов, и вычислении смещений для каждой области вывода метарежимов, драйвер NVIDIA вычисляет прямоугольники областей панорамирования для каждого метарежима. Затем находится прямоугольник максимальной высоты и ширины.

Обратите внимание, что побочным эффектом этого механизма является то, что максимальные высота и ширина виртуального экрана могут быть взяты из разных метарежимов. Присвоение опции MetaMode значения в виде строки:

"1600x1200,NULL; 1024x768+0+0, 1024x768+0+768"

приведет к установке размера виртуального экрана 1600 x 1536.


Вопрос: Могу ли я играть в игры в полноэкранном режиме, развернутые на оба дисплея?

Ответ: Да. Хотя параметры конфигурации и различаются от игры к игре, основная идея метарежима заключается в предоставлении для Х-интерфейса режима с разрешением, объединяющим прямоугольники видимых областей для метарежима. Например, следующие строки:

Option "MetaModes" "1024x768,1024x768; 800x600,800x600"

Option "TwinViewOrientation" "RightOf"

создадут два видеорежима: один с разрешение 2048x768, и другой с разрешением 1600x600. Такие игры как Quake 3 Arena используют расширение VidMode для определения доступных разрешений. Для настройки Quake 3 Arena на использование вышеприведенного метарежима, добавьте следующие строки в файл q3config.cfg:

seta r_customaspect"1"
seta r_customheight"600"
seta r_customwidth"1600"
seta r_fullscreen"1"
seta r_mode"-1"

Обратите внимание, что в вышеприведенной конфигурации недоступен видеорежим с разрешением 800x600 (помните, что метарежим "800x600, 800x600" имеет результирующее разрешение 1600x600), так что при настройке Quake 3 Arena на использование разрешения 800x600, изображение будет расположено в верхнем левом углу экрана, а вся остальная часть будет залита серым цветом. Для одновременной доступности режимов для одного дисплея соответствующая строка опции MetaMode должна выглядеть наподобие:

"800x600,800x600; 1024x768,NULL; 800x600,NULL; 640x480,NULL"

Более точная информация о настройках для отдельных игр лежит за пределами области применения данного документа, однако, вышеприведенные примеры совместно с информацией ряда источников в сети Интернет должны быть достаточными для выбора вами правильного направления в настройке.

Настройка поддержки GLX в Xinerama

Драйвер поддерживает GLX при включенном расширении Xinerama на одинаковых графических процессорах. Расширение Xinerama собирает множество физических экранов Х-интерфейса (возможно расположенных на нескольких графических процессорах), и помещает их в один логический экран Х-интерфейса. Это позволяет перетаскивать окна между графическими процессорами и растягивать на несколько процессоров. Драйвер NVIDIA поддерживает аппаратное ускорение OpenGL на всех графических процессорах NVIDIA при включении Xinerama.

Чтобы настроить Xinerama, создайте несколько экранов Х-интерфейса (обратитесь к страницам руководства по XF86Config(5x) или xorg.conf(5x) за дополнительной информацией). Расширение Xinerama может быть задействовано добавлением строки

Option "Xinerama" "True"

в секцию "ServerFlags" файла конфигурации X-интерфейса.

Требования:

_Рекомендуется использовать идентичные графические процессоры. Некоторые комбинации не идентичных, но схожих графических процессоров также поддерживаются.

Если графический процессор несовместим с прочими в рабочем столе Xinerama, то OpenGL изображение не будет появляться на экранах, размещенных на этом процессоре. Изображение тем не менее будет появляться на экранах, размещенных на других графических процессорах. В этой ситуации файл журнала Х-интерфейса будет включать сообщения вида:

(WW) NVIDIA(2): The GPU driving screen 2 is incompatible with the rest of

(WW) NVIDIA(2): the GPUs composing the desktop. OpenGL rendering will

(WW) NVIDIA(2): be disabled on screen 2.

_Драйвер Х-интерфейса NVIDIA должен использоваться для всех экранов Х-интерфейса сервера.

_Только выборка из возможностей, поддерживаемая всеми графическими процессорами, будет поддерживаться.

Максимальное разрешение видимой области изображения OpenGL зависит от используемого оборудования, и указано в нижеприведенной таблице. Если окно OpenGL размером превышает размеры максимальной видимой области изображения, области за пределами видимости будут пустыми. Пределы видимой области изображения OpenGL для Xinerama.

Графические процессоры GeForce до серии 8:

4096 x 4096 пикселей

GeForce 8 и более новые:

8192 x 8192 пикселей

Quadro:

По размеру рабочего стола

_Опции настройки Х-интерфейса, затрагивающие процедуры GLX (стерео, наложения) должны быть установлены одинаково для всех экранов сервера Х-интерфейса.

Известные проблемы:

_Версии XFree86 до 4.5 и X.org до 6.8.0 содержат неполные интерфейсы для правильной поддержки наложений с расширением Xinerama. На ранних версиях сервера одновременно использование наложений и Xinerama приводит к порче изображения. Если вы используете расширение Xinerama вместе с наложениями, рекомендуем обновить Х-интерфейс до версий XFree86 4.5 или X.org 6.8.0, или более новых.

Организация нескольких экранов Х-интерфейса на одной видеокарте

Графические процессоры с поддержкой TwinView (см. Глава 13) также могут быть настроены на использование каждого дисплея как отдельного экрана Х-интерфейса.

Хотя такой способ использования мультимониторности несколько проигрывает по сравнению с TwinView (например, окна не могут перетаскиваться между экранами, приложения OpenGL с аппаратным ускорением не могут быть развернуты на оба экрана), имеются и некоторые преимущества над TwinView:

_Если на каждый дисплей выводится свой экран Х-интерфейса, то характеристики изображения, могущие быть различными для экранов Х-интерфейса, могут различаться и для дисплеев (глубина цвета, размер корневого окна и т.д.).

_Возможности оборудования, могущие быть использованными только на одном дисплее в один момент времени (видеоналожения, аппаратные RGB наложения), и недоступные в целом в режиме TwinView, могут быть использованы на первом экране Х-интерфейса, когда каждый дисплей имеет свой экран Х-интерфейса.

_TwinView является недавно появившейся технологией, исторически в Х-интерфейсе использовалось по отдельному экрану для каждого дисплея.

Для создания двух экранов Х-интерфейса на одной видеокарте, необходимо выполнить следующую последовательность действий:

Во-первых, создать две отдельных секции Device, каждая перечисляющая идентификатор шины BusID используемой совместно видеокарты, и драйвер как "nvidia", и настроить в каждой секции свой экран:

Section "Device"
Identifier "nvidia0"
Driver "nvidia"
# введите идентификатор BusID, описывающий размещение видеокарты
BusID "PCI:2:0:0"
Screen 0
EndSection
 
Section "Device"
Identifier "nvidia1"
Driver "nvidia"
# введите идентификатор BusID, описывающий размещение видеокарты
BusId "PCI:2:0:0"
Screen 1
EndSection

Затем, создайте две секции Screen, используя в каждой идентификатор одной из секций Device:

Section "Screen"
Identifier "Screen0"
Device "nvidia0"
Monitor "Monitor0"
DefaultDepth 24
Subsection "Display"
Depth 24
Modes "1600x1200" "1024x768" "800x600" "640x480"
EndSubsection
EndSection
 
Section "Screen"
Identifier "Screen1"
Device "nvidia1"
Monitor "Monitor1"
DefaultDepth 24
Subsection "Display"
Depth 24
Modes "1600x1200" "1024x768" "800x600" "640x480"
EndSubsection
EndSection

(Учтите, что вам понадобится также создать вторую секцию Monitor).

В конце, измените секцию ServerLayout для использования и взаимного позиционирования обоих секций Screen:

Section "ServerLayout"
...
Screen 0 "Screen0"
Screen 1 "Screen1" leftOf "Screen0"
...
EndSection

За дополнительной информацией обратитесь к страницам руководства XF86Config(5x) или xorg.conf(5x).

Настройка TV-Out

Видеокарты, основанные на графических процессорах NVIDIA и оснащенные ТВ-выходом, могут использовать телевизор как дисплей наравне с прочими, как то электронно-лучевыми или цифровыми плоскими мониторами. Телевизор может использоваться как сам по себе, так и совместно с другими дисплеями в режиме TwinView или с несколькими экранами Х-интерфейса. Если телевизор — единственное подключенное к видеокарте устройство, он будет использоваться как основной дисплей при загрузке системы (т.е., консоль будет появляться на телевизоре точно так же, как и на электронно-лучевом мониторе). Драйвер Х-интерфейса NVIDIA создает список видеорежимов для телевизора с использованием всех разрешений, которые поддерживаются в выбранном стандарте ТВ-сигнала и установленным контроллером ТВ-выхода видеокарты. Видеорежимы получают названия на основе их разрешения, например "800x600".

Поскольку видеорежимы телевизора зависят лишь от стандарта ТВ-сигнала и возможностей контроллера ТВ-выхода, они не проходят обычную процедуру проверки доступности видеорежима. Опции конфигурации X-интерфейса HorizSync и VertRefresh не используются для проверки видеорежимов телевизора. В дополнение драйвер NVIDIA содержит готовый список видеорежимов, могущих быть использованными при любом стандарте ТВ-сигнала и любом контроллере ТВ-выхода. Так что заданные вручную в файле конфигурации X-интерфейса видеорежимы игнорируются для телевизора.

Для настройки использования телевизора Х-интерфейсом имеется несколько опций конфигурации:

_Опция Modes в секции Screen файла конфигурации Х-интерфейса может быть использована для установки любого видеорежима из списка, созданного драйвером Х-интерфейса для текущего сочетания стандарта ТВ-сигнала и контроллера ТВ-выхода. Например, "640x480" и "800x600".

Если они не подошли, воспользуйтесь "nvidia-auto-select".

_Опция "TVStandard" должны быть добавлена в секцию Screen; допустимыми значениями являются:

Стандарт
ТВ-сигнала
Описание
PAL-B Используется в Бельгии, Дании, Финляндии, Германии, Гвинее, Гонконге, Индии, Индонезии, Италии, Малайзии, Голландии, Норвегии, Португалии, Сингапуре, Испании, Швеции и Швейцарии.
PAL-D Используется в Китае и Северной Корее
PAL-G Используется в Дании, Финляндии, Германии, Италии, Малайзии, Голландии, Норвегии, Португалии, Испании, Швеции и Швейцарии
PAL-H Используется в Бельгии
PAL-I Используется в Гонконге и Великобритании
PAL-K1 Используется в Гвинее
PAL-M Используется в Бразилии
PAL-N Используется во Франции, Парагвае и Уругвае
PAL-NC Используется в Аргентине
NTSC-J Используется в Японии
NTSC-M Используется в Канаде, Чили, Колумбии, Коста-Рике, Эквадоре, Гаити, Гондурасе, Мексике, Панаме, Пуэрто-Рико, Южной Корее, Тайване, США и Венесуэле
HD480i Чересстрочный режим с 480 строками
HD480p Построчный режим с 480 строками
HD720p Построчный режим с 720 строками
HD1080i Чересстрочный режим с 1080 строками
HD1080p Построчный режим с 1080 строками
HD576i Чересстрочный режим с 576 строками
HD576p Построчный режим с 576 строками

Строка в файле конфигурации Х-интерфейса должна выглядеть примерно как:

Option "TVStandard" "NTSC-M"

Если вы не указали стандарт ТВ-сигнала или указали неправильное значение, будет использоваться значение по умолчанию "NTSC-M". Если вашей страны нет в вышеприведенном списке, выберите ближайшую к вашей страну.

_Опция "UseDisplayDevice" может быть использована в случае, когда подключено несколько дисплеев и вы хотите использовать именно телевизор, а не подключенные мониторы. Например:

Option "UseDisplayDevice" "TV"

Рекомендуется использовать опцию "UseDisplayDevice", а не опцию "ConnectedMonitor".

_Опция "TVOutFormat" может быть использована для указания формата выводимого сигнала. Когда опция не используется, драйвер автоматически определяет формат сигнала. К сожалению, это не всегда дает правильный результат. Формат сигнала может быть задан принудительно в данной опции, возможные значения:

Значение Описание Поддерживаемые стандарты
ТВ-сигнала
AUTOSELECT Драйвер определяет формат автоматически (значение по умолчанию) PAL, NTSC, HD
COMPOSITE Композитный сигнал PAL, NTSC
SVIDEO Сигнал S-Video PAL, NTSC
COMPONENT Компонентный сигнал также известен как YPrPp HD
SCART Сигнал Scart, также известен как Peritel PAL, NTSC

Строка в файле конфигурации Х-интерфейса должна выглядеть примерно как:

Option "TVOutFormat" "SVIDEO"

_Опция "TVOverScan" может использоваться для задействования пересканирования (масштабирования), если поддерживается контроллером ТВ-выхода. Допустимые значения — десятичные дроби в диапазоне от 1.0 (максимально возможное пересканирование, изображение максимального размера) до 0.0 (отключение пересканирования, изображение минимального размера). По-умолчанию пересканирование отключено (0.0).

Драйвер Х-интерфейса NVIDIA может не восстанавливать изображение консоли с версиями Х-интерфейса XFree86 меньше 4.3, когда консоль выведена на телевизор. Это вызвано несовместимостью между модулями XFree86 обработки прерывания int10. Если вы используете телевизор для отображения консоли, рекомендуется обновить версию Х-интерфейса до XFree86 4.3 или более новой.

Использование XRandR-расширения Х-интерфейса

Х-интерфейс X.org версии X11R6.8.1 поддерживает компонент, отвечающий за вращение изображения, расширение XRandR. Это позволяет поворачивать изображение экрана с шагом 90°.

Драйвер поддерживает вращение с использованием этого расширения после включения опции "RandRRotation" в файле конфигурации Х-интерфейса.

Наложения RGB или с индексированной палитрой цвета работают с меньшей производительностью, и видеоналожение недоступно при включенной опции RandRRotation.

Вы можете проверить доступные углы поворота используя интерфейс командной строки 'xrandr' расширения ХRandR выполнив:

xrandr -q

Вы можете задать направление поворота экрана выполнив:

xrandr -o left(влево)
xrandr -o right(вправо)
xrandr -o inverted(переворот)
xrandr -o normal(обычное положение)

Поворот может быть также сделан из утилиты nvidia-settings на закладке "Rotation Settings".

Режим TwinView и поворот могут использоваться вместе, но эффект поворота будет распространен на весь рабочий стол. Это означает, что изображени повернется на обоих дисплеях из пары TwinView. Также будет применена опция "TwinViewOrientation" перед поворотом. Например, если у вас два дисплея рядом и вы хотите повернуть их, вам надо присвоить опции "TwinViewOrientation" значение "Above" (выше) или "Below" (ниже).

Настройка для ноутбуков

Установка и настройка

Установка и настройка драйвера NVIDIA для Linux на ноутбук аналогична установке на настольный компьютер, с небольшими исключениями, рассмотренными ниже.

Начиная с версии драйвера 1.0-2802, информация о встроенном плоском дисплее ноутбука для использования в процессе инициализации по-умолчанию создается "на лету" на основе данных видео-BIOS. Это поведение может быть отключено выставлением опции "SoftEDIDs" ядра в 0. Если опция "SoftEDIDs" выключена, тогда жестко заданные данные выбираются из таблицы, основанной на значении опции ядра "Mobile".

Опция ядра "Mobile" может принимать следующие значения:

Значение Действие
0xFFFFFFFF Позволяет модулю уровня ядра автоматически определять подходящее значение.
1 Ноутбуки Dell
2 Ноутбуки Toshiba, не использующие матрицы Compal
3 Все прочие ноутбуки
4 Ноутбуки Toshiba с матрицами Compal
5 Ноутбуки Gateway

Повторяем, опция ядра "Mobile" нужна только если отключена опция SoftEDIDs; если используется SoftEDIDs, то проще позволить модулю уровня ядра самому определить подходящее значение (поведение по-умолчанию).

Если вам требуется изменить эти опции, вы можете это сделать одним из следующих способов:

_Редактированием os-registry.c в каталоге usr/src/nv/ файла '.run'.

_Заданием значения с помощью утилиты modprobe из командной строки (например: `modprobe nvidia NVreg_SoftEDIDs=0 NVreg_Mobile=3`)

_Добавлением строки "options" в конфигурационный файл модуля, обычно расположенный в '/etc/modules.conf' (например: "options nvidia NVreg_Mobile=5")

Дополнительная функциональность

В этой секции обсуждается дополнительная функциональность, связанная с конфигурациями для ноутбуков.

Управление энергопотреблением

Все графические процессоры NVIDIA, предназначенные для ноутбуков, поддерживают управление энергопотреблением, как режим S3 (также известный как "Standby" или "Suspend to RAM"), так и режим S4 (также известный как "Hibernate", "Suspend to Disk" или "SWSUSP"). Управление энергопотреблением сильно зависит от конкретной системы, всех ее составляющих, в некоторых системах могут возникнуть проблемы при использовании, в то время как в других они не возникают.

Новые графические процессоры NVIDIA для ноутбуков также поддерживают технологию PowerMizer, наблюдающую за загрузкой графической системы приложениями и подстраивающей параметры для достижения оптимального баланса между производительностью и временем работы от батарей. Однако, по-умолчанию технология PowerMizer задействована лишь в некоторых ноутбуках. Обратитесь к списку известных проблем ниже за дополнительной информацией.

Присоединение ноутбука к док-станции

Все графические процессоры NVIDIA для ноутбуков корректно обрабатывают события, связанные с присоединением ноутбука к док-станции, однако поддержка может быть ограничена в конкретном ноутбуке или операционной системе. Различаются присоединение к док-станции включенного и работающего ноутбука, ноутбука в режиме энергосбережения и выключенного ноутбука. Драйвер NVIDIA распознает присоединение к док-станции лишь если ноутбук был выключен или находился в режиме энергосбережения.

TWINVIEW

Все мобильные графические процессоры поддерживают TwinView. Технология TwinView на ноутбуке может быть настроена тем же способом, что и на настольном компьютере (обратитесь к Главе 13); учтите, что в конфигурациях TwinView, использующих встроенный дисплей и внешний электронно-лучевой монитор, внешний монитор является основным дисплеем (задайте диапазоны частот в опциях HorizSync и VertRefresh в секции Monitor файла конфигурации Х-интерфейса), а интегрированный дисплей — дополнительным (задайте диапазоны частот вертикальной и горизонтальной синхронизации в опциях SecondMonitorHorizSync и SecondMonitorVertRefresh).

Опция "UseEdidFreqs" конфигурации Х-интерфейса включена по-умолчанию, так что обычно нет нужды в редактировании опций "SecondMonitorHorizSync" и "SecondMonitorVertRefresh". Обратитесь к описанию опции UseEdidFreqs в Главе 30 за дополнительной информацией).

Переключение между дисплеями по нажатию "горячей" клавиши

Помимо TwinView, мобильные графические процессоры NVIDIA также имеют возможность реагировать на переключение между LCD и CRT дисплеями по нажатию "горячей" клавиши, с переключением между каждым устройством в отдельности и возможными комбинациями дисплеев (обратите внимание, что только два дисплея могут использоваться одновременно). Использование TwinView, заданное в файле конфигурации Х-интерфейса, и "горячих" клавиш — взаимоисключающие вещи; если вы включите TwinView в файле конфигурации Х-интеррфейса, драйвер Х-интерфейса NVIDIA будет игнорировать нажатия на "горячие" клавиши.

Другое важное замечание к функционированию "горячих" клавиш — вы можете динамически подключать и отключать дисплеи к ноутбуку и использовать "горячие" клавиши для их активации и деактивации без перезапуска Х-интерфейса.

Когда X-интерфейс запущен, или когда обнаруживается изменение списка подключенных дисплеев, создается новая последовательность исполнения нажатия "горячих" клавиш — какие дисплеи будут использоваться при каждом нажатии на клавиши. Когда обнаружено нажатие на "горячую" клавишу, выбирается следующее состояние из последовательности. Каждый видеорежим, запрошенный из файла конфигурации Х-интерфейса, проверяется на доступность для каждого дисплея, и итоговый режим становится доступным к выбору для дисплея. Если одновременно активно несколько дисплеев, режимы каждого из них сравниваются попарно; если полное совпадение (одинаковое разрешение экрана) не удается подобрать, тогда используется ближайшее подходящее, и изображение на дисплее с меньшим разрешением панорамируется в разрешении другого дисплея.

При переключении с Х-интерфейса в виртуальный терминал, графическая консоль всегда восстанавливается на том дисплее, на котором она была при запуске Х-интерфейса. Аналогично, при переключении обратно в Х-интерфейс, используется та же конфигурация дисплеев, вне зависимости от нажатия "горячих" клавиш во время работы виртуального терминала.

Нестандартные видеорежимы LCD дисплеев

Некоторые пользователи сталкиваются с трудностями задания режима 1400x1050 (исходного для некоторых экранов ноутбуков). В версии XFree86 4.0.3 была добавлена поддержка нескольких видеорежимов 1400x1050 в список стандартных, но если используется более ранняя версия XFree86, следующие значения опции Modeline могут быть полезны:

# -- 1400x1050 --

# 1400x1050 @ 60Hz, 65.8 kHz hsync

Modeline "1400x1050" 129 1400 1464 1656 1960 1050 1051 1054 1100 +HSync +VSync

Известные проблемы с ноутбуками

Существует несколько известных проблем с ноутбуками:

_Переключение между дисплеями по нажатию «горячей» клавиши поддерживается не во всех ноутбуках. В некоторых случаях, конкретная реализация ACPI не поддерживается в полном объеме драйвером NVIDIA для Linux. Драйвер дорабатывается для улучшения работы в данной области. Имеются проблемы с ноутбуками Toshiba и Lenovo.

_Изменение конфигурации дисплеев по нажатию «горячих» клавиш через ACPI не поддерживается серверами Х-интерфейса X.Org версий до 1.2.0; обратитесь к описанию опции EnableACPIHotkeys в Главе 30 за дополнительной информацией.

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

_В ряде случаев переход в спящий режим негативно влияет на тактовую частоту шины PCI Express, приводя к зависанию. Проблема все еще находится в стадии исследования, известным способом избежать проблемы является оставить запущенным приложение OpenGL перед переходом в спящий режим.

_В ноутбуках, оснащенных небольшим объемом оперативной памяти, повторный переход в спящий режим может не удастся из-за нехватки свободной оперативной памяти. Для предотвращения проблемы выполните команду `echo 0 > /sys/power/image_size`, уменьшающую объем информации, сохраняемый при переходе в спящий режим.

_В некоторых дистрибутивах Linux применяется утилита vbetool для сохранения и восстановления состояния графической системы VGA. Эта утилита несовместима с видео-BIOS графических процессоров NVIDIA и приводит к проблемам с восстановлением состояния графического процессора. Отключение вызовов к данной утилите из скриптов запуска вашего дистрибутива может повысить стабильность работы режимов энергосбережения.

_В некоторых ноутбуках технология PowerMizer не задействована по-умолчанию. Проблема все еще исследуется, в настоящее время отсутствуют способы ее решения.

_Видеоналожение работает только для первого дисплея, на котором загружался Х-интерфейс. Например, если Х-интерфейс был запущен на встроенном дисплее, запущено приложение воспроизведения видео, использующее видеоналожение (через возможность "Video Overlay" расширения XV), а затем по нажатию «горячей» клавиши включается второй дисплей, видео не появится на втором дисплее. В качестве обходной меры вы можете или настроить приложение воспроизведения видео на использование возможности "Video Blitter" расширения XV (эта возможность всегда доступна), или переключиться по «горячей» клавише на дисплей, на котором вы бы хотели смотреть видео, перед запуском Х-интерфейса.

Настройка видеорежимов

Драйвер NVIDIA для Linux поддерживает все стандартные видеорежимы VGA и VESA, также как и наиболее популярные пользовательские режимы; режимы с двойным сканированием поддерживаются на всем оборудовании. Чересстрочные режимы поддерживаются графическими процессорами GeForce FX/Quadro FX и более новыми; файл журнала Х-интерфейса содержит сообщение "Interlaced video modes are supported on this GPU", если поддерживаются чересстрочные режимы.

Для использования одного или нескольких стандартных видеорежимов в Х-интерфейсе, вы можете просто добавить их в опцию "Modes", например:

Modes "1600x1200" "1024x768" "640x480"

в соответствующей секции Display файла конфигурации Х-интерфейса (обратитесь к страницам руководства XF86Config(5x) или xorg.conf(5x) за дополнительной информацией). Или же воспользуйтесь утилитой nvidia-xconfig для запроса дополнительного видеорежима, например:

nvidia-xconfig --mode 1600x1200

Обратитесь к странице руководства по nvidia-xconfig за дополнительной информацией.

Глубина цвета, бит на пиксель и шаг

Хотя и не связанная напрямую с созданием видеорежимов, число бит на пиксель, является проблемой при определении максимального доступного разрешения; по этой причине стоит объяснить часто возникающую путаницу между понятиями глубины цвета и числа бит на пиксель. Глубина цвета — это число бит данных, используемых для хранения пикселя. Поддерживаемые глубины — 8, 15, 16, и 24. Большинство видеокарт, однако, хранит информацию пикселей в размерах 8, 16, или 32 бит; это объем памяти, выделяемый пикселю. При заданной глубине цвета Х-интерфейс выбирает число бит на пиксель, используемое для хранения данных. Ниже приведена таблица, показывающая сколько бит для пикселя используется для того или иного значения глубины цвета:

Глубина цвета (DEPTH) Бит на пиксель (BPP)
88
1516
1616
2432

Напоследок, понятие шага (pitch) означает, сколько байт линейного буфера кадров разделяет данные одного пикселя и данные расположенного непосредственно под ним. Вы можете посчитать, что это горизонтальное разрешение, умноженное на число байт на пиксель (число бит на пиксель, деленное на 8). На практике, шаг может быть больше этой величины из-за необходимости выравнивания.

Максимальные разрешения

Драйвер NVIDIA для Linux поддерживает разрешения вплоть до 8192x8192 пикселей для графических процессоров GeForce 8 и более новых, вплоть до 4096x4096 для GeForce 7 и более ранних, хотя максимальное возможное разрешение для вашей системы может быть ограничено объемом видеопамяти (смотрите раздел полезные формулы ниже) и максимальным поддерживаемым разрешением дисплея (монитора/плоской панели/телевизора). Также обратите внимание, что хотя использование видеоналожения не ограничивает максимального разрешения или частоты обновления, но объем полосы пропускания видеопамяти, занятый видеорежимом, оказывает влияние на качество видеоналожения.

Полезные формулы

Максимальное разрешение — это функция как объема видеопамяти, так и выбранного числа бит на пиксель:

HR * VR * (bpp/8) = объем используемой видеопамяти

Другими словами, объем используемой видеопамяти равен результату умножения горизонтального разрешения (HR) на вертикальное разрешение (VR) и на число байт на пиксель (число бит на пиксель, деленное на 8). С точки зрения техники, объем используемой видеопамяти равен произведению шага на вертикальное разрешение, и размер шага может быть больше величины HR * (bpp/8) для соответствия требованиям оборудования, чтобы шаг был кратен некоторой величине.

Обратите внимание, что речь пока идет об объеме памяти, требующемся для буфера кадров, но память также может использоваться другими задачами, такими как OpenGL и кеш пиксельных карт.

Другая важная зависимость имеется между разрешением, частотой пикселей и частотой вертикальной синхронизации (частотой обновления изображения):

RR = PCLK / (HFL * VFL)

Другими словами, частота обновления изображения (RR) равна результату деления значения пиксельной частоты (PCLK) на общее число пикселей изображения: горизонтальной длине кадра (HFL), умноженной на вертикальную длину кадра (VFL) (обратите внимание, речь идет о длине кадра, а не только о видимых разрешениях). Как описано в документе XFree86 Video Timings HOWTO, вышеприведенная формула может быть представлена в виде:

PCLK = RR * HFL * VFL

Имея максимальное значение пиксельной частоты, можно изменять значения RR, HFL и VFL как угодно до тех пор, пока результат произведения всех трех остается в заданном пределе. Пиксельная частота записывается в файл журнала Х-интерфейса.Файл журнала будет иметь строку вида:

(--) NVIDIA(0): ViewSonic VPD150 (DFP-1): 165 MHz maximum pixel clock

показывающую значение максимальной пиксельной частоты для дисплея.

Как проверяется доступность видеорежима

Традиционно в XFree86/X.Org при проверке доступности видеорежима сервер Х-интерфейса начинает с внутреннего списка стандартных VESA режимов, с добавлением режимов, заданных в строках ModeLines файла конфигурации Х-интерфейса. Эти режимы проверяются по таким критериям как попадание в заданные диапазоны частот HorizSync/VertRefresh для монитора в секции Monitor файла конфигурации Х-интерфейса, максимальной пиксельной частоте графического процессора.

После построения сервером Х-интерфейса списка корректных видеорежимов берется список запрошенных пользователем видеорежимов (перечисленных в строке "Modes" секции Display в секции Screen файла конфигурации X-интерфейса), и определяется наиболее подходящий проверенный режим для запрошенного пользователем.

Драйвер Х-интерфейса NVIDIA использует вариацию вышеизложенной последовательности для проверки доступности видеорежима. В процессе запуска сервера Х-интерфейса драйвер Х-интерфейса NVIDIA строит список доступных видеорежимов для каждого дисплея. Возможные режимы берутся из ряда источников:

_Информация EDID дисплея

_Встроенный список видеорежимов сервера X-интерфейса

_Заданные пользователем строки modelines в файле конфигурации Х-интерфейса

_Стандартные видеорежимы VESA

Для каждого возможного видеорежима проводится проверка доступности. В основном проверка происходит схоже с традиционной для XFree86/Xorg: параметры временной синхронизации сверяются с допустимыми диапазонами HorizSync и VertRefresh и максимально возможной пиксельной частотой. Каждая стадия проверки может независимо управляться с помощью опции конфигурации Х-интерфейса "ModeValidation".

Обратите внимание, что при проверке временных характеристик режимов с чересстрочной разверткой, в VertRefresh задается частота полей, а не частота кадров. Например, в следующей строке задана вертикальная частота обновления 87 Гц:



# 1024x768i @ 87Hz (industry standard)

ModeLine "1024x768" 44.9 1024 1032 1208 1264 768 768 776 817 +hsync +vsync Interlace


Доступным видеорежимам присваивается уникальное название, гарантирующее неповторяемость в списке для дисплея. Название составляется по принципу:

<ширина>x<высота>_<частота обновления>, (например, "1600x1200_85")

Название может быть дополнено другой цифрой для гарантии уникальности, например "1600x1200_85_0".

После добавления доступных видеорежимов в список совпадающие видеорежимы отбрасываются и список сортируется так, чтобы наиболее подходящие режимы были наверху списка. Сортировка проводится по:

_Разрешению

_Источнику (режимы, сообщенные по EDID, имеют преимущество над VESA-режимами, которые в свою очередь имеют приоритет над режимами из встроенного списка сервера Х-интерфейса)

_Частоте обновления

После проверки доступности всех видеорежимов из всех источников и построения списка, все режимы с одним разрешением сравниваются, наиболее подходящий добавляется в список повторно с наименованием, состоящим только из разрешения (например, "1600x1200"). В этом случае при запросе режима с традиционным названием ("1600x1200") вы получите тот же режим, что и раньше (наиболее подходящий режим с разрешением 1600x1200); дополнительно все режимы из списка могут быть запрошены по уникальному названию.

При повышенном уровне выводимой информации в журнал Х-интерфейса (обратитесь к разделу "Часто задаваемые вопросы" за информацией об увеличении уровня выводимой в журнал информации) список видеорежимов каждого дисплея выводится в журнал.

После построения списка видеорежимов для всех дисплеев, запрошенные видеорежимы (заданные в файле конфигурации Х-интерфейса) ищутся в списке видеорежимов. Каждый запрошенный видеорежим, для которого есть совпадающий видеорежим из списка, сообщается серверу Х-интерфейса и становится доступным к выбору пользователем через "горячие" клавиши сервера Х-интерфейса (ctrl-alt-плюс/минус) и расширения Х-интерфейса XRandR и XF86VidMode. Если только один дисплей используется экраном Х-интерфейса, тогда при запуске сервера Х-интерфейса все видеорежимы из списка дисплея становятся доступными серверу. Обратитесь к описанию опции "IncludeImplicitMetaModes" конфигурации X-интерфейса в Главе 30 за дополнительной информацией.

Режим NVIDIA-AUTO-SELECT

Вы можете запросить специальный видеорежим через файл конфигурации Х-интерфейса, с названием "nvidia-auto-select". Когда драйвер Х-интерфейса строит список видеорежимов, один из режимов выбирается как "nvidia-auto-select", новая запись заносится в список, и "nvidia-auto-select" используется как уникальное название для видеорежима.

Режим "nvidia-auto-select" введен в качестве подходящего режима для дисплея, характеристики которого неизвестны. Например, "nvidia-auto-select" обычно имеет физическое разрешение для плоских панелей, сообщенное дисплеем по EDID, или параметры временной синхронизации из числа детально описанных в EDID. Режим "nvidia-auto-select" гарантированно присутствует и всегда проверен на доступность драйвером Х-интерфейса для дисплея. Если все способы сбора информации о дисплее окончились неудачей, драйвер Х-интерфейса назначает встроенный видеорежим 800 x 600, 60 Гц режимом "nvidia-auto-select".

Обратите внимание, что режим "nvidia-auto-select" вовсе не обязательно будет режимом с наибольшим из возможных разрешением или частотой обновления. Скорее, режима "nvidia-auto-select" выбирается как приемлемое умолчание. Процесс выбора примерно следующий:

_Если информация EDID, сообщенная дисплеем, содержит сведения о предпочитаемых параметрах временной синхронизации видеорежима, и эти параметры определены как доступные, то этот видеорежим будет использован как "nvidia-auto-select".

Вы можете проверить, сообщает ли дисплей информацию EDID о предпочитаемых параметрах временной синхронизации видеорежима, запустив сервер Х-интерфейса с параметром logverbosity больше или равно 5 (обратитесь к разделу "Часто задаваемые вопросы" за информацией об увеличении уровня выводимой в журнал информации), и обратившись к выводу информации EDID в журнале; если присутствует строка:

Prefer first detailed timing : Yes

то будет использован первый видеорежим, перечисленный в секции "Detailed Timings".

_Если информация EDID не содержит сведений о предпочитаемых параметрах временной синхронизации, будет выбран максимальный видеорежим из перечисленных в EDID в качестве "nvidia-auto-select".

_Если информация EDID не содержит сведений о параметрах временной синхронизации, или вообще недоступна, то будет использован максимальный доступный видеорежим с разрешением не выше 1024x768 в качестве "nvidia-auto-select". Ограничение в 1024x768 введено для предотвращения выбора слишко больших видеорежимов из числа доступных, например 2048x1536.

_Если все остальные способы определения кокнчились неудачей, то в качестве "nvidia-auto-select" драйвер Х-интерфейса выберет встроенный видеорежим 800 x 600 60Hz.

Если не было запрошено видеорежимов через файл конфигурации Х-интерфейса, или все запрошенные режимы не были найдены в списке, то драйвер Х-интерфейса устанавливает режим "nvidia-auto-select", так что сервер Х-интерфейса всегда запустится. Соответствующее предупреждение будет записано в файл журнала Х-интерфейса в этом случае.

Вы можете добавить режим "nvidia-auto-select" в файл конфигурации х_интерфейса командой:

# nvidia-xconfig --mode nvidia-auto-select

и перезапуском сервера Х-интерфейса.

Драйвер X-интерфейса в целом гораздо лучше справляется с выбором видеорежима "nvidia-auto-select" если доступна информация о дисплее по протоколу EDID. Это одна из причин отказа от опции конфигурации Х-интерфейса "IgnoreEDID", рекомендуется использовать только опцию "UseEDID". Обратите внимание, что вместо общего отключения любого использования информации EDID в опции "UseEDID" вы можете индивидуально отключить то или иное применение этой информации, используя переменные "UseEDIDFreqs", "UseEDIDDpi", и/или "NoEDIDModes" в опции опции конфигурации Х-интерфейса "ModeValidation".

Отчет о проверки доступности видеорежима

При уровне детализации журналирования 6 или выше (например, `startx -- -logverbose 6`), в файл журнала Х-интерфейса записывается каждый видеорежим, определенный для построения списка каждого дисплея, с результатом проверки доступности. Для режимов, признанных некорректными, в журнал записывается информация о причинах такого заключения.

Приведение параметров временной синхронизации видеорежимов к идентичным значениям

Некоторые функции, такие как "активное" стерео с использованием TwinView, требуют контроля за используемыми в видеорежимах параметрами временной синхронизации. Для точного управления устанавливаемыми параметрами временной синхронизации для каждого дисплея вы можете задать видеорежим, которые вы желаете использовать, строкой modeline (воспользовавшись одним из генераторов modeline), используя уникальное название. Например, если нужно использовать видеорежим 1024x768, 120 Гц на каждом мониторе в режиме "активного" стерео TwinView, вы можете задать в секции Monitor файла конфигурации Х-интерфейса строку вида:

# 1024x768 @ 120.00 Hz (GTF) hsync: 98.76 kHz; pclk: 139.05 MHz

Modeline "1024x768_120" 139.05 1024 1104 1216 1408 768 769 772 823 -HSync +Vsync

Затем, в секции Screen создать метарежим вида:

Option "MetaModes" "1024x768_120, 1024x768_120"

Дополнительная информация

Генератор строк modeline для XFree86, соответствующий стандарту GTF, доступен на сайте http://gtf.sourceforge.net/

. Другие генераторы можно найти поиском по слову "modeline" на сайте http://freshmeat.net.

Настройка Flipping и UBB

Драйвер NVIDIA для Linux поддерживает общий буфер заднего плана (UBB) и OpenGL переключение. Эти функции обеспечивают улучшение производительности в некоторых случаях.

_Общий буфер заднего плана (UBB): доступен только для графических процессоров семейства Quadro (за исключением Quadro4 NVS) и включен по-умолчанию, если имеется достаточный объем видеопамяти.

Он может быть отключен с помощью опции UBB файла конфигурации Х-интерфейса, описанной в Главе 30.

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

_Переключение (Flipping): Когда включено OpenGL переключение, замена изображения из буфера OpenGL может осуществляться путем смены буфера, с которым работает DAC (цифро-аналоговый преобразователь), вместо копирования изображения из заднего буфера в передний; это обычно дает гораздо большую производительность и позволяет осуществлять безразрывную замену изображения во время вертикальной прорисовки (когда установлена переменная среды _GL_SYNC_TO_VBLANK).

Имеются некоторые условия, при соблюдении которых OpenGL может осуществлять переключение, но в целом на графических процессорах GeForce или более новых OpenGL может осуществлять переключение когда выполняется одно полноэкранное приложение OpenGL, не перекрытое другими окнами, и задана переменная __GL_SYNC_TO_VBLANK. Дополнительно, на процессорах семейства Quadro переключение может осуществляться даже если окно OpenGL приложения частично перекрыто другими окнами или не развернуто на полный экран, или же не включена переменная __GL_SYNC_TO_VBLANK.

Интерфейс файловой системы Proc

Вы можете использовать интерфейс /proc для получения текущих сведений о драйвере, установленной видеокарте на базе NVIDIA, и состоянии AGP. Информация содержится в нескольких файлах в /proc/driver/nvidia

/proc/driver/nvidia/version

Сообщает версию установленного драйвера и версию компилятора GNU C, использовавшегося для сборки модуля уровня ядра Linux.

/proc/driver/nvidia/warnings

Драйвер NVIDIA пытается обнаруживать потенциальные проблемы с ядром системы и предупреждает о них, используя механизм ядра printk(), обычно записываемый системой в '/var/log/messages'. Важные предупреждения драйвера NVIDIA также сохраняются в выделенные текстовые файлы в этом каталоге /proc.

/proc/driver/nvidia/cards/0...3

Сообщает информацию о каждой установленной видеокарте NVIDIA (модель, название, прерывание, версия BIOS, тип шины). Обратите внимание, что версия BIOS сообщается только если запущен Х-интерфейс.

/proc/driver/nvidia/agp/card

Информация о возможностях AGP установленной видеокарты с интерфейсом AGP.

/proc/driver/nvidia/agp/host-bridge

Информация о чипсете (модель и возможности AGP).

/proc/driver/nvidia/agp/status

Текущее состояние AGP. Если поддержка AGP включена в системе, используется драйвер AGP, то выдается информация о скорости работы AGP порта, статусе использования возможностей Fast Writes (быстрая запись) и Side Band Addressing (передача адреса по боковой шине).

Драйвер AGP может быть или NVIDIA (встроенный драйвер AGP NVIDIA), или AGPGART (драйвер agpgart.o ядра Linux). Если вы видите "inactive" сразу за AGPGART, то это означает, что контроллер AGP запрограммирован драйвером, но в настоящей момент не используется.

Строки SBA и Fast Writes показывают, используется ли одна из этих функция в данный момент. Учтите, что возможность задействования зависит от нескольких факторов. Даже если и видеокарта, и чипсет поддерживают эти функции, драйвер может не использовать их в целях повышения стабильности работы системы. Это особенно относится к AGP Fast Writes.

Управление энергопотреблением

Эта версия драйвера поддерживает управление энергопотреблением, основанное на стандартах APM и ACPI. Это означает, что драйвер поддерживает режимы APM приостановки (suspend) и выход из него, и режимы ACPI ожидания (standby, S3) и приостановки (S4).

BIOS вашего ноутбука должен поддерживать управление энергопотреблением на основе APM, а не на основе ACPI. Многие, но не все, ноутбуки с графическими чипами GeForce2 и GeForce4 поддерживают APM. Вы можете проверить наличие поддержки APM через интерфейс procfs (проверьте наличие /proc/apm) или через информацию, выдаваемую при загрузке ядра с опциями:

% dmesg | grep -i apm

сообщение, указывающее на наличие поддержки APM:

apm: BIOS version 1.2 Flags 0x03 (Driver version 1.16)

или сообщение об отсутствии поддержки APM:

No APM support in Kernel

Обратите внимание, что если вы используете ядро операционной системы версии 2.6, и ядро настроено на поддержку и ACPI, и APM, модуль уровня ядра NVIDIA будет собран с поддержкой управления энергопотреблением на основе ACPI. Если вы желаете использовать APM, необходимо пересобрать ядро операционной системы без поддержки ACPI и переустановить драйвер NVIDIA для Linux.

Иногда чипсет теряет свои настройки AGP в режиме приостановки, и может вызвать неработоспособность шины после выхода из него. Драйвер AGP в таких системах должен сохранять и восстанавливать состояние регистров системы; драйвер NVIDIA NvAGP уведомляется о событиях управления энергопотреблением и сохраняет конфигурацию на время остановки/возобновления работы.

Драйвер AGPGART ядра Linux версии 2.4 не поддерживает управление энергопотреблением, драйвер AGPGART ядра Linux версии 2.6 поддерживает, но лишь для нескольких чипсетов. Если вы используете один из этих драйверов, и замечаете, что система не выходит из режима приостановки, вы можете попробовать драйвер NVIDIA NvAGP.

Отключение поддержки AGP (смотрите Главе 12 за дополнительной информацией об отключении AGP) также позволяет решить эту проблему.

Большинство новых компьютеров поддерживают ACPI. ACPI поддерживается драйвером NVIDIA для Linux при использовании ядра операционной системы версии 2.6 и более новой. Драйвер поддерживает режим ожидания (S3) и включает пробную поддержку режима приостановки ACPI (S4).

Если вы задействовали поддержку режима ACPI S4 посредством патчей suspend2, вам необходимо настроить ядро Linux на динамическое определение числа страниц памяти для драйверов, чья работа приостанавливается в системе. Это выполняется командой от имени root:

% echo 0 > /proc/suspend2/extra_pages_allowance

Система не нуждается в перезапуске и данная настройка, как установлено, сохраняется между перезагрузками. Может понадобиться включить эту настройку в состав сценария загрузки. Однако, неудача применения данной настройки приводит к зависанию и «засыпанию» системы. За дополнительной информацией о патчах suspend2 обратитесь к сайту http://www.suspend2.net.

Использование Composite-расширения Х-интерфейса

Серверы Х-интерфейса X.org, начиная с версии X11R6.8.0 содержит экспериментальную поддержку нового расширения под названием Composite. Это расширение позволяет окнам прорисовываться в пиксельные карты, а не напрямую в экран. В сочетании с расширениями DAMAGE и RENDER, это позволяет приложению вызывать диспетчер расширения composite для смешивания изображения окон друг с другом при выводе на экран.

Производительность может быть существенно снижена, если опция "RenderAccel" в файле xorg.conf отключена. Обратитесь к Главе 30 за дополнительной информацией.

При использовании драйвера Х-интерфейса NVIDIA и сервера Х-интерфейса X.Org версии X11R6.9.0 или более новой, и включенном расширении Composite, реализация OpenGL NVIDIA корректно взаимодействует с расширениями Damage и Composite. Это означает, что вывод изображения OpenGL идет во внеэкранные пиксельные карты и сервер Х-интерфейса информируется событием Damage о выводе изображения OpenGL в пиксельные карты. Это позволяет OpenGL приложениям выглядеть правильно на рабочем столе.

Если расширение Composite включено на сервере Х-интерфейса версии старше X11R6.9.0, GLX отключается. Вы можете заставить работать GLX при включенном на старых серверах Х-интерфейса расширении Composite с помощью опции конфигурации Х-интерфейса "AllowGLXWithComposite". Однако, в этих условиях GLX не будет работать правильно. Рекомендуется обновить сервер Х-интерфейса до версии X11R6.9.0 или более новой.

Вы можете включить расширение Composite выполнением 'nvidia-xconfig --composite'. Composite может быть отключено командой 'nvidia-xconfig --no-composite'. Обратитесь к странице руководства по nvidia-xconfig(1) за дополнительной информацией.

Если вы используете расширение Composite совместно с GLX, рекомендуется включить опцию конфигурации Х-интерфейса "DamageEvents" для повышения производительности. Если используется основанный на OpenGL диспетчер расширения composite, также может потребоваться опция "DisableGLXRootClipping" для получения правильного изображения.

Расширение Composite также приводит к проблемам с другими компонентами драйвера:

_В серверах Х-интерфейса версии более ранней, чем X.Org 7.1, Xv не может прорисовывать изображение в пиксельные карты, перенаправляемые во внеэкранный буфер, и прорисовывает изображение напрямую в экран. Для некоторых приложений можно воспользоваться альтернативным драйвером вывода видео, например, "mplayer -vo x11" должен работать нормально, также как и "xine -V xshm".

Если вы хотите пользоваться Xv, вам надо просто отключить диспетчер расширения composite и включить его после просмотра видео. При использовании X.Org версии 7.1 и более новой, драйвер будет правильно перенаправлять видеоизображение закадровые пиксельные карты. Обратите внимание, что Xv-совместимые видеокарты будут игнорировать опцию sync-to-vblank при отрисовке в перенаправляемое окно.

_Наложения для рабочих станций, стереорежим и UBB несовместимы с Composite. Эти функции автоматически отключаются при обнаружении Composite.

Драйвер поддерживает вывод изображений OpenGL в 32-битные ARGB окна при включенной опции "AddARGBGLXVisuals" файла конфигурации Х-интерфейса. Если вы разработчик программ, то можете использовать новые области вывода изображения совместно с диспетчером composite для создания прозрачных OpenGL приложений:

int attrib[] = {
GLX_RENDER_TYPE, GLX_RGBA_BIT,
GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT,
GLX_RED_SIZE, 1,
GLX_GREEN_SIZE, 1,
GLX_BLUE_SIZE, 1,
GLX_ALPHA_SIZE, 1,
GLX_DOUBLEBUFFER, True,
GLX_DEPTH_SIZE, 1,
None };
GLXFBConfig *fbconfigs, fbconfig;
int numfbconfigs, render_event_base, render_error_base;
XVisualInfo *visinfo;
XRenderPictFormat *pictFormat;
 
/* Make sure we have the RENDER extension */
if(!XRenderQueryExtension(dpy, &render_event_base, &render_error_base)) {
fprintf(stderr, "No RENDER extension found\n");
exit(EXIT_FAILURE);
}
 
/* Get the list of FBConfigs that match our criteria */
fbconfigs = glXChooseFBConfig(dpy, scrnum, attrib, &numfbconfigs);
if (!fbconfigs) {
/* None matched */
exit(EXIT_FAILURE);
}
 
/* Find an FBConfig with a visual that has a RENDER picture format that
 * has alpha */
for (i = 0; i < numfbconfigs; i++) {
visinfo = glXGetVisualFromFBConfig(dpy, fbconfigs[i]);
if (!visinfo) continue;
pictFormat = XRenderFindVisualFormat(dpy, visinfo->visual);
if (!pictFormat) continue;
 
if(pictFormat->direct.alphaMask > 0) {
fbconfig = fbconfigs[i];
break;
}
 
XFree(visinfo);
}
 
if (i == numfbconfigs) {
/* None of the FBConfigs have alpha. Use a normal (opaque)
 * FBConfig instead */
fbconfig = fbconfigs[0];
visinfo = glXGetVisualFromFBConfig(dpy, fbconfig);
pictFormat = XRenderFindVisualFormat(dpy, visinfo->visual);
}
 
XFree(fbconfigs);

При выводе изображения в 32-битное окно помните, что расширение RENDER, используемое большинством диспетчеров composite, ожидает цветовых данных, предварительно умноженных на значение альфа-канала. Это означает, что если ваше изображение использует трехкомпонентные цвета (r,g,b) и альфа-канал a, в изображении, выводимом в целевое окно, цвета должны быть в формате (a*r, a*g, a*b, a).

Дополнительную информацию о Composite можно найти на сайте http://freedesktop.org/Software/CompositeExt

Использование утилиты nvidia-settings

Утилита настройки с графическим интерфейсом 'nvidia-settings' включена в состав драйвера NVIDIA для Linux. После установки драйвера и запуска Х-интерфейса, вы можете запустить утилиту командой:

% nvidia-settings

в окне терминала.

Расширенная информация о настройках доступна в документации окна помощи утилиты.

За дополнительной информацией обратитесь к странице руководства nvidia-settings или к руководству пользователя, доступному на сайте: ftp://download.nvidia.com/XFree86/Linux-x86/nvidia-settings-user-guide.txt.

Исходные тексты утилиты nvidia-settings доступны на условиях лицензии GPL по адресу: ftp://download.nvidia.com/XFree86/nvidia-settings/.

Если у вас возникли затруднения с запуском исполняемого файла nvidia-settings из комплекта драйвера NVIDIA для Linux, обратитесь к разделу по nvidia-settings в Главе 8.

Настройка режимов SLI и MultiGPU

Драйвер поддерживает возможности NVIDIA SLI и MultiGPU. Обе технологии позволяют приложениям OpenGL использовать несколько графических процессоров одновременно для повышения производительности. Различия между SLI и MultiGPU сводятся к тому, что SLI используется для объединения производительности графических процессоров двух или большего числа видеокарт, тогда как MultiGPU используется для объединения производительности двух графических процессоров, размещенных на одной видеокарте. Если вы хотите объединить две видеокарты, следует использовать опцию "SLI" конфигурации X-интерфейса. Соответственно, если нужно объединить два графических процессора на одной видеокарте, следует использовать опцию "MultiGPU" конфигурации X-интерфейса. Если имеется две видеокарты, на каждой из которых два графических процессора, и вы хотите объединить их, следует использовать опцию "SLI".

В среде Linux технология SLI может работать в одном из трех режимов: рендеринг с чередованием кадров (AFR), рендеринг с разделением экрана (SFR), и полноэкранное сглаживание изображения с использованием SLI (AA). В режиме AFR один графический процессор рассчитывает один кадр, а второй — кадр, следующий за ним. В режиме SFR, каждый кадр делится горизонтально на две части, и каждый графический процессор обрабатывает свою часть. Линия раздела подстраивается для сбалансированной нагрузки обоих графических процессоров. В режиме AA работа по полноэкранному сглаживанию изображения делится между двумя графическими процессорами. Оба процессора работают над одним изображением, и результаты складываются для формирования итогового кадра. Этот режим полезен для приложений, большую часть времени занятых обсчетом на центральном процессоре, и не способных получить преимущество от AFR.

При наличии четырех графических процессоров могут использоваться эти же режимы. В режиме AFR работа распределяется по всем четырем процессорам, каждый подготавливает один кадр за цикл. В режиме SFR кадр делится на четыре части. В режиме AA работа распределяется между четырьмя процессорами, позволяя проводить сглаживание изображения со степенью до 64x. При наличии четырех графических процессоров в режиме SLI возможен еще один режим, рендеринг с чередованием кадров с полноэкранным сглаживанием (AFRAA). В этом режиме пары графических процессоров рассчитывают разные кадры, каждый процессор в паре делает половину работы по полноэкранному сглаживанию изображения. Эти сценарии равноприменимы для случая четырех видеокарт и для случая двух видеокарт, каждая из которых оснащена двумя графическими процессорами.

Режим MultiGPU включается в опции "MultiGPU" файла конфигурации Х-интерфейса; обратитесь к Главе 30 за дополнительной информацией о настройке MultiGPU.

Утилита nvidia-xconfig может быть использована для включения опции MultiGPU вместо редактирования файла конфигурации вручную. Например:

% nvidia-xconfig --multigpu=on

SLI включается выставлением опции "SLI" файла конфигурации Х-интерфейса; обратитесь к Главе 30 за дополнительной информацией о настройке SLI.

Утилита nvidia-xconfig может быть использована для включения опции SLI вместо редактирования файла конфигурации вручную. Например:

% nvidia-xconfig --sli=on

Обратитесь к Главе 30 за дополнительной информацией об опции SLI.

Технология SLI требует наличия двух идентичных видеокарт с интерфейсом PCI-Express, совместимого чипсета материнской платы и, в большинстве случаев, специального "моста", соединяющего две видеокарты. Обратите внимание, что мобильные графические процессоры не поддерживают SLI, а для карт Quadro всегда требуется "мост".

Для получения последнего перечня поддерживаемых конфигураций для SLI, включая графические процессоры и материнские платы, обратитесь на сайт http://www.slizone.com.

Только один дисплей может использоваться при включенных режимах SLI или MultiGPU. Если Х-интерфейс настроен на множество экранов, и для экрана 0 включен SLI или MultiGPU, другие экраны отключаются. TwinView также не поддерживается совместно с SLI или MultiGPU. Обратите внимание, что если включены SLI или MultiGPU, используемые в этих конфигурациях графические процессоры недоступны для однопроцессорного рендеринга.

Часто задаваемые вопросы об SLI

Вопрос: Почему приложение glxgears работает медленнее при включенном SLI или MultiGPU?

Ответ: При включенном SLI или MultiGPU драйвер NVIDIA должен координировать работу обоих графических процессоров при выводе каждого нового кадра. Для большинства приложений эта нагрузка несущественна. Однако, поскольку в glxgears создается очень много кадров в секунду, нагрузка процессом синхронизации составляет заметную величину во времени, и частота кадров снижается.


Вопрос: Почему Doom 3 работает медленнее при включенном SLI или MultiGPU?

Ответ: Драйвер NVIDIA для Linux не определяет оптимальные настройки SLI или MultiGPU для таких игр как Doom 3 и Quake 4. В качестве обходного пути может быть использована переменная среды __GL_DOOM3 для использования OpenGL оптимальных настроек для Doom 3. В Bash это можно сделать той же командой, что запускает Doom 3, так что переменная среды не остается установленной для остальных приложений OpenGL, запускаемых в это же сеансе работы:

% __GL_DOOM3=1 doom3

Сценарий запуска Doom 3 также может быть изменен для установки значения этой переменной среды:

#!/bin/sh

# Needed to make symlinks/shortcuts work.

# the binaries must run with correct working directory

cd "/usr/local/games/doom3/"

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.

export __GL_DOOM3=1

exec ./doom.x86 "$@"

Эта переменная введена временно, и будет удалена в будущем.


Вопрос: Почему не инициализируется SLI или MultiGPU?

Ответ: Может быть несколько причин, по которым SLI или MultiGPU не инициализируется. Многие из них должны быть объяснены в файле журнала Х-интерфейса, например:

_"Unsupported bus type" (тип шины не поддерживается)

_"The video link was not detected" (соединительный мост не обнаружен)

_"GPUs do not match" (графические процессоры не совпадают)

_"Unsupported GPU video BIOS" (BIOS видеокарты не поддерживается)

_"Insufficient PCI-E link width" (недостаточная полоса пропускания PCIE)

Сообщение 'Unsupported PCI topology' возникает в основном из-за проблем с ядром Linux. Драйвер NVIDIA должен иметь доступ к мосту PCI (часто называемому корневым мостом), к которому подсоединяется каждый графический процессор NVIDIA для правильной настройки SLI или MultiGPU. Многие версии ядра не распознают правильно этот мост и в результате не дают доступа к нему драйверу NVIDIA. Смотрите ниже "Как определить, что ядро правильно обнаруживает мост PCI?" за дополнительной информацией.

Ниже приведены некоторые шаги по решению проблем с инициализацией SLI.

_Убедитесь, что поддержка ACPI включена в вашем ядре. По наблюдениям NVIDIA необходимо использование ACPI для правильного определения ядром корневого моста. Учтите, что в некоторых случаях версии ядра с поддержкой ACPI все еще могут иметь проблемы, и может потребоваться обновление ядра.

_Выполните команду 'lspci' для проверки, что несколько графических процессоров NVIDIA могут быть обнаружены операционной системой, например:

% /sbin/lspci | grep -i nvidia

Если 'lspci' не сообщает обо всех графических процессорах, имеющихся в системе, то имеется проблема с ядром операционной системы Linux, и рекомендуется использовать другое ядро.

_Убедитесь, что используется последняя версия SBIOS для материнской платы.

_Слоты шины PCI-Express материнской платы должны предоставлять минимально необходимую полосу пропускания. Убедитесь, что слоты на вашей материнской плате соответствуют нижеприведенным требованиям и что видеокарты установлены в нужные слоты PCI Express:

_Двухпроцессорной видеокарте требуется как минимум 8 каналов шины (слот x8 или x16)

_Паре однопроцессорных видеокарт требуется соответствие одной из комбинаций:

x16+x16
x16+x8
x16+x4
x8+x8

Вопрос: Как определить, что ядро правильно обнаруживает мост PCI?

Ответ: как обсуждалось выше, драйвер NVIDIA должен иметь доступ к мосту PCI, к которому подключен каждый графический процессор NVIDIA, чтобы было возможно правильно настроить SLI.

Следующие действия требуются для определения способности ядра распознать мост PCI:

_Идентифицируйте все графические процессоры NVIDIA:

% /sbin/lspci | grep -i vga


0a:00.0 VGA compatible controller: nVidia Corporation [...]

81:00.0 VGA compatible controller: nVidia Corporation [...]

_Определите, что каждый графический процессор подключен к шине, подключенной к корневому мосту (обратите внимание, что процессоры в предыдущем вопросе находятся на шинах 0a и 81):

% /sbin/lspci -t

Правильно:

-+-[0000:80]-+-00.0
 | +-01.0
 | \-0e.0-[0000:81]----00.0
...
 \-[0000:00]-+-00.0
+-01.0
+-01.1
+-0e.0-[0000:0a]----00.0

Неправильно:

-+-[0000:81]---00.0
...
 \-[0000:00]-+-00.0
+-01.0
+-01.1
+-0e.0-[0000:0a]----00.0

Обратите внимание, что в первом примере шина 81 подсоединена к корневому мосту 80, но во втором примере нет корневого моста 80 и шина 81 неправильно подсоединена к корню дерева устройств. В таких случаях остается только обновление ядра на версию, правильно определяющую конфигурацию шины PCI.

Настройка Framelock и Genlock

Замечание: Возможности Frame Lock и Genlock поддерживаются только определенным оборудованием, как описано ниже.

Приложения визуальных расчетов, использующие несколько дисплеев, или несколько окон на дисплее, могут потребовать специальной обработки сигналов и органов управления для правильного функционирования. Например, для качественной видеозаписи анимированной графики, дисплей должен быть синхронизирован с видеокамерой. Другой пример: приложениям, выводящим изображение на несколько дисплеев, требуется синхронизация для создание полной иллюзии единого большого виртуального экрана.

Эта синхронизация включается с помощью возможностей framelock и genlock драйвера NVIDIA. В этом разделе описывается установка и использование framelock и genlock.

Используемые термины

GENLOCK: понятие, относящиеся к процессу синхронизации обновления пикселей на одном или нескольких дисплеях с внешним источником синхросигнала. NVIDIA genlock требует, чтобы внешний сигнал был или TTL, или композитным, таким как используется в ТВ-форматах NTSC, PAL, или HDTV. Следует помнить, что реализация NVIDIA genlock гарантирована только для синхронизации на уровне кадров, не обязательно на уровне пикселей.

FRAMELOCK: понятие, описывающее использование возможностей оборудования для синхронизации кадров на каждом дисплее, подключенном к системе. Когда графическое и видеоизображение выводятся на нескольких мониторах, система framelock позволяет облегчить поддержание целостности изображения для создания виртуального экрана. Framelock особенно необходим для просмотра стерео, когда поля для правого и левого глаза должны отображаться синхронно на всех дисплеях.

Вкратце, включение genlock означает синхронизацию с внешним сигналом. Включение framelock означает синхронизацию двух или более экранов Х-интерфейса с сигналом, вырабатываемом внутри оборудования; и включение обоих функций означает синхронизацию двух или более экранов Х-интерфейса с внешним сигналом.

SWAP SYNC: Понятие swap sync относится к синхронизации операций смены изображения между буферами нескольких окон приложения. Благодаря swap sync, приложения, запущенные на нескольких компьютерах, могут синхронно менять изображение между буферами приложения на всех компьютерах. Для работы синхронизации замены на нескольких компьютерах требуется, чтобы все они использовали framelock.

Устройство G-SYNC: Понятие G-Sync Device означает устройство, поддерживающее Framelock/Genlock. Это может быть видеокарта (Quadro FX 3000G) или отдельная плата (Quadro FX G-Sync). Обратитесь к секции "Поддерживаемое оборудование " ниже.

Поддерживаемое оборудование

Framelock и genlock поддерживаются следующим оборудованием:

Видеокарта
Quadro FX 3000G
Quadro FX G-Sync, используемая совместно с Quadro FX 4400, Quadro FX 4500
или Quadro FX 5500

Установка оборудования

Перед тем, как начать, вы должны проверить, что оборудование правильно установлено. Если используется видеокарта Quadro FX 3000G, оборудование обработки сигнала genlock/framelock расположено непосредственно в двухслотовой карте, и после установки видеокарты дополнительных действий не требуется.

Если используется плата Quadro FX G-Sync вместе с видеокартой, следующие действия должны быть выполнены при выключенном компьютере.

1. На плате Quadro FX G-Sync найдите 14-контактный разъем, помеченный как "primary". Если соответствующий шлейф еще не подключен к нему, сделайте это сейчас. Если планируется использовать framelock или genlock совместно с режимом SLI или MultiGPU (см. Главу 25) или другой многопроцессорной конфигурацией, вы должны присоединить 14-ти контактный разъем, помеченный "secondary", ко второму GPU. В конце этого приложения описаны ограничения подобной конфигурации.

2. Установите плату Quadro FX G-Sync в любой доступный слот шины. Учтите, что сам слот требуется лишь для закрепления видеокарты в корпусе, так что подходит даже неисправный слот шины. Слот должен быть достаточно близко к видеокарте, чтобы мог дотянутся шлейф.

3. Подсоедините другой конец шлейфа к 14-контактному разъему на видеокарте.

Теперь вы можете включить компьютер и начать установку genlock и/или framelock. Инструкции дальше подразумевают, что драйвер NVIDIA для Linux успешно установлен. Если он еще не установлен, обратитесь к Главе 4.

Настройка с помощью утилиты NVIDIA-SETTINGS

Framelock и genlock настраиваются через утилиту nvidia-settings. Обратитесь к странице руководства 'nvidia-settings(1)' и встроенной помощи утилиты (нажмите кнопку "Help" в нижнем правом углу для получения помощи по каждой странице).

Из закладки framelock утилиты nvidia-settings, вы можете добавлять экраны Х-интерфейса в синхронизируемую framelock/genlock группу, контролировать состояние группы и включать/выключать framelock и genlock.

После загрузки системы и запуска Х-интерфейса, запустите nvidia-settings как

% nvidia-settings

Вы можете запустить эту утилиту перед продолжением действий, поскольку она часто упоминается ее в дальнейшем обсуждении.

Настройка genlock и framelock описана раздельно. Дальше мы опишем их совместное использование.

Настройка GENLOCK

После загрузки системы подсоедините внешний сигнал к разъему (типа BNC) на видеокарте или на плате G-Sync. Имеется светодиодный индикатор рядом с разъемом. Ровный красный огонь показывает, что оборудование не может обнаружить синхросигнал. Зеленый огонь показывает, что оборудование ищет синхросигнал. Кратковременные красные вспышки означают, что все в порядке. Устройство G-Sync (видеокарта или плата G-Sync) должно быть правильно настроено перед продолжением.

На закладке framelock утилиты nvidia-settings, добавьте сервер Х-интерфейса, содержащий дисплей и устройство G-Sync, которые вы хотите синхронизировать с внешним источником, нажатием кнопки "Add Devices". Сервер Х-интерфейса обычно задается в формате "system:m.n", например:

mycomputer.domain.com:0.0

или

localhost:0.0

После добавления сервера X-интерфейса, в секции "G-Sync Devices" панели framelock появятся строки, отображающие текущую информацию об устройствах G-Sync, графических процессорах, присоединенных к этим устройствам G-Sync, и дисплеях, управляемых данными графическими процессорами. В частности, строки G-Sync показывают имя сервера, номер устройства G-Sync вместе с изображениями индикаторов "Receiving", "Rate", "House", "Port0"/"Port1" и информацией о задержках "Delay". Строки GPU показывают название GPU и его идентификатор для сервера. Строки Display Device показывают название дисплея и его тип, вместе с переключателями сервер/клиент, информацией о частоте обновления, изображениями индикаторов "Timing" и "Stereo".

После того, как устройства G-Sync и дисплеи были добавлены в группу framelock/genlock, необходимо выбрать устройство-сервер. Это выполняется установкой переключателя "Server" для выбранного дисплея.

Если используется плата G-Sync, необходимо также выбрать переключатель "Use House Sync if Present". Для включения синхронизации этого устройства с внешним источником нажмите кнопку "Enable Frame Lock". Дисплею может потребоваться время для синхронизации. Если изображение не стабилизировалось, вы могли выбрать сигнал синхронизации, неподдерживаемый системой. Необходимо отключить синхронизацию нажатием кнопки "Disable Frame Lock" и проверить внешний синхросигнал.

Изменения настроек genlock (например, "Use House Sync if Present", "AddDevices…") должны производиться при отключенной синхронизации.

Настройка FRAMELOCK

Framelock поддерживается на произвольном количестве компьютеров с видеокартами Quadro FX 3000 или Quadro FX G-Sync, хотя их смешивание в одной группе framelock не поддерживается. Дополнительно, каждая система, включаемая в группу framelock, должна быть настроена на идентичные параметры временной синхронизации видеорежима. Обратитесь к Главе 19 за информацией о параметрах временной синхронизации видеорежима.

Соедините компьютеры через разъемы RJ45, используя стандартные кабели категории 5. Эти порты размещены на самих видеокартах (Quadro FX 3000 или платах Quadro FX G-Sync). Не соединяйте порты с картой ETHERNET или хабом. Это может непоправимо повредить оборудование. Соединения должны выполняться по принципу последовательной цепочки: каждая карта имеет два RJ45 разъема, назовем их 1 и 2. Соедините разъем 1 компьютера A с разъемом 2 компьютера B, разъем 1 компьютера B с разъемом 2 компьютера C, и так далее. В вашей группе framelock в итоге должно всегда остаться два свободных разъема.

Разъемы самонастраиваются как входы и/или выходы после включения framelock. Каждый разъем имеет желтый и зеленый светодиодный индикаторы, отражающие их состояние. Мигающий желтый указывает выход, а мигающий зеленый — вход. Сплошной зеленый показывает, что разъем не используется.

На закладке framelock в утилите nvidia-settings, добавьте сервер Х-интерфейса, содержащий дисплеи, которые вы хотите синхронизировать, в группу framelock нажатием кнопки "Add Devices" (смотрите описание процесса добавления дисплеев выше в секции о настройке GENLOCK). Так же, как и в случае с genlock, колонки "Port0" и "Port1" в таблице на закладке framelock содержат изображения, отображающие состояние индикаторов разъемов RJ45. Так вы можете контролировать состояние сигнала программным путем.

Любой сервер Х-интерфейса может быть добавлен в группу framelock, если соблюдаются следующие условия

1. Система, поддерживающая сервер, настроена на использование framelock и подключена кабелем RJ45 к другой системе в группе framelock.

2. Запущенная в системе утилита nvidia-settings может обнаружить и имеет соответствующие привилегии сервера Х-интерфейса, включенного в framelock.

Система может получить привилегии экрана на удаленном компьютере выполнением команды

% xhost +

На удаленном компьютере. Обратитесь к странице руководства xhost(1) за дополнительной информацией. Обычно, управление framelock осуществляется с системы, включенной в группу framelock. Хотя это и не обязательно, учитывайте, что утилита nvidia-settings отобразит панель framelock только если запущена в сервере Х-интерфейса, поддерживающем framelock.

Для включения синхронизации этих дисплеев, нажмите кнопку "Enable Framelock". Синхронизация дисплея может занять некоторое время. Если изображение на дисплее не стабилизовалось, это может означать, что выбраны параметры временной синхронизации видеорежима, которые одна или несколько систем не поддерживают. В этом случае вам надо отключить синхронизацию кнопкой "Disable Framelock" и обратится к Главе 19 за информацией о параметрах временной синхронизации видеорежима.

Изменения настроек framelock ("Add/Remove Devices" и т.д.) должны производиться, когда синхронизация отключена.

Совместное использование FRAMELOCK и GENLOCK

Совместное использование framelock и genlock является простым продолжением действий, необходимых для использования каждого из них по отдельности, приведенных выше. Вам надо сначала следовать инструкциям по настройке Framelock, а затем к одной из систем, включенных в группу framelock, подключить внешний источник синхросигнала. Для синхронизации группы framelock с этим источником, вам надо указать дисплей, управляемый графическим процессором, подключенный к устройству G-Sync, как образец сигнала для всей группы. Для этого в панели framelock в утилите nvidia-settings выберите переключатель "Server". Если используется группа framelock, построенная на платах G-Sync, дополнительно должна быть выбрана опция "Use House Sync". Включите синхронизацию нажатием кнопки "Enable Framelock". Так же, как и с другими настройками framelock/genlock, выбор образца сигнала для группы должен осуществляться при отключенной синхронизации.

Настройка из командной строки с использованием утилиты NVIDIA-SETTINGS

Frame Lock также может быть настроен из командной строки с помощью утилиты nvidia-settings. Этот способ настройки может быть полезен для использования в скрипте при автоматизации процесса установки (обратите внимание, что приведенные ниже примеры зависят от конфигурации оборудования и не обязательно будут работать как написаны).


Для правильной настройки Frame Lock должны быть выполнены следующие действия:

_Убедитесь, что синхронизация Frame Lock отключена для всех графических процессоров.

_Убедитесь, что все дисплеи, которые планируется синхронизировать, настроены на одинаковую частоту обновления изображения.

_Выберите и задайте, какое устройство (комбинация «дисплей/графический процессор) будет эталоном.

_Настройте внешний сигнал (если применяется).

_Укажите подчиненные дисплеи.

_Включите синхронизацию frame lock на графическом процессоре-эталоне.

_Включите синхронизацию на подчиненных графических процессорах.

_Включите тестовый сигнал на графическом процессоре-эталоне (для проверки аппаратного соединения).

За полным списком настроек Frame Lock утилиты nvidia-settings обратитесь к странице руководства 'nvidia-settings(1)'. Примеры:


1. Один компьютер, одна видеокарта с функцией Frame Lock с одним графическим процессором и одним дисплеем, синхронизирующиеся с внешним сигналом:

# - Make sure frame lock sync is disabled

nvidia-settings -a [gpu:0]/FrameLockEnable=0

nvidia-settings -q [gpu:0]/FrameLockEnable


# - Query the enabled displays on the gpu

nvidia-settings -q [gpu:0]/EnabledDisplays


# - Check that the refresh rate is the one we want

nvidia-settings -q [gpu:0]/RefreshRate


# - Set the master display device to CRT-0. The desired display

# device(s) to be set are passed in as a hexadecimal number

# in which specific bits denote which display devices to set.

# examples:

#

# 0x00000001 - CRT-0

# 0x00000002 - CRT-1

# 0x00000003 - CRT-0 and CRT-1

#

# 0x00000100 - TV-0

# 0x00000200 - TV-1

#

# 0x00020000 - DFP-1

#

# 0x00010101 - CRT-0, TV-0 and DFP-0

#

# 0x000000FF - All CRTs

# 0x0000FF00 - All TVs

# 0x00FF0000 - All DFPs

#

# Note that the following command:

#

# nvidia-settings -q [gpu:0]/EnabledDisplays

#

# will list the available displays on the given GPU.


nvidia-settings -a [gpu:0]/FrameLockMaster=0x00000001

nvidia-settings -q [gpu:0]/FrameLockMaster

# - Enable use of house sync signal

nvidia-settings -a [framelock:0]/FrameLockUseHouseSync=1


# - Configure the house sync signal video mode

nvidia-settings -a [framelock:0]/FrameLockVideoMode=0


# - Set the slave display device to none (to avoid

# having unwanted display devices locked to the

# sync signal.)

nvidia-settings -a [gpu:0]/FrameLockSlaves=0x00000000

nvidia-settings -q [gpu:0]/FrameLockSlaves


# - Enable framelocking

nvidia-settings -a [gpu:0]/FrameLockEnable=1


# - Toggle the test signal

nvidia-settings -a [gpu:0]/FrameLockTestSignal=1

nvidia-settings -a [gpu:0]/FrameLockTestSignal=0


2. Два компьютера, каждый с двумя графическими процессорами, одна видеокарта с функцией Frame Lock и и по одному дисплею, подключенному к каждому графическому процессору, синхронизируются с первым дисплеем первого компьютера:


# - Make sure frame lock sync is disabled

nvidia-settings -a myserver:0[gpu:0]/FrameLockEnable=0

nvidia-settings -a myserver:0[gpu:1]/FrameLockEnable=0

nvidia-settings -a myslave1:0[gpu:0]/FrameLockEnable=0

nvidia-settings -a myslave1:0[gpu:1]/FrameLockEnable=0


# - Query the enabled displays on the GPUs

nvidia-settings -q myserver:0[gpu:0]/EnabledDisplays

nvidia-settings -q myserver:0[gpu:1]/EnabledDisplays

nvidia-settings -q myslave1:0[gpu:0]/EnabledDisplays

nvidia-settings -q myslave1:0[gpu:1]/EnabledDisplays


# - Check the refresh rate is the same for all displays

nvidia-settings -q myserver:0[gpu:0]/RefreshRate

nvidia-settings -q myserver:0[gpu:1]/RefreshRate

nvidia-settings -q myslave1:0[gpu:0]/RefreshRate

nvidia-settings -q myslave1:0[gpu:1]/RefreshRate


# - Make sure the display device we want as master is masterable

nvidia-settings -q myserver:0[gpu:0]/FrameLockMasterable


# - Set the master display device (CRT-0)

nvidia-settings -a myserver:0[gpu:0]/FrameLockMaster=0x00000001


# - Disable the house sync signal on the master device

nvidia-settings -a myserver:0[framelock:0]/FrameLockUseHouseSync=0


# - Set the slave display devices

nvidia-settings -a myserver:0[gpu:1]/FrameLockSlaves=0x00000001

nvidia-settings -a myslave1:0[gpu:0]/FrameLockSlaves=0x00000001

nvidia-settings -a myslave1:0[gpu:1]/FrameLockSlaves=0x00000001


# - Enable framelocking on server

nvidia-settings -a myserver:0[gpu:0]/FrameLockEnable=1


# - Enable framelocking on slave devices

nvidia-settings -a myserver:0[gpu:1]/FrameLockEnable=1

nvidia-settings -a myslave1:0[gpu:0]/FrameLockEnable=1

nvidia-settings -a myslave1:0[gpu:1]/FrameLockEnable=1


# - Toggle the test signal

nvidia-settings -a myserver:0[gpu:0]/FrameLockTestSignal=1

nvidia-settings -a myserver:0[gpu:0]/FrameLockTestSignal=0


3. Один компьютер с четырьмя графическими процессорами, двумя видеокартами с функцией Frame Lock и с двумя дисплеями, подключенными к каждому графическому процессору, синхронизируются с первым дисплеем, подключенным к первому графическому процессору:


# - Make sure frame lock sync is disabled

nvidia-settings -a [gpu:0]/FrameLockEnable=0

nvidia-settings -a [gpu:1]/FrameLockEnable=0

nvidia-settings -a [gpu:2]/FrameLockEnable=0

nvidia-settings -a [gpu:3]/FrameLockEnable=0


# - Query the enabled displays on the GPUs

nvidia-settings -q [gpu:0]/EnabledDisplays

nvidia-settings -q [gpu:1]/EnabledDisplays

nvidia-settings -q [gpu:2]/EnabledDisplays

nvidia-settings -q [gpu:3]/EnabledDisplays


# - Check the refresh rate is the same for all displays

nvidia-settings -q [gpu:0]/RefreshRate

nvidia-settings -q [gpu:1]/RefreshRate

nvidia-settings -q [gpu:2]/RefreshRate

nvidia-settings -q [gpu:3]/RefreshRate


# - Make sure the display device we want as master is masterable

nvidia-settings -q myserver:0[gpu:0]/FrameLockMasterable


# - Set the master display device (CRT-0)

nvidia-settings -a [gpu:0]/FrameLockMaster=0x00000001


# - Disable the house sync signal on the master device

nvidia-settings -a [framelock:0]/FrameLockUseHouseSync=1


# - Set the slave display devices

nvidia-settings -a [gpu:0]/FrameLockSlaves=0x00000002 # CRT-1

nvidia-settings -a [gpu:1]/FrameLockSlaves=0x00000003 # CRT-0 and CRT-1

nvidia-settings -a [gpu:2]/FrameLockSlaves=0x00000003 # CRT-0 and CRT-1

nvidia-settings -a [gpu:3]/FrameLockSlaves=0x00000003 # CRT-0 and CRT-1


# - Enable framelocking on master GPU

nvidia-settings -a [gpu:0]/FrameLockEnable=1


# - Enable framelocking on slave devices

nvidia-settings -a [gpu:1]/FrameLockEnable=1

nvidia-settings -a [gpu:2]/FrameLockEnable=1

nvidia-settings -a [gpu:3]/FrameLockEnable=1


# - Toggle the test signal

nvidia-settings -a [gpu:0]/FrameLockTestSignal=1

nvidia-settings -a [gpu:0]/FrameLockTestSignal=0


Применение FRAMELOCK/GENLOCK в OPENGL

Используя расширение GLX_NV_swap_group, приложения OpenGL могут присоединяться к группе приложений в системе для локальной синхронизации замены, и присоединять группу к границам области синхронизации замены группы framelock. Универсальный счетчик кадров framecounter также предоставляется для синхронизации между приложениями.

Ограничения FRAMELOCK:

Следующие ограничения должны учитываться при включении framelock:

1. Все дисплеи, установленные как клиенты в группе framelock должны иметь одинаковые параметры временной синхронизации с образцом (сервером). Если используется внешний синхросигнал (вместо внутренних временных параметров), все клиенты должны иметь частоту обновления, свопадающую с частотой внешнего синхросигнала.

2. Все экраны Х-интерфейса, размещенные на выбранных в качестве сервера/клиентов дисплеях, должны иметь идентичный стереорежим. Обратитесь к Главе 30 за информацией о настройке стереорежима в конфигурации Х-интерфейса.

3. Дисплей-образец (сервер) для framelock должен быть подключен к графическому процессору, первым подключенному к устройству G-Sync device.

4. Если только один графический процессор подключен к устройству G-Sync, должен использоваться основной разъем.

5. В конфигурациях с более чем одним дисплеем на графический процессор, рекомендуется использовать framelock для всех дисплеев на этих графических процессорах.

6. VT-переключение или mdoe-переключение отключит framelock для дисплея. Обратите внимание, что точка вхождения в процедуру glXQueryFrameCountNV (обеспечиваемая расширением OpenGL GLX_NV_swap_group extension) предоставляет возрастающую нумерацию только при включенном framelock. Таким образом, в приложениях, использующие glXQueryFrameCountNV для управления анимацией, будет наблюдаться остановка анимации при отключенном framelock.

Поддерживаемые конфигурации FRAMELOCK:

В настоящее время поддерживаются следующие конфигурации:

1. Основная конфигурация Frame Lock: один GPU, один экран X-интерфейса, один дисплей с, или без OpenGL приложений, использующих четырехкратно-буферизованного стерео и/или расширения GLX_NV_swap_group.

2. FrameLock совместно с TwinView: один GPU, один экран X-интерфейса, несколько дисплеев с, или без OpenGL приложений, использующих четырехкратно-буферизованного стерео и/или расширения GLX_NV_swap_group.

3. FrameLock совместно с Xinerama: 1 или несколько GPU, несколько экранов X-интерфейса, несколько дисплеев с, или без OpenGL приложений, использующих четырехкратно-буферизованного стерео и/или расширения GLX_NV_swap_group.

4. FrameLock вместе с TwinView и Xinerama: 1 или несколько GPU, несколько экранов X-интерфейса, несколько дисплеев с, или без OpenGL приложений, использующих четырехкратно-буферизованного стерео и/или расширения GLX_NV_swap_group.

5. FrameLock при использовании SLI SFR, AFR, или AA: 2 графических процессора, один экран X-интерфейса, один дисплей с OpenGL приложениями, использующими четырехкратно-буферизованное стерео или расширение GLX_NV_swap_group. Обратите внимание, что для данного сочетания не поддерживается одновременное использование приложениями четырехкратно-буферизованного стерео и расширения GLX_NV_swap_group. Также в настоящее время поддерживаются лишь двухпроцессорные конфигурации SLI.

6. FrameLock при использовании MultiGPU SFR, AFR, или AA: 2 графических процессора, один экран X-интерфейса, один дисплей с OpenGL приложениями, использующими четырехкратно-буферизованное стерео или расширение GLX_NV_swap_group. Обратите внимание, что для данного сочетания не поддерживается одновременное использование приложениями четырехкратно-буферизованного стерео и расширения GLX_NV_swap_group.

Настройка видеовыхода SDI

Телевещание, производство кинопродукции, постобработка видеоизображения и цифровой кинопоказ могут потребовать использования последовательных цифровых (SDI) или последовательных цифровых высокой четкости (HD-SDI) видеовыходов. SDI/HD-SDI – цифровые видеовыходы, используемые для передачи видеосигнала в несжатой форме, равно как и в форме пакетов данных. SDI стандартизован в ITU-R BT.656 и SMPTE 259M, тогда как HD-SDI стандартизован в SMPTE 292M. Стандарт SMPTE 372M расширяет HD-SDI до двухканальной конфигурации, использующей два канала SMPTE 292M для реализации интерфейса с пропускной способностью 2,970 Гбит/с. Стандарт SMPTE 424M дополнительно расширяет интерфейс до одноканального последовательного с пропускной способностью 2.97 Гбит/с для будущих применений.

Видеовыходы SDI и HD-SDI поддерживаются совместным использованием драйвера NVIDIA и дочерней платы NVIDIA, реализующей SDI выход. В дополнение к одно- и двухканальным видеовыходам SDI/HD-SDI предоставляются функции синхронизации framelock и genlock для синхронизации видеосигнала с внешним источником (обратитесь к Главе 26 за информацией об использовании этих технологий). В данной главе описаны установка и использование SDI видеовыхода.

Установка оборудования

В начале, вы должны проверить, что ваше оборудование правильно установлено. Если вы используете видеокарту Quadro FX 4000SDI, оборудование SDI/HD-SDI размещено непосредственно на двухплатной видеокарте и после установки видеокарты дополнительной установки не требуется. Если используется видеокарта Quadro FX 4500/5500SDI или Quadro FX 4600/5600 SDI II, требуется выполнить нижеперечисленные шаги для соединения дочерней платы с выходом SDI с видеокартой. Эти шаги должны быть выполнены при выключенном компьютере.


_Установите дочернюю плату с выходом SDI в доступный слот шины на расстоянии в пределах 150 см. от видеокарты NVIDIA Quadro. Зафиксируйте дочернюю плату, как предусмотрено конструкцией корпуса компьютера (обычно винтом или защелкой).

_Соедините один конец 14-контактного гибкого кабеля с разъемом G-Sync на видеокарте Quadro, и другой конец – с дочерней платой SDI.

_Для видеокарты Quadro FX 4500/5500SDI подключите адаптер SMA-BNC, вкрутив коннектор SMA типа "папа" в разъем SMA типа "мама" на дочерней плате SDI. Для видеокарты Quadro FX 4600/5600 SDI II данный шаг не требуется, так как она изначально оснащена разъемами BNC вместо разъемов SMA.

_Установите соединение DVI-loopback, для чего один конец кабеля DVI подключите к порту DVI на дочерней плате SDI и другой конец – к "северному" (верхнему) порту DVI на видеокарте Quadro. "Северным" портом DVI на видеокарте Quadro является порт DVI, наиболее удаленный от места соединения видеокарты с слотом шины PCI-E на материнской плате. Дочерняя плата SDI не будет функционировать корректно, если кабель DVI будет соединен к "южным" (нижним) портом DVI.


После выполнения вышеприведенной последовательности установки можно включить компьютер и настроить видеовыход SDI, используя утилиту nvidia-settings. Подразумевается, что вы уже успешно установили драйвер NVIDIA для Linux. Если вы еще этого не сделали, обратитесь к Главе 4 за дополнительной информацией.

Настройка для режима "КЛОН" с помощью утилиты 'nvidia-settings'

Видеовыход SDI настраивается с помощью утилиты nvidia-settings. Обратитесь к странице руководства 'nvidia-settings(1)' и встроенной помощи утилиты nvidia-settings (щелкните кнопку "Help" в нижнем правом углу экрана программы для получения помощи по текущей странице).

После загрузки системы и запуска Х-интерфейса запустите утилиту nvidia-settings как указано ниже:


% nvidia-settings


При появлении страницы настроек сервера X-интерфейса, выполните следующие шаги для настройки видеовыхода SDI:

1. В дереве бокового меню выберите пункт "Graphics to Video Out". Откроется страница "Graphics to Video Out".

2. Перейдите к закладке "Synchronization Options" и настройте метод синхронизации. Из выпадающего меню "Sync Options" выберите предпочтительный для вас метод синхронизации для видеовыхода SDI.

Метод синхронизации Описание
Free RunningВыход SDI будет синхронизирован согласно набору временных характеристик (таймингам), выбранному из списка возможных форматов видеосигнала SDI.
GenlockВыход SDI будет синхронизирован с внешним синхросигналом.
Frame LockВыход SDI будет синхронизирован согласно набору временных характеристик (таймингам), выбранному из списка возможных форматов видеосигнала SDI. При этом список доступных наборов временных характеристик будет ограничен наборами, совместимыми с обнаруженным внешним синхросигналом.

Обратите внимание, что для видеокарты Quadro FX 4600/5600 SDI II вы должны сначала правильно указать метод синхронизации, перед тем как станет возможным определить входящий внешний синхросигнал.


3. Наверху страницы "Graphics to Video Out" выберите формат выходящего видеосигнала, который определит разрешение, частоту полей и стандарт сигнализации SMPTE в выходящем видеосигнале. В выпадающем элементе интерфейса "Clone Mode" щелкните стрелку, подписанную как "Video Format", после чего щелкните по выбранному формату сигнала. Обратите внимание, что будут доступны лишь разрешения, меньшие либо равные текущему разрешению рабочего стола. Указанный список также будет ограничен согласно выбранному методу синхронизации. Если выбран метод genlock, формат выходящего видеосигнала будет автоматически установлен совпадающим с входящим синхросигналом, и данный список будет отключен, не позволяя выбрать иной формат. Если выбран метод framelock, в списке будут доступны только форматы, совместимые с обнаруженным синхросигналом.

4. Выберите формат выходящего потока данных из выпадающего списка "Output Data Format".

5. Щелкните "Enable SDI Output" для включения видеовыхода с использованием выбранных настроек. Состояние видеовыхода SDI может быть просмотрено изучением значений индикаторов "LED" на закладке "Graphics to SDI property".

6. Для выключения выхода SDI щелкните на ту же кнопку, имеющую теперь значение "Disable SDI Output".

7.Для изменения любых параметров выхода SDI, таких как формат выходящего видеосигнала или задержка синхронизации, требуется предварительно выключить выход SDI.

Настройка для TWINVIEW или отдельного экрана X-интерфейса

Видеовыход SDI может быть настроен с помощью утилиты nvidia-settings для использования в конфигурации TwinView или как отдельный экран Х-интерфейса. Выход SDI можно настроить аналогично цифровому плоскому монитору, выбрав разрешение, частоту обновления и положение на рабочем столе. Также, выход SDI может быть настроен для использования в конфигурации TwinView или как отдельный экран Х-интерфейса путем редактирования файла конфигурации X-интерфейса. Поддерживаемые видеорежимы SDI могут быть вызваны по названию в настройках видеорежимов файла конфигурации X-интерфейса (либо в строке "Modes", либо в опции "MetaModes"). Например:


Option "MetaModes" "CRT-0:nvidia-auto-select, DFP-1:1280x720_60.00_smpte296"


Название видеорежима также сообщается в утилите nvidia-settings на странице "Display Configuration" в расширенном режиме.

Обратите внимание, что настройка SDI в режим "Клон" на странице "Graphics to Video Out" утилиты nvidia-settings взаимоисключительна с настройкой SDI для TwinView или как отдельного экрана X-интерфейса.

Настройка 30-битного цветового представления

Утилита 'nvidia-installer' была создана под впечатлением от инструмента 'loki_update' : http://www.lokigames.com/development/loki_update.php3/

Поддержка FTP и HTTP в 'nvidia-installer' основана на решении 'snarf 7.0': http://www.xach.com/snarf/

Самораспаковывающиеся архивы ('.run' файл) создаются с помощью скрипта 'makeself.sh': http://www.megastep.org/makeself/.

Логитип драйвера при загрузке декодируется с помощью библиотеки 'libpng': http://libpng.org/pub/png/libpng.html

Драйвер содержит программный код из модуля int10 проекта X.Org.

BSD-варианты следующих инструкций компилятора используются для улучшения совместимости: __udivdi3, __umoddi3, __moddi3, __ucmpdi2, __cmpdi2, __fixunssfdi, и __fixunsdfdi.

Поддерживаемые графические процессоры NVIDIA

За наиболее полным и точным списком поддерживаемых графических процессоров обратитесь к списку поддерживаемого оборудования на странице загрузки драйверов для Linux сайта NVIDIA. Перейдите на страницу http://www.nvidia.com/object/unix.html, выберите ссылку «Archive» под надписью Linux x86, выберите ссылку для нужной версии драйвера и перейдите к «Supported Products List».


Графические процессоры серии GeForce

Название чипа NVIDIADevice PCI ID
GeForce 6800 Ultra0x0040
GeForce 68000x0041
GeForce 6800 LE0x0042
GeForce 6800 XE0x0043
GeForce 6800 XT0x0044
GeForce 6800 GT0x0045
GeForce 6800 GT0x0046
GeForce 6800 GS0x0047
GeForce 6800 XT0x0048
GeForce 7800 GTX0x0090
GeForce 7800 GTX0x0091
GeForce 7800 GT0x0092
GeForce 7800 GS0x0093
GeForce 7800 SLI0x0095
GeForce Go 78000x0098
GeForce Go 7800 GTX0x0099
GeForce 6800 GS0x00C0
GeForce 68000x00C1
GeForce 6800 LE0x00C2
GeForce 6800 XT0x00C3
GeForce Go 68000x00C8
GeForce Go 6800 Ultra0x00C9
GeForce 68000x00F0
GeForce 6600 GT0x00F1
GeForce 66000x00F2
GeForce 62000x00F3
GeForce 6600 LE0x00F4
GeForce 7800 GS0x00F5
GeForce 6800 GS0x00F6
GeForce 6800 Ultra0x00F9
GeForce PCX 57500x00FA
GeForce PCX 59000x00FB
GeForce PCX 53000x00FC
GeForce 6600 GT0x0140
GeForce 66000x0141
GeForce 6600 LE0x0142
GeForce 6600 VE0x0143
GeForce Go 66000x0144
GeForce 6610 XL0x0145
GeForce Go 6600 TE/6200 TE0x0146
GeForce 6700 XL0x0147
GeForce Go 66000x0148
GeForce Go 6600 GT0x0149
GeForce 62000x014F
GeForce 65000x0160
GeForce 6200 TurboCache(TM)0x0161
GeForce 6200SE TurboCache(TM)0x0162
GeForce 6200 LE0x0163
GeForce Go 62000x0164
GeForce Go 64000x0166
GeForce Go 62000x0167
GeForce Go 64000x0168
GeForce 62500x0169
GeForce 7100 GS0x016A
GeForce 8800 GTX0x0191
GeForce 8800 GTS0x0193
GeForce 8800 Ultra0x0194
Tesla C8700x0197
GeForce 7350 LE0x01D0
GeForce 7300 LE0x01D1
GeForce 7300 SE/7200 GS0x01D3
GeForce Go 72000x01D6
GeForce Go 73000x01D7
GeForce Go 74000x01D8
GeForce 7500 LE0x01DD
GeForce 7300 GS0x01DF
GeForce 68000x0211
GeForce 6800 LE0x0212
GeForce 6800 GT0x0215
GeForce 6800 XT0x0218
GeForce 62000x0221
GeForce 6200 A-LE0x0222
GeForce 61500x0240
GeForce 6150 LE0x0241
GeForce 61000x0242
GeForce Go 61500x0244
GeForce Go 61000x0247
GeForce 7900 GTX0x0290
GeForce 7900 GT/GTO0x0291
GeForce 7900 GS0x0292
GeForce 7950 GX20x0293
GeForce 7950 GX20x0294
GeForce 7950 GT0x0295
GeForce Go 7950 GTX0x0297
GeForce Go 7900 GS0x0298
GeForce Go 7900 GTX0x0299
GeForce 7600 GT0x02E0
GeForce 7600 GS0x02E1
GeForce 7900 GS0x02E3
GeForce 7950 GT0x02E4
GeForce FX 5800 Ultra0x0301
GeForce FX 58000x0302
GeForce FX 5600 Ultra0x0311
GeForce FX 56000x0312
GeForce FX 5600XT0x0314
GeForce FX Go56000x031A
GeForce FX Go56500x031B
GeForce FX 52000x0320
GeForce FX 5200 Ultra0x0321
GeForce FX 52000x0322
GeForce FX 5200LE0x0323
GeForce FX Go52000x0324
GeForce FX Go52500x0325
GeForce FX 55000x0326
GeForce FX 51000x0327
GeForce FX Go5200 32M/64M0x0328
GeForce FX Go53xx0x032C
GeForce FX Go51000x032D
GeForce FX 5900 Ultra0x0330
GeForce FX 59000x0331
GeForce FX 5900XT0x0332
GeForce FX 5950 Ultra0x0333
GeForce FX 5900ZT0x0334
GeForce FX 5700 Ultra0x0341
GeForce FX 57000x0342
GeForce FX 5700LE0x0343
GeForce FX 5700VE0x0344
GeForce FX Go57000x0347
GeForce FX Go57000x0348
GeForce 7650 GS0x0390
GeForce 7600 GT0x0391
GeForce 7600 GS0x0392
GeForce 7300 GT0x0393
GeForce 7600 LE0x0394
GeForce 7300 GT0x0395
GeForce Go 76000x0398
GeForce Go 7600 GT0x0399
GeForce 6150SE nForce 4300x03D0
GeForce 6100 nForce 4050x03D1
GeForce 6100 nForce 4000x03D2
GeForce 6100 nForce 4200x03D5
GeForce 8600 GTS0x0400
GeForce 8600 GT0x0401
GeForce 8600 GT0x0402
GeForce 8400 GS0x0404
GeForce 9500M GS0x0405
GeForce 8600M GT0x0407
GeForce 8700M GT0x0409
GeForce 8400 SE0x0420
GeForce 8500 GT0x0421
GeForce 8400 GS0x0422
GeForce 8300 GS0x0423
GeForce 8400 GS0x0424
GeForce 8600M GS0x0425
GeForce 8400M GT0x0426
GeForce 8400M GS0x0427
GeForce 8400M G0x0428
GeForce 7150M / nForce 630M0x0531
GeForce 7000M / nForce 610M0x0533
GeForce 7050 PV / NVIDIA nForce 630a0x053A
GeForce 7050 PV / NVIDIA nForce 630a0x053B
GeForce 7025 / NVIDIA nForce 630a0x053E
GeForce 8800 GTS 5120x0600
GeForce 8800 GT0x0602
GeForce 9800 GX20x0604
GeForce 8800 GS0x0606
GeForce 8800M GTS0x0609
GeForce 8800M GTX0x060C
GeForce 8800 GS0x060D
GeForce 9600 GSO0x0610
GeForce 8800 GT0x0611
GeForce 9800 GTX0x0612
GeForce 9600 GT0x0622
GeForce 9600 GS0x0623
GeForce 8400 GS0x06E4
GeForce 7150 / NVIDIA nForce 630i0x07E0
GeForce 7100 / NVIDIA nForce 630i0x07E1
GeForce 7050 / NVIDIA nForce 610i0x07E3
GeForce 83000x0848
GeForce 82000x0849
nForce 730a0x084A
GeForce 82000x084B
GeForce 8100 / nForce 720a0x084F

Графические процессоры серии Quadro

Название чипа NVIDIADevice PCI ID
Quadro FX 40000x004E
Quadro FX 45000x009D
Quadro FX Go14000x00CC
Quadro FX 3450/4000 SDI0x00CD
Quadro FX 14000x00CE
Quadro FX 4400/Quadro FX 34000x00F8
Quadro FX 3300x00FC
Quadro NVS 280 PCI-E/Quadro FX 3300x00FD
Quadro FX 13000x00FE
Quadro NVS 4400x014A
Quadro FX 540M0x014C
Quadro FX 5500x014D
Quadro FX 5400x014E
Quadro NVS 2850x0165
Quadro FX 56000x019D
Quadro FX 46000x019E
Quadro NVS 110M0x01D7
Quadro NVS 110M0x01DA
Quadro NVS 120M0x01DB
Quadro FX 350M0x01DC
Quadro FX 3500x01DE
Quadro NVS 210S0x0245
Quadro FX 2500M0x029A
Quadro FX 1500M0x029B
Quadro FX 55000x029C
Quadro FX 35000x029D
Quadro FX 15000x029E
Quadro FX 4500 X20x029F
Quadro FX 20000x0308
Quadro FX 10000x0309
Quadro FX Go7000x031C
Quadro NVS 55/280 PCI0x032A
Quadro FX 500/FX 6000x032B
Quadro FX 30000x0338
Quadro FX 7000x033F
Quadro FX Go10000x034C
Quadro FX 11000x034E
Quadro FX 5600x039E
Quadro FX 3700x040A
Quadro NVS 320M0x040B
Quadro FX 570M0x040C
Quadro FX 1600M0x040D
Quadro FX 5700x040E
Quadro FX 17000x040F
Quadro NVS 140M0x0429
Quadro NVS 130M0x042A
Quadro NVS 135M0x042B
Quadro FX 360M0x042D
Quadro NVS 2900x042F
Quadro FX 37000x061A
Quadro FX 3600M0x061C

Ниже перечислены устаревшие графические процессоры, которые больше не поддерживаются унифицированным драйвером. Их поддержка продолжится выпуском специальных версий драйвера NVIDIA.

Драйверы версий 1.0-96xx поддерживают следующие графические процессоры:

Название чипа NVIDIADevice PCI ID
GeForce2 MX/MX 4000x0110
GeForce2 MX 100/2000x0111
GeForce2 Go0x0112
Quadro2 MXR/EX/Go0x0113
GeForce4 MX 4600x0170
GeForce4 MX 4400x0171
GeForce4 MX 4200x0172
GeForce4 MX 440-SE0x0173
GeForce4 440 Go0x0174
GeForce4 420 Go0x0175
GeForce4 420 Go 32M0x0176
GeForce4 460 Go0x0177
Quadro4 550 XGL0x0178
GeForce4 440 Go 64M0x0179
Quadro NVS0x017A
Quadro4 500 GoGL0x017C
GeForce4 410 Go 16M0x017D
GeForce4 MX 440 with AGP8X0x0181
GeForce4 MX 440SE with AGP8X0x0182
GeForce4 MX 420 with AGP8X0x0183
GeForce4 MX 40000x0185
Quadro4 580 XGL0x0188
Quadro NVS 280 SD0x018A
Quadro4 380 XGL0x018B
Quadro NVS 50 PCI0x018C
GeForce2 Integrated GPU0x01A0
GeForce4 MX Integrated GPU0x01F0
GeForce30x0200
GeForce3 Ti 2000x0201
GeForce3 Ti 5000x0202
Quadro DCC0x0203
GeForce4 Ti 46000x0250
GeForce4 Ti 44000x0251
GeForce4 Ti 42000x0253
Quadro4 900 XGL0x0258
Quadro4 750 XGL0x0259
Quadro4 700 XGL0x025B
GeForce4 Ti 48000x0280
GeForce4 Ti 4200 with AGP8X0x0281
GeForce4 Ti 4800 SE0x0282
GeForce4 4200 Go0x0286
Quadro4 980 XGL0x0288
Quadro4 780 XGL0x0289
Quadro4 700 GoGL0x028C

Драйверы версий 1.0-71xx поддерживают следующие графические процессоры:

Название чипа NVIDIADevice PCI ID
RIVA TNT0x0020
RIVA TNT2/TNT2 Pro0x0028
RIVA TNT2 Ultra0x0029
Vanta/Vanta LT0x002C
RIVA TNT2 Model 64/Model 64 Pro0x002D
Aladdin TNT20x00A0
GeForce 2560x0100
GeForce DDR0x0101
Quadro0x0103
GeForce2 GTS/GeForce2 Pro0x0150
GeForce2 Ti0x0151
GeForce2 Ultra0x0152
Quadro2 Pro0x0153

Опции настройки Х-интерфейса

Следующие настройки поддерживаются драйвером NVIDIA для X-интерфейса. Они могут быть введены в секциях Screen или Device файла конфигурации X-интерфейса.

Option "NvAGP" "целое число"

Настраивает поддержку AGP. Может принимать целые значения:

ЗначениеПоведение
1Использование встроенной поддержки AGP NVIDIA, если возможно
2Использование AGPGART, если возможно
3Использование любой поддержки AGP (сначала попытка использовать AGPGART, затем NVIDIA AGP)

Обратите внимание, что встроенная поддержка AGP NVIDIA не может работать, если AGPGART скомпилирован в составе ядра или собран как модуль и загружен в ядро. Обратитесь к Главе 12 за дополнительной информацией.

Значение по умолчанию: 3.

Option "NoLogo" "логическое"

Отключает прорисовку логотипа NVIDIA во время запуска Х-интерфейса.

Значение по умолчанию: Логотип отображается.

Option "LogoPath" "строка текста"

Устанавливает путь к файлу в формате PNG, используемому как логотип во время запуска Х-интерфейса. Если в файле PNG задано значение bKGD (цвет фона), то экран окрашивается в этот цвет, иначе экран будет черным. Файл логотипа должен быть в собственности у пользователя root и должен быть закрыт на запись для пользователей не из группы root.

Значение по умолчанию: Используется встроенный логотип NVIDIA.

Option "RenderAccel" "логическое"

Включает или отключает аппаратное ускорение расширения RENDER.

Значение по умолчанию: аппаратное ускорение расширения RENDER включено.

Option "NoRenderExtension" "логическое"

Отключает расширение RENDER. Иначе как перекомпиляцией сервер Х-интерфейса не позволяет отключить эту функцию. К счастью, возможно управлять этой функцией из драйвера, так что мы ввели эту опцию. Это полезно при использовании глубины цвета 8-бит, когда RENDER обычно забирает большую часть палитры цветов по-умолчанию.

Значение по умолчанию: RENDER используется, когда возможно.

Option "UBB" "логическое"

Включение или отключение использования общего буфера заднего плана графических процессоров Quadro (за исключением Quadro4 NVS); обратитесь к Главе 20 за описанием UBB. Эта опция не имеет эффекта для не-Quadro процессоров.

Значение по умолчанию: UBB включен для Quadro процессоров.

Option "NoFlip" "логическое"

Отключение переключения OpenGL (flipping); обратитесь к Главе 20 за описанием. Эта опция отключает функцию AllowFlipping расширения NV-CONTROL.

Значение по умолчанию: OpenGL меняет буферы переключением когда это возможно.

Option "Dac8Bit" "логическое"

Большинство продуктов Quadro используют 10-битную таблицу цветов (LUT) по-умолчанию; присвоение этой опции значения TRUE заставляет эти графические процессоры использовать 8-битную таблицу LUT.

Значение по умолчанию: Используется 10-битная LUT когда возможно.

Option "Overlay" "логическое"

Включает RGB наложения (overlays) для рабочих станций. Эта функция поддерживается только графическими процессорами Quadro4 и Quadro FX (за исключением Quadro4 NVS) при глубине цвета 24-бита. Эта опция заставляет сервер сообщать о поддержке свойства корневого окна SERVER_OVERLAY_VISUALS и GLX о поддержке однократно- и дважды- буферизованных, Z-буферизированных 16-битных наложений. Код прозрачности — пиксель pixel 0x0000 (hex). Нет поддержки гамма-регулировки для налагаемых поверхностей. Эта функция требует сервер XFree86 версии 4.1.0 или более новой, или сервер Xorg X. Графические процессоры Quadro 500 and 550 XGL имеют дополнительные ограничения: наложения не поддерживаются в режиме TwinView или при размере виртуального рабочего стола шире 2046 или выше 2047 пикселей.
Графические процессоры Quadro 7xx/9xx и Quadro FX поддерживают наложения в этих режимах (TwinView, или виртуальный рабочий стол больше чем 2046x2047), но наложения будут эмулироваться с существенной потерей производительности. Наложения RGB не поддерживаются при использовании расширения Composite. Динамическая конфигурация режима TwinView отключена при включенных наложениях.

Значение по умолчанию: Off.

Опция UBB должна быть разрешена при разрешении наложений (это поведение по умолчанию).

Option "CIOverlay" "логическое"

Включает наложения с индексированной цветовой палитрой с теми же ограничениями, что и в опции "Overlay" выше. Сервер будет сообщать о поддержке наложений как с кодом прозрачности, так и без него. Это псевдополноцветные объекты с глубиной цвета 8-бит. Задействование наложений с индексированной цветовой палитрой на серверах Х-интерфейса версии меньше XFree86 4.3 приведет к отключению расширения RENDER из-за ошибок в этом расширении в старых версиях серверов Х-интерфейса. Наложения с индексированной цветовой палитрой не поддерживаются при использовании расширения Composite.

Значение по умолчанию: off.

Опция UBB должна быть разрешена при разрешении наложений (это поведение по умолчанию).

Option "TransparentIndex" "целое число"

При включенных наложениях с индексированной цветовой палитрой используйте эту опцию для выбора пикселя, используемого в качестве прозрачного в объектах с прозрачными пикселами. Значение должно быть из диапазона от 0 до 255 (обратите внимание, некоторые приложения, такие как Maya компании Alias, требуют, чтобы это значение было 0 для правильной работы).

Значение по умолчанию: 0.

Option "OverlayDefaultVisual" "логическое"

При использовании наложений эта опция помещает корневое окно в наложение. Эта опция не рекомендуется для RGB наложений.

Значение по умолчанию: off.

Option "EmulatedOverlaysTimerMs" "целое число"

Включает таймер, в соответствие с которым сервер X-интерфейса обновляет изображение в эмулируемом наложении или в наложении с индексированной цветовой палитрой. Данная опция позволяет улучшить производительность таких наложений за счет уменьшения частоты обновления изображения. В опции задается интервал в миллисекундах между обновлениями изображения в наложении. Для отключения таймера оставьте опцию не установленной или присвойте ей значение 0.

Значение по умолчанию: off.

Option "EmulatedOverlaysThreshold" "логическое"

Включает использование порога, при превышении которого сервер X-интерфейса выпоняет обновление изображения в эмулируемом наложении или в наложении с индексированной цветовой палитрой. Процедура обновления изображения в наложении может быть отложен, но данный порог ограничивает разрешенное число отложенных процедур OpenGL до обновления изображения. Данная опция может быть использована для настройки производительности и качества анимации.

Значение по умолчанию: on.

Option "EmulatedOverlaysThresholdValue" "целое число"

Задает порог обновления изображения в эмулируемом наложении или в наложении с индексированной цветовой палитрой. Эта опция используется совместно с опцией EmulatedOverlaysThreshold для настройки производительности и качества. Большие значения опции сдвинут баланс производительности и качества в сторону производительност. Задание меньших значений в этой опции не приведет к обновлению изображения в наложении чаще, чем задано в опции EmulatedOverlaysTimerMs.

Значение по умолчанию: 5.

Option "RandRRotation" "логическое"

Задействует поддержку вращения для расширения XRandR. Это позволяет использовать серверу Х-интерфейса расширение XRandR для настройки ориентации экрана через вращение. Эта функция поддерживается графическими процессорами GeForce2 и выше при глубине цвета 24-бит. Требуется X.Org X 6.8.1 или более новый сервер X-интерфейса. Эта функция не работает с аппаратными наложениями, что приводит к использованию эмулированных наложений и снижению производительности. Обратитесь к Главе 17 за дополнительной информацией.

Значение по умолчанию: off.

Option "Rotate" "строка текста"

Задействует поддержку статического вращения. В отличие от предыдущей опции RandRRotation, эта опция работает сразу же после запуска сервера Х-интерфейса и в старых версиях сервера. Эта функция поддерживается графическими процессорами GeForce2 и выше при глубине цвета 24-бит. Эта функция не работает с аппаратными наложениями, что приводит к использованию эмулированных наложений и снижению производительности.

Значение по умолчанию: off.

Option "AllowDDCCI" "логическое"

Задействует протокол DDC/CI в расширении NV-CONTROL X. DDC/CI — протокол обмена информацией между компьютером и дисплеем. Он позволяет изменять настройки, обычно изменяемые через экранное меню дисплея. Обратитесь к списку признаков DDC/CI NV-CONTROL в 'NVCtrl.h' и функций в 'NVCtrlLib.h' в исходных текста утилиты 'nvidia-settings'.

Значение по умолчанию: Off (протокол DDC/CI выключен).

Обратите внимание, что поддержка DDC/CI в расширении NV-CONTROL драйвера Х-интерфейса NVIDIA прекращена, и будет удалена из будущих выпусков драйвера. Иные механизмы для работы с DDC/CI, такие как подсистема i2c ядра операционной системы Linux, более предпочтительны по сравнению с поддержкой DDC/CI в расширении NV-CONTROL. Если вы не желаете удаления из расширения NV-CONTROL драйвера Х-интерфейса NVIDIA поддержки DDC/CI, пожалуйста изложите ваши соображения по электронной почте на адрес linux-bugs@nvidia.com

Option "SWCursor" "логическое"

Включает или выключает использование программной прорисовки курсора Х-интерфейса.

Значение по умолчанию: Off.

Option "HWCursor" "логическое"

Включает или выключает использование аппаратной прорисовки курсора Х-интерфейса.

Значение по умолчанию: On.

Option "CursorShadow" "логическое"

Включает или выключает прорисовку тени для аппаратного курсора, это темная полупрозрачная копия очертания курсора, выводимая с некоторым смещением от настоящего курсора.

Значение по умолчанию: Off (тени у курсора нет).

Option "CursorShadowAlpha" "целое число"

Степень прозрачности тени курсора, только если включена опция CursorShadow. Значение должно быть в диапазоне от 0 до 255, где 0 — тень полностью прозрачная, 255 — полностью непрозрачная.

Значение по умолчанию: 64.

Option "CursorShadowXOffset" "целое число"

Смещение в пикселях, на которое изображение тени сдвигается вправо от настоящего курсора, только если включена опция CursorShadow. Значение должно быть из диапазона 0 — 32.

Значение по умолчанию: 4.

Option "CursorShadowYOffset" "целое число"

Смещение в пикселях, на которое изображение тени сдвигается вниз от настоящего курсора, только если включена опция CursorShadow. Значение должно быть из диапазона 0 — 32.

Значение по умолчанию: 2.

Option "ConnectedMonitor" "строка текста"

Позволяет переопределить устройства, распознанные модулем уровня ядра драйвера NVIDIA как подключенные к видеокарте. Это может быть полезным, если используется KVM (клавиатура, видео, мышь) переключатель, и вы переключились на другой компьютер при запущенном Х-интерфейсе. В такой ситуации модуль уровня ядра драйвера NVIDIA не обнаруживает подключенные устройства, и драйвер Х-интерфейса NVIDIA считает, что у вас установлен только электронно-лучевой монитор.

Допустимыми значениями являются "CRT" (электронно-лучевой монитор), "DFP" (цифровой плоский монитор), или "TV" (телевизор); если используется TwinView, эта опция может иметь значение в виде перечня устройств, разделенных запятыми, например: "CRT, CRT" или "CRT, DFP".

Рекомендуется не пользоваться этой опцией, и сперва использовать опцию "UseDisplayDevice".

Замечание: все, что подключено к 15-контактному выходу VGA трактуется драйвером как CRT. "DFP" должно использоваться только если речь идет о цифровом мониторе, подключенном к порту DVI.

Значение по умолчанию: строка пуста (драйвер NVIDIA определяет подключенные устройства).

Option "UseDisplayDevice" "строка текста"

Опция "UseDisplayDevice" представляет собой список из одного или нескольких дисплеев, ограничивающий дисплеи, которые драйвер Х-интерфейса NVIDIA определит для экрана Х-интерфейса. Дисплеи в опции могут указываться как конкретные (с добавлением номера, например: "DFP-1") или в целом (без номера, например: "DFP").

При назначении дисплеев экранам X-интерфейса драйвер Х-интерфейса NVIDIA последовательно просматривает список всех (кроме уже назначенных) обнаруженных подключенных дисплеев. Если задана опция "UseDisplayDevice", драйвер Х-интерфейса будет определять лишь те подключенные дисплеи, что также перечислены в списке в опции "UseDisplayDevice". Этим можно воспользоваться как способом скрытия подключенных (и еще не назначенных) дисплеев.

Обратите внимание на разницу между этой опцией и опцией "ConnectedMonitor": опция "ConnectedMonitor" изменяет порядок собственно обнаружения подключенных дисплеев, тогда как в "UseDisplayDevice" задается дисплей, прикрепляемый к конкретному экрану Х-интерфейса.

В списке дисплеев, определенных для данного экрана X-интерфейса (либо все подключенные дисплеи, либо ограниченные заданным в опции "UseDisplayDevice"), драйвер Х-интерфейса NVIDIA прежде всего просматривает электронно-лучевые мониторы, затем цифровые плоские мониторы и в последнюю очередь – телевизоры. Например, если подключены и электронно-лучевой монитор, и цифровой плоский, по-умолчанию драйвер X-интерфейса назначит электронно-лучевой монитор данному экрану X-интерфейса. Но если задать:


Option "UseDisplayDevice" "DFP"


экран X-интерфейса будет выведен на цифровой плоский монитор. Или, например, если подключены дисплеи CRT-0, DFP-0 и DFP-1, и включен режим TwinView, драйвер назначит дисплеи CRT-0 и DFP-0 к экрану Х-интерфейса. А если задать:


Option "UseDisplayDevice" "CRT-0, DFP-1"


экран Х-интерфейса будет выведен на дисплеи CRT-0 и DFP-1.

Дополнительно, специальное значение "none" может быть установлено для опции "UseDisplayDevice". При этом отменяется вся настройка дисплеев. Драйвер NVIDIA не будет выполнять никаких действий по проверке доступных видеорежимов и установке видеорежима для данного экрана X-интерфейса. Данная возможность предназначена для случаев использования системы вычислений CUDA или удаленного управления компьютером посредством VNC или Hewlett Packard' s Remote Graphics Software (RGS). Данная возможность доступна лишь для графических процессоров Quadro и Tesla.

Обратите внимание на следующие ограничения, имеющиеся при установке опции "UseDisplayDevice" в значение "none":

1.Вызовы OpenGL SyncToVBlank не будут иметь никакого эффекта.

2.Вы должны также прямо указать размер виртуального экрана для экрана Х-интерфейса (обратитесь к страницам руководств xorg.conf(5x) или XF86Config(5x) за описанием опции 'Virtual', или к руководству nvidia-xconfig(1) за описанием ключа командной строки '--virtual'); размер виртуального экрана должен быть не меньше 304x200 и размер по горизонтали должен быть кратен 8.

3.Опции Stereo, Overlay, CIOverlay, SLI не разрешены при значении опции "UseDisplayDevice" как "none".

Option "UseEdidFreqs" "логическое"

Эта опция определяет, будет ли использовать драйвер Х-интерфейса NVIDIA диапазоны частоты вертикальной и горизонтальной синхронизации (HorizSync и VertRefresh), сообщаемые дисплеем по протоколу EDID, если таковые сообщаются. Когда опция UseEdidFreqs имеет значение True, сообщенные посредством EDID диапазоны используются вместо диапазонов в опциях HorizSync и VertRefresh, заданных в секции Monitor. Если дисплей не поддерживает EDID, или не сообщает ничего через EDID диапазоны hsync или vrefresh, тогда сервер Х-интерфейса использует диапазоны из опций HorizSync и VertRefresh, заданных в секции Monitor файла конфигурации Х-интерфейса. Эти диапазоны используются для проверки доступности видеорежимов для дисплея.

Значение по умолчанию: True (будут использоваться частоты, сообщенные через EDID)

Option "UseEDID" "логическое"

По умолчанию, драйвер Х-интерфейса NVIDIA использует информацию дисплеев, сообщаемую по протоколу EDID, при построении списка видеорежимов. Информация EDID является источником сведений о доступных видеорежимах, диапазонах частот, физических размерениях дисплея, используемых для вычисления разрешения DPI (см. Главу 33). Однако, если вы хотите отключить использование драйвером EDID, вы можете присвоить данной опции значение False:

Option "UseEDID" "FALSE"

Кроме общего запрета использования EDID, можно отключить использование информации для конкретных задач индивидуально,

Option"UseEDIDFreqs""FALSE"
Option"UseEDIDDpi""FALSE"
Option"ModeValidation""NoEdidModes"

Значение по умолчанию: True (использовать EDID).

Option "IgnoreEDID" "логическое"

Эта опция устарела, и больше не влияет на драйвер Х-интерфейса. Обратитесь к описанию опции "UseEDID" за дополнительной информацией.

Option "NoDDC" "логическое"

Синоним опции "IgnoreEDID". Эта опция устарела, и больше не влияет на драйвер Х-интерфейса. Обратитесь к описанию опции "UseEDID" за дополнительной информацией.

Option "FlatPanelProperties" "строка текста"

Содержит значения определенных свойств подключенного цифрового монитора, представленные в виде пар свойство = значение, разделенных запятыми. В настоящий момент поддерживаются только два свойства - 'Scaling' (масштабирование) и 'Dithering' (сглаживание). Возможные значения для 'Scaling': 'default' (драйвер использует текущее состояние масштабирования), 'native' (драйвер использует возможности самого монитора по масштабированию, если таковые имеются), 'scaled' (драйвер будет использовать средства масштабирования NVIDIA, если возможно), 'centered' (драйвер выводит изображение в центре, если возможно), и 'aspect-scaled' (драйвер использует средства масштабирования NVIDIA, но сохраняет соотношение сторон). Возможные значения для 'Dithering': 'default' (драйвер решает, когда сглаживать изображение), 'enabled' (драйвер всегда сглаживает изображение, когда возможно), и 'disabled' (драйвер не использует сглаживание). Если какое-то свойство не задано, его значение 'default'. В качестве примера, строка опции может выглядеть так:


"Scaling = centered, Dithering = enabled"

Option "UseInt10Module" "логическое"

Использование модуля обработки прерывания Int10 Х-интерфейса для "мягкой" инициализации дополнительных видеокарт, вместо инициализации POST через модуль уровня ядра NVIDIA.

Значение по умолчанию: Off (используется POST инициализация через модуль уровня ядра NVIDIA).

Option "TwinView" "логическое"

Включает или выключает технологию TwinView. Обратитесь к Главе 13 за дополнительной информацией.

Значение по умолчанию: Off (TwinView отключена).

Option "TwinViewOrientation" "строка текста"

Управляет взаимным положением двух дисплеев при использовании TwinView. Принимает следующие значения: "RightOf", "LeftOf", "Above", "Below", "Clone". Обратитесь к Главе 13 за дополнительной информацией.

Значение по умолчанию: строка пуста.

Option "SecondMonitorHorizSync" "range(s)"

Эта опция эквивалентна опции HorizSync в секции Monitor section, но предназначена для второго монитора при использовании TwinView. Обратитесь к Главе 13 за дополнительной информацией.

Значение по умолчанию: none.

Option "SecondMonitorVertRefresh" "range(s)"

Эта опция эквивалентна опции VertRefresh в секции Monitor section, но предназначена для второго монитора при использовании TwinView. Обратитесь к Главе 13 за дополнительной информацией.

Значение по умолчанию: none.

Option "MetaModes" "строка текста"

Эта опция описывает сочетания видеорежимов для каждого монитора при использовании TwinView. Обратитесь к Главе 13 за дополнительной информацией.

Значение по умолчанию: строка пуста.

Option "NoTwinViewXineramaInfo" "логическое"

При использовании TwinView драйвер Х-интерфейса NVIDIA обычно поддерживает расширение Xinerama, которое клиенты Х-интерфейса (такие как диспетчеры окон) могут использовать для определения текущей конфигурации TwinView. Настройки некоторых диспетчеров окон сбиваются от этой информации, так что данная опция позволяет отключить такое поведение.

Значение по умолчанию: false (информация о TwinView предоставляется через Xinerama).

Option "TwinViewXineramaInfoOrder" "строка текста"

Когда драйвер Х-интерфейса NVIDIA предоставляет информацию TwinViewXineramaInfo (см. опцию NoTwinViewXineramaInfo конфигурации X-интерфейса), текущая конфигурация дисплеев по-умолчанию сообщается в порядке "CRT, DFP, TV". Опция TwinViewXineramaInfoOrder конфигурации X-интерфейса может быть использована для изменения данного порядка.

Значение опции задается в виде строки названий дисплеев, разделенных запятыми. Названия дисплеев могут быть как в общей форме (например, "CRT", что относится ко всем электронно-лучевым мониторам), или с указанием конкретного устройства (например, "CRT-1", что соответствует конкретному подключенному монитору). Необязательно перечислять все варианты дисплеев в опции; не указанные в строке дисплеи будут автоматически добавлены в конец списка в порядке, принятом по умолчанию.

Обратите внимание, что в информации TwinViewXineramaInfoOrder отслеживаются все дисплеи, которые только возможно подключить к видеокарте, а не только те, что подключены фактически. Когда же драйвер Х-интерфейса NVIDIA передает информацию в расширение Xinerama, он сортирует дисплеи в заданном порядке и сообщает только о задействованных устройствах.

Примеры значений:

"DFP"

"TV, DFP"

"DFP-1, DFP-0, TV, CRT"

В первом примере все подключенные цифровые плоские мониторы будет перечислены в первую очередь, а все электронно-лучевые мониторы и телевизоры после них. Во втором примере все подключенные телевизоры будут перечислены в первую очередь, затем все цифровые плоские мониторы, а электронно-лучевые мониторы последними. В третьем примере, если включен дисплей DFP-1, он будет указан первым, затем дисплей DFP-0, затем все подключенные телевизоры, и после этого все электронно-лучевые мониторы, напоследок пойдут все остальные цифровые плоские мониторы.

Значение по умолчанию: "CRT, DFP, TV"

Option "TwinViewXineramaInfoOverride" "строка текста"

Данная опция переопределяет значения, сообщаемые реализацией NVIDIA TwinView Xinerama приложению. Отменяется как текущая конфигурация дисплеев, используемая экраном X-интерфейса, так и значения, заданные в опции TwinViewXineramaInfoOrder.

Строка значения задается как перечень разделенных запятыми областей экрана, заданных как '[ширина]x[высота]+[смещение по ширине]+[смещение по высоте]'. Размеры областей и смещений не проверяются по отношению к размеру экрана Х-интерфейса, а напрямую сообщаются любому клиенту расширения Xinerama.

Примеры значений:

"1600x1200+0+0, 1600x1200+1600+0"

"1024x768+0+0, 1024x768+1024+0, 1024x768+0+768, 1024x768+1024+768"

Option "TVStandard" "строка текста"

Обратитесь к Главе 16 за дополнительной информацией о настройке ТВ-выхода.

Option "TVOutFormat" "строка текста"

Обратитесь к Главе 16 за дополнительной информацией о настройке ТВ-выхода.

Option "TVOverScan" "Decimal value in the range 0.0 to 1.0"

Допустимые значения находятся в диапазоне от 0.0 до 1.0.

Обратитесь к Главе 16 за дополнительной информацией о настройке ТВ-выхода.

Option "Stereo" "целое число"

Включает поддержку четырехкратно-буферизованного стереоизображения на картах Quadro. Значение указывает тип используемого стереооборудования:

ЗначениеОборудование
1Затворные очки по протоколу DDC. Сигнал синхронизации посылается в очки через DDC сигнал для монитора. Обычно включаются промежуточным кабелем между компьютером и монитором.
2Очки типа "Blueline". Обычно включаются промежуточным кабелем между компьютером и монитором. Очки определяют изображение для каждого глаза по длине синей линии, видимой внизу экрана. В этом режиме размер корневого окна на один пиксель меньше запрошенного по вертикали. Этот режим недоступен при размерах виртуального корневого окна больше видимой его области (панорамирование рабочего стола)
3Встроенный стерео порт. Обычно встречается лишь в профессиональных видеокартах. Очки подключаются к специальному DIN порту на задней планке видеокарты.
4Режим стереоклона TwinView (еще называемый "пассивным" стерео). На видеокартах, поддерживающих TwinView, изображение для левого глаза отображается на первом дисплее, а для правого — на втором. Обычно используется вместе с двумя специальными проекторами, создающими два поляризованных изображения, просматриваемых через поляризационные очки. Для использования этого видеорежима вам надо настроить TwinView в режиме клона с одинаковыми разрешениями, смещениями и областью панорамирования для каждого дисплея.
5Вертикальный чересстрочный режим, для использования со
стереомониторами SeeReal.
6Режим с чередованием цветов, для использования со стреомониторами Sharp3D.

Стерео доступно только для видеокарт семейства Quadro. Опции 1, 2, и 3 (называемые "активным" стерео) могут быть использованы совместно с TwinView если все видеорежимы в каждом метарежиме имеют идентичные параметры временной синхронизации. Обратитесь к Главе 19 за информацией по приведению видеорежимов в каждом метарежиме к идентичному состоянию. Требование к идентичности необязательно для стерео типа 4 ("пассивного" стерео). В настоящее время, работа со стерео может быть затруднена с первым графическим процессором Quadro (NV10), а также переключение между левым и правым изображениями может происходить с ошибками. Это затруднение будет устранено в будущих версиях. Значение по умолчанию: 0 (стерео не используется).

Опция UBB должна быть включена при использовании стерео (это поведение по умолчанию).

Опции стерео 1, 2, и 3 (называемые "активным" стерео) не поддерживаются для цифровых плоских мониторов.

Многопроцессорные видеокарты (такие как Quadro FX 4500 X2) имеют один разъем для подключения стереоочков (значение 3), принадлежащий нижнему GPU. Для синхронизации стереоочков с другими GPU нужно использовать специальное оборудование G-sync (обратитесь к Главе 26 за дополнительной информацией).

Option "AllowDFPStereo" "логическое"

По-умолчанию, драйвер Х-интерфейса NVIDIA выполняет проверку, отключающую "активные" стереорежимы (значения опции stereo 1, 2, и 3), если экран Х-интерфейса выводится на цифровой плоский монитор. Опция "AllowDFPStereo" отключает эту проверку.

Option "ForceStereoFlipping" "логическое"

Стереопереключение — это процесс, при котором изображения для левого и правого глаз отображаются чередованием при вертикальной синхронизации (постранично). Обычно стереопереключение используется, когда стереоизображение видимо на экране. Эта опция включает использование стереопереключения даже если стереоизображение скрыто.

Эта опция должна использоваться совместно с опцией "Stereo". Если значение опции "Stereo" — 0, опция "ForceStereoFlipping" не действует. Иначе, опция приводит к поведению, заданному в опции "Stereo", даже если не выводится стереоизображений. Эта опция полезна для мультимониторных конфигураций, когда стереоприложение выводится на экран, отличный от назначенного основным для вывода стерео.

Возможные значения:

ЗначениеДействие
0Стереопереключение не применяется принудительно. Работа стерео определяется опцией "Stereo".
1Стереопереключение применяется принудительно. Стереорежим используется, даже если не выводится стереоизображений. Режим стерео зависит от значения опции "Stereo".

Значение по умолчанию: 0 (стереопереключение не устанавливается принудительно).

Обратите внимание, что "активное" стерео недоступно на цифровых плоских мониторах.

Option "XineramaStereoFlipping" "логическое"

По-умолчанию, при использовании стерео совместно с Xinerama, все физические дисплеи Х-интерфейса содержат видимое стереоизображение с использованием стереопереключения. Используйте эту опцию, чтобы разрешить только одному физическому дисплею использовать стереопереключение в один момент времени.

Эта опция должна использоваться совместно с опциями "Stereo" и "Xinerama". Если значение опций "Stereo" или "Xinerama" — 0, опция "XineramaStereoFlipping" не действует.

Если вы хотите, чтобы все дисплеи Х-интерфейса использовали стереопереключение всегда, используйте опцию "ForceStereoFlipping".

Возможные значения:

ЗначениеДействие
0Стереопереключение используется только на одном дисплее в один момент времени. Стереорежим включается на первом мониторе, выводящем стереоизображение.
1Стереопереключение используется всеми дисплеями.

Значение по умолчанию: 1 (Стереопереключение используется всеми дисплеями.).

Option "NoBandWidthTest" "логическое"

В процессе проверки доступности видеорежима, драйвер Х-интерфейса проверяет, укладывается ли требуемая для режима полоса пропускания к памяти в возможности оборудования. Эта опция отключает данный тест.

Значение по умолчанию: false (тест полосы пропускания к памяти выполняется).

Option "IgnoreDisplayDevices" "строка текста"

Эта опция задает исключения классов дисплеев для модуля уровня ядра драйвера NVIDIA при определении подключенных к видеокарте устройств. Вы можете задать перечень классов, разделенных запятыми, содержащий любые значения из: "CRT", "DFP", и "TV". Например:

Option "IgnoreDisplayDevices" "DFP, TV"

заставляет драйвер NVIDIA не пытаться обнаружить подключенные телевизоры или цифровые мониторы. Обычно в использовании этой опции нет нужды, однако, BIOS некоторых видеокарт содержит ошибочную информацию о возможностях по подключению устройств, или значение порта шины i2c, используемого для определения.

Такие ошибки могут вызвать продолжительные задержки при загрузке Х-интерфейса. Если вы столкнулись с такими задержками, вы можете попытаться избежать их, настроив драйвер игнорировать классы дисплеев, неподключенные к видеокарте. Обратите внимание: все, что подключено к 15-контактному выходу VGA, трактуется драйвером как CRT. "DFP" должно использоваться только если речь идет о цифровом мониторе, подключенном к порту DVI.

Option "MultisampleCompatibility" "логическое"

Разрешает или запрещает использование раздельных буферов полноэкранного сглаживания для переднего и заднего плана по методу мультисэмплинга. Включение потребляет больше видеопамяти, но может понадобиться для корректного вывода изображения при рендеринге сразу в оба буфера и использовании полноэкранного сглаживания. Эта опция необходима для правильной работы приложения SoftImage XSI.

Значение по умолчанию: false (общий буфер мультисэмплинга используется для буферов переднего и заднего плана).

Option "NoPowerConnectorCheck" "логическое"

Драйвер Х-интерфейса NVIDIA прекращает запуск сервера Х-интерфейса, если обнаруживает, что к видеокарте, требующей подключения дополнительного электропитания, шнур питания не подведен. Эта опция позволяет отключить данную проверку.

Значение по умолчанию: false (проверка подсоединения дополнительного электропитания проводится).

Option "XvmcUsesTextures" "логическое"

Принудительно заставляет XvMC использовать 3D-возможности для запросов XvMCPutSurface вместо использования видеоналожения.

Значение по умолчанию: false (используется видеоналожение, если доступно).

Option "AllowGLXWithComposite" "логическое"

Разрешает GLX даже если загружено расширение Composite X. Используйте на свой страх и риск. Приложения OpenGL во многих случаях не отображают изображение правильно при разрешении этой опции.

Эта опция введена для случаев использование серверов Х-интерфейса X.Org версий до X11R6.9.0. При использовании сервера версии X11R6.9.0 или более новой, реализация OpenGL в драйвере NVIDIA взаимодействует корректно с расширением Composite X-интерфейса, и в этой опции нет нужды. Однако, поддержка расширения Composite при использовании серверов Х-интерфейса версии X11R6.9.0 или более новой может быть отключена присвоением опции значения False.

Значение по умолчанию: false (GLX отключен при загруженном расширении Composite серверов Х-интерфейса версии меньше X11R6.9.0).

Option "UseCompositeWrapper" "логическое"

Разрешает использование компонента "composite wrapper" сервера Х-интерфейса, осуществляющего необходимые преобразования координат для работы расширения Composite. Значение по умолчанию: false (драйвер Х-интерфейса NVIDIA самостоятельно осуществляет преобразования координат).

Option "AddARGBGLXVisuals" "логическое"

Добавляет поддержку 32-битные ARGB областей вывода изображения для каждой поддерживаемой конфигурации OpenGL. Это позволяет приложениям использовать OpenGL для прозрачных изображений с альфа-каналом в 32-битные окна и пиксельные карты. Эта опция требует наличия расширения Composite. Используйте на свой страх и риск. В некоторых OpenGL приложениях изображение может искажаться при включении данной опции.

Значение по умолчанию: поддержка отключена.

Option "DisableGLXRootClipping" "логическое"

Если опция включена, отсечение не будет выполняться при завершении рендеринга OpenGL в корневом окне. Эта опция устарела. Она нужна для работы некоторых основанных на OpenGL диспетчеров расширения composite, так как они прорисовывают изображение перенаправленных окон в корневом окне используя OpenGL. Большинство диспетчеров обновлено и поддерживает функцию Composite Overlay Window, появившуюся в сервере Xorg версии 7.1. Использование Composite Overlay Window теперь является основным способом осуществления смешивания изображения в OpenGL.

Option "DamageEvents" "логическое"

Использование событий на уровне операционной системы для сообщения Х-интерфейсу что клиент выполняет прямую отрисовку изображения в окно, требующее обработки через расширение composite. Эта опция позволяет несколько повысить производительность и улучшить совместимость при использовании GLX приложений и диспетчера расширения composite. Она также влияет на приложения, использующие GLX при включенной функции поворота экрана. Данная опция в настоящее время несовместима с режимами SLI и MultiGPU, и отключена если используется один из этих режимов. По умолчанию включено.

Option "ExactModeTimingsDVI" "логическое"

Принудительно заставляет сервер Х-интерфейса при запуске использовать параметры временной синхронизации, указанные в опции ModeLine.

Значение по умолчанию: false (для устройств, подключенных к порту DVI, сервер Х-интерфейса запускается с ближайшим режимом в списке информации EDID).

Option "Coolbits" "целое число"

Разрешает использовать расширение NV-CONTROL X для изменения частоты графического процессора. Если эта опция установлена в значение "1", в утилите nvidia-settings появится закладка "Clock Frequencies", посредством которой можно управлять частотами. Опция Coolbits работает только для графических процессоров GeForce FX, Quadro FX, и более новых. При использовании графических процессоров GeForce FX и более новых в ноутбуках, возможности управления частотой при установленной в значение "1" опции "Coolbits" ограничены: частоты могут быть снижены относительно исходного уровня, разгон не поддерживается из-за температурных ограничений исполнения ноутбуков.

Значение по умолчанию: 0 (не поддерживается).

Предупреждение: использование этой возможности может привести к повреждению оборудования и потере гарантии производителя. Эта функция может вывести характеристики системы за возможности спецификации производителя оборудования, включая, но не ограничиваясь: завышение напряжений, температура выше нормальной, чрезмерные значения частоты, изменения BIOS видеокарты, могущие привести к повреждению BIOS. Операционная система может работать нестабильно, что может привести к потере данных или порче изображения. В зависимости от производителя компьютера, гарантии на компьютер, его аппаратное и программное обеспечение могут быть потеряны, и вы можете потерять право на помощь производителя в дальнейшем.

NVIDIA не оказывает поддержку пользователям в использовании опции Coolbits, чтобы ни в коем случае не привести к потере пользователем гарантии. Перед тем, как включить и использовать эту функцию, вы должны определить для себя пригодность этой утилиты и принять всю ответственность за последующие действия.

Option "MultiGPU" "строка текста"

В этой опции задается режим рендеринга MultiGPU для многопроцессорных видеокарт.

ЗначениеДействие
0, no, off, false, Single Использовать только один графический процессор для рендеринга
1, yes, on, true, Auto Задействовать MultiGPU и разрешить драйверу автоматически выбирать подходящий метод рендеринга.
AFR Задействовать MultiGPU и использовать метод рендеринга с чередованием кадров.
SFR Задействовать MultiGPU и использовать метод с разделением экрана.
AAЗадействовать MultiGPU и использовать для полноэкранного сглаживания изображения. Используйте его совместно с полноэкранным сглаживанием для улучшения качества изображения.
Option "SLI" "строка текста"

Эта опция настраивает использование технологии SLI в поддерживаемых конфигурациях оборудования.

ЗначениеДействие
0, no, off, false, Single Использовать только один графический процессор для рендеринга
1, yes, on, true, Auto Задействовать SLI и разрешить драйверу автоматически выбирать подходящий метод рендеринга.
AFRЗадействовать SLI и использовать метод рендеринга с чередованием кадров.
SFRЗадействовать SLI и использовать метод с разделением экрана.
AAЗадействовать SLI и использовать для полноэкранного сглаживания изображения. Используйте его совместно с полноэкранным сглаживанием для улучшения качества изображения.
AFRofAAЗадействовать SLI и использовать метод рендеринга с чередованием кадров совместно с полноэкранным сглаживанием изображения. Используйте его совместно с полноэкранным сглаживанием для улучшения качества изображения. Эта опция работает только для конфигураций с 4-мя графическими процессорами.
Option "DPI" "строка текста"

Эта опция задает разрешение в точках на дюйм для экрана Х-интерфейса; например:

Option "DPI" "75 x 85"

Устанавливает горизонтальное разрешение 75 DPI, и вертикальное 85 DPI. По-умолчанию, драйвер Х-интерфейса вычисляет разрешение в точках на дюйм для экрана по данным информации EDID подключенного к видеокарте дисплея. Обратитесь к Главе 33 за дополнительной информацией.

Значение по умолчанию: строка пуста (отключено).

Option "TripleBuffer" "логическое"

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

Option "UseEdidDpi" "строка текста"

По-умолчанию, драйвер Х-интерфейса NVIDIA вычисляет разрешение в точках на дюйм для экрана Х-интерфейса по физическому размеру дисплея, сообщенному им в EDID, и размеру в пикселях первого видеорежима, назначенного для дисплея. Если используется несколько дисплеев для вывода экрана Х-интерфейса, тогда драйвер NVIDIA выбирает, какой дисплей использовать для вычисления разрешения. Эта опция позволяет указать драйверу, какой дисплей использовать. Строка может содержать имя устройства, например:

Option "UseEdidDpi" "DFP-0"

Или значение "FALSE" для отключения вычисления разрешения в точках на дюйм по информации EDID:

Option "UseEdidDpi" "FALSE"

Обратитесь к Главе 33 за дополнительной информацией.

Значение по умолчанию: строка пуста (драйвер вычисляет разрешение по информации EDID дисплея, и сам выбирает дисплей).

Option "ConstantDPI" "логическое"

По умолчанию при использовании сервера Х-интерфейса X.Org версии 6.9 или более новой, драйвер Х-интерфейса NVIDIA пересчитывает размер экрана Х-интерфейса в миллиметрах при изменении размера экрана в пикселях через расширение XRandR, для сохранения постоянства разрешения DPI.

Это поведение может быть отключено (для сохранения значения размера экрана в миллиметрах при изменении размера экрана в пикселях) присвоением данной опции значения "FALSE", например:

Option "ConstantDPI" "FALSE"

Значение по умолчанию: True.

В серверах Х-интерфейса более ранних, чем X.Org 6.9, драйвер Х-интерфейса NVIDIA не может изменять значение размера экрана в миллиметрах. В результате разрешение DPI экрана Х-интерфейса будет меняться при изменении размера экрана в пикселях через расширение XRandR. Поведение драйвера будет соответствовать поведению при значении FALSE опции ConstantDPI.

Option "CustomEDID" "строка текста"

Данная опция позволяет заставить драйвер Х-интерфейса использовать информацию EDID, хранящуюся в файле вместо информации, хранящейся в дисплее. Вы можете задать в опции список разделенных двоеточием пар значений "название дисплея:имя файла".

В качестве названия дисплея могут применяться "CRT-0", "CRT-1", "DFP-0", "DFP-1", "TV-0", "TV-1". Файл должен содержать информацию EDID в исходном виде (как файл, созданный утилитой nvidia-settings). Например, строкой:

Option "CustomEDID" "CRT-0:/tmp/edid1.bin; DFP-0:/tmp/edid2.bin"

будет сопоставлена дисплею CRT-0 информация EDID из файла /tmp/edid1.bin и дисплею DFP-0 информация из файла /tmp/edid2.bin.

Option "ModeValidation" "строка текста"

Эта опция предоставляет возможность точного управления каждой стадией проверки доступности видеорежима, отключения отдельных проверок. Она должна использоваться лишь в исключительных случаях.
Формат опции — список разделенных точкой с запятой списков, разделенных запятой переменных. Каждый список переменных проверки доступности видеорежима может дополнительно предваряться названием дисплея.

"<dpy-0>: <tok>, <tok>; <dpy-1>: <tok>, <tok>, <tok>; ..."

Возможные переменные:


Примеры:


Option "ModeValidation" "NoMaxPClkCheck"


отключает проверку максимальной пиксельной частоты при проверке доступности видеорежимов на всех дисплеях.


Option "ModeValidation" "CRT-0: NoEdidModes, NoMaxPClkCheck; DFP-0: NoVesaModes"


не использовать видеорежимы EDID и не выполнять проверку максимальной пиксельной частоты для устройства CRT-0, и не использовать видеорежимы VESA на устройстве DFP-0.

AllowNon60HzDFPModes Некоторые низкокачественные TMDS контроллеры настроены для управления цифровыми плоскими мониторами только при частоте обновления 60 Гц; драйвер определяет, что для цифрового монитора разрешены только видеорежимы с частотой обновления 60 Гц. Эта переменная отключает данную проверку доступности видеорежима.
NoMaxPClkCheck Для каждого видеорежима нужна своя пиксельная частота; ее доступность проверяется сравнением с максимально возможной для оборудования пиксельной частотой (для цифровых плоских мониторов это максимальная пиксельная частота TMDS контроллера, для электронно-лучевого — частота DAC). Эта переменная отключает данную проверку доступности видеорежима.
NoEdidMaxPClkCheck Информация EDID дисплея может содержать значение предельной пиксельной частоты, поддерживаемой дисплеем; требуемая для видеорежима частота сверяется с этой информацией. Эта переменная отключает данную проверку доступности видеорежима.
AllowInterlacedModes Чересстрочные видеорежимы не поддерживается всеми графическими процессорами NVIDIA; драйвер может отклонить запрос на чересстрочный режим на графическом процессоре, их неподдерживающем. Эта переменная отключает данную проверку доступности видеорежима.
NoMaxSizeCheck Каждый графический процессор NVIDIA имеет предел разрешения для дисплея, Эта переменная отключает данную проверку доступности видеорежима.
NoHorizSyncCheck Частота горизонтальной синхронизации видеорежима сверяется с диапазоном разрешенных значений частоты. Эта переменная отключает данную проверку доступности видеорежима.
NoVertRefreshCheck Частота вертикальной синхронизации видеорежима сверяется с диапазоном разрешенных значений частоты. Эта переменная отключает данную проверку доступности видеорежима.
NoWidthAlignmentCheck Выравнивание видимой ширины видеорежима проверяется относительно возможностей графического процессора. Обычно видимая ширина должна быть кратна 8. Эта переменная отключает данную проверку доступности видеорежима.
NoDFPNativeResolutionCheck При проверке видеорежима для цифрового плоского монитора, видеорежим сравнивается с физическим разрешением матрицы. Эта переменная отключает данную проверку доступности видеорежима.
NoVirtualSizeCheck Если в файле конфигурации Х-интерфейса запрошен конкретный размер виртуального экрана, разрешение видеорежима не может быть больше данного размера. Эта переменная отключает данную проверку доступности видеорежима.
NoVesaModes При построении списка видеорежимов драйвер Х-интерфейса использует встроенный список видеорежимов VESA как один из источников. Эта переменная отключает использование списка видеорежимов VESA.
NoEdidModes При построении списка видеорежимов драйвер Х-интерфейса использует видеорежимы, перечисленные в информации EDID дисплея как один из источников. Эта переменная отключает использование видеорежимов, сообщенных по протоколу EDID.
NoXServerModes При построении списка видеорежимов драйвер Х-интерфейса использует видеорежимы, сообщаемые сервером Х-интерфейса XFree86/Xorg как один из источников. Эта переменная отключает использование этих видеорежимов. Обратите внимание, что данная опция не отключает заданные вручную видеорежимы в файле конфигурации Х-интерфейса, смотрите описание опции "NoCustomModes" для этого.
NoCustomModes При построении списка видеорежимов драйвер Х-интерфейса использует заданные вручную видеорежимы в файле конфигурации Х-интерфейса (записи "Mode" или "ModeLine" в секции Monitor) в качестве одного из источников, эта переменная отключает использование этих видеорежимов.
NoPredefinedModes При построении списка видеорежимов драйвер Х-интерфейса использует дополнительные видеорежимы, предварительно заданные в драйвере. Эта переменная отключает использование этих видеорежимов.
NoUserModes Дополнительные видеорежимы могут быть добавлены в список использованием расширения NV-CONTROL X-интерфейса. Эта переменная запрещает использование пользовательских видеорежимов, заданных с использованием расширения NV-CONTROL.
NoExtendedGpuCapabilitiesCheck разрешает временные характеристики видеорежима, превышающие обнаруженные возможности графического процессора.
ObeyEdidContradictions информация EDID может противоречить самой себе, перечисляя видеорежим, характеристики которого превышают заданные в EDID диапазоны допустимых значений частот (HorizSync, VertRefresh, или максимальной пиксельной частоты). В обычном режиме драйвер Х-интерфейса NVIDIA выдает предупреждение в таком случае, но не исключает указанный видеорежим из числа доступных только потому, что его характеристики выходят за пределы определенного в EDID диапазона частот. Переменная "ObeyEdidContradictions" заставит драйвер Х-интерфейса NVIDIA исключать подобные видеорежимы.
NoTotalSizeCheck разрешает видеорежимы, отдельные временные характеристики которых превышают полный размер развертки.
DoubleScanPriority с графическими процессорами до G80 видеорежимы с двойным сканированием ставились в результатах сортировки перед режимами без двойного сканирования с таким же разрешением, с графическими процессорами G80 и более новыми видеорежимы с двойным сканированием ставятся в результатах сортировки после режимов без двойного сканирования с таким же разрешением. Эта переменная позволяет инвертировать указанный приоритет (т.е. режимы с двойным сканированием будут в конце для графических процессоров до G80, и вначале для G80 и более новых графических процессорах).
NoDualLinkDVICheck для видеорежимов, используемых на дисплеях, подключаемых через двухканальное соединение DVI, драйвер должен осуществить дополнительные проверки, что правильное изображение посылается в каждый канал DVI. Для ряда проверок драйвер отвергает временные характеристики видеорежима, для прочих драйвер непосредственно изменяет временные характеристики для соответствия требованиям к двухканальному подключению DVI. Эта переменная позволяет отключить данные проверки для двухканального DVI.
Option "UseEvents" "логическое"

Включает использование системных событий в некоторых случаях при ожидании драйвером Х-интерфейса оборудования. Драйвер Х-интерфейса, ожидая оборудование, может на короткое время войти в сжатый цикл. При использовании данной опции драйвер установит флаг события и ожидает оборудование через системный вызов 'poll()'.

Значение по умолчанию: использование событий отключено.

Option "FlatPanelProperties" "строка текста"

В этой опции задаются определенные характеристики всех или некоторых подключенных цифровых плоских мониторов. Значение опции задается в формате списков разделенных двоеточием пар "характеристика=значение". Каждый список может предваряться названием монитора:

"<DFP-0>: <property=value>, <property=value>; <DFP-1>: <property=value>; ..."

Возможные характеристики:

Scaling: Управляет способом масштабирования изображения монитора.

Возможные значения:

Default Драйвер использует текущее состояние масштабирования
Native Драйвер использует возможности самого монитора по масштабированию, если таковые имеются
Scaled Драйвер будет использовать средства масштабирования графического процессора NVIDIA, если возможно
Centered Драйвер выводит изображение в центре, если возможно
aspect-scaled Драйвер использует средства масштабирования NVIDIA, но сохраняет соотношение сторон
Dithering Управляет сглаживанием изображения монитора

Возможные значения:

Default Драйвер решает, когда сглаживать изображение
Enabled Драйвер всегда сглаживает изображение, когда возможно
Disabled Драйвер не использует сглаживание

Примеры:

Option "FlatPanelProperties" "Scaling = Centered"

Устанавливает способ масштабирования в вывод изображения в центре для всех цифровых плоских мониторов.

Option "FlatPanelProperties" "DFP-0: Scaling = Centered; DFP-1: Scaling = Scaled, Dithering = Enabled"

Устанавливает для дисплея DFP-0 способ масштабирования в вывод изображения в центре, для дисплея DFP-1's в масштабирование средствами графического процессора и включает на нем сглаживание.

Option "ProbeAllGpus" "логическое"

При инициализации драйвер Х-интерфейса NVIDIA проверяются все графические процессоры, имеющиеся в системе, даже если для них не задано экрана Х-интерфейса. Таким образом драйвер Х-интерфейса может сообщить информацию о всех графических процессорах в системе в расширении NV-CONTROL X-интерфейса. Это поведение может быть отключено присвоением данной опции значения FALSE, так что проверяются только графические процессоры, для которых заданы экраны Х-интерфейса. По-умолчанию проверяются все графические процессоры.

Option "DynamicTwinView" "логическое"

Включение или выключение динамически изменяемой конфигурации режима TwinView для указанного экрана Х-интерфейса. Когда опция DynamicTwinView включена (изначально это так), частота обновления изображения, сообщаемая через XF86VidMode или XRandR не отражает фактической частоты, а является уникальным номером, так как каждый режим MetaMode имеет свое значение частоты. Таким образом гарантируется корректное определение всех метарежимов расширением XRandR.

Когда опция DynamicTwinView отключена, расширение XRandR сообщает действительное значение частоты обновления изображения, но приложения, использующие расширение NV-CONTROL, такие как nvidia-settings, не смогут на ходу изменять метарежимы экрана Х-интерфейса. Режимы TwinView могут быть изменены через файл конфигурации Х-интерфейса и при отключенной опции DynamicTwinView.

Значение по умолчанию: опция включена.

Option "IncludeImplicitMetaModes" "логическое"

При запуске сервера Х-интерфейса создается список видеорежимов для каждого дисплея, содержащий все видеорежимы, проверенные на доступность драйвером Х-интерфейса NVIDIA. Однако единственными доступными для сервера Х-интерфейса метарежимами будут те, что напрямую указаны в файле конфигурации. Была бы удобной для полноэкранных приложений возможность смены между видеорежимами из списка, даже если желаемый режим не перечислен в файле конфигурации Х-интерфейса. С этой целью драйвер Х-интерфейса NVIDIA в случае, когда только один дисплей используется при запуске сервера Х-интерфейса, неявно добавляет метарежимы для всех видеорежимов в списке доступных для дисплея. Таким образом все видеорежимы из списка доступны для полноэкранных приложений, использующих расширения XF86VidMode или XRandR X-интерфейса.

Чтобы отменить такое поведение драйвера и ограничиться метарежимами, заданными в опции MetaModes файла конфигурации Х-интерфейса, присвойте данной опции значение FALSE.

Значение по умолчанию: опция включена.

Option "AllowIndirectPixmaps" "логическое"

Ряд видеокарт имеет больший объем видеопамяти, нежели тот, что может быть отображен в оперативную память центральным процессором (обычно только 256 Мб видеопамяти может быть отображено центральным процессором). С видеокартами на базе графических процессоров G80 и более новых с большим объемом видеопамяти данная опция позволит драйверу разместить больше пиксельных карт в видеопамяти, что улучшит производительность аппаратного рендеринга, но одновременно снизит производительность программного рендеринга. В некоторых системах до 768 Мб виртуального адресного пространства будет зарезервировано сервером Х-интерфейса для непрямого доступа к пиксельным картам. Данная виртуальная память не займет никаких физических ресурсов. Значение по умолчанию: on (непрямой доступ будет использоваться, когда возможно).

Option "OnDemandVBlankInterrupts" "логическое"

Обычно прерывания VBlank вызываются каждый период вертикальной развертки каждого дисплея, подключенного к графическим процессорам в системе. Данная экспериментальная опция включает вызов прерываний VBlank по-требованию, позволяя драйверу использовать прерывания VBlank только когда это необходимо. Это может помочь снизить потребляемую мощность. Значение по умолчанию: off (вызов прерываний VBlank по-требованию отключен).

Option "PixmapCacheSize" "логическое"

Эта опция указывает, сколько видеопамяти будет резервироваться для размещения пиксельных карт. В опции задается число пикселей, используемых для каждого 8-ми, 16-ти и 32-битного кеша пиксельных карт. Резервирование данной памяти повышает производительность в задачах с постоянным созданием и удалением пиксельных карт, но делает этот объем памяти недоступным для OpenGL. Если данный кеш отключен или пространство кеша исчерпано, драйвер сможет размещать пиксельные карты в видеопамяти, но без улучшения производительности при операциях создания и удаления.

Данная опция может быть удалена в будущих выпусках драйвера, если улучшения сделают кеш пиксельных карт ненужным.


Пример:"Option "PixmapCacheSize" "200000"" зарезервирует примерно 200,000 пикселей для каждого кеша пиксельных карт. Значение по умолчанию: off (память специально не резервируется для пиксельных карт).

Option "LoadKernelModule" "логическое"

По умолчанию, драйвер Х-интерфейса NVIDIA пытается загрузить модуль NVIDIA уровня ядра Linux. Выставьте значения опции в "off" для отключения автозагрузки модуля уровня ядра драйвером Х-интерфейса NVIDIA X.

Значение по умолчанию: On (драйвер загружает модуль ядра).

Option "ConnectToAcpid" "логическое"

Демон ACPI (acpid) собирает информацию о событиях ACPI, таких как переключение электропитания между батареей и сетью, присоединение док-станции и т.д. Демон acpid доводит информацию об этих событиях драйверу Х-интерфейса NVIDIA через соединение на уровне доменного сокета UNIX. По-умолчанию, драйвер Х-интерфейса NVIDIA будет пытаться связываться с acpid для получения информации о таких событиях. Установите эту опцию в значение "off" для запрета соединения драйвера NVIDIA с демоном acpid. Значение по умолчанию: on (драйвер Х-интерфейса NVIDIA будет пытаться связаться с acpid).

Option "AcpidSocketPath" "строка текста"

Драйвер Х-интерфейса NVIDIA пытается связаться с демоном ACPI (acpid) через доменный сокет UNIX. Обычный путь к этому сокету "/var/run/acpid.socket". Используйте данную опцию для указания альтернативного пути к сокету acpid. Значение по умолчанию: "/var/run/acpid.socket".

Option "EnableACPIHotkeys" "логическое"

Драйвер NVIDIA для Linux может определять события смены используемого ноутбуком дисплея по нажатию «горячих» клавиш посредством ACPI или же периодическим опросом состояния оборудования.

Хотя опрос состояния оборудования обычно позволяет достаточно успешно определять смену дисплея по нажатию «горячей» клавиши, предпочтительным является использование событий ACPI. Однако, серверы Х-интерфейса до X.Org xserver-1.2.0 содержат ошибку, вызывающую аварийное завершение Х-интерфейса при получении сервером Х-интерфейса события ACPI о нажатии «горячей» клавиши (freedesktop.org bug 8776). Драйвер NVIDIA для Linux проверяет версию ABI сервера Х-интерфейса для определения, содержит ли сервер данную ошибку (серверы X-интерфейса с версиями ABI 1.1 и более поздние не содержат ошибки).

Поскольку ряд серверов X-интерфейса может иметь меньшие версии ABI, но содержать исправления данной ошибки, опция "EnableACPIHotkeys" может быть задана для переопределения поведения по-умолчанию драйвера Х-интерфейса NVIDIA по определению использования способа наблюдения за событиями ACPI нажатия «горячих» клавиш.

При запущенном ноутбуке поищите строку "ACPI display change hotkey events" в журнале X-интерфейса для просмотра текущего выбора драйвера Х-интерфейса NVIDIA. Значение по умолчанию: драйвер Х-интерфейса NVIDIA определяет, использовать ли события ACPI для определения смены дисплея по нажатию «горячих» клавиш, по версии ABI сервера Х-интерфейса. parent.filesText[parent.loadingFileName] =parent.document.getElementById('textplace'). innerHTML=document.getElementById('textdiv').innerHTML;

Система наименования дисплеев

Понятие "Дисплея" относится к разновидности оборудования, способной отображать изображения. Дисплеи делятся на три категории: аналоговые электронно-лучевые (CRT), цифровые плоские панели (DFP), и телевизоры. Учтите, что аналоговые плоские панели драйвером принимаются за аналоговые электронно-лучевые мониторы.

Наименование дисплея — это строка, однозначно идентифицирующая дисплей в формате "<тип>-<номер>", например: "CRT-0", "CRT-1", "DFP-0", или "TV-0". Обратите внимание, что номер показывает, к какому выходу видеокарты подключен дисплей, и не имеет отношения к имеющемуся числу дисплеев этого типа. Это означает, что, например, может быть дисплей "CRT-1", даже если нет дисплея "CRT-0". Чтобы определить, какие дисплеи подключены, вы можете поискать в файле журнала Х-интерфейса строку вида:

(II) NVIDIA(0): Connected display device(s): CRT-0, DFP-0

Наименование дисплея может использоваться в опциях MetaMode, HorizSync, и VertRefresh конфигурации X-интерфейса для указания устройства, к которому должны применяться заданные настройки. Например:

Option"MetaModes""CRT-0:1600x1200,DFP-0:1024x768"
Option"HorizSync""CRT-0:50-110;DFP-0:40-70"
Option"VertRefresh""CRT-0:60-120;DFP-0:60"

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

При задании наименований дисплеев, вы можете также опустить номер из имени устройства, хотя это подходит только для случаев, когда имеется только по одному дисплею каждого типа. Например, если имеются один электронно-лучевой монитор и один цифровой плоский, вы можете указать их в метарежиме как показано ниже:

Option "MetaModes" "CRT: 1600x1200, DFP: 1024x768"

Поддержка GLX

Эта версия поддерживает GLX 1.4. Дополнительно, на совместимых графических процессорах доступны следующие расширения:


GLX_EXT_visual_info

GLX_EXT_visual_rating

GLX_SGIX_fbconfig

GLX_SGIX_pbuffer

GLX_ARB_get_proc_address

GLX_SGI_video_sync

GLX_SGI_swap_control

GLX_ARB_multisample

GLX_NV_float_buffer

GLX_ARB_fbconfig_float

GLX_NV_swap_group

GLX_NV_video_out

GLX_EXT_texture_from_pixmap


За описанием этих расширений обратитесь к базе данных OpenGL на сайте http://www.opengl.com/registry/

Некоторые из вышеперечисленных расширений присутствуют как часть основной функциональности GLX 1.4, однако, они также могут быть экспортированы как расширения для обратной совместимости.

Понятие DPI

Понятие DPI (точек на дюйм), также известное как PPI (пикселей на дюйм), является параметром экрана Х-интерфейса, описывающим физический размер пикселей. Некоторые приложения Х-интерфейса, такие как xterm, могут использовать значение DPI экрана Х-интерфейса для определения размера (в пикселях) объектов для отображения объектов на дисплее с конкретным физическим размером экрана.

Разрешение DPI экрана X-интерфейса вычисляется путем деления размера экрана Х-интерфейса в пикселях на значение в дюймах:

DPI = Размер в пикселях / Размер в дюймах

Поскольку физический размер экрана X-интерфейса хранится в миллиметрах, а не в дюймах (1 дюйм = 25.4 миллиметра):

DPI = (Размер в пикселях * 25.4) / Размер в дюймах

Драйвер Х-интерфейса NVIDIA сообщает размер экрана Х-интерфейса в пикселях и миллиметрах. В серверах Х-интерфейса X.Org версии 6.9 и более новых при изменении размера экрана Х-интерфейса в пикселях через расширение XRandR, драйвер NVIDIA вычисляет новый размер в миллиметрах для экрана, сохраняя DPI постоянным (смотрите столбец "Physical Size" информации, выводимой по команде `xrandr -q` как пример). Это делается во избежание возможных проблем взаимодействия с некоторыми приложениями при изменении DPI. Для отключения этого поведения и сохранения того же значения размера экрана Х-интерфейса в миллиметрах (и возможности изменения DPI) присвойте опции ConstantDPI значение FALSE (обратитесь к Главе 30 за дополнительной информацией).

Вы можете узнать DPI вашего экрана Х-интерфейса, выполнив команду:

% xdpyinfo | grep -B1 dot

выдающую информацию вида:

dimensions: 1280x1024 pixels (382x302 millimeters)

resolution: 85x86 dots per inch

Драйвер Х-интерфейса NVIDIA выполняет несколько действий в ходе инициализации экрана Х-интерфейса для определения разрешение DPI для каждого:

_Если дисплей предоставляет информацию по протоколу EDID, и информация EDID включает сведения о физическом размере дисплея, то она используется для расчета значения DPI вместе с разрешением в пикселях первого видеорежима, устанавливаемого для дисплея. Если несколько дисплеев используются экраном Х-интерфейса, то драйвер NVIDIA сам выбирает, информацию какого дисплея использовать. Это поведение может быть изменено с помощью опции "UseEdidDpi" конфигурации X-интерфейса: вы можете указать конкретный дисплей для использования в расчетах; например:

Option "UseEdidDpi" "DFP-1"

Или отключить вычисление DPI на основе информации EDID установкой значения опции false:

Option "UseEdidDpi" "FALSE"

Расчет DPI на основе сведений EDID используется по-умолчанию, если доступна информация EDID.

_Если задан ключ запуска сервера Х-интерфейса "-dpi", то его значение используется для установки DPI (смотрите команду `X -h` для дополнительной информации). Этот ключ имеет приоритет над опцией "UseEdidDpi".

_Если задана опция "DPI" конфигурации X-интерфейса (обратитесь к Главе 30 за дополнительной информацией), то ее значение будет использовано для установки DPI. Эта опция имеет приоритет над опцией "UseEdidDpi".

_Если ничего из вышеперечисленного не задано, используется опция "DisplaySize" файла конфигурации X-интерфейса секции Monitor для определения DPI, если задана; обратитесь к страницам руководства по xorg.conf или XF86Config за дополнительной информацией.

_Если ничего из вышеперечисленного не указано, значение DPI принимается равным 75x75.

Вы можете посмотреть способ, которым драйвер Х-интерфейса NVIDIA определил значение DPI, просмотром файла журнала Х-интерфейса. В нем должна быть строка вида:

(--) NVIDIA(0): DPI set to (101, 101); computed from "UseEdidDpi" X config option

Обратите внимание, что физический размер экрана Х-интерфейса из отчета `xdpyinfo` вычисляется на основе значения DPI и размера экрана в пикселях.

Значение DPI экрана Х-интерфейса может быть выбрано неправильно при использовании TwinView: в режиме TwinView различные дисплеи (вероятно, с различным разрешением DPI) отображают часть общего экрана Х-интерфейса, вследствие чего значение DPI может сообщаться сервером Х-интерфейса приложению с точностью экрана Х-интерфейса. Возможные решения:

_Используйте отдельные экраны Х-интерфейса вместо TwinView; обратитесь к Главе 15 за дополнительной информацией.

_Пробуйте различные значения DPI для нахождения наиболее подходящего для обоих дисплеев.

Поддержка шины i2c

Модуль уровня ядра драйвера NVIDIA для Linux теперь поддерживает работу с шиной i2c (также называемой Inter-IC Communications, или IIC), позволяя модулю предоставлять доступ к найденным портам i2c на видеокарте на базе NVIDIA, также как и к дисплеям, подключенным к VGA и/или DVI разъемам, из модулей ядра или программ пользовательского пространства тем же способом, что и к другим портам шины i2c, экспортируемым ядром Linux через i2c framework.

Поддержка i2c должна быть скомпилирована в составе ядра или же как модуль, и Х-интерфейс должен быть запущен. i2c framework доступен и в ядре версий 2.4, и в ядре версий 2.6. Документация по ядру Linux раскрывает /dev интерфейсы программирования ядра и пользовательского пространства, которые надо использовать для доступа к портам i2c NVIDIA.

Известно, что в некоторых дистрибутивах поддержка i2c включена, но модули ядра Linux i2c-core.o (2.4) или i2c-core.ko (2.6), осуществляющие экспортные функции, отсутствуют. В этих случаях требуется собрать модуль поддержки i2c самостоятельно. За инструкциями о том, как собрать и установить поддержку i2c на уровне ядра, обратитесь к документации дистрибутива.

За дополнительной информацией о Linux i2c framework обратитесь к документации ядра, расположенной в ../Documentation/i2c/ в дереве исходных текстов ядра.

Следующие функции поддерживаются в настоящее время:

I2C_FUNC_I2C

I2C_FUNC_SMBUS_QUICK

I2C_FUNC_SMBUS_BYTE

I2C_FUNC_SMBUS_BYTE_DATA

I2C_FUNC_SMBUS_WORD_DATA

Поддержка XvMC

Эта версия поддерживает API компенсации движения XVideo (XvMC) версии 1.0 на графических процессорах GeForce4, GeForce FX и более новых. Имеется статическая библиотека "libXvMCNVIDIA.a" и динамическая "libXvMCNVIDIA_dynamic.so", подходящая для вызовов dlopen. Графические процессоры GeForce4 MX, GeForce FX и более новые поддерживает как "IDCT", так и "motion-compensation" уровни ускорения XvMC. Процессоры GeForce4 поддерживают только уровень «motion-compensation». Поддерживаются блоки изображения AI44 и IA44. Поверхности с соотношением 4:2:0 поддерживаются вплоть до разрешения 2032x2032.

Библиотека libXvMCNVIDIA проверяет значение переменной среды XVMC_DEBUG и поддерживает вывод некоторой отладочной информации в stderr при определенных значениях переменной. Значение '0' отключает вывод отладочной информации, '1' включает вывод в случае ошибок, а '2' и выше выводят предупреждающие сообщения.

Советы для начинающих пользователей Linux

Данный документ подразумевает, что пользователь имеет представление об основных особенностях и терминологии Linux. В этой главе содержатся советы, могущие быть полезными для начинающих пользователей. Хотя эти советы и предназначены подготовить пользователей к установке и настройке драйвера NVIDIA для Linux, их ни в коем случае не следует рассматривать как пособие по использованию или администрированию операционной системы Linux. В отличие от большинства «настольных» операционных систем, в Linux можно относительно легко нанести непоправимые повреждения системе. Если вы не имеете достаточных знаний для использования Linux, крайне рекомендуется обратиться к обучающей документации поставщика дистрибутива перед продолжением.


Командная строка


Хотя новые релизы Linux предлагают графические интерфейсы рабочего стола для пользователей, значительная часть работы в Linux происходит в командной строке. Если вам знакома система Window, командная строка Linux аналогична командной строке Windows, хотя синтаксис и использование несколько различаются. Все команды в этой главе выполняются в командной строке. Некоторые системы настроены на загрузку в режим консоли, в таком случае пользователю сразу предлагается приглашение командной строки при входе в систему. Другие системы настроены на запуск оконного Х-интерфейса, в этом случае пользователь должен вручную открыть окно терминала или консоли. Обычно это можно сделать, поискав в меню рабочего стола программу terminal или console. Хотя приглашение настраиваемо, стандартно оно содержит небольшую строку информации: один из символов '#', '$', или '%', и курсор (может мигать), показывающий место ввода пользователем.

Просмотр структуры каталогов


Linux имеет иерархическую систему каталогов. В любом месте структуры команда 'ls' отобразит содержимое текущего каталога. Команда 'file' выведет тип файлов в каталоге. Например:


% file filename


выведет тип файла 'filename'. Смена каталога осуществляется командой 'cd':


% cd dirname


Права доступа и владение файлами


используется для предотвращения случайного или намеренного повреждения системы пользователями – не-администраторами. Права и владелец для файла или каталога могут быть определены с помощью ключа запуска -l для команды 'ls'. Например:


% ls -l

drwxr-xr-x 2 jesse users 4096 Feb 8 09:32 bin

drwxrwxrwx 10 jesse users 4096 Feb 10 12:04 pub

-rw-r--r-- 1 jesse users 45 Feb 4 03:55 testfile

-rwx------ 1 jesse users 93 Feb 5 06:20 myprogram

-rw-rw-rw- 1 jesse users 112 Feb 5 06:20 README

%


Первая колонка символов в первом поле вывода команды показывает тип файла, где 'd' – каталог, а '-' – обычный файл. Следующие девять колонок показывают права доступа (см. ниже) к объекту. Второе поле показывает число файлов, ассоциированных с объектом, третье – владельца, четвертое – группу пользователей, с которой файл ассоциирован, пятое – размер объекта в байтах, шестое, седьмое и восьмое – время последнего изменения файла, и девятое поле содержит имя объекта.

Как уже сказано, последние девять колонок в первом поле показывают права доступа к объекту. Эти колонки сгруппированы по три, первая показывает права владельца файла, вторая – права группы пользователей, ассоциированной с элементом, и третья – права для всех остальных. Символы 'r', 'w', и 'x' - соответственно, права на чтение (read), запись (write) и выполнение (execute). Например, пользователь 'jesse' имеет права на чтение и запись файла 'testfile', пользователи группы 'users' имеют права только на чтение, и все остальные имеют права тоже только на чтение. Однако, для файла 'myprogram', пользователь 'jesse' имеет права на чтение, запись и выполнение (подразумевается, что 'myprogram' – исполняемая программа), тогда как группа 'users' и все остальные не имеют прав вообще (подразумевается, что пользователь не хочет, чтобы кто-то кроме него запускал программу). Права, владелец, и ассоциированная группа пользователей объекта могут быть изменены с помощью команд 'chmod', 'chown' и 'chgrp' соответственно. Если пользователь с соответствующими полномочиями захочет сменить владельцев файла 'README' с jesse/users на joe/admin, ему надо сделать следующее:


# chown joe README

# chgrp admin README


Синтаксис команды chmod несколько более сложный, и имеет несколько вариаций.

Самый краткий путь установления прав для объекта – это использование триплетов цифр, по одной для пользователя, группы и всех остальных. Значение каждой цифры в триплете соотносится с комбинацией прав на чтение, запись и выполнение. Только выполнение ассоциировано с 1, только запись - с 2, и только чтение – с 4. Сочетания этих прав представляются в виде суммы отдельных прав. Чтение и выполнение представляется как 5, тогда так чтение, запись и выполнение представляется как 7. Отсутствие прав представляется как 0. Таким образом, чтобы дать пользователю права на чтение, запись и выполнение, группе на чтение и выполнение, и всем остальным никаких прав, пользователю надо выполнить следующую команду:


% chmod 750 myprogram


Оболочка


Оболочка предоставляет интерфейс между пользователем и операционной системой. Задача оболочки – интерпретировать информацию, введенную пользователем, и вызвать операционную систему для выполнения чего-либо в ответ. Имеется несколько разных оболочек, каждая со свои отличным от других синтаксисом и возможностями. Две наиболее часто используемые разновидности оболочек в Linux – оболочка Борна ('sh'), и оболочка C ('csh'). У разных пользователей свои предпочтения и преимущества одной оболочки над другой, и в одной что-то делать проще (или понятней), чем в другой. Вы можете определить текущую оболочку, посмотрев значение переменной среды 'SHELL' командой


% echo $SHELL


Вы можете запустить новую оболочку, просто введя ее имя в командной строке:


% csh


или

% sh


и вы можете запустить программу из требуемой оболочки, введя имя оболочки перед именем программы:


% sh myprogram


Оболочка пользователя по-умолчанию при входе в систему определена тем, кто создавал его учетную запись.

Несмотря не наличие многих различий в синтаксисе между оболочками, наиболее часто встречаемое – способ установки переменных среды.


Установка переменных среды


Каждый сеанс имеет свои переменные среды, представляющие собой пары из имени/значения и задающие поведение запускаемых приложений и оболочки. Примером переменной является 'PATH', задающая оболочке каталоги для поиска исполняемых файлов, введенных пользователем в командной строке. Если вы уверены в наличии программы/команды, но оболочка сообщает о том, что не может их найти и выполнить, скорее всего это проблема с переменной 'PATH'. Переменные среды устанавливаются различными способами в зависимости от оболочки. Для оболочки Борна ('sh') это делается следующим образом:


% export MYVARIABLE="avalue"


Тогда как для оболочки C:


% setenv MYVARIABLE "avalue"


В обоих случаях кавычки нужны только если значение содержит пробелы. Команда 'echo' может быть использована для просмотра значения переменной среды:


% echo $MYVARIABLE


Команды для установки значений переменных среды могут также включать ссылки на другие переменные (начинающиеся с символа "$"), включая самих себя. Чтобы добавить путь '/usr/local/bin' в начало пути поиска, и текущий каталог '.' в конец пути поиска, надо ввести:


% export PATH=/usr/local/bin:$PATH:.


в оболочке Борна, и


% setenv PATH /usr/local/bin:${PATH}:.


в оболочке C. Обратите внимание, что указательные скобки нужны для защиты имени переменной в оболочке С.


Редактирование текстовых файлов.


Существуют различные редакторы текста для Linux. Некоторые из них требуют оконного Х-интерфейса, другие работают из терминала/консоли. В целом полезно владеть навыками работы с текстовым редактором терминального типа, так как бывает необходимо редактировать файлы, требующиеся для запуска Х-интерфейса. Три наиболее популярных редактора - 'vi', 'pico' и 'emacs', каждый из которых может быть запущен из командной строки, с возможным добавлением имени файла, который надо редактировать. Редактор 'vi', возможно, является наиболее популярным, так же как и наименее понятным из трех. Редактора 'pico' доступен и понятен для начинающего пользователя, хотя не часто бывает установлен в системе. Если в вашей системе 'pico' не установлен, вы можете попробовать схожий редактор под названием 'nano'. Редактор 'emacs' широко распространен и очень расширяемый, однако может оказаться слишком громоздким для не-Х среды. Новые версии каждого редактора содержат встроенную помощь, дополнительная информация может быть найдена в руководствах пользователя и на информационных сайтах (обратитесь к соответствующим разделам в секции Руководство и информационные страницы по Linux ниже). Многие программы используют переменную среды 'EDITOR' для определения запускаемого редактора при необходимости ручной правки.


Пользователь ROOT


После установки все дистрибутивы создают учетную запись администратора по-умолчанию с именем 'root'. Многие вещи в системе может делать только 'root' или пользователь с такими же правами, одна из этих вещей – установка драйвера NVIDIA. Мы должны предупредить, что использование записи 'root' содержит в себе значительный элемент риска, так как, работая как пользователь 'root' достаточно легко можно вывести систему из строя или повредить ее. Есть три способа работать с правами 'root'. Вы можете войти в систему как пользователь 'root' точно также, как входит любой другой пользователь, вы можете воспользоваться переключением между пользователями по команде 'su' в командной строке, или же, в некоторых системах, использовать утилиту 'sudo', позволяющую пользователям запускать программы как 'root', сохраняя при этом записи их действий. Последний метод особенно полезен в случае, когда пользователь повредил систему и не может вспомнить, что делал (или не признается, что что-то делал). Полезно следовать правилу использовать права 'root' только на время выполнения задачи, требующей этих прав (еще одно полезное свойство 'sudo').


Загрузка в различный уровень исполнения


Уровни исполнения (Runlevels) в Linux определяют, какие сервисы запускаются и завершаются автоматически при загрузке или выключении системы. Уровни исполнения обычно лежат в диапазоне от 0 до 6, причем уровень 5 обычно запускает оконный Х-интерфейс (уровень 0 – аварийная остановка системы, а уровень 6 – перезагрузка системы). Стоит следовать правилу устанавливать драйвер NVIDIA для Linux при незапущенном Х-интерфейсе, также полезно предотвращать автоматический запуск Х-интерфейса в случае проблем с установкой (иначе можно столкнуться с ситуацией, когда неисправная системы пытается сразу запустить Х-интерфейс и зависает, не давая вам сделать необходимые исправления для работы Х-интерфейса). В зависимости от типа установленной сети, уровни исполнения 1, 2 или 3 должны быть достаточными для установки драйвера. Уровень 3 обычно включает сетевые сервисы, и если утилиты, используемые в системе во время установки, зависят от сетевого тома, то уровни 1 и 2 будут недостаточными. Если система загружается в режим консоли, вам не понадобится что-либо менять. Если же сразу загружается оконный Х-интерфейс, с графическим интерфейсом входа в систему и рабочего стола, вам понадобится выйти из Х-интерфейса и сменить уровень исполнения по-умолчанию.

В большинстве дистрибутивов уровень исполнения по-умолчанию хранится в файле '/etc/inittab', хотя вы можете это проверить в документации к дистрибутиву. Строка, задающая уровень исполнения, выглядит как:


id:n:initdefault:


или похоже, где "n" – уровень исполнения. Файл '/etc/inittab' должен редактироваться с правами root. Обратитесь к разделам о редактировании файлов и учетной записи root выше, если эти понятия вам незнакомы. Также рекомендуется создать копию файла перед его правкой, поскольку если вы только начинаете осваивать текстовые редакторы Linux, вы можете случайно повредить файл:


# cp /etc/inittab /etc/inittab.original


Строка должна быть отредактирована так, чтобы требуемый уровень стал уровнем по-умолчанию (1, 2, или 3 в большинстве систем):


id:3:initdefault:


После сохранения изменений выйдите из Х-интерфейса. После завершения установки драйвера вы можете вернуть уровень исполнения по-умолчанию в исходное состояние либо редактированием '/etc/inittab' снова, либо восстановлением резервной копии файла.

Различные дистрибутивы предлагают разные способы выхода из Х-интерфейса. В большинстве системе утилита 'init' изменяет текущий уровень исполнения. Она может быть использована для изменения уровня исполнения на такой, при котором Х-интерфейс не запускается:


# init 3


Есть также другие способы выхода из Х-интерфейса. Обратитесь к документации дистрибутива.


Руководства и информационные страницы LINUX


Руководства или информационные страницы обычно устанавливаются в процессе установки системы. Эти документы обычно достаточно свежие и содержат исчерпывающую информацию об использовании системных программ и утилит. Также, многие программы поддерживают ключ запуска --help, выводя по нему список типичных опций для этой программы. Для просмотра страницы руководства по той или иной команде введите в командной строке:


% man commandname


где commandname – интересующая вас команда. Схожим образом, ввод


% info commandname


выдаст информационную страницу для команды. В зависимости от приложения, один из способов может выдать более актуальную информацию. Интерфейс информационной системы интерактивен и содержит средства навигации. Если вы не можете найти страницу руководства для интересующей команды, вы можете добавить дополнительные объекты в переменной среды 'MANPATH'. Обратитесь к секции о переменных среды выше.





Сайт создан в системе uCoz