Как отключить opengl linux

Обновлено: 06.07.2024

OpenGL (Open Graphics Library) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics.

Contents

Installation

To run any application that uses OpenGL you will need to install driver(s) for your hardware (either GPUs or CPUs)

Note: The right driver for mesa should be selected automatically, you do not have to configure it, just install the package.
  • nvidia-utils is proprietary driver for NVIDIA GPUs.
  • amdgpu-pro-libglAUR is proprietary driver for AMD PRO GPUs.
  • For AMD (and ATI) it is recommended to use the open-source driver unless you have a very strong reason to use proprietary one.
  • For NVIDIA installing the proprietary driver is mostly better for newer cards or better performance in general.

Verification

(with different values depending on your setup of course)

From the same package you can also try glxgears , you should see 3 rotating gears.

Switching between drivers

For Hybrid graphics you might want to see PRIME.

Note: According to a reddit post can have 2 GPUs from different vendors working concurrently just fine.

You can override used driver using the following environment variable:

By default mesa searches for drivers in /lib/dri/ you can see the list of drivers by

driver is the name of the driver without _dri.so . If it failed it will fallback to llvmpipe.

You can also use OpenGL software rasterizer drivers by setting the following environment variables:

driver is one of softpipe , llvmpipe , or swr .

Tip: As of the time of writing this llvmpipe & swr are faster than softpipe.

Development

Note: This section is for developers who wants to use OpenGL. End users do not need any thing from this section.

Using OpenGL in code requires functions loader, read more at Khronos.

This article or section needs expansion.

Reason: Put list of packages relevant to OpenGL and in Arch repo (Discuss in Talk:OpenGL)

OpenGL Hardware Database

GPUInfo provides user reported GPU/driver combinations, supported extensions, capabilities, etc.

Установлен проприетарный драйвер NVIDIA, но видеокарта не используется

К сожалению, вопросы установки проприетарных драйверов для видеокарт на Linux до сих пор не так безболезненны, как на Windows. Но я столкнулся с ещё более запутанной ситуацией: после успешной установки драйверов, не получается задействовать, использовать видеокарту NVidia.

Симптомы проблемы следующие:

  • драйвера для видеокарты NVidia успешно установились
  • система загружается и прекрасно работает
  • но используется видео ядро центрального процессора Intel, а видеокарта NVidia не используется
  • попытки переключиться на NVidia либо не приносят успеха, либо приводят к чёрному экрану (когда иксы, графическая оболочка, не могут загрузиться)
  • программы использующие CUDA (например, Hashcat) прекрасно работают

Чуть подробнее о последнем пункте. Для меня видеокарта представляет главный интерес для брут-форса (взлома) хешей паролей. И эта функция работает, видеокарта нагружена, Hashcat показывает устройство видеокарты как успешно используемое, высокая скорость брут-форса паролей. Именно по этой причине я уже полтора года (!) после установки проприетарного драйвера NVidia не догадывался, что у меня какие-либо проблемы.

И всё-таки драйвер NVidia работает

Я могу убедиться в этом, поскольку срабатывала команда

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

Какую видеокарту, встроенную в центральный процессор или выделенную выбирает Linux?

Некоторые видеокарты от NVidia поддерживают технологию NVIDIA Optimus. Суть этой технологии в том, что программное обеспечение автоматически переключается на интегрированную (Intel) или выделенную (NVidia) видеокарту. На таких системах всё довольно просто — по крайней мере в теории. Нужная видеокарта может выбираться множество раз во время работы Linux.

Но на компьютерах без NVIDIA Optimus видеокарта выбирается настройками пользователя, либо по умолчанию используется графика Intel.

Как узнать, какая видеокарта используется в Linux

Есть несколько команд, которые покажут, какая видео карта используется:

Эта же самая команда, но запущенная через optirun из пакета Bumblebee:

Пример вывода, в котором показано, что задействована видеокарта NVIDIA:

Подробнее о optirun и Bumblebee будет позже.

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


