Mesa3D
Mesa یا Mesa3D ویا Mesa 3D Graphics Library، یک پیادهسازی متن باز از API های گرافیک 3D و 2D است. از جمله این API ها میتوان به OpenGL ،Vulkan، EGL و... اشاره کرد. Mesa یک برنامه سمت کاربر است و وظیفه دریافت دستورات از برنامه ها، پردازش دستورات و انتقال آنها را به گرداننده[4] گرافیکی را دارد.
بیشترین استفاده از Mesa توسط کاربران کارت گرافیک های AMD و پردازشگر های گرافیکی Intel است. چون AMD مشتریان را به سمت استفاده از ماژول هسته amdgpu سوق میدهد و همچنین intel فقط از Mesa پشتیبانی میکند. همچنین تلاش برای ایجاد جایگزین متن باز گرداننده[4] انحصاری NVIDIA نیز در حال انجام است و به آن Nouveau میگویند.
علاوه بر برنامه های کاربردی سه بعدی مانند بازی ها، مدیر نمایشگر های مدرن مانند X.org [1] و تمام میزکار های Wayland از OpenGL/EGL استفاده میکنند، بنابراین Mesa نقش مهمی بر عهده دارد.
Mesa توسط freedesktop.org میزبانی و پشتیبانی میشود. این پروژه در آگوست 1993 (مرداد ۱۳۷۲) توسط برایان پل (که هنوز در این پروژه فعال است)، راه اندازی شد. Mesa متعاقباً به طور گسترده مورد استفاده قرار گرفت و اکنون شامل مشارکتهای متعددی از افراد و شرکتهای مختلف در سراسر جهان است از جمله تولیدکنندگان کارت های گرافیک، شرکت ردهت و... اکثر بودجه Mesa توسط شرکت ها و کمک های مردمی تامین میشود.
محتویات
بررسی اجمالی
Mesa3D به عنوان ارائه دهنده پیاده سازی های متن باز و آزاد از API های گرافیک 2D و 3D در سیستم عامل های یونیکس مانند شناخته می شود[2]. مهم ترین API پیاده سازی شده توسط میسا، OpenGL است. البته امروزه Mesa3D از رابط های زیادی پشتیبانی میکند به عتوان مثال:[3] Vulkan، EGL، OpenGL|ES، Glide و...
گرداننده[4] های Mesa3D
گرداننده[4] ها برای سخت افزار
AMD R600: گرداننده[4]ای برای پشتیبانی از سری AMD Radeon HD 2000 که به طور رسمی توسط AMD پشتیبانی میشود. این گرداننده از OpenGL پشتیبانی میکند.
AMD Radeonsi: گرداننده[4]ای برای پشتیبانی از کارت گرافیک های برپایه نسل اول GCN و جدیدتر[6][7] که به طور رسمی توسط AMD پشتیبانی میشود. این گرداننده[4] از OpenGL و OpenCL پشتیبانی میکند.
AMD RADV: گرداننده[4]ای برای پشتیبانی از کارت گرافیک های برپایه نسل اول GCN و جدیدتر[6][7] که به طور رسمی توسط AMD پشتیبانی نمیشود اما این گرداننده[4] براساس مستندات متنباز AMD ساخته شده است.
Broadcom V3D: گرداننده[4] ای برای پشتیبانی از تراشه های گرافیکی Broadcom's VC5 و جدیدتر[8] که به طور رسمی توسط Broadcom پشتیبانی میشود. این گرداننده[4] از OpenGL پشتیبانی میکند.
Broadcom V3DV: گرداننده[4] ای برای پشتیبانی از تراشه های گرافیکی Broadcom's VC5 و جدیدتر[8] که به طور رسمی توسط Broadcom پشتیبانی میشود. این گرداننده[4] از Vulkan پشتیبانی میکند[9].
Broadcom VC4: گرداننده[4] ای برای پشتیبانی از تراشه گرافیکی Broadcom's VC4[10] که به طور رسمی توسط Broadcom پشتیبانی میشود. این گرداننده[4] از OpenGL پشتیبانی میکند.
ناتمام. به زودی تکمیل میشود.
نکات و پینوشت
[1]یک استثنا در این مورد وجود دارد. در صورتی که X از exa برای رندرینگ استفاده کند از OpenGL/EGL استفاده نمیشود، تنها در صورتی از OpenGL/EGL استفاده میشود که از GlamorGL برای رندرینگ استفاده شده باشد.
[2]البته Mesa در دیگر سیستم عامل ها نیز (مانند ویندوز) کار میکند(به عنوان مثال Mesa3D گرداننده[4] ای دارد که میتواند OpenGL را از Direct3D 12 به سیستم عامل های موجود در WSL ارائه دهد که در زیرسیستم ویندوز برای لینوکس، در مایکروسافت ویندوز موجود است[5].) اما معمولا به آن شناخته نمیشود.
[3]Glide در حال حاضر منسوخ شده است.
[4]درایور = گرداننده = راه انداز
[5]اطلاعات بیشتر: https://docs.mesa3d.org/drivers/d3d12.html
[6]پشتیبانی از تمام کارت گرافیک های برپایه GCN نسل اول، دوم، سوم، چهارم، پنجم و RDNA نسل اول و دوم
[7]پشتیبانی از نسل اول و دوم GCN توسط radoensi به طور آزمایشی است و به طور پیش فرض از r600 استفاده میشود. برای استفاده از radeonsi، باید به طور دستی کرنل را تنظیم کنید. اطلاعات بیشتر در ویکی آرچ: https://wiki.archlinux.org/title/AMDGPU#Enable_Southern_Islands_(SI)_and_Sea_Islands_(CIK)_support
[8]این تراشه گرافیکی در Raspberry Pi 4 استفاده شده است.
[9]گرداننده[4] های Broadcom V3D و Broadcom V3DV باهم تداخل ندارند و با یکدیگر کار میکنند.
[10]این تراشه در دیگر Raspberry Pi ها استفاده میشود.