На данный момент реализация OpenGl для линукс отстает от последней версии на пару лет, расширения из новой версии присутствуют,
но официальной поддержки четвертой версии так и нет. Есть на это две причины:
- intel который делает ставку на open source и постепенно реализует все версии opengl в полном объеме, но еще не опубликовал код с поддержкой этой версии;
- независимым разработчикам не интересно реализовывать расширения которые не являются популярными и реализуют только те части которые им кажутся нужными.
Также amd работает над драйвером для ядра который можно использовать для обоих реализаций графики: для проприетарных
драйверов и открытого кода. Это позволит без обновления кода в ядра использовать проприетарные дрова с любым ядром, а
для открытого кода возможность всегда иметь поддержку всех новых чипов и постараться получить максимально полную реализацию
всех возможных стандартов.
Но существует шанс получить реализацию стандарта несколько быстрее: новая версия OpenGL
Vulkan - базируется на открытых
стандартах и должна иметь референсную реализацию всех частей для проверки валидности рендеринга. Особенность данного
стандарта заключается в том что он пересматривает все традиции современного OpenGL, если традиционно библиотека полностью
скрывает внутреннюю реализацию взаимодействия с видеокартой и сама следит за опустошением буферов и синхронизацией, то новый
стандарт предоставляет программисту самому следить за буферами и дает абстракцию к буферам видеокарты и памяти максимально
низкоуровнево и как следствие получаеться, что программист должен сам контролировать заполненость буферов и выделение памяти,
ошибки не проверяються перед отправкой в устройство. И основой нового стандарта послужила
API Mantle от AMD.
В результате доступно такие виды взаимодействия:
- апи описания памяти и флаги как обрабатывать эту память с отображением в виртуальную память процессора или использовать только внутреннюю память устройства реализуется через выбор пула памяти и характеристик сегмента;
- описание опкодов Spir V виртуальной машины базирующемся на байткоде llvm.
Valve c Intel уже имеют реализацию данных драйверов написанный
LunarG, который они обещают
полностью открыть в момент полного открытия стандарта.