С помощью команды lspci и определённых опций можно вывести информацию об устройствах, на конце строки с используемой видеокартой должно быть [VGA controller]. Команда для фильтрации данных:

Как проверить, используется ли видеокарта NVIDIA

Следующая команда покажет процессы, которые использует видеокарта NVIDIA (если процессов нет, значит видеоадаптер не используется):

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

Как установить видео драйвер NVidia в Linux

Для установки проприетарного драйвера NVidia в Kali Linux выполните команды:

Возможно, этот же способ будет работать и для Debain и других производных.

Для установки драйвера NVidia в Arch Linux, BlackArch и их производные выполните команду:

Кроме указанных, дополнительно будут установлены пакеты nvidia-utils и opencl-nvidia. Если вам не нужен CUDA, то не устанавливайте пакет cuda.

Как установить и пользоваться Bumblebee (как включить NVIDIA Optimus в Linux)

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

На Kali Linux, Debian и их производных выполните:

В ПРОЦЕССЕ ПОДГОТОВКИ

На Arch Linux, BlackArch и их производных выполните:

Система зависает после установки Bumblebee

Я столкнулся с проблемой, что Bumblebee в принципе работает, но при использовании некоторых команд, которые задействуют CUDA или обращаются к модулям ядра, система зависала. Чтобы проверить, есть ли у вас эта проблема, выполните команду lspci, например:

Если система полностью зависнет, то перезагрузитесь и удалите пакет bbswitch.

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

Для этого создайте файл /etc/modprobe.d/options.conf:

и скопируйте в него:

Но у меня сработало только удаление bbswitch.

Как пользоваться Bumblebee / NVIDIA Optimus в Linux

Теперь любую программу, которая должна использовать видеокарту NVIDIA, можно запустить командой вида:

Когда optirun не используется, то карта NVIDIA должна находиться в отключённом состоянии, что должно сберегать электричество.

Как проверить Bumblebee / NVIDIA Optimus в Linux

Запустите тест видеокарты обычной командой:


А также с помощью optirun:


Обратите внимание, что FPS вырос примерно в 20 раз.

Ещё один вариант теста работы видеокарты:


А также с помощью optirun:


Вы должны увидеть прирост производительности при использовании optirun.

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


Вы должны увидеть процессы, которые используют дискретную видеокарту.

Если у вас установлен веб-браузер Chromium, то запустите его двумя способами:

В обоих случаях откройте вкладку:

Там вы увидите информацию об используемом графическом чипе:



Заключение

Даже после написания этой инструкции, после того, как я разобрался во многих вопросах, всё ещё осталось много непонятного.

Например, как использовать постоянно только карту NVidia? Ниже я покажу что именно пробовал — абсолютно всё не сработало.

Также открыт вопрос, как установить Bumblebee в Debian и производные дистрибутивы? Все команды, которые я пробовал, приводят к чёрному экрану, либо неработоспособности Bumblebee.

БОНУС. Как сделать видеокарту NVidia используемой по умолчанию в Linux

В этом разделе я перечислил то, что у меня не сработало — поэтому можете пропускать этот раздел.

Предупреждение: если после указанных в этом разделе действий вы не можете загрузиться — появляется чёрный экран, то во время неудачной загрузки нажмите Ctrl+Alt+F*, где вместо звёздочки пробуйте указать разные цифры, например, Ctrl+Alt+F1, Ctrl+Alt+F2 и т. д., пока не появится консоль. Введите ваш логин и пароль и откатите изменения, которые привели к неудачной загрузке. Для удаления пакетов используйте стандартные менеджеры пакетов вашего дистрибутива, а для редактирования файлов в командной строке используйте vim или nano. Если вы не знакомы с vim или nano, то пропустите этот раздел!

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

Начните с проверки настроек БИОСа — там может быть возможность отключить одну из карт.

Для явного указания используемого драйвера можно создать файл /etc/X11/xorg.conf.d/20-nvidia.conf.

И скопировать в него примерно следующее:

Но у меня не происходит загрузка в графический интерфейс.

Если вы хотите отключить загрузку драйверов Intel, то создайте файл /etc/modprobe.d/blacklist-intel.conf:

И скопируйте в него примерно следующее (название модулей могут отличаться в зависимости от вашего центрального процессора):

Среди других советов встречаются добавить в опции загрузки ядра следующее:

Если у вас EFI (а не БИОС), то для изменения опций загрузки ядра нужно открыть файл вида /boot/loader/entries/*.conf. У меня этот файл называется /boot/loader/entries/arch.conf:

Также рекомендуют изменить файл /mkinitcpio.conf:

В котором вместо строки

нужно записать строку

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

So I want to find out which is my OpenGL version. I have access to Ubuntu via SSH. Which command shall I execute?

63.5k 29 29 gold badges 165 165 silver badges 255 255 bronze badges 1,383 2 2 gold badges 9 9 silver badges 6 6 bronze badges

8 Answers 8

To Check OpenGL Version,

glxinfo | grep "OpenGL version"

You will get the output as follows,

Edit:

You may have better luck with modern OpenGL just grepping for "version" instead of "OpenGL version" given the differences between the core and compat profiles, as well as the various GLSL and GLES versions:

Notice that the actual version is presented by the "core profile version" (4.1), whereas the "OpenGL version" is presented as 3.0.

29.8k 22 22 gold badges 110 110 silver badges 170 170 bronze badges 73.8k 58 58 gold badges 190 190 silver badges 228 228 bronze badges Careful! glxinfo is telling you the version of OpenGL used by your DISPLAY, not the remote machine! However, it will tell you the GLX version of the remote machine (the "client" bits). Note: In Ubuntu 16.04, glxinfo is not available by default. To be able to use it, you need to install mesa-utils package.

depending on what you're looking for:

Open GL Implementation

You can use glxinfo, from the mesa-utils package:

Development Libraries

this depends a little,

will tell you version information, etc. of any package.

but you'll need to know what specific part/implementation, etc. of opengl you're interested in. i suspect, for you, it'll be:

Note: I've added this answer at a later date, because none of the existing answers address a crucial aspects regarding ssh, and will give misleading values to those who follow the above instructions.

Use X-forwarding when ssh-ing. This is enabled with ssh -X .

I should note here that this is both the wrong graphics card, and wrong version numbers. ('Wrong' in terms of what you would expect).

Set DISPLAY variable to :0 , to allow access to the graphic card's driver from the remote session.

This lists the correct graphics card (the one on the remote computer), as well as the correct version numbers.

На этом уроке мы рассмотрим установку и настройку Code::Blocks в Linux для работы с OpenGL, а также запустим проект, рассмотренный на предыдущем уроке.

Подготовительные шаги

Установка будет происходить на чистой системе debian-10.3.0-amd64 XFCE под VMware. Я не буду описывать сам процесс установки ОС, ограничусь лишь скриншотом итоговой конфигурации системы:


Также для данного проекта я в домашней папке своего пользователя создал каталог OpenGL_Project , полный путь к которому выглядит как /home/diego/OpenGL_Project/ , где diego — это имя моего пользователя в системе. У вас оно наверняка будет другим. Учитывайте это!

На всякий случай избегайте кириллицы в путях и именах файлов.

Еще один момент: для установки новых пакетов в Linux я привык пользоваться программой aptitude , а не стандартной apt-get . Поэтому вы можете поступить следующим образом:

Вариант №1: Установить aptitude , для этого в терминале выполните команду sudo apt-get install aptitude .

Вариант №2: Можете пользоваться стандартной программой apt-get . Но учтите, что если по ходу данного туториала встречается установка пакета командой вроде sudo aptitude install НАЗВАНИЕ_ПАКЕТА , то в вашем варианте команда установки пакета должна выглядеть как sudo apt-get install НАЗВАНИЕ_ПАКЕТА .

Установка GLFW в Linux


Распаковываем скачанный архив в папку /home/diego/OpenGL_Project/ , я пользуюсь архиватором Xarchiver:


Указываем необходимую нам папку:


Видим получившуюся распакованную папку glfw-3.3.2 :



Установка CMake в Linux

Теперь необходимо поставить систему сборки проектов CMake. Для этого в окне терминала выполните следующую команду:

sudo aptitude install cmake-gui



Указываем папку с исходниками GLFW и вторую папку, где должен будет появиться результат работы CMake (у себя для этого я создал папку build ), и нажимаем кнопку "Configure" :


В появившемся окне выбираем пункт "CodeBlocks – Unix Makefiles" и нажимаем кнопку "Finish" :


В результате видим… кучу ошибок (добро пожаловать в мир Linux):

Нажимаем "ОК" , снова возвращаемся в терминал и устанавливаем пакет xorg-dev :

sudo aptitude install xorg-dev


Возвращаемся в CMake и выставляем галочки так, как показано ниже:



В результате, в папке build у нас должен появиться файл проекта GLFW.cbp :



Установка Code::Blocks в Linux

Пришло время установить среду программирования Code::Blocks. Для этого возвращаемся в терминал и вводим следующую команду:

sudo aptitude install codeblocks


После установки иконка файла проекта поменяет свой внешний вид:


Открываем данный файл, в результате чего будет запущен Code::Blocks, и появится окно с выбором компиляторов. В системе должен присутствовать как минимум один компилятор — GNU GCC Compiler . Жмем "ОК" :


Открывается окно проекта, нажимаем на шестеренку и компилируем его:


После этого в папке build/src должен появиться скомпилированный файл библиотеки libglfw3.a :



Установка GLAD в Linux

Заходим на оф. сайт GLAD и указываем следующие настройки, после чего нажимаем кнопку "Generate" :


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


Далее, чтобы внести немного порядка и организованности в наш будущий проект, поместите папки include и src , содержащиеся в данном архиве, в папку /home/diego/OpenGL_Project/ .

Затем скопируйте папку /home/diego/OpenGL_Project/glfw-3.3.2/include/GLFW в папку /home/diego/OpenGL_Project/include/ .

Также создайте папку lib в /home/diego/OpenGL_Project/ и скопируйте в нее файл скомпилированной библиотеки libglfw3.a .

В итоге у вас должна получиться примерно следующая картина иерархии папок и файлов:



Создание проекта в Code::Blocks

Запускаем Code::Blocks и создаем новый пустой проект: "File" > "New" > "Project…" , выбираем "Empty Project" и нажимаем кнопку "Go" :


Затем нажимаем кнопку "Next" :


Задаем имя проекту. Я назвал его CodeBlocks и выбрал папку /home/diego/OpenGL_Project/ :


В следующем окне должны быть следующие настройки:


Теперь скопируйте файл glad.c из папки /home/diego/OpenGL_Project/src/ в папку с проектом /home/diego/OpenGL_Project/CodeBlocks/ .

Также создайте файл main.cpp в папке /home/diego/OpenGL_Project/CodeBlocks/ .

Затем эти два файла нужно будет добавить в наш проект. Для этого вернемся обратно в Code::Blocks, нажмем правой кнопкой мыши на название нашего проекта и выберем пункт "Add files…" :


Добавляем в проект файлы glad.c и main.cpp :


Настало время подключить необходимые папки с заголовочными файлами и библиотеки, а также настроить компилятор и линкер. Для этого в Code::Blocks переходим в "Project" > "Build options…" :


Переходим на вкладку "Linker settings" и настраиваем её следующим образом:


Примечание: В правом окошке "Other linker options" необходимо указать следующие параметры:

-lglfw3 -ldl -lX11 -lpthread -lm -lXrandr -lXi

Затем добавим дополнительные пути для поиска заголовочных и библиотечных файлов. Для этого переходим в "Search directories" > "Compiler" :


Затем подобные действия проделываем и для вкладки "Linker" , указывая путь к папке lib :

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