В драйвере R600g реализована поддержка GLSL 1.4, TBO и UBO. Статус поддержки OpenGL 3.1 и 3.3

13.01.2013 23:49

В дерево исходных текстов gallium-драйвера R600g добавлена поддержка функциональности UBO и TBO. Данная работа была проделана Дэвидом Эйрли (Dave Airlie), разработчиком из компании RedHat, после того как он завершил работу над аналогичными возможностями для драйвера softpipe. TBO (Texture Buffer Objects) - 1D-текстуры, реализованные через буферы объектов, были добавлены как часть базовых требований в OpenGL 3.0. UBO (Uniform buffer objects), являются объектами буферов и хранят однотипные данные. UBO появились в OpenGL версии 3.1.

Кроме того, в данный момент драйвер R600g декларирует поддержку GLSL версии 1.40, что необходимо для соответствия стандарту OpenGL 3.1. Обновленный статус поддержки возможностей различных версий OpenGL можно посмотреть здесь (коммит от Dave Airlie с обновлением статуса поддержки).

Дополнительно отмечается реализация вызова GL_ARB_texture_multisample (texture multisample) для драйвера R600g. В результате подобных улучшений стало понятно, что драйвер R600g не только поддерживает практически все требования OpenGL 3.1, но и достаточно близок к поддержке OpenGL 3.3. На форуме ресурса Phoronix в результате развернулась любопытная дискуссия между разработчиками (в том числе Dave Airlie) и посетителями ресурса. В результате появились пояснения, обрисовывающие текущие проблемы и пояснения каких возможностей не хватает для декларирования поддержки OpenGL 3.3

По большому счету, проблем, мешающих декларированию OpenGL 3.3 драйвером R600g, осталось всего две. Первая проблема состоит в поддержке GLSL 1.50. Вторая проблема связана с поддержкой геометрических шейдеров (geometry shaders), при том Dave Airlie отметил, что уже существуют (пока непротестированные) патчи, реализующие поддержку геометрических шейдеров. В результате до реализации поддержки OpenGL 3.3 в R600g по сути остается лишь одно существенное препятствие.