پس از سه ماه توسعه، انتشار یک پیاده سازی رایگان از OpenGL و Vulkan API - Mesa 21.2.0 - منتشر شد. اولین نسخه از شعبه Mesa 21.2.0 وضعیت آزمایشی دارد - پس از تثبیت نهایی کد، نسخه پایدار 21.2.1 منتشر خواهد شد.
Mesa 21.2 شامل پشتیبانی کامل از OpenGL 4.6 برای درایورهای 965، iris (اینتل)، radeonsi (AMD)، zink و llvmpipe است. پشتیبانی از OpenGL 4.5 برای پردازندههای گرافیکی AMD (r600) و NVIDIA (nvc0) و پشتیبانی OpenGL 4.3 برای virgl (GPU مجازی Virgil3D برای QEMU/KVM) در دسترس است. پشتیبانی از Vulkan 1.2 برای کارتهای Intel و AMD و همچنین در حالت شبیهساز (vn)، پشتیبانی از Vulkan 1.1 برای پردازندههای گرافیکی Qualcomm و نرمافزار lavapipe در دسترس است و Vulkan 1.0 برای پردازندههای گرافیکی Broadcom VideoCore VI (Raspberry Pi 4) در دسترس است. .
نوآوری های اصلی:
- درایور asahi OpenGL همراه با پشتیبانی اولیه از GPU موجود در تراشه های Apple M1 است. درایور از رابط گالیوم استفاده می کند و از اکثر ویژگی های OpenGL 2.1 و OpenGL ES 2.0 پشتیبانی می کند، اما هنوز برای اجرای بیشتر بازی ها مناسب نیست. کد درایور مبتنی بر درایور نوپ مرجع Gallium است، با برخی از کدهای منتقل شده از درایور Panfrost که برای پردازنده گرافیکی ARM Mali توسعه داده شده است.
- درایور Crocus OpenGL همراه با پشتیبانی از پردازندههای گرافیکی قدیمیتر اینتل (بر اساس ریزمعماریهای Gen4-Gen7) است که توسط درایور Iris پشتیبانی نمیشوند. برخلاف درایور i965، درایور جدید مبتنی بر معماری Gallium3D است که وظایف مدیریت حافظه را به درایور DRI در هسته لینوکس برون سپاری می کند و یک ردیاب حالت آماده با پشتیبانی از کش استفاده مجدد از اشیاء خروجی را فراهم می کند.
- درایور PanVk گنجانده شده است که از API گرافیکی Vulkan برای پردازندههای گرافیکی ARM Mali Midgard و Bifrost پشتیبانی میکند. PanVk توسط کارمندان Collabora در حال توسعه است و به عنوان ادامه توسعه پروژه Panfrost است که از OpenGL پشتیبانی می کند.
- درایور Panfrost برای پردازندههای گرافیکی Midgard (Mali T760 و جدیدتر) و پردازندههای گرافیکی Bifrost (Mali G31، G52، G76) از OpenGL ES 3.1 پشتیبانی میکند. برنامه های آینده شامل کار برای افزایش عملکرد تراشه های Bifrost و اجرای پشتیبانی از GPU بر اساس معماری Valhall (مالی G77 و جدیدتر) است.
- بیلدهای 32 بیتی x86 از دستورالعملهای sse87 به جای دستورالعملهای x2 برای محاسبات ریاضی استفاده میکنند.
- درایور Nouveau nv50 برای پردازنده گرافیکی NVIDIA GT21x (GeForce GT 2×0) از OpenGL ES 3.1 پشتیبانی می کند.
- درایور Vulkan TURNIP و درایور OpenGL Freedreno که برای پردازنده گرافیکی Qualcomm Adreno توسعه یافته اند، از GPU Adreno a6xx gen4 (a660, a635) پشتیبانی اولیه می کنند.
- درایور Vulkan RADV (AMD) با استفاده از موتورهای سایه زن NGG (هندسه نسل بعدی) پشتیبانی از حذف اولیه را اضافه کرده است. قابلیت ساخت درایور RADV بر روی پلتفرم ویندوز با استفاده از کامپایلر MSVC پیاده سازی شده است.
- کارهای مقدماتی در درایور ANV Vulkan (اینتل) و درایور Iris OpenGL برای ارائه پشتیبانی از کارتهای گرافیکی آینده Xe-HPG (DG2) اینتل انجام شده است. این شامل ویژگی های اولیه مربوط به ردیابی پرتو و پشتیبانی از سایه زن های ردیابی پرتو می باشد.
- درایور lavapipe که یک شطرنجساز نرمافزاری را برای Vulkan API (مشابه llvmpipe، اما برای Vulkan، ترجمه فراخوانهای Vulkan API به Gallium API) پیادهسازی میکند، از حالت "wideLines" پشتیبانی میکند (از خطوطی با عرض بیش از 1.0 پشتیبانی میکند).
- پشتیبانی برای کشف پویا و بارگذاری باطن های جایگزین GBM (Generic Buffer Manager) اجرا شده است. هدف این تغییر، بهبود پشتیبانی Wayland در سیستمهای دارای درایور NVIDIA است.
- درایور Zink (یک پیادهسازی از OpenGL API در بالای Vulkan، که به شما امکان میدهد در صورتی که سیستم دارای درایورهایی باشد که فقط از Vulkan API پشتیبانی میکنند، OpenGL تسریعشده سختافزاری دریافت کنید) از برنامههای افزودنی OpenGL GL_ARB_sample_locations، GL_ARB_sparse_buffer، GL_ARB_te_te_te_mafil_ARB، GL_ARB_te_te_texL_Min پشتیبانی میکند. _سایه_ساعت. اصلاحکنندههای قالب DRM اضافه شد (مدیر رندر مستقیم، پسوند VK_EXT_image_drm_format_modifier فعال است).
- پشتیبانی از برنامه های افزودنی به درایورهای Vulkan RADV (AMD)، ANV (Intel) و lavapipe اضافه شده است:
- VK_EXT_provoking_vertex (RADV)؛
- VK_EXT_extended_dynamic_state2 (RADV)؛
- VK_EXT_global_priority_query (RADV)؛
- VK_EXT_physical_device_drm (RADV)؛
- VK_KHR_shader_subgroup_uniform_control_flow (RADV، ANV)؛
- VK_EXT_color_write_enable (RADV)؛
- VK_EXT_acquire_drm_display (RADV، ANV)؛
- VK_EXT_vertex_input_dynamic_state(lavapipe);
- VK_EXT_line_rasterization (lavapipe);
- VK_EXT_multi_draw(ANV، lavapipe، RADV);
- VK_KHR_separate_depth_stencil_layouts(lavapipe);
- VK_EXT_separate_stencil_usage(lavapipe);
- VK_EXT_extended_dynamic_state2 (lavapipe).
منبع: opennet.ru