Релиз Mesa 12.0.0 с поддержкой OpenGL 4.3
После трёх месяцев разработки доступен релиз свободной реализации OpenGL API — Mesa 12.0, примечательный реализацией OpenGL 4.2 и 4.3 в драйверах RadeonSI, Nouveau (nvc0) и Intel (i965) для видеокарт AMD на основе архитектуры GCN (HD 7700–7900, HD 8000, Rx 240–290, Rx 300), NVIDIA на базе GPU Fermi, Kepler и Maxwell (GeForce 400/500/600/700) и GPU Intel Gen8+ (Broadwell). Кроме того, в драйверах RadeonSI и Nouveau (nvc0) обеспечена поддержка OpenGL ES 3.1. Первый выпуск ветки Mesa 12.0.0 имеет экспериментальный статус — после проведения окончательной стабилизации кода будет выпущена стабильная версия 12.0.1.
Кроме поддержки OpenGL 4.3 и OpenGL ES 3.1 в новом выпуске можно отметить следующие изменения:
- Включение в поставку драйвера для графического API Vulkan. Драйвер пока поддерживает только оборудование Intel, начиная с платформ Ivy Bridge;
- Поддержка предложенной компанией NVIDIA GLX-библиотеки GLVND (OpenGL Vendor-Neutral Driver), предлагающей новую инфраструктуру GLX- и OpenGL-драйверов. Библиотека GLVND (libglvnd) представляет собой программный диспетчер, осуществляющий перенаправление команд от 3D-приложения к той или иной реализации OpenGL, давая возможность сосуществовать драйверам Mesa и NVIDIA;
- В состав включён разработанный компанией Intel высокопроизводительный программный растеризатор SWR, предоставляющий средства для программной отрисовки OpenGL силами центрального процессора, без привлечения GPU (может рассматриваться как программный GPU, который поддерживает OpenGL 3.3). По сравнению с ранее предлагаемым в Mesa однопоточным растеризатором llvmpipe при отрисовке сцен со сложной геометриейSWR обеспечивает существенный прирост производительности, например, при расчёте сцены из 2.9 млн треугольников SWR обгоняет llvmpipe по производительности в 29 раз, а на сцене из 106.2 млн треугольников — в 51 раз. Подобной производительности удалось добиться за счёт эффективного распараллеливания операций на многоядерных процессорах (операции отрисовки разбиваются на части для параллельной обработки вершин), применения JIT-компиляции шейдеров и задействования специализированных векторных наборов инструкций, таких как SSE (Streaming SIMD Extensions), AVX и AVX2 (Advanced Vector Extensions).
- Для VDPAU, OMX и VAAPI включена поддержка DRI3;
- Для сборки Gallium-драйверов radeon (r300, r600 и radeonsi) теперь требуется ядро Linux 3.2+ и LLVM 3.6+;
- Поддержка новых расширений OpenGL, определённых в стандартах OpenGL 4.x:
- GL_ARB_ES3_1_compatibility в драйверах nvc0, radeonsi
- GL_ARB_compute_shader в nvc0, radeonsi, softpipe
- GL_ARB_cull_distance в i965/gen6+, nv50, nvc0, llvmpipe, softpipe
- GL_ARB_framebuffer_no_attachments в nvc0, r600, radeonsi, softpipe
- GL_ARB_internalformat_query2 во всех драйверах
- GL_ARB_query_buffer_object в i965/hsw+
- GL_ARB_robust_buffer_access_behavior в i965, nvc0, radeonsi
- GL_ARB_shader_atomic_counters в radeonsi, softpipe
- GL_ARB_shader_atomic_counter_ops в nvc0, radeonsi, softpipe
- GL_ARB_shader_image_load_store в nvc0, radeonsi, softpipe
- GL_ARB_shader_image_size в nvc0, radeonsi, softpipe
- GL_ARB_shader_storage_buffer_objects в radeonsi, softpipe
- GL_ATI_fragment_shader во всех Gallium-драйверах
- GL_EXT_base_instance во всех драйверах с поддержкой GL_ARB_base_instance
- GL_EXT_clip_cull_distance во всех драйверах с поддержкой GL_ARB_cull_distance
- GL_KHR_robustness в i965
- GL_OES_copy_image в i965 (Baytrail и Gen8+)
- GL_OES_draw_buffers_indexed и GL_EXT_draw_buffers_indexed во всех драйверах с поддержкой GL_ARB_draw_buffers_blend
- GL_OES_gpu_shader5 и GL_EXT_gpu_shader5 во всех драйверах с поддержкой GL_ARB_gpu_shader5
- GL_OES_sample_shading в i965, nvc0, r600, radeonsi
- GL_OES_sample_variables в i965, nvc0, r600, radeonsi
- GL_OES_shader_image_atomic во всех драйверах с поддержкой GL_ARB_shader_image_load_store
- GL_OES_shader_io_blocks в i965, nvc0, radeonsi
- GL_OES_shader_multisample_interpolation в i965, nvc0, r600, radeonsi
- GL_OES_texture_border_clamp и GL_EXT_texture_border_clamp во всех драйверах с поддержкой GL_ARB_texture_border_clamp
- GL_OES_texture_buffer и GL_EXT_texture_buffer в i965, nvc0, radeonsi
- EGL_KHR_reusable_sync во всех драйверах
- GL_ARB_stencil_texture8 and GL_OES_stencil_texture8 в i965/gen8+
© OpenNet