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