Я читаю эту страницу, чтобы научиться настраивать гибридные планы графических процессоров. Но что означают термины, перечисленные в названии?
1 ответ
Ах, ПРАЙМ, также известный как "почему это никогда не работает". Длительное объяснение следующее ...
Итак, я предполагаю, что у вас есть (как и я) компьютер с как минимум двумя графическими картами. В некоторых системах они совместно используют графические выходные данные вашего компьютера и подключаются к ним через некоторый механизм переключения, который обычно называется MUX (называемый MULTIPLEXER), так что вы можете в основном установить в BIOS (или UEFI) параметр, какой видеокартой должна быть включен или подключен к какому выходу.
Однако большинство систем используют более дешевую и более сложную альтернативу совместного использования своих графических буферов. Это означает, что, например, ваша стандартная интегрированная карта с низким энергопотреблением всегда подключена к вашему дисплею, и все пиксели, которые выводятся на этот выход, должны каким-то образом проходить через эту карту.
Если все, что вы используете, это легковесные приложения, вы, вероятно, просто будете использовать внутреннюю карту. Но иногда вы хотите использовать свою мощную внешнюю карту, чтобы рассчитать все эти 3d-вещи для вас, поэтому вы должны сказать xrandr, что
- Внешняя карта выполняет часть работы (все программы с переменной окружения DRI_PRIME = 1 получают)
- Внутренняя карта должна перемешать данные с внешней карты в материал, который НЕ был рассчитан на внешней карте, и нарисовать все на экране.
Это называется « разгрузкой графического процессора », и внешняя карта в этом контексте является « разгрузкой разгрузки », в то время как внутренняя карта является « приемником разгрузки » (поэтому поток данных идет от источника к приемнику), и вы можете включить это (если он не включен по умолчанию) с
xrandr --setprovideroffloadsink source_provider sink_provider
где source_provider
и sink_provider
- это, вероятно, имена ваших графических драйверов, например nouveau
и Intel
.
однако в некоторых системах некоторые видеовыходы подключены к внешней карте. Это означает, что внутренняя карта, которая выполняет все перемешивание экранного пространства другой программы, должна каким-то образом отправлять свой вывод на внешнюю карту, которая затем просто рисует пиксели на выходе. В этом контексте данные передаются от источника одной карты к выходу другой, и для ее включения необходимо использовать
xrandr --setprovideroutputsource output_provider source_provider
где output_provider
- это имя внешней карты, к которой подключены ранее недоступные выходы, а source_provider
- встроенная карта, которая выполняет переключение данных, но не может подключиться к выходам, подключенным к внешней карте.
И последнее: если вы включите оба метода одновременно (что может случиться), материал для графических приложений рассчитывается на "хорошую" карту, пересылается на "хромую" карту, возится вместе с Остальное пространство экрана, а иногда отправляют обратно на "хорошую" карту, где она будет нарисована на экране. Недостаток всего этого заключается в том, что вся "перебранка экранов", также известная как рендеринг, выполняется на "хромой" карте, что может быть медленным.
Чтобы обойти это, вы должны поменять карту, которая выполняет весь рендеринг (называемый основной GPU), с интегрированной на внешнюю, что (насколько мне известно) невозможно сделать без перезапуска X-сервера, и это требует от вас возиться с файлами конфигурации xorg.
Если вы хотите, я могу дать вам много информации о том, как я сделал мои настройки (Arch linux, lenovo W530 с Intel и драйвером Nouveau, i3wm), а в противном случае я бы порекомендовал вам прочитать man xrandr
.
Гамак вытащить