Релиз Mesa 8.0 с поддержкой OpenGL 3.0

Увидел свет релиз свободной реализации OpenGL API - Mesa 8.0. Новая версия примечательна двумя существенными изменениями: реализацией поддержки OpenGL 3.0/GLSL 1.30 и существенной чисткой кодовой базы от устаревших компонентов. В настоящий момент ветка Mesa 8.0 имеет экспериментальный статус, после проведения окончательной стабилизации кода, будет выпущен стабильный релиз 8.0.1.

Основные улучшения в Mesa 8.0:

  • Обеспечена полная поддержка OpenGL 3.0 и языка описания шейдеров GLSL 1.30 для драйверов i965 (Intel Sandy Bridge и Ivy Bridge), R600g (видеокарты ATI/AMD семейства от HD2000 до HD6900), Gallium3D Softpipe и Nouveau NVC0 (карты NVIDIA с GPU Fermi, такие как GeForce 400/500). Поддержку OpenGL 3 в драйвере NV50 для карт GeForce 8 планируется довести до конца в следующей версии Mesa. Для различных драйверов на разном уровне близится к завершению реализация поддержки OpenGL 3.1, 3.2 и 3.3. Реализация поддержки OpenGL 4.0, 4.1 и 4.2 пока находится на ранней стадии разработки;
  • Проведена значительная чистка кода от устаревших и плохо поддерживаемых компонентов. В качестве причины проведения чистки называется необходимость осуществления рефакторинга и модернизации кодовой базы для обеспечения более качественной поддержки современных драйверов. В общей сложности удалено около 230 тысяч строк кода. В частности:
    • Удалены все драйверы, поддерживающие только интерфейс DRI1, такие как i810 (старые интегрированные видеокарты Intel 8xx), mach64 (ATI Mach GPU), mga (Matrox GPU), r128 (ATI Rage 128 GPU, включая карты Rage Fury, XPERT 99 и XPERT 128;), savage (S3 Savage GPU), sis (Crusty SiS GPU), tdfx (3dfx Voodoo) и unichrome (VIA IGP);
    • Удалён код классических драйверов R200/R300/R600 для видеокарт ATI Radeon 9xxx, X300, X1050, X550, X600, HD 2xxx, HD 3xxx. Вместо классических драйверов рекомендуется использовать новые драйверы на базе архитектуры Gallium3D, которые не отстают по стабильности, но обгоняют классические драйверы по производительности и функциональности. Единственной и наиболее значимой проблемой является то, что для работы Gallium3D необходимо наличие специального DRI2-модуля, работающего на уровне ядра. Проблема в том, что такие модули присутствуют только для Linux, что ставит крест на использовании будущих версий Mesa с картами R300/R600 в таких ОС, как FreeBSD и Solaris;
    • Удаление драйверов R200/R300/R600 позволило исключить из Mesa код таких связанных с DRI1 компонентов, как классический компилятор шейдеров для R300, код поддержки альтернативного (не libdrm) менеджера памяти, устаревший код управления буфером и т.п.
    • Удалён программный драйвер linux-fbdev;
    • Удалены устаревшие и неподдерживаемые Windows-драйверы gldirect и ICD;
    • Удален код, связанный с обеспечением поддержки операционной системы BeOS;
    • Удалён код Gallium3D-драйвера i965g для чипов Intel 965. В качестве причины удаления драйвера i965g называется отсутствие заинтересованных в его поддержке разработчиков, в сочетании с общей незавершённостью реализации драйвера. Изначально драйвер i965g был создан компанией Tungsten Graphics и был интегрирован в состав Mesa в марте 2010 года. Компания Intel участия в разработке данного Gallium3D-драйвера не принимала, развивая классический DRI-драйвер i965. Отдельно можно подчеркнуть, что речь только о Gallium3D-драйвере, классический драйвер i965 оставлен в составе Mesa и активно развивается. Также сохранена поддержка Gallium3D-драйвера i915g, ориентированного на устаревшие видеокарты Intel.
  • Расширения OpenGL, добавленные в драйверы для карт AMD/ATI:
    • GL_ARB_ES2_compatibility (r300g, r600g)
    • GL_ARB_depth_buffer_float (r600g)
    • GL_ARB_vertex_type_2_10_10_10_rev (r600g)
    • GL_EXT_texture_array (r600g)
    • GL_NV_primitive_restart (r600g)
    • ARB_texture_rgb10_a2ui (r600g)
  • Расширения OpenGL, добавленные во все Gallium-драйверы:
    • GL_ARB_texture_storage
    • GL_NV_fog_distance
    • GL_OES_EGL_image_external
  • Расширения OpenGL добавленные в программный драйвер swrast:
    • GL_ARB_texture_storage
    • ARB_texture_rgb10_a2u
    • GL_OES_compressed_ETC1_RGB8_texture (softpipe, llvmpipe)
  • Расширения OpenGL добавленные в классический драйвер для карт Intel i965:
    • GL_EXT_packed_float
    • GL_EXT_texture_array
    • GL_EXT_texture_shared_exponent
  • Расширения OpenGL добавленные в классический драйвер для карт NVIDIA:
    • GL_NV_fog_distance (nouveau classic)
  • Значительно расширены возможности Gallium3D-драйвера llvmpipe, предназначенного для осуществления программного рендеринга путём использования LLVM для динамической компиляции шейдеров, обработки вершин и растеризации точек/линий/треугольников. В настоящее время драйвер llvmpipe обеспечивает поддержку всех расширений OpenGL, необходимых для запуска оболочки GNOME Shell без задействования современных GPU. В частности, llvmpipe планируется использовать в Fedora 17 для запуска GNOME Shell на устаревших видеокартах;
  • Обновлён Gallium-драйвер svga (vmwgfx), развиваемый компанией VMware для обеспечения доступа к видеоподсистеме из гостевых окружений с задействованием 3D-акселерации;
  • Добавление поддержки платформы Android в Mesa и подсистеме Gallium3D;
  • В драйвер i965 добавлена поддержка Intel Ivy Bridge, в драйвере Nouveau улучшена поддержка GPU Fermi, в драйвере r600g добавлена поддержка новых карт AMD (за исключением Radeon HD 7000, который пока не поддерживается);
  • Многочисленные оптимизации производительности в драйверах i965, nouveau, r600g, r300g и llvmpipe;
  • Интеграция транслятора GLSL-To-TGSI, позволяющего преобразовывать код на языке описания шейдеров в промежуточное представление TGSI, используемое подсистемой Gallium3D;
  • Добавление Gallium3D-драйвера pipe-video для оптимизации передачи видеопотоков через Gallium3D, за счет задействования для ускорения выполнения операций таких API, как VA-API и VDPAU.

© OpenNet