Как протестировать opengl linux

Обновлено: 01.07.2024

В Linux для программ доступен интерфейс OpenGL. Direct3D от Microsoft недоступен в Linux.

4.3.1.Поддержка оборудования

SUSE LINUX включает в себя несколько драйверов OpenGL для поддержки 3D-оборудования. Таблица 4.3. В разделе «Поддерживаемое оборудование для 3D» представлен обзор.

Таблица�4.3.Поддерживаемое 3D-оборудование

3Dfx Voodoo Banshee

Если вы устанавливаете с помощью YaST в первый раз, 3D-ускорение можно активировать во время установки при условии, что YaST обнаружит поддержку 3D. Для графических чипов nVidia сначала необходимо установить драйвер nVidia. Для этого выберите патч драйвера nVidia в YOU (YaST Online Update). Из-за лицензионных ограничений драйвер nVidia не включен в дистрибутив.

Если вместо новой установки выполняется обновление или необходимо настроить дополнительный графический адаптер 3Dfx (Voodoo Graphics или Voodoo-2), процедура настройки аппаратной поддержки 3D отличается. Это зависит от того, какой драйвер OpenGL используется. Более подробная информация представлена ​​в следующем разделе.

4.3.2. Драйверы OpenGL

4.3.2.1.nVidia и DRI

Эти драйверы OpenGL можно легко настроить с помощью SaX2. Для адаптеров nVidia сначала необходимо установить драйвер nVidia (см. выше). Введите команду 3Ddiag, чтобы проверить правильность конфигурации для nVidia или DRI.

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

4.3.3.Инструмент диагностики 3Ddiag

Инструмент диагностики 3Ddiag позволяет проверить трехмерную конфигурацию в SUSE LINUX. Это инструмент командной строки, который необходимо запустить в терминале. Введите 3Ddiag �-h, чтобы получить список возможных параметров 3Ddiag .

Для проверки конфигурации XFree инструмент проверяет, установлены ли пакеты, необходимые для поддержки 3D, и используются ли правильная библиотека OpenGL и расширение GLX. Следуйте инструкциям 3Ddiag, если вы получаете сообщения об ошибках. Если все правильно, вы увидите на экране только сообщения о завершении.

4.3.sec:x11.3d.test. Утилиты тестирования OpenGL

Для тестирования OpenGL может пригодиться программа glxgears и такие игры, как tuxracer и armagetron (у пакетов одинаковые названия). Если была активирована поддержка 3D, можно было бы плавно играть в них на довольно новом компьютере. Без поддержки 3D в эти игры невозможно играть или они работают очень медленно. Используйте команду glxinfo, чтобы убедиться, что режим 3D активен, и в этом случае выходные данные содержат строку с указанием непосредственный рендеринг: Да.

4.3.5. Устранение неполадок

Если результаты теста OpenGL 3D отрицательные (игры не могут быть плавными), используйте 3Ddiag, чтобы убедиться в отсутствии ошибок в конфигурации (сообщений о сбоях). Если их исправление не помогает или сообщения о сбоях не появляются, просмотрите файлы журнала XFree86.

Часто вы найдете строку DRI отключена в файле XFree86 4.x /var/log/XFree86.0.log. Точную причину можно обнаружить, только внимательно изучив файл журнала — задача, требующая определенного опыта.

В таких случаях ошибки конфигурации не существует, так как она уже была бы обнаружена программой 3Ddiag. Следовательно, на данный момент единственным вариантом является использование резервного варианта программного рендеринга драйвера DRI, который не обеспечивает аппаратную поддержку 3D. Вам также следует отказаться от поддержки 3D, если вы получаете ошибки или нестабильность представления OpenGL. Используйте SaX2, чтобы полностью отключить поддержку 3D.

4.3.6.Поддержка установки

За исключением отката программной отрисовки драйвера DRI, все драйверы OpenGL в Linux находятся на стадии разработки и поэтому считаются экспериментальными. Драйверы включены в дистрибутив из-за высокого спроса на аппаратное ускорение 3D в Linux. Учитывая экспериментальный статус драйверов OpenGL, SUSE не может предложить какую-либо поддержку при установке для настройки аппаратного ускорения 3D или оказать дальнейшую помощь в решении связанных с этим проблем. Базовая конфигурация графического пользовательского интерфейса X11 не включает конфигурацию аппаратного ускорения 3D. Если у вас возникли проблемы с аппаратным ускорением 3D, рекомендуется полностью отключить поддержку 3D.

