OpenGL и несколько графических процессоров — общая возможность

Мне было интересно, можно ли запускать многооконное приложение OpenGL одновременно на нескольких графических процессорах? Чтобы быть более конкретным, скажем, я создал приложение с двумя окнами, каждое из которых разделяет контекст GL между собой. Теперь, если бы я переместил одно из этих окон с дисплея 1 (работающего на графическом процессоре 1) на дисплей 2 (работающего на графическом процессоре 2), сработало бы это на самом деле? Поможет ли только обмен контекстами?

Мое первое предположение было бы нет. И если это действительно не так просто, есть ли способ сделать это? Я также мог предположить, что это зависит от того, управляются ли два графических процессора одним и тем же драйвером или нет (или, что еще хуже, пусть на машине есть карта ATI, а также карта nVidia, обе поддерживают разные версии GL).

Я был бы признателен за любые идеи по этой теме, чисто информационные, так как я ничего не могу найти после быстрого поиска в Google. Кто-нибудь знает возможности?

РЕДАКТИРОВАТЬ: Кстати, к сожалению, на данный момент у меня нет машины с несколькими графическими процессорами, поэтому я бы немного протестировал.


person PuerNoctis    schedule 24.09.2011    source источник


Ответы (1)


Краткий ответ: да.

Подробный ответ: Windows/Mac OS X: окна всегда обновляются одним графическим процессором, и, возможно, пиксели копируются на другой графический процессор.

Linux: если Xinerama выключена, вы не можете перемещать окно между экранами (графическими процессорами). Если Xinerama включена, iirc, по крайней мере, драйверы nVidia отправляют команды GL на оба графических процессора одновременно, чтобы вы могли их перемещать.

Существуют способы программного управления выбором GPU и копиями GPU-GPU. Подробнее здесь.

person eile    schedule 25.09.2011
comment
Спасибо за ответ! FAQ ответил на многие мои вопросы. И моя мысль о совместном использовании контекста на самом деле кажется ошибочной. Согласно часто задаваемым вопросам, контексты не могут быть разделены между несколькими конвейерами и, следовательно, недоступны на другом графическом процессоре. - person PuerNoctis; 25.09.2011
comment
Вы правы, за исключением OS X. Если вы работаете в OS X, я настоятельно рекомендую поговорить о нескольких графических процессорах с последней конференции WWDC. - person eile; 26.09.2011