- OpenGL
- Contents
- Installation
- Verification
- Switching between drivers
- Development
- OpenGL Hardware Database
- Как заставить mesa использовать только ту версию OpenGL, что подерживается карточкой?
- Platform specifics: Linux
- Contents
- Big Picture (DRI)
- Frame Buffer Device Hardware
- Checklist
- Direct Rendering Infrastructure
- Checklist
- debian dri
- debian linux kernel
OpenGL
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)
- mesa is an open-source OpenGL implementation, continually updated to support the latest OpenGL specification. It has a collection of open-source drivers for Intel graphics, ATI, AMD, AMD PRO, and NVIDIA GPUs and also provides software rasterizers, The included drivers in the package are
- i915 : for GMA 916G as well as the i830, i845 and i865 integrated GPU series.
- i965 : for Intel’s Gen 4 hardware and later. It is officially supported by Intel.
- iris : for Intel’s Gen 8 hardware and later. It is officially supported by Intel.
- r100 : for AMD’s Radeon R100 GPU series.
- r200 : for AMD’s Radeon R200 GPU series.
- r300 : for AMD’s Radeon R300, R400, and R500 GPU series.
- r600 : for AMD’s Radeon HD 2000 GPU series and later. It is officially supported by AMD.
- radeonsi : for AMD’s Southern Island GPUs and later. It is officially supported by AMD.
- nouveau : Nouveau is the open-source driver for NVIDIA GPUs.
- virgl : is a virtual GPU driver for sharing a GPU with a host for virtual machines.
- svga : for VMware virtual GPUs.
- zink : is a Gallium driver, it can be used to run OpenGL on vulkan.
- swrast : Legacy software rasterizer.
- softpipe : Software rasterizer, a reference Gallium driver.
- llvmpipe : Software rasterizer, uses LLVM for x86 JIT code generation and is multi-threaded.
- swr : High performance software rasterizer that uses AVX and AVX2 CPU instructions, also known as OpenSWR.
- nvidia-utils is proprietary driver for NVIDIA GPUs.
- amdgpu-pro-libglAUR is proprietary driver for AMD PRO GPUs.
Verification
To verify your OpenGL installation you can use mesa-demos glxinfo and you should get output like this :
(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.
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 .
Development
Using OpenGL in code requires functions loader, read more at Khronos.
This article or section needs expansion.
OpenGL Hardware Database
GPUInfo provides user reported GPU/driver combinations, supported extensions, capabilities, etc.
Источник
Как заставить mesa использовать только ту версию OpenGL, что подерживается карточкой?
Здрасти. Нигде не нахожу внятного ответа.
С недавнего времени заметил на одном лаптопе, что все опенжиельные программы и браузер как-то нехорошо едят проц и выяснил, что mesa показывает и в glxinfo и браузеру версию OpenGL 4.6. А на моём интеле HD Graphics 5500 — максимум 4.3 (и то в теории, сам интел долго поддерживал только 3.3, или около того). Видимо новая mesa накручивает циферки и недостающий функционал добивает процессором (через llvm, или как оно там). В некоторых случаях это было бы приятно, но только когда я сам этого хочу. Ещё загвоздка — пристроен nvidia оптимус. Может современные драйвера научились между GPU пробрасывать работу и поэтому интел показывает бо́льшую версию опенжиела?
Я хочу заблокировать версию на интеле и заставить месу работать ТОЛЬКО с GPU, не эмулировать на проце. Это реально? (ну и не сломать работу энвидии при этом, да)
П.С. Я с этой Манджарой совсем распустился, отвык ковыряться в железе!
Видимо новая mesa накручивает циферки и недостающий функционал добивает процессором (через llvm, или как оно там).
Если там в glxinfo явно указан llvmpipe в качестве рендера, тогда да, OpenGL на процессоре у тебя рендерится, в ином же случае используется твоя GPU, не важно какая там версия OpenGL в выводе.
Можешь через переменные окружения Mesa задать версию OpenGL.
Спасибо, да, эти переменные окружения — первое что пришло в голову, но тут сложнее. Вот что показывает:
Это просто вывод или уже с теми переменными?
Вспоминаются какие-то обрывки вычитаного в каких-то новостях про изменения работ интеловского «драйвера» месы, про «прозрачное» подключение llvm на лету, вот это вот всё. Но нигде не найду конкретного чтива.
Я допускаю, что такое возможно, но тоже нигде упоминания этого не могу найти, так что это маловероятно.
Твоя HD 5500 же не сильно старая, мне кажется вполне нормально, что в Mesa для нее OpenGL 4.6 реализован.
Покопался в системе, оказывается я когда-то ВРУЧНУЮ захардкодил для интела драйвер modesetting. Почему? Не помню. Убрал modesetting, перезагрузился, в логах иксов всё нормально, нед glamoregl, нет modesetting, но выхлоп glxinfo тот-же. Интересно то, что раньше при modesetting показывало драйвер не интел, а то ли glamoregl, то ли что-то другое. А теперь всегда интел, что и ввело меня в заблуждение. Интересно.
Короче. Вечером вернусь — продолжу ковыряния уже на гарантировано интеле 🙂
Убрал modesetting, перезагрузился, в логах иксов всё нормально, нед glamoregl, нет modesetting, но выхлоп glxinfo тот-же.
Это нормально, версия OpenGL не зависит от того, используется ли modesetting или xf86-video-intel. И в том, и в другом случае OpenGL через Mesa реализуется.
А теперь всегда интел, что и ввело меня в заблуждение. Интересно.
Насколько я знаю, это на новом драйвере Iris (не путать с графикой Intel Iris) всегда отображается Intel в строке «vendor string», если включишь старый i965 драйвер, то там должен быть другой текст.
А на моём интеле HD Graphics 5500 — максимум 4.3
А с чего ты взял? С того, что виндовый драйвер только 4.4 умеет? Но это говорит ничего, аппаратные требования между 4.4 и 4.6 не повышались, это только разница в самом API.
Это из официальной информации по моему процу от самого инетла. 4.3. При чём дооооолгое время (по крайней мере в линуксе) была доступна 3.3, или что-то типа того.
И не надо повышать требований, API должно как-то реализовать графическое ядро процессора. А если оно небыло заложено изначально, то как это делать? Там через фирмварю это можно сделать? Не знаю.
Так, ну, без modesetting ноут действительно стал похолоднее, но не идеально. (а чистил я его на прошлой неделе).
Попробовал подставить i965. И заметил, что сильно меняется строка «shading language version string». На современном интеле и том, что в связке с modesetting работал шейдинглэнгвич 4.60, а на i965 1.30. Вот, наверное, где загвоздка.
Это из официальной информации по моему процу от самого инетла. 4.3
Они просто не следят за каждым релизом месы (твой проц вышел в 2015, а сама OpenGL 4.6 — в 2017, да ещё пока в месу добавили, ещё три года прошло, кто тебе будет через 6 лет спецификацию править, на неё уже забили давно). Покажи хоть одну видяшку, которая умеет только 4.3 и ни версией больше. И у красных и у зелёных за 3.3 начинаются сразу карты с 4.6. Одним маленьким исключением является только TeraScale, у некоторых из которых нет аппаратного FP64, поэтому только OpenGL 4.2, а остальные TeraScale поддерживаются драйвером r600, в котором не допилена 4.6, поэтому даже те, что с FP64 имеют только 4.5.
API должно как-то реализовать графическое ядро процессора
Не все части API жёстко завязаны на железе. Например, повышением версии OpenGL до 4.6 для твоего проца в прошлом году состоялось после добавления поддержки шейдеров SPIR-V. Это чисто программная задача. То же касается способов работы с разными буферами и т.д.
Для моего процессора с Intel HD 630 на сайте Intel заявлена только поддержка OpenGL 4.4, однако в Mesa для него реализован OpenGL 4.6.
Может быть. Но факт — комп стал постоянно шуметь. Валенок из радиатора я уже вытащил, и во время простоя он прям холодный, температура в районе 35° держится. А стоит видео на ютубе запустить — шумит сразу. Или игру какую, температура подскакивает с пол пинка.
И в месе, и на винде. Я так понимаю, они просто изначально стали писать драйвер вулкана с оглядкой на Gen9 видяшки, несмотря на то, что аппаратные возможности Gen8 тоже позволяли. А поддержка SPIR-V делается именно для портабельности между Vulkan/DirectX/OpenGL. Вот и не оказалось 4.6 в официальных дровах для винды для видяшек Gen8. А в месе пилили, пилили, и допилили.
Короче, не знаю что так влияет, переключал и так и этак, плацебо работает, а комп жюжжит. Помогло отключение турбы в tlp. Ну и после добил плацебу intel-undervolt. Что характерно: после отключения турбы проц стал работать БЫСТРЕЕ. В смысле отзывчивости. Такие же проблемы были на моём самсунге, он при турбах тупо перегревался, вылетал, лочился и всячески нехорошо себя вёл, тогда надо было вручную править msr (или как её). Теперь и этот комп идёт к тому же. Старые ядра ставить не хочу. Хочу наблюдать за деградацией линукса из первых рядов.
чё ты за херню выдумываешь? при программном рендеринге бы в glxinfo было бы написано llvm. чё-то там «прозрачно» через llvm делать нельзя, или программный рендеринг или аппаратный, смешивать не выйдет
это просто у тебя проц говно, и реально нагружен
на мобильных процах ограничение теплопакета общее для проца и видео встройки. если ты разгоняешь проц — ты одновременно ЗАМЕДЛЯЕШЬ видео и наоборот. короче, ноутбуки говно как обычно и их владельцы не люди
Так то он не выдумывает.
То есть на Radeon 5xxx будет OpenGL 4.3 хотя они не поддерживают fp64.
Вообще Opengl почти всегда часть функций эмулировалась софтварно. Достаточно вспомнить Riva TNT2, для которой драйвер показывал OpenGL 1.2, а в реальности не было аппаратной поддержки даже 1.0, так как T&L появился только в Geforce 256. Или minigl драйвер для Voodoo 2/3…
тогдашний опенжоель был до-шейдерный. сейчас такое не прокатит. максимум шейдерами на видяхе программно что-то эмулировать, но всё ещё не на проце
> чё ты за херню выдумываешь? при программном рендеринге бы в glxinfo было бы написано llvm
нет такой возможности. ссылки твои не содержат ничего внятного
Да как это нет-то, когда есть
показывай ссылочку на код в mesa с комментариями, раз есть
Есть. На Intel D2500HN под хрюшей у меня так OpenGL работал. Чисто софтово. Такого торомозного OpenGL я со времён 98 винды и программного рендеринга не видал.
Если на линуксе используется процессорный (чисто программный) бэкэнд для рендеринга опенжиеля, то пишет драйвер llvm. Так, например на древней невидии с драйвером nouveau и драйвером modesetting.
Нормальная же работа месовских дров всё равно подразумевает выполнение некоторых вещей на процессоре. И я не знаю прав я или не прав, но подозреваю, что современная меса на моём старом интеле выносит слишком много операций на процессор.
чисто программный как через llvmpipe не считается, читай тред
походу у тебя проц троттлится.
ниже дело пишут — тебе видяха прогрела проц ибо висит на одном радиаторе и возможно и теплотрубка общая.
А раньше не прогревала потому что. ?
Мой предыдущий лаптоп тоже такую проблему имел, но его максимум был что-то около 3.3. и там чего-то шейдерного не хватало и шейдеры были на проце (по официальной версии интела, лень искать). Тогда нешейдерных игр было больше и игры имели переключатель — с шейдерами/без и разница ооочень чувствовалась. Например, в Astromenace. Его автор тут где-то на лоре ходит, мы с ним это обсуждали. Опенжиель без шейдеров сейчас уже и не найти, наверное, все и вся сидит на шейдерах, от этого аппаратное ускорение в фоксе на таком проце не ускоряет, а замедляет отрисовку и нагружает проц вдвойне.
Какое-то время мой теперешний комп был вперде, всё мог хорошо, но теперь стал прихрамывать и чем новее ядра и месы, тем больше. Мне кажется, что из-за той же проблемы, он говорит программам, что видяха могет то и это, проги с радостю нагружают его соответствующими плюшками, рассчитывая разгрузить проц для других вещей, но в реальности меса отдаёт часть операций процу и он работает ещё больше, потому что и данные гоняет и ещё и считает за видяху и ещё и своими делами занимается. Вот тебе и тенпература.
потому что раньше твоя видяха видимо не фурычила и тормозила.
Источник
Platform specifics: Linux
This Section explains how to install Drivers to make OpenGL Programs run under Linux and how to use different Libraries/Toolkits to create Opengl Programs.
Mesa is an open-source OpenGL implementation, continually updated to support the latest OpenGL specification.
Direct Rendering Infrastructure, also known as the DRI, is a framework for allowing direct access to graphics hardware under the X Window System in a safe and efficient manner.
Mesa implements EGL 1.4
Mesa implements OpenGL ES 1.1 and OpenGL ES 2.0
Mesa 11.0.0 implements the OpenGL 4.1 API. OpenGL 4.1 is only available if requested at context creation because compatibility contexts are not supported.
Contents
Big Picture (DRI)
Frame Buffer Device Hardware
Show current connected hardware device
Show hardware device specifications
GPU specifications may vary by Add-in-card manufacturer. Refer to the Add-in-card manufacturers’ website for actual shipping specifications
- Video BIOS interfaces software to the video chipset as system BIOS does for the system chipset
MSI Live Update 6 Monitor, auto-detects, suggests BIOS/Driver/Utilities
?=msi vbios 75.19.72.00.00
GPU Device Id: 0x10DE 0x104A Version: 75.19.72.00.00 NVIDIA GeForce GT 610 VGA BIOS MSINV809MS.FH0 Copyright (C) 1996-2012 NVIDIA Corp. GF119 Board — 13100000 Fan Speed Min: 40% Max: 100% Performance Level 0 Core Clk: 51.00 MHz Mem Clk: 135.00 MHz Shader Clk: 101.00 MHz Performance Level 1 Core Clk: 270.00 MHz Mem Clk: 405.00 MHz Shader Clk: 540.00 MHz Performance Level 3 Core Clk: 810.00 MHz Mem Clk: 500.00 MHz Shader Clk: 1620.00 MHz Memory Support DDR3, Elpida DDR3, Qimonda DDR3, Hynix DDR3, Samsung DDR3, Micron
- TMDS table version 2.0. Transition-minimized differential signaling (TMDS), a technology for transmitting high-speed serial data, is used by the DVI & HDMI video interfaces
- DCB version 4.0 (Device Control Block 4.0 Specification).
- DCBs are static tables used to describe the board topology and connections external to the GPU chip.
- DCBs define the devices connected, specific information needed to configure those devices, and the external electrical connections such as HDMI and Display Port
- DCBs do not try to explain the capabilities of the chip itself. That information is implicit in the VBIOS, firmware and drivers, which are built differently for each chip
Show hardware device chipset & family
NVC0 family (Fermi)
NVD9 (GF119) GeForce 410M, 510 (?), GT (520, 520M, 520MX), 610M Quadro NVS 4200M
Mesa is an open-source implementation of the OpenGL specification — a system for rendering interactive 3D graphics
Mesa ties into several other open-source projects: the Direct Rendering Infrastructure and X.org to provide OpenGL support to users of X on Linux, FreeBSD and other operating systems
Checklist
- Direct Rendering Infrastructure [V]
Direct Rendering Infrastructure
Mesa is an open-source OpenGL implementation, continually updated to support the latest OpenGL specification
Direct Rendering Infrastructure, also known as the DRI, is a framework for allowing direct access to graphics hardware under the X Window System in a safe and efficient manner. It includes changes to the X server, to several client libraries, and to the kernel (DRM, Direct Rendering Manager)
Checklist
debian dri
libgl1-mesa-dri (10.6.5-1 and others)
OpenGL API — DRI modules
Mesa provides GLX and DRI capabilities: it is capable of both direct and indirect rendering. For direct rendering, it can use DRI modules from the libgl1-mesa-dri package to accelerate drawing
does not include the OpenGL library itself, only the DRI modules
dep: libdrm-nouveau2 Userspace interface to nouveau-specific kernel DRM services — runtime
dep: libdrm2 Userspace interface to kernel DRM services — runtime
libegl1-mesa (10.6.5-1 and others)
EGL API — runtime
contains the EGL native platform graphics interface library. EGL provides a platform-agnostic mechanism for creating rendering surfaces for use with other graphics libraries, such as OpenGL|ES
contains modules to interface with the existing system GLX or DRI2 drivers to provide OpenGL via EGL
debian linux kernel
Linux kernel 4.1 and modules for use on PCs with AMD64
Источник