4.3.7.Дополнительная онлайн-документация

DRI: /usr/X11R6/lib/X11/doc/README.DRI (XFree86-doc)

Mesa/Glide: /usr/share/doc/packages/mesa3dfx/ (mesa3dfx)

OpenGL (открытая графическая библиотека) – это межъязыковой, кроссплатформенный интерфейс прикладного программирования (API) для рендеринга 2D- и 3D-векторной графики.

Содержание

Установка

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

  • mesa — это реализация OpenGL с открытым исходным кодом, которая постоянно обновляется для поддержки последней спецификации OpenGL. Он имеет набор драйверов с открытым исходным кодом для графических процессоров Intel, ATI, AMD, AMD PRO и NVIDIA, а также предоставляет программные растеризаторы. В пакет включены драйверы
    • i915: для GMA 916G, а также встроенных графических процессоров серий i830, i845 и i865.
    • i965: для оборудования Intel 4-го поколения и более поздних версий. Он официально поддерживается корпорацией Intel.
    • радужная оболочка: для оборудования Intel 8-го поколения и более поздних версий. Он официально поддерживается корпорацией Intel.
    • r100 : для серии графических процессоров AMD Radeon R100.
    • r200 : для серии графических процессоров AMD Radeon R200.
    • r300 : для графических процессоров AMD Radeon R300, R400 и R500.
    • r600 : для графических процессоров AMD Radeon HD серии 2000 и более поздних версий. Он официально поддерживается AMD.
    • radeonsi : для графических процессоров AMD Southern Island и более поздних версий. Он официально поддерживается AMD.
    • nouveau . Nouveau — это драйвер с открытым исходным кодом для графических процессоров NVIDIA.
    • virgl : драйвер виртуального графического процессора для совместного использования графического процессора с хостом для виртуальных машин.
    • svga : для виртуальных графических процессоров VMware.
    • zink : это драйвер Gallium, его можно использовать для запуска OpenGL на vulkan.
    • swrast : устаревший программный растеризатор.
    • softpipe: программный растеризатор, эталонный драйвер Gallium.
    • llvmpipe: программный растеризатор, использующий LLVM для генерации кода JIT x86 и многопоточный.
    • swr: высокопроизводительный программный растеризатор, использующий инструкции ЦП AVX и AVX2, также известный как OpenSWR.

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

    • nvidia-utils — это проприетарный драйвер для графических процессоров NVIDIA.
    • amdgpu-pro-libglAUR — это проприетарный драйвер для графических процессоров AMD PRO.
    • Для AMD (и ATI) рекомендуется использовать драйвер с открытым исходным кодом, если у вас нет очень веских причин для использования проприетарного.
    • Для NVIDIA установка проприетарного драйвера в основном лучше для новых карт или повышения производительности в целом.

    Подтверждение

    Чтобы проверить установку OpenGL, вы можете использовать mesa-utils glxinfo, и вы должны получить такой вывод:

    (конечно, с разными значениями в зависимости от ваших настроек)

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

    Переключение между драйверами

    Для гибридной графики вам может понадобиться PRIME.

    Примечание. Согласно сообщению на Reddit, два графических процессора от разных поставщиков могут работать одновременно нормально.

    Вы можете переопределить используемый драйвер, используя следующую переменную среды:

    По умолчанию mesa ищет драйверы в /lib/dri/, вы можете просмотреть список драйверов

    driver — это имя драйвера без _dri.so . Если это не удастся, он вернется к llvmpipe.

    Вы также можете использовать драйверы программного растеризатора OpenGL, установив следующие переменные среды:

    драйвер — это softpipe , llvmpipe или swr .

    OpenGL поверх Vulkan (Zink)

    Если у вас возникли проблемы (ошибка в RadeonSI, Iris и т. д.), вы можете попробовать использовать Zink.

    По состоянию на 30 ноября 2021 г. многие приложения не работают на графических процессорах NVIDIA даже с последним драйвером 495.44 и основной веткой mesa-git AUR. В сочетании с расширением Copper DRI (еще не восходящим потоком) средний FPS в Tomb Raider на 20 % выше, чем на RTX 2070.

    Разработка

    Примечание. Этот раздел предназначен для разработчиков, которые хотят использовать OpenGL. Конечным пользователям ничего из этого раздела не нужно.

    Для использования OpenGL в коде требуется загрузчик функций, подробнее читайте на Khronos.

    Эту статью или раздел необходимо расширить.

    База данных оборудования OpenGL

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

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

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

    1. Glxger от mesa-utils

    Glxgears является частью утилит рендеринга Mesa OpenGL с открытым исходным кодом, доступных в пакете mesa-utils Debian/Ubuntu. Его можно использовать как простой инструмент для тестирования графического процессора, просто запустите приведенную ниже команду и измерьте значение FPS.

    Значение FPS должно быть около 60 FPS, но производительность будет значительно повышена, если вы используете переменную среды vblank_mode=0. Я получил более 6000 FPS с графическим процессором Intel HD 3000.

    2. Glmark2 от команды Linaro

    Это еще один популярный инструмент с открытым исходным кодом для стресс-тестирования GPU и эталонного теста OpenGL, созданный на основе оригинального Glmark. доступно для платформ Linux и Android.

    Ubuntu предоставляет бинарные пакеты glmark2, поэтому его можно очень легко установить в любом дистрибутиве на базе Ubuntu. Просто запустите команду, это установит последнюю версию.

    К сожалению, бинарные пакеты glmark2 недоступны в репозитории Debian, но вы можете скомпилировать и установить последнюю версию glmark2 из исходного кода в Debian.

    Тестирование: теперь просто введите glmark2 в терминале, откроется стандартное окно размером 800 x 600 пикселей, отображающее различные 3D-объекты, такие как лошадь, кошка, кролик и т. д. и т. п. Полный тест займет около 8 минут. , наконец, проверьте результаты. Тест показал мне среднюю оценку 1000 для графического процессора Intel HD 3000.

    тестирование производительности glmark2

    Нагрузка на графический процессор. Запуск glmark2 требует большой вычислительной мощности графического процессора, поэтому зацикливание процесса будет имитировать сильную нагрузку на графический процессор.

    Тестирование графического процессора NVIDIA с помощью glmark2: у меня есть ноутбук с переключаемым графическим процессором NVIDIA Optimus (GeForce GT 540M), поэтому я попытался протестировать его с помощью glmark2. Пробовал всеми известными мне способами, но результат всегда был ошеломляющим. Графический процессор никогда не набирал больше 446 баллов, я провел 4 теста, возможно, есть проблема совместимости glmark2 с NVIDIA.

    Команды, которые я использовал для тестирования glmark2 с графическим процессором NVIDIA Optimus.

    3. Furmark из GpuTest от geeks3d

    Загрузите версию для Linux, это будет zip-файл. Предполагая, что вы загрузили его в папку «Загрузки», просто распакуйте и запустите его.

    Откроется окно размером 800 x 600 пикселей, отображающее детализированный трехмерный объект, как показано ниже.

    furmark gpu banchmarking in Linux

    Этот тест дал мне прерывистый и запаздывающий результат, в среднем 9–10 кадров в секунду с графическим процессором Intel HD 3000.

    Я снова протестировал его с дискретным графическим процессором NVIDIA,

    Нагрузка на графический процессор с помощью furmark: запуск furmark сильно нагружает графический процессор, приведенная ниже команда запустит программу в окне с разрешением 1024 x 640 пикселей в цикле.

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

    Заключение

    Есть еще несколько расширенных функций и тяжелых инструментов для тестирования графических процессоров от unigine corp, unigine Heaven, unigine vally и т. д. и т. д. Я не буду говорить о них больше здесь, вы всегда можете скачать и протестировать их отсюда.< /p>

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

    Мохит Джайн говорит

    Спасибо за сообщение. Довольно полезно.

    Я использовал glxgears и glmark2, и оба они отлично работали на моем ноутбуке Lenovo B590 со спецификациями: Intel 2020M 2,4 ГГц, 8 ГБ ОЗУ с дискретной видеокартой NVIDIA GT 720M под управлением 64-разрядной версии Linux Mint 17.3 Cinnamon.

    Я получил следующие результаты для вышеуказанного ноутбука:

    glxgears
    ------------
    8980 кадров за 5,0 секунд = 1795,751 кадров в секунду
    8075 кадров за 5,0 секунд = 1614,687 кадров в секунду
    10834 кадров за 5,0 секунд = 2 166,595 кадров в секунду

    Спасибо за отзыв.

    Спасибо за прекрасную информацию. Особенно ссылки на GPUtest/furmark. Я пытаюсь найти тесты для измерения вычислительной мощности карт, вероятно, похожие на мистера Вудолла.

    Я проверю PTS, хотя мне может понадобиться разработать что-то в рамках PTS. В PTS можно проводить собственные сравнительные тесты, верно?

    Привет, Павел, интересно!
    Я думаю, вам нужно что-то еще, помимо PTS, для измерения чистой вычислительной мощности в TFLOPS.

    Я также хочу знать о ваших будущих проектах, улучшениях в этой области, поддерживаете ли вы учетную запись G+ или Twitter?

    Мартин Вудалл говорит

    Кажется, я не могу найти какое-либо приложение Ubuntu с чем-то похожим на те же функции отчетов TFOPS (графический вывод тоже был бы хорош, но не обязателен, поскольку я настраиваю с помощью графического интерфейса пользователя)

    Моя конечная цель – сравнить производительность одного физического аппаратного сервера с несколькими GPU для одного арендатора с общими виртуализированными экземплярами AWS с несколькими GPU и виртуализированными серверами без общего доступа AWS

    Были бы полезны любые рекомендации приложений по отчетам о тестах в TFLOPS на топовых графических процессорах Nvidia серии P (P-100 GP-100).

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

    [Взаимодействие OpenGL и Vulkan в Linux] Часть 11. Отладка синхронизации семафоров 🍄

    Одной из важных частей реализации групп расширений EXT_external_objects и EXT_external_objects_fd для iris (драйвер Intel gallium OpenGL) была синхронизация семафоров (расширение EXT_semaphore). Мы видели, как структуры и функции семафоров GL, представленные этим расширением, должны использоваться в предыдущих сообщениях об интероперабельности. В этом посте я постараюсь описать методы, которые мы использовали для отладки самой реализации EXT_semaphore, а также бэкэнда заборов драйвера iris, не вдаваясь во многие внутренние детали драйвера.

    EXT_external_objects и EXT_external_objects_fd для драйвера Intel iris были объединены в mesa3D! [обновлено]

    Этот пост представляет собой краткое обновление статуса расширений OpenGL и Vulkan Interoperability для драйверов Linux mesa3D:

    Обе реализации EXT_external_objects и EXT_external_objects_fd для драйвера Intel iris были окончательно объединены в mesa3D ранее сегодня и будут доступны в следующем выпуске! 🎉

    FOSSCOMM 2020 и обновление статуса расширений EXT_external_objects(_fd) [en, gr]


    FOSSCOMM (Встреча сообществ разработчиков бесплатного программного обеспечения с открытым исходным кодом) – это греческая конференция, целью которой является популяризация использования СОПО в Греции и объединение энтузиастов СОПО. Он полностью организован волонтерами и университетами и каждый год проводится в разных городах. В этом году он был виртуальным, так как Греция находится на карантине, и хотя мы пропустили все самое интересное, было много интересных выступлений, которые можно было посмотреть.

    Мое выступление было очень похоже на то, что я сделал на XDC 2020 о совместимости OpenGL и Vulkan. Это было обновление статуса расширений EXT_external_objects и EXT_external_objects_fd OpenGL для различных драйверов mesa и работы Igalia над ними.

    [Взаимодействие OpenGL и Vulkan в Linux] Часть 10. Повторное использование трафаретного буфера Vulkan из OpenGL

    Это 10-й пост о совместимости OpenGL и Vulkan с EXT_external_objects и EXT_external_objects_fd. Мы увидим последний вариант использования, который я написал для Piglit, чтобы протестировать реализацию расширений на различных драйверах mesa в рамках моей работы для Igalia. В этом тесте Vulkan выделяет буфер трафарета и заполняет его шаблоном, а затем использует его в OpenGL для рендеринга чего-то еще. Мы проверяем правильность импорта шаблона и повторяем процесс для других форматов трафарета глубины.

    [Взаимодействие OpenGL и Vulkan в Linux] Часть 9. Повторное использование буфера Vulkan z из OpenGL

    В этом 9-м посте о совместимости OpenGL и Vulkan в Linux с EXT_external_objects и EXT_external_objects_fd мы увидим еще один вариант использования расширений, в котором буфер глубины Vulkan используется для рендеринга шаблона с OpenGL. Как и любой другой пример использования, описанный в этих сообщениях, он был реализован для Piglit как часть моей работы с графической командой Igalia по проверке реализации расширений различных драйверов mesa.

    [Взаимодействие OpenGL и Vulkan в Linux] Часть 8. Использование буфера вершин Vulkan из OpenGL, а затем из Vulkan

    Это восьмой пост о совместимости OpenGL и Vulkan с EXT_external_objects и EXT_external_objects_fd, в котором я объясняю некоторые примеры использования расширений, которые я реализовал для Piglit в рамках своей работы для Igalia. В этом примере буфер вершин Vulkan создается и заполняется вершинами, а затем используется для рендеринга одного и того же рисунка шахматной доски один раз с помощью OpenGL и один раз с помощью Vulkan.

    [Взаимодействие OpenGL и Vulkan в Linux] Часть 7. Повторное использование буфера вершин Vulkan из OpenGL

    Это седьмой пост о совместимости OpenGL и Vulkan с EXT_external_objects. Речь идет о другом варианте использования EXT_external_objects, реализованном для Piglit в рамках моей работы над графической командой Igalia. В этом случае буфер вершин выделяется и заполняется данными из Vulkan, а затем используется из OpenGL для рендеринга узора на экране.

    [Взаимодействие OpenGL и Vulkan в Linux] Часть 6. Мы должны иметь возможность повторно использовать пиксельный буфер Vulkan из OpenGL, но не перезаписывать его!

    Это еще одна запись в блоге о совместимости OpenGL и Vulkan. На самом деле это не описание нового варианта использования, поскольку тест Piglit, который я собираюсь описать, очень похож на предыдущий пример, который мы видели, где мы повторно использовали пиксельный буфер Vulkan из OpenGL.Этот тест Piglit был написан, потому что в спецификации есть интересная ошибка (выпуск 7), согласно которой перезапись буферов Vulkan с помощью glBufferSubData невозможна! Это интересно, потому что мы можем перезаписывать текстуры, но не буферы. Когда мы пытаемся перезаписать буфер с помощью glBufferSubData, драйвер должен вернуть ошибку Invalid Operation Error, и это то, что мы протестировали с помощью теста vk-pix-buf-update-errors, который можно найти в каталоге testings/spec/ext_external_objects, как и все другие тесты. мы уже видели.

    [Взаимодействие OpenGL и Vulkan в Linux] Часть 5. Пиксельный буфер Vulkan повторно используется из OpenGL

    Это пятая публикация из серии статей о взаимодействии OpenGL и Vulkan, в которой я описываю некоторые варианты использования расширений EXT_external_objects и EXT_external_objects_fd. Эти варианты использования были реализованы внутри Piglit в рамках моей работы для графической команды Igalia с использованием платформы Vulkan, которую я написал для этой цели.

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

    [Взаимодействие OpenGL и Vulkan в Linux] Часть 4. Использование OpenGL для перезаписи текстур, выделенных Vulkan.

    Это четвертая публикация о совместимости OpenGL и Vulkan в Linux. Первый был введением в расширения EXT_external_objects и EXT_external_objects_fd, второй описывал простой вариант использования взаимодействия, когда выделенная Vulkan текстура заполняется OpenGL, а третий был о немного более сложном случае использования, когда текстура Vulkan заполнялась Vulkan. и отображается OpenGL. В этом 4-м и последнем посте об общих текстурах мы увидим пример использования, когда текстура Vulkan заполняется Vulkan, затем перезаписывается OpenGL, затем считывается обратно из Vulkan, а затем снова отображается с помощью OpenGL. Этот более сложный вариант использования также был написан для Piglit с использованием небольшого фреймворка Vulkan, который я написал для тестирования расширений внешних объектов. Исходный код можно найти в каталоге test/spec/ext_external_objects основной ветки mesa/piglit.

    Читайте также: