กลับไปหน้าบทความ

อ่าน 30 นาที

เมซา (กราฟิกคอมพิวเตอร์)

Mesa หรือที่เรียกว่า Mesa3D และ The Mesa 3D Graphics Library เป็นการ ใช้งาน แบบโอเพนซอร์ส ของ OpenGL , OpenGL ES , Vulkan และ ข้อกำหนด API กราฟิก อื่นๆ รวมถึง OpenCL...

เมซา (กราฟิกคอมพิวเตอร์)

( เรียนรู้วิธีและเวลาในการลบข้อความนี้ )
เมซา
ผู้เขียนต้นฉบับไบรอัน พอล
นักพัฒนาปัจจุบัน: AMD , Collabora , Google , Igalia , Intel , Red Hat , Valve , VMware เดิม: Tungsten Graphics [ 1 ]
ปล่อยกุมภาพันธ์ พ.ศ. 2538
เวอร์ชันเสถียร
26.1.2 [ 2 ] แก้ไขข้อมูลนี้บนวิกิดาต้า / 3 มิถุนายน 2026 ( 3 มิถุนายน 2569 )
รุ่นทดลองใช้งาน
26.1.0-rc1  แก้ไขข้อมูลนี้บนวิกิดาต้า / 15 เมษายน 2569 ( 15 เมษายน 2569 )
เขียนเป็นภาษาซี ,ภาษาซี++ ,ภาษาแอสเซมบลี
ระบบปฏิบัติการรองรับหลายแพลตฟอร์ม ( BSD , Haiku , Linuxฯลฯ)
พิมพ์ไลบรารีกราฟิก
ใบอนุญาตใบอนุญาต MIT
เว็บไซต์เว็บไซต์อย่างเป็นทางการแก้ไขข้อมูลนี้ได้ที่วิกิดาต้า
ที่เก็บข้อมูลgitlab .freedesktop .org /mesa /mesa

Mesaหรือที่เรียกว่าMesa3DและThe Mesa 3D Graphics Libraryเป็นการ ใช้งาน แบบโอเพนซอร์สของOpenGL , OpenGL ES , Vulkanและ ข้อกำหนด API กราฟิก อื่นๆ รวมถึงOpenCL สำหรับการคำนวณ GPU Mesa ใช้ข้อกำหนดเหล่านี้กับไดรเวอร์ฮาร์ดแวร์กราฟิกเฉพาะ ของ ผู้ผลิต ไดรเวอร์การเรนเดอร์ซอฟต์แวร์ ไดรเวอร์แบบเลเยอร์ (การแปล) และอื่นๆ[ 3 ]

บนระบบ Linux การเร่งความเร็ว GPU ส่วนใหญ่จะทำผ่าน Mesa AMDสนับสนุนไดรเวอร์ RadeonSI และ RADV ใน Mesa ในฐานะไดรเวอร์ GPU อย่างเป็นทางการบน Linux [ 4 ] Intel สนับสนุนเฉพาะไดรเวอร์ Mesa บนระบบ Linux เท่านั้น Google ใช้ไดรเวอร์ Freedreno ใน Mesa ใน Chromebook บางรุ่นที่มีโปรเซสเซอร์ Qualcomm [ 5 ]ระบบที่มีการ์ด Nvidia มักใช้ไดรเวอร์ Nvidia GeForce ที่เป็นกรรมสิทธิ์ แต่มีความพยายามอย่างต่อเนื่องในการเขียนไดรเวอร์ Nvidia สำหรับ Mesa ที่เรียกว่าNouveauและ NVK [ 6 ]ณ ปี 2026 NVK ยังคงช้ากว่าไดรเวอร์ที่เป็นกรรมสิทธิ์อยู่บ้าง แต่ช่องว่างด้านประสิทธิภาพลดลงอย่างต่อเนื่องเมื่อมีการพัฒนาเพิ่มเติม [ 7 ]

นอกจากแอปพลิเคชัน 3 มิติ เช่น เกมแล้วเซิร์ฟเวอร์แสดงผล สมัยใหม่ (เช่นGlamor ของ X.orgหรือWestonของWayland ) ยังใช้ OpenGL/ EGLด้วย ดังนั้นกราฟิกทั้งหมดจึงมักผ่าน Mesa

Mesa เป็นโปรแกรมที่ดูแลโดยfreedesktop.orgและริเริ่มขึ้นในเดือนสิงหาคม 1993 โดยBrian Paulซึ่งยังคงมีส่วนร่วมในโครงการนี้จนถึงปัจจุบัน ต่อมา Mesa ได้รับการยอมรับอย่างกว้างขวางและปัจจุบันมีผู้ร่วมพัฒนามากมายจากบุคคลและบริษัทต่างๆ ทั่วโลก รวมถึงผู้ผลิตฮาร์ดแวร์กราฟิกส่วนใหญ่ และผู้ที่สนใจอื่นๆ เช่นValve Corporation

ภาพรวม

เกมวิดีโอใช้การประมวลผลการเรนเดอร์ผ่านGPUโดยใช้OpenGLแบบเรียลไทม์ เชเดอร์ถูกเขียนด้วยภาษา OpenGL Shading LanguageหรือSPIR-Vและคอมไพล์บน CPU จากนั้นโปรแกรมที่คอมไพล์แล้วจะถูกประมวลผลบน GPU
ภาพประกอบแสดง ส่วนประกอบกราฟิกของ Linux : DRM & libDRM, Mesa 3Dเซิร์ฟเวอร์แสดงผลเป็นส่วนหนึ่งของระบบการจัดการหน้าต่างและไม่จำเป็นสำหรับบางกรณี เช่น การเล่นเกม

การใช้งาน API การเรนเดอร์

การใช้งานWayland แบบฟรีนั้น อาศัยการใช้งานEGL ของ Mesa ไลบรารีพิเศษที่เรียกว่าlibwayland-EGLซึ่งเขียนขึ้นเพื่อรองรับการเข้าถึงเฟรมบัฟเฟอร์ควรจะล้าสมัยไปแล้วตั้งแต่การเปิดตัว EGL 1.5 ในงาน GDC 2014 AMD กำลังสำรวจการเปลี่ยนแปลงกลยุทธ์ไปสู่การใช้ DRM แทนการใช้ blob ในเคอร์เนล[ 8 ]
ภาพหน้าจอglxinfoแสดงข้อมูลการใช้งาน OpenGL ของ Mesa บนระบบ และglxgearsโปรแกรมทดสอบการใช้งาน OpenGL บนระบบ

Mesa เป็นที่รู้จักในฐานะที่เป็นแหล่งรวมการใช้งาน APIกราฟิกในอดีต API หลักที่ Mesa นำมาใช้งานคือOpenGLพร้อมกับข้อกำหนดอื่นๆ ที่เกี่ยวข้องกับ Khronos Group (เช่นOpenVG , OpenGL ESหรือEGL ในปัจจุบัน ) แต่ Mesa สามารถใช้งาน API อื่นๆ ได้ และในความเป็นจริงก็ได้ใช้งานGlide (เลิกใช้แล้ว) และDirect3D 9 ตั้งแต่เดือนกรกฎาคม 2013 [ 9 ] Mesa ยังไม่จำกัดเฉพาะระบบปฏิบัติการแบบ Unix ด้วย ตัวอย่างเช่น บน Windows Mesa มี API OpenGL ผ่าน DirectX

Mesa ทำหน้าที่เป็นเลเยอร์การแปลงระหว่าง API กราฟิก เช่น OpenGL และไดรเวอร์ฮาร์ดแวร์กราฟิกในเคอร์เนลของระบบปฏิบัติการ เวอร์ชันที่รองรับของ API กราฟิกต่างๆ ขึ้นอยู่กับไดรเวอร์ เนื่องจากไดรเวอร์ฮาร์ดแวร์แต่ละตัวมีการใช้งาน (และสถานะ) ของตัวเอง โดยเฉพาะอย่างยิ่งสำหรับไดรเวอร์ "แบบคลาสสิก" ในขณะที่ไดรเวอร์ Gallium3D ใช้โค้ดร่วมกันซึ่งมีแนวโน้มที่จะทำให้ส่วนขยายและเวอร์ชันที่รองรับมีความเป็นมาตรฐานเดียวกัน

Mesa รักษาเมทริกซ์การสนับสนุนที่มีสถานะการปฏิบัติตามมาตรฐาน OpenGL ปัจจุบัน[ 10 ] [ 11 ] ซึ่งแสดง ภาพ ไว้ที่mesamatrix .net

ตาราง API การแสดงผล

เวอร์ชั่นเมซ่าวันวางจำหน่ายครั้งแรกอัปเดตล่าสุด[ 12 ]วัลคานโอเพ่นซีแอลโอเพ่นจีแอลโอเพนกลู อีเอสโอเพ่นวีจีอีจีแอลจีแอลเอ็กซ์ไดเร็กต์3ดี
1.4 2024-12-033.0 2020-11-304.6 31 กรกฎาคม 25603.2.6 2019-07-101.1 2008-12-031.5 2014-03-191.4 2005-12-1612 2015-07-29
ไม่รองรับ:23.1 10 พฤษภาคม 2023 23.1.8 [ 13 ] [ 14 ]1.3.244: 1.3+ (Intel Gen8+ ถึง XE, AMD GCN Gen2+ ถึง RDNA3, Lavapipe, Google Venus), 1.1+ (Qualcomm Turnip), 1.0+ (AMD GCN1, Broadcom v3dv, ARM Mali PanVK) 1.0, 1.1, 1.2 (รองรับเต็มรูปแบบ), 3.0 (กำลังพัฒนา, ฟังก์ชันบางอย่างใน 21.1), [ 15 ] OpenCL 1.2+ และ 3.0 พร้อม RustiCL ใหม่สำหรับ AMD GCN และ Intel Xe (Mesa 22.3+), AMD R600, Nvidia Fermi+ (Mesa 23.1+) 4.6 (19.3: Intel Gen 8+, 20.0: AMD GCN, 21.1: Zink, llvmpipe, 21.2: Intel Gen 7.5) 3.2 (20.3: Intel i965, AMD radeonsi, llvmpipe, VirGL, freedreno, Zink (21.3); 3.1: AMD r600, Nvidia nvC0, softpipe, Broadcom v3d, ARM Panfrost (21.3), d3d12 (22.0) ไม่มีข้อมูล[ 16 ] [ 17 ]1.5 1.4 9.0c [ 18 ] [ 19 ]
ไม่รองรับ:23.023 กุมภาพันธ์ 2023 23.0.4 [ 13 ] [ 20 ]1.3.232: ส่วนใหญ่เท่ากับ 23.1
ไม่รองรับ:22.330 พฤศจิกายน 2022 22.3.7 [ 13 ] [ 21 ]22.3: 1.3.225: 1.3+ (Intel Gen8+, AMD GCN Gen2+, Lavapipe), 1.2+ (Google Venus), 1.1+ (Qualcomm Turnip, Lavapipe (22.2)), 1.0+ (AMD GCN1, Broadcom v3dv, ARM Mali PanVK)
ไม่รองรับ:22.221 กันยายน 2022 22.2.5 [ 13 ] [ 22 ]
ไม่รองรับ:22.12022-05-20 22.1.7 [ 13 ] [ 23 ]
ไม่รองรับ:22.09 มีนาคม 2022 22.0.5 [ 13 ] [ 24 ]
ไม่รองรับ:21.317 พฤศจิกายน 2021 21.3.9 [ 13 ] [ 25 ]21.3: 1.2.190 (Intel Gen8+, AMD GCN Gen2+, Google Venus (21.3), Lavapipe), 1.0+ (AMD GCN1, Broadcom v3dv), 1.1+ (Qualcomm Turnip, Lavapipe (21.1))
ไม่รองรับ:21.24 สิงหาคม 2021 21.2.6 [ 13 ] [ 26 ]
ไม่รองรับ:21.15 พฤษภาคม 2021 21.1.8 [ 13 ] [ 27 ]
ไม่รองรับ:21.011 มีนาคม 2021 21.0.3 [ 13 ] [ 28 ]
ไม่รองรับ:20.33 ธันวาคม 2020 20.3.5 [ 13 ] [ 29 ]20.3: 1.2.158 (Intel Gen8+, AMD GCN Gen2+), 1.0+ (AMD GCN1, Broadcom v3dv (20.3))
ไม่รองรับ:20.228 กันยายน 2020 20.2.6 [ 13 ] [ 30 ]1.0, 1.1, 1.2 (อยู่ระหว่างการพัฒนา) การทดสอบความสอดคล้องบางส่วนไม่ผ่าน
ไม่รองรับ:20.127 พฤษภาคม 2020 20.1.10 [ 13 ] [ 31 ]
ไม่รองรับ:20.019 กุมภาพันธ์ 2020 20.0.8 [ 13 ] [ 32 ]1.2+ (Intel Gen8+, AMD GCN Gen2+)
ไม่รองรับ:19.311 ธันวาคม 2019 19.3.5 [ 13 ] [ 33 ] [ 34 ]1.1+ (Intel Gen8+, AMD GCN Gen2+) (19.1: 1.1.104 19.0: 1.1.102, 18.3: 1.1.90, 18.2: 1.1.84)
ไม่รองรับ:19.225 กันยายน 2019 19.2.8 [ 13 ]4.5
ไม่รองรับ:19.111 มิถุนายน 2019 19.1.8 [ 13 ]
ไม่รองรับ:19.013 มีนาคม 2019 19.0.8
ไม่รองรับ:18.37 ธันวาคม 2018 18.3.6
ไม่รองรับ:18.27 กันยายน 2018 18.2.8 [ 35 ]
ไม่รองรับ:18.118 พฤษภาคม 2561 18.1.9 [ 36 ]1.1 (Intel Gen8+, AMD GCN Gen2+)(1.1.73)
ไม่รองรับ:18.027 มีนาคม 2018 18.0.5 1.0+ (1.0.66)
ไม่รองรับ:17.38 ธันวาคม 2017 17.3.9 1.0 (PC: ANV Intel Gen7+ Ivy Bridge, RADV AMD GCN เท่านั้น) (ส่วนหัว: 17.3: 1.0.63, 17.2: 1.0.54, 17.1: 1.0.42, 17.0: 1.0.38, 13.0: 1.0.6, 12.0: 1.0.3) ในการพัฒนาโดย Gallium Compute (Clover): การทดสอบ CTS บางรายการล้มเหลวในเวอร์ชัน 1.0 และ 1.1, 1.2 (WIP) ดังนั้นเวอร์ชัน 1.0, 1.1, 1.2 จึงไม่สมบูรณ์[ 37 ] [ 38 ]
ไม่รองรับ:17.24 กันยายน 2017 17.2.8
ไม่รองรับ:17.110 พฤษภาคม 2560 17.1.10
ไม่รองรับ:17.02017-02-13 [ 39 ] [ 40 ]17.0.7
ไม่รองรับ:13.02016-11-01 [ 41 ]13.0.6 4.4 (4.5 ไม่มีฉลากทดสอบ)
ไม่รองรับ:12.02016-07-08 [ 42 ]12.0.64.3 [ 42 ]3.1
ไม่รองรับ:11.22016-04-04 [ 43 ]11.2.2ไม่มีข้อมูล4.1 (Intel 3.3+)
ไม่รองรับ:11.12015-12-15 [ 44 ]11.1.43.0
ไม่รองรับ:11.02015-09-12 [ 45 ]11.0.9
ไม่รองรับ:10.62015-06-15 [ 46 ]10.6.93.3 [ 47 ]1.4
ไม่รองรับ:10.52015-03-06 [ 48 ]10.5.91.1
ไม่รองรับ:10.42014-12-14 [ 49 ]10.4.7
ไม่รองรับ:10.32014-09-19 [ 50 ]10.3.7ไม่มีข้อมูล
ไม่รองรับ:10.22014-06-06 [ 51 ]10.2.9
ไม่รองรับ:10.12014-03-04 [ 52 ]10.1.6
ไม่รองรับ:10.02013-11-30 [ 53 ]10.0.5
ไม่รองรับ:9.08 ตุลาคม 25559.0.3, 9.1.7, 9.2.5ไม่มีข้อมูล3.12.0
ไม่รองรับ:8.08 กุมภาพันธ์ 25558.0.53.0
ไม่รองรับ:7.022 มิถุนายน 25507.0.4, ..., 7.11.22.1ไม่มีข้อมูลไม่มีข้อมูลไม่มีข้อมูล
ไม่รองรับ:6.06 มกราคม 25476.0.11.51.3
ไม่รองรับ:5.013 พฤศจิกายน 25455.0.21.4
ไม่รองรับ:4.022 ตุลาคม 25444.0.41.3
ไม่รองรับ:3.01998-093.1, 3.2.1, 3.4.2.11.2
ไม่รองรับ:2.01996-102.61.1
ไม่รองรับ:1.02538-25481.2.81.0
ตำนาน:
ไม่ได้รับการสนับสนุน
ได้รับการสนับสนุน
เวอร์ชั่นล่าสุด
เวอร์ชันตัวอย่าง
เวอร์ชันในอนาคต

วัลคาน

กลุ่มKhronosประกาศเปิดตัว Vulkan API อย่างเป็นทางการ ในเดือนมีนาคม 2015 และปล่อย Vulkan 1.0 อย่างเป็นทางการในวันที่ 16 กุมภาพันธ์ 2016 Vulkan ทำลายความเข้ากันได้กับ OpenGL และละทิ้งแนวคิดเครื่องสถานะแบบรวมศูนย์โดยสิ้นเชิง นักพัฒนา Gallium3D เรียก Vulkan ว่าเป็นเหมือน Gallium3D 2.0 – Gallium3D แยกโค้ดที่ใช้ในการสร้างเครื่องสถานะของ OpenGL ออกจากโค้ดที่เฉพาะเจาะจงกับฮาร์ดแวร์

เวอร์ชัน 1.3 พร้อมใช้งานทันทีกับ Mesa 22.0 ฮาร์ดแวร์ที่รองรับ OpenGL ES 3.1 ควรทำงานที่ Vulkan Level 1.3 และก่อนหน้า[ 54 ]

ในขณะที่ Gallium3D รับข้อมูลจาก TGSI, Vulkan รับข้อมูลจาก SPIR-V ( Standard Portable Intermediate Representation version "V" ซึ่งเป็นรูปแบบการแสดงผลระดับกลางแบบพกพามาตรฐานที่ใช้ใน "Vulkan")

Intel เผยแพร่การใช้งานไดรเวอร์ Vulkan สำหรับฮาร์ดแวร์ของตนในวันที่ข้อกำหนดได้รับการเผยแพร่อย่างเป็นทางการ แต่เพิ่งได้รับการรวมเข้าเป็นเวอร์ชันหลักในเดือนเมษายน และกลายเป็นส่วนหนึ่งของ Mesa 12.0 ซึ่งวางจำหน่ายในเดือนกรกฎาคม 2016 ในขณะที่ไดรเวอร์ i965 ไม่ได้เขียนตามข้อกำหนด Gallium3D อยู่แล้ว สำหรับไดรเวอร์ Vulkan การนำข้อกำหนด Gallium3D มาใช้ยิ่งไม่สมเหตุสมผลเข้าไปอีก ในทำนองเดียวกัน ไม่มีเหตุผลทางเทคนิคใดที่จะต้องใช้ NIR แต่พนักงานของ Intel ก็ได้นำไดรเวอร์ Vulkan มาใช้ในลักษณะนั้น[ 55 ]

เป็นที่คาดการณ์ได้ว่าไดรเวอร์ Vulkan ที่เป็นกรรมสิทธิ์ของ AMD เอง ซึ่งเปิดตัวในเดือนมีนาคม และประกาศว่าจะปล่อยเป็นซอฟต์แวร์โอเพนซอร์สฟรีในอนาคตและรวมเข้ากับ Mesa หลัก ก็จะเลิกใช้ Gallium3D เช่นกัน[ 56 ]

RADV เป็นโปรเจกต์ฟรีสำหรับ AMD และมีให้ใช้งานตั้งแต่เวอร์ชัน 13 [ 57 ]การปฏิบัติตาม Khronos-Test เกิดขึ้นในเวอร์ชัน 17.3 ปัจจุบันรองรับ Vulkan 1.0 และ 1.1 อย่างเต็มรูปแบบตั้งแต่ Mesa 18.1

Nvidia ได้ปล่อยไดรเวอร์ GeForce ที่เป็นกรรมสิทธิ์ของตนเองพร้อมรองรับ Vulkan ในวันเปิดตัว และ Imagination Technologies (PowerVR), Qualcomm (Adreno) และ ARM (Mali) ก็ได้ทำเช่นเดียวกัน หรืออย่างน้อยก็ประกาศไดรเวอร์ Vulkan ที่เป็นกรรมสิทธิ์สำหรับ Android และระบบปฏิบัติการอื่นๆ แต่ว่าจะมีไดรเวอร์ Vulkan แบบโอเพนซอร์สและฟรีเพิ่มเติมสำหรับ GPU เหล่านี้หรือไม่นั้น ยังคงต้องรอดูกันต่อไป

Mesa Software Driver VIRGL เริ่มพัฒนา Vulkan ในปี 2018 ด้วยโครงการ GSOC เพื่อรองรับเครื่องเสมือน[ 58 ]

Lavapipe เป็นไดรเวอร์ซอฟต์แวร์ Vulkan ที่ใช้ CPU และเป็นพี่น้องกับ LLVMpipe Mesa เวอร์ชัน 21.1 รองรับ Vulkan 1.1+ [ 59 ]

Google เปิดตัว Venus Vulkan Driver สำหรับเครื่องเสมือนใน Mesa 21.1 พร้อมการสนับสนุน Vulkan 1.2+ อย่างเต็มรูปแบบ[ 60 ]

Qualcomm Turnip และ Broadcom v3dv เป็นไดรเวอร์ใหม่สำหรับ Qualcomm Adreno และ Broadcom Raspberry 4 Hardware Turnip เป็นไดรเวอร์ Vulkan รุ่นพี่ของ freedreno สำหรับ OpenGL V3dv รองรับ Vulkan 1.0+ ตั้งแต่ Mesa 20.3 ในเวอร์ชัน 21.1 Turnip รองรับ Vulkan 1.1+ [ 61 ] [ 62 ] [ 63 ]

Panfrost PanVK สำหรับ ARM Mali กำลังอยู่ในระหว่างการพัฒนาไปสู่ ​​Vulkan 1.1 แต่มีเพียงเวอร์ชัน 1.0 เท่านั้นที่เสถียรและใช้งานได้กับ Mesa 22.0 [ 64 ]

Project Dozen เชื่อมต่อ 3D 12 โดยตรง (d3d12) กับ Vulkan สำหรับการจำลอง Linux WSL2 ใน Windows 10 และ 11 ใน Mesa 23.2 รองรับ Vulkan 1.0 อย่างสมบูรณ์ และรองรับ 80% ของ 1.1 และ 1.2 (mesamatrix) [ 65 ] [ 66 ]

การฟันดาบอย่างชัดเจน

รั้ว (Fence) คือสิ่งกีดขวางหน่วยความจำชนิดหนึ่งที่แยกบัฟเฟอร์หนึ่งออกจากส่วนที่เหลือของหน่วยความจำ รั้วมีไว้เพื่อให้แน่ใจว่าบัฟเฟอร์จะไม่ถูกเขียนทับก่อนที่การเรนเดอร์และการแสดงผลจะเสร็จสมบูรณ์ การใช้รั้วโดยปริยาย (Implicit fencing) ใช้สำหรับการซิงโครไนซ์ระหว่างไดรเวอร์กราฟิกและฮาร์ดแวร์ GPU รั้วจะส่งสัญญาณเมื่อบัฟเฟอร์ไม่ได้ถูกใช้งานโดยส่วนประกอบหนึ่งอีกต่อไป เพื่อให้ส่วนประกอบอื่นสามารถดำเนินการหรือนำกลับมาใช้ใหม่ได้ ในอดีต เคอร์เนล Linux มีกลไกรั้วโดยปริยาย ซึ่งรั้วจะแนบโดยตรงกับบัฟเฟอร์ (เช่น GEM handles และ FDs) แต่พื้นที่ผู้ใช้ไม่รับรู้ถึงสิ่งนี้ การใช้รั้วโดยชัดแจ้ง (Explicit fencing) จะเปิดเผยรั้วให้กับพื้นที่ผู้ใช้ ซึ่งพื้นที่ผู้ใช้จะได้รับรั้วจากทั้งระบบย่อย Direct Rendering Manager (DRM) และจาก GPU การใช้รั้วโดยชัดแจ้งเป็นสิ่งจำเป็นสำหรับ Vulkan และมีข้อดีสำหรับการติดตามและแก้ไขข้อบกพร่อง

เคอร์เนล Linux 4.9 เพิ่มเฟรมเวิร์กการซิงโครไนซ์ของ Android ลงในสายหลัก[ 67 ]

การจัดการบัฟเฟอร์ทั่วไป

Generic Buffer Management (GBM) เป็น API ที่มีกลไกในการจัดสรรบัฟเฟอร์สำหรับการเรนเดอร์กราฟิกที่เชื่อมโยงกับ Mesa GBM มีจุดประสงค์เพื่อใช้เป็นแพลตฟอร์มดั้งเดิมสำหรับ EGL บน DRM หรือ openwfd แฮนด์เดิลที่สร้างขึ้นสามารถใช้เพื่อเริ่มต้น EGL และสร้างบัฟเฟอร์เป้าหมายการเรนเดอร์ได้[ 68 ]

Mesa GBM เป็นนามธรรมของ API การจัดการบัฟเฟอร์เฉพาะไดรเวอร์กราฟิก (เช่น ไลบรารี libdrm_* ต่างๆ) ซึ่งถูกนำไปใช้ภายในโดยการเรียกใช้ไดรเวอร์ GPU ของ Mesa

ตัวอย่างเช่นตัวจัดการการแสดงผล Waylandที่ชื่อ Weston ใช้ OpenGL ES 2 ในการเรนเดอร์ โดยเริ่มต้นการทำงานด้วยการเรียกใช้ EGL เนื่องจากเซิร์ฟเวอร์ทำงานบน " ไดรเวอร์ KMS แบบพื้นฐาน " จึงใช้แพลตฟอร์ม EGL DRM ซึ่งจริงๆ แล้วอาจเรียกได้ว่าเป็นแพลตฟอร์ม GBM ก็ได้ เพราะมันอาศัยอินเทอร์เฟซ Mesa GBM

ในงาน XDC2014 พนักงานของ Nvidia ชื่อ Andy Ritger ได้เสนอให้ปรับปรุง EGL เพื่อทดแทน GBM [ 69 ]แต่ชุมชนไม่เห็นด้วย และในที่สุด Nvidia ก็เปลี่ยนใจ[ 70 ]และใช้วิธีการอื่นแทน

การใช้งาน API เร่งความเร็ววิดีโอ

มีวิธีการคำนวณที่จำเป็นสำหรับการเข้ารหัสและถอดรหัสสตรีมวิดีโออยู่สามวิธีด้วยกัน:

  1. ใช้ซอฟต์แวร์ในการประมวลผลหรือคลายการบีบอัดวิดีโอ (โดยทั่วไปเรียกว่า CODEC) และเรียกใช้ซอฟต์แวร์นี้บนหน่วยประมวล ผลกลาง (CPU )
  2. ใช้ซอฟต์แวร์ในการประมวลผลหรือคลายการบีบอัดวิดีโอ (โดยทั่วไปเรียกว่า CODEC) และเรียกใช้ซอฟต์แวร์นี้บน GPU (หน่วยประมวลผลภาพ 3 มิติ )
  3. ใช้การประมวลผลฮาร์ดแวร์แบบสมบูรณ์ (หรือบางส่วน) ของอัลกอริทึมการบีบอัดหรือคลายการบีบอัดวิดีโอ ปัจจุบันการรวมASIC ดังกล่าว เข้ากับชิปของ GPU/CPU/SoC กลายเป็นเรื่องปกติมาก และจึงมีให้เลือกมากมาย ด้วยเหตุผลทางการตลาด บริษัทต่างๆ จึงได้สร้างแบรนด์ให้กับ ASIC ของตน เช่นPureVideo (Nvidia), Unified Video Decoder (AMD), Video Coding Engine (AMD), Quick Sync Video (Intel), DaVinci (Texas Instruments), CedarX (Allwinner), Crystal HD (Broadcom) ASIC บางตัวมีให้สำหรับการอนุญาตให้ใช้สิทธิ์ในฐานะทรัพย์สินทางปัญญาหลักของเซมิคอนดักเตอร์โดยปกติแล้วเวอร์ชันต่างๆ จะใช้การประมวลผลอัลกอริทึมการบีบอัดและ/หรือคลายการบีบอัดวิดีโอที่แตกต่างกัน การสนับสนุน ASIC ดังกล่าวโดยทั่วไปจะอยู่ในไดรเวอร์เคอร์เนล เพื่อเริ่มต้นฮาร์ดแวร์และดำเนินการในระดับต่ำ Mesa ซึ่งทำงานในพื้นที่ผู้ใช้ มีการใช้งานAPI หลายตัว สำหรับซอฟต์แวร์ เช่นVLC media player , GStreamer , HandBrakeเป็นต้น เพื่อให้สามารถเข้าถึง ASIC ดังกล่าวได้อย่างสะดวก

ตัวอย่างเช่นNouveauซึ่งได้รับการพัฒนาเป็นส่วนหนึ่งของ Mesa แต่ยังรวมถึงส่วนประกอบเคอร์เนล Linux ซึ่งกำลังได้รับการพัฒนาเป็นส่วนหนึ่งของเคอร์เนล Linux รองรับ ASIC ที่มี ตรา สินค้า PureVideoและให้การเข้าถึงผ่านVDPAUและบางส่วนผ่านXvMC [ 71 ]

ไดรเวอร์ Radeon ฟรีรองรับUnified Video DecoderและVideo Coding Engineผ่าน VDPAU และ OpenMAX [ 72 ]

V4L2เป็นอินเทอร์เฟซจากเคอร์เนลไปยังพื้นที่ผู้ใช้สำหรับสตรีมบิตวิดีโอที่ส่งมาจากเว็บแคมหรือจูนเนอร์ทีวี

เนื่องจากความกังวลเกี่ยวกับสิทธิบัตร เกี่ยวกับ ตัวแปลงสัญญาณวิดีโอH.264 , H.265และVC-1 Fedora Linuxจึงปิดใช้งานการสนับสนุนการเร่งความเร็ว VAAPI สำหรับตัวแปลงสัญญาณเหล่านั้นในเวอร์ชัน Mesa ในเดือนกันยายน 2022 [ 73 ]

ไดรเวอร์อุปกรณ์

ไดรเวอร์อุปกรณ์กราฟิกถูกสร้างขึ้นโดยใช้ส่วนประกอบสองส่วน ได้แก่ UMD (ไดรเวอร์โหมดผู้ใช้) และ KMD (ไดรเวอร์โหมดเคอร์เนล) ตั้งแต่เคอร์เนล Linux เวอร์ชัน 4.2 เป็นต้นไป AMD Catalyst และ Mesa จะใช้ไดรเวอร์เคอร์เนล Linux เดียวกันคือamdgpuซึ่ง amdgpu มีอินเทอร์เฟซที่กำหนดโดย DRM และ KMS

ไดรเวอร์อุปกรณ์โอเพนซอร์สฟรีที่มีให้สำหรับชิปเซ็ตกราฟิกนั้น "ได้รับการดูแล" โดย Mesa (เนื่องจากการใช้งาน API โอเพนซอร์สฟรีที่มีอยู่ได้รับการพัฒนาภายใน Mesa) ปัจจุบันมีเฟรมเวิร์กสองเฟรมเวิร์กสำหรับการเขียนไดรเวอร์กราฟิก ได้แก่ "คลาสสิก" และ Gallium3D [ 74 ]ภาพรวมของไดรเวอร์บางส่วน (แต่ไม่ใช่ทั้งหมด) ที่มีอยู่ใน Mesa สามารถดูได้ที่ mesamatrix.net

มีไดรเวอร์อุปกรณ์สำหรับ AMD/ATI R100 ถึง R800, Intel และ การ์ด Nvidiaที่มีการเร่งความเร็ว 3 มิติ ก่อนหน้านี้มีไดรเวอร์สำหรับโปรเซสเซอร์ IBM/Toshiba/Sony CellของPlayStation 3 , ชิปเซ็ต S3 Virge & Savage , ชิปเซ็ต VIA, Matrox G200 & G400 และอื่นๆ[ 75 ]

ไดรเวอร์โอเพนซอร์สและฟรีแข่งขันกับไดรเวอร์แบบปิดที่เป็นกรรมสิทธิ์ ขึ้นอยู่กับความพร้อมของเอกสารฮาร์ดแวร์และกำลังคน ไดรเวอร์โอเพนซอร์สและฟรีอาจล้าหลังไปบ้างในการสนับสนุนการเร่งความเร็ว 3 มิติของฮาร์ดแวร์ใหม่ นอกจากนี้ ประสิทธิภาพการเรนเดอร์ 3 มิติมักจะช้าลงอย่างมาก โดยมีข้อยกเว้นที่น่าสนใจบางประการ[ 76 ] [ 77 ] [ 78 ] [ 79 ]ปัจจุบันนี้ยังคงเป็นจริงสำหรับ Nouveau สำหรับ GPU ของ NVIDIA ส่วนใหญ่ ในขณะที่บน GPU Radeon ของ AMD ไดรเวอร์แบบเปิดส่วนใหญ่มีประสิทธิภาพเทียบเท่าหรือสูงกว่าไดรเวอร์ที่เป็นกรรมสิทธิ์แล้ว

โครงสร้างพื้นฐานการเรนเดอร์โดยตรง (DRI)

เมื่อการ์ดกราฟิก 3 มิติ เริ่มเป็นที่นิยมมากขึ้นในพีซี บุคคลที่ได้รับการสนับสนุนบางส่วนจากบริษัทบางแห่งเริ่มทำงานเพื่อเพิ่มการสนับสนุนการเรนเดอร์ 3 มิติแบบเร่งความเร็วด้วยฮาร์ดแวร์ให้กับ Mesa โครงสร้างพื้นฐานการเรนเดอร์โดยตรง (DRI) เป็นหนึ่งในแนวทางเหล่านี้ในการเชื่อมต่อ Mesa, OpenGL และไลบรารี API การเรนเดอร์ 3 มิติอื่นๆ กับไดรเวอร์อุปกรณ์และฮาร์ดแวร์ หลังจากที่สามารถใช้งานได้ในระดับพื้นฐานแล้ว การสนับสนุน DRI ก็ถูกเพิ่มเข้าไปใน Mesa อย่างเป็นทางการ ซึ่งช่วยขยายขอบเขตการสนับสนุนฮาร์ดแวร์ที่สามารถทำได้เมื่อใช้ไลบรารี Mesa อย่างมีนัยสำคัญ[ 80 ]

ด้วยการปรับตัวให้เข้ากับ DRI ไลบรารี Mesa จึงเข้ามารับบทบาทเป็นส่วนประกอบด้านหน้าของเฟรมเวิร์ก OpenGL เต็มรูปแบบที่มีส่วนประกอบด้านหลังที่หลากหลายซึ่งสามารถให้การสนับสนุนฮาร์ดแวร์ 3 มิติในระดับต่างๆ ได้โดยไม่ลดความสามารถในการเรนเดอร์ซอฟต์แวร์แบบเต็มรูปแบบ ระบบโดยรวมใช้ส่วนประกอบซอฟต์แวร์ที่แตกต่างกันมากมาย[ 80 ]

แม้ว่าการออกแบบจะต้องให้ส่วนประกอบทั้งหมดเหล่านี้ทำงานร่วมกันอย่างระมัดระวัง แต่อินเทอร์เฟซระหว่างส่วนประกอบเหล่านั้นค่อนข้างคงที่ อย่างไรก็ตาม เนื่องจากส่วนประกอบส่วนใหญ่ที่ทำงานร่วมกับ Mesa stack เป็นโอเพนซอร์ส งานทดลองจึงมักทำโดยการเปลี่ยนแปลงส่วนประกอบหลายส่วนพร้อมกัน รวมถึงอินเทอร์เฟซระหว่างส่วนประกอบเหล่านั้นด้วย หากการทดลองดังกล่าวประสบความสำเร็จ ก็สามารถนำไปรวมไว้ในเวอร์ชันหลักหรือเวอร์ชันย่อยถัดไปได้ ตัวอย่างเช่น การอัปเดตข้อกำหนด DRI ที่พัฒนาขึ้นในช่วงปี 2007-2008 ผลลัพธ์ของการทดลองนี้คือ DRI2 ซึ่งทำงานได้โดยไม่ต้องใช้ล็อกและมีการปรับปรุงการรองรับ back buffer ที่ดีขึ้น สำหรับเรื่องนี้ ได้ มีการสร้างสาขา git พิเศษ ของ Mesa ขึ้น[ 81 ]

DRI3ได้รับการสนับสนุนโดยไดรเวอร์ Intel ตั้งแต่ปี 2013 [ 82 ] [ 83 ]และเป็นค่าเริ่มต้นในระบบปฏิบัติการ Linux บางระบบตั้งแต่ปี 2016 [ 84 ]เพื่อเปิดใช้งานการสนับสนุน Vulkan และอื่นๆ นอกจากนี้ยังเป็นค่าเริ่มต้นบนฮาร์ดแวร์ AMD ตั้งแต่ปลายปี 2016 (X.Org Server 1.18.3 และเวอร์ชันใหม่กว่า) [ 85 ]

โปรแกรมเรนเดอร์

Mesa ยังมีการใช้งานการเรนเดอร์ซอฟต์แวร์หลายแบบเช่น softpipe , llvmpipeและlavapipeซึ่งช่วยให้ OpenGL, Vulkan และอื่นๆ สามารถทำงานบน CPU เป็นทางเลือกสำรองเมื่อไม่มีตัวเร่งฮาร์ดแวร์กราฟิก[ 86 ]

VirGL เป็น Rasterizer สำหรับเครื่องเสมือนที่นำมาใช้ใน Mesa 11.1 ตั้งแต่ปี 2015 โดยรองรับ OpenGL 3.3 และแสดงให้เห็นใน Mesamatrix ตั้งแต่ Mesa 18 ใน Mesa 18.2 เวอร์ชันใหม่ล่าสุดนี้ รองรับ OpenGL 4.3 และ OpenGL ES 3.2 ได้มากกว่าเวอร์ชันอื่นๆ ฟีเจอร์ของ OpenGL 4.4 และ 4.5 ​​ประมาณ 80% ก็พร้อมใช้งานแล้ว การพัฒนา Vulkan เริ่มต้นด้วยโครงการ GSOC 2018 [ 87 ] [ 88 ] [ 89 ] [ 58 ] [ 90 ] [ 91 ] [ 92 ]

สถานะ virGL จริงใน Mesamatrix รองรับ OpenGL 4.6+ และ OpenGL ES 3.2+ อย่างเต็มรูปแบบ พร้อมด้วยซอฟต์แวร์ Linux ที่จำเป็นบางส่วน[ 93 ]

D3d12 เป็นโครงการของ Microsoft สำหรับการจำลอง WSL2 ของ OpenGL 3.3+ และ OpenCL 1.2+ ด้วย Direct3D 12 D3D12 ถูกรวมเข้าใน 21.0 [ 94 ]สถานะปัจจุบันใน Mesa 23.1 คือ OpenGL 4.2+ เกือบจะเป็น 4.4+ และ OpenGL ES 3.1+

Venus เป็นไดรเวอร์ Vulkan VirtIO GPU ใหม่สำหรับ GPU ในเครื่องเสมือนโดย Google Venus ถูกรวมเข้าในเวอร์ชัน 21.1 และเปิดให้ใช้งานสำหรับสาธารณะในเวอร์ชัน 21.2 [ 60 ] Venus รองรับ Vulkan 1.3+ ใน Mesa 23.1 ฮาร์ดแวร์ขั้นต่ำคือ Vulkan 1.1 พร้อมส่วนขยายบางอย่าง[ 95 ]

คนขับรถเมกะ

แนวคิดในการรวมไดรเวอร์หลายตัวเข้าเป็นไดรเวอร์ "เมกะ" ตัวเดียวได้รับการเสนอโดย Emma Anholt ซึ่งช่วยให้สามารถใช้โค้ด Mesa ที่ใช้ร่วมกันเพียงชุดเดียวในไดรเวอร์หลายตัว (แทนที่จะมีอยู่ในแต่ละไดรเวอร์แยกกัน) และให้ประสิทธิภาพที่ดีกว่าไลบรารีที่ใช้ร่วมกันแยกต่างหากเนื่องจากการลบอินเทอร์เฟซไลบรารีภายใน[ 96 ]ตัวติดตามสถานะสำหรับVDPAUและ XvMC ได้กลายเป็นไลบรารีแยกต่างหาก[ 97 ]

เชเดอร์-ดีบี

shader-db คือชุดรวมของshaders ประมาณ 20,000 ตัว ที่รวบรวมมาจากเกมคอมพิวเตอร์และการทดสอบประสิทธิภาพต่างๆ รวมถึงสคริปต์บางส่วนที่ใช้ในการคอมไพล์และรวบรวมสถิติ shader-db มีจุดประสงค์เพื่อช่วยตรวจสอบความถูกต้องของการปรับแต่งประสิทธิภาพ

พบว่าเชเดอร์จำนวนมากไม่ได้ถูกเขียนด้วยมือ แต่ถูกสร้างขึ้นโดยโปรแกรม หมายความว่าเชเดอร์เหล่านี้ถูกเขียนขึ้นในภาษา HLSL ก่อน แล้วจึงถูกแปลงเป็น GLSL โดยโปรแกรมแปลงโค้ด เช่นHLSL2GLSLปัญหาคือ โค้ดที่สร้างขึ้นมักจะไม่ได้มีประสิทธิภาพสูงสุด แมตต์ เทอร์เนอร์ กล่าวว่า การแก้ไขปัญหานี้ในโปรแกรมแปลงโค้ดนั้นง่ายกว่าการปล่อยให้คอมไพเลอร์ของ Mesa ต้องรับภาระในการจัดการกับเชเดอร์ที่มีขนาดใหญ่เกินไปเช่นนี้

shader-db ไม่ถือว่าเป็นซอฟต์แวร์โอเพนซอร์สและใช้งานได้ฟรี หากต้องการใช้งานอย่างถูกกฎหมาย ผู้ใช้จะต้องมีใบอนุญาตสำหรับเกมคอมพิวเตอร์ทุกเกมที่ใช้ shader เหล่านั้น

สถาปัตยกรรมซอฟต์แวร์

ไดรเวอร์กราฟิกประกอบด้วยการใช้งานสเตทแมชชีน OpenGL และสแต็กการคอมไพล์เพื่อคอมไพล์เชเดอร์ให้เป็นภาษาเครื่องของ GPU การคอมไพล์นี้ รวมถึงสิ่งอื่นๆ เกือบทั้งหมด จะถูกดำเนินการบน CPU จากนั้นเชเดอร์ที่คอมไพล์แล้วจะถูกส่งไปยัง GPU และถูกประมวลผลโดย GPU (SDL = Simple DirectMedia Layer )
รูปแบบการแสดงผลระดับกลาง (Intermediate Representations หรือ IRs) ใน Mesa ได้แก่ GLSL IR, Mesa IR, TGSIและLLVM IRส่วน HIR, LIR และ NIR ยังไม่มี
ระบบ Mesa IR จะถูกรื้อถอนออกทั้งหมด

ไดรเวอร์อุปกรณ์กราฟิกโหมดผู้ใช้ (UMD) ใน Mesa นั้นมีส่วนคล้ายคลึงกับไดรเวอร์อุปกรณ์ ทั่วไปน้อยมาก มีข้อแตกต่างอยู่สองสามประการ:

  • ไดรเวอร์อุปกรณ์กราฟิกโหมดเคอร์เนล (UMD) เหล่านี้ถูกออกแบบมาให้ทำงานบนไดรเวอร์อุปกรณ์กราฟิกโหมดเคอร์เนลที่มีอยู่แล้ว เช่น ไดรเวอร์ที่มีอยู่ในเคอร์เนล Linux ซึ่งพบได้ในซอร์สโค้ด/drivers/gpu/drm/แต่ละ UMD จะสื่อสารกับไดรเวอร์โหมดเคอร์เนลที่เกี่ยวข้องโดยใช้ไลบรารีเฉพาะชื่อlibdrm_specificและไลบรารีทั่วไปชื่อlibdrmส่วนนี้จะกล่าวถึงเฉพาะส่วนของโหมดผู้ใช้ที่อยู่เหนือ libdrm เท่านั้น
  • มีการนำเครื่องสถานะจำกัด (finite-state machine) มาใช้ในรูปแบบต่างๆ ตามที่กำหนดไว้ใน OpenGL เป็นต้น การนำเครื่องสถานะจำกัดของ OpenGL มาใช้นี้อาจใช้ร่วมกันระหว่าง UMD หลายตัว หรืออาจไม่ใช้ร่วมกันก็ได้
  • ส่วนประกอบหลักของมันคือคอมไพเลอร์ชนิดต่างๆ ที่รับเอาภาษาโปรแกรม เช่น GLSL เข้ามา และส่งออกเป็นรหัสเครื่องจักรตัวแยกวิเคราะห์อาจใช้ร่วมกันระหว่าง UMD หลายตัว หรืออาจเป็นแบบเฉพาะเจาะจงก็ได้

การแสดงผลระดับกลางของเมซา

เป้าหมายหนึ่งของ Mesa คือการเพิ่มประสิทธิภาพของโค้ดที่จะถูกประมวลผลโดย GPU แต่ละตัว อีกเป้าหมายหนึ่งคือการแบ่งปันโค้ด แทนที่จะอธิบายรายละเอียดของซอฟต์แวร์แต่ละส่วน บทความนี้จะพิจารณาถึงรูปแบบการแสดงผลระดับกลาง (Intermediate Representation หรือ Intermediate Representation หรือ IRS) ที่ใช้ในกระบวนการคอมไพล์และเพิ่มประสิทธิภาพ โปรดดูที่Abstract syntax tree (AST) และStatic single assignment form (SSA form)

สปิร-วี

SPIR-V เป็นเวอร์ชันหนึ่งของStandard Portable Intermediate Representationแนวคิดคือ แอปพลิเคชันกราฟิกจะส่งออก SPIR-V แทน GLSL ในทางตรงกันข้ามกับ GLSL นั้น SPIR-V เป็นไบนารีเพื่อหลีกเลี่ยงความแตกต่างในการใช้งานระหว่างส่วนหน้าของคอมไพเลอร์ GLSL ของการใช้งานไดรเวอร์ที่แตกต่างกัน เนื่องจากนี่เป็นแหล่งที่มาหลักของความไม่เข้ากันและข้อบกพร่องของแอปพลิเคชัน นอกจากนี้ ไบนารีของ SPIR-V มักจะผ่านการเพิ่มประสิทธิภาพทั่วไปบางอย่างด้วย การแสดงผลไบนารีของ SPIR-V ยังให้การปกปิดในระดับหนึ่ง ซึ่งอาจดึงดูดผู้จำหน่ายซอฟต์แวร์บางรายในฐานะรูปแบบหนึ่งของการปกป้องทรัพย์สินทางปัญญา อย่างไรก็ตาม SPIR-V มีข้อมูลมากมายสำหรับการสะท้อน และมีเครื่องมือที่แปล SPIR-V กลับไปเป็นโค้ดระดับสูงคุณภาพสูงที่มนุษย์อ่านได้ UMD จำเป็นต้องใช้การเพิ่มประสิทธิภาพเฉพาะสำหรับฮาร์ดแวร์ที่รองรับเท่านั้น[ 98 ]

GLSL IR

[ 99 ]

เมซา ไออาร์

เอ็นไออาร์

NIR (New Internal Representation) ถูกนำมาใช้เพื่อเอาชนะข้อจำกัดของ TGSI [ 100 ] [ 101 ] NIR ได้รับการขยายในเวอร์ชันล่าสุดและเวอร์ชันปัจจุบันเป็นพื้นฐานของการสนับสนุน Spir-V และเป็นพื้นที่การพัฒนาหลักตั้งแต่ปี 2016 LLVMpipe, i965, RadeonSI, Nouveau, freedreno, vc4 เปลี่ยนจาก TGSI เป็น NIR RADV, Zink และไดรเวอร์ใหม่ๆ อื่นๆ เริ่มต้นด้วย NIR ไดรเวอร์ทั้งหมดที่รองรับ OpenGL 4.6 อย่างสมบูรณ์นั้นเกี่ยวข้องกับ NIR โดยการสนับสนุน SPIR-V นอกจากนี้ AMD r600 ยังมีเวอร์ชันแยกที่มี NIR เพื่อการสนับสนุนที่ดีขึ้นสำหรับซีรี่ส์ HD5000 และ HD6000 ตัวเลือกนี้สำหรับ r600 เป็นค่าเริ่มต้นตั้งแต่ Mesa 21.0 [ 102 ]

ทีจีเอสไอ

โครงสร้างพื้นฐาน Shader ของ Tungsten Graphics (TGSI) เปิดตัวในปี 2008 โดย Tungsten Graphics UMD แบบ Gallium3D ทั้งหมดใช้ TGSI ปัจจุบัน NIR เป็นพื้นที่การพัฒนาหลัก ดังนั้น TGSI จึงใช้ได้เฉพาะกับไดรเวอร์รุ่นเก่า เช่น โครงสร้างพื้นฐานเริ่มต้นของ r300g และจะถูกยกเลิกในอีกไม่กี่ปีข้างหน้า

โค้ด GLSL-To-TGSI จะถูกลบใน Mesa 22.2 ค่าเริ่มต้นคือ NIR-to-TGSI รุ่นใหม่กว่าพร้อม GLSL-to-NIR สำหรับไดรเวอร์ NIR ดั้งเดิมทั้งหมด ไดรเวอร์ TGSI รุ่นเก่าบางตัวได้รับการสนับสนุนด้วยเส้นทางโค้ด NIR นี้ ในภายหลัง NIR-To-TGSI จะถูกยกเลิกสำหรับไดรเวอร์ NIR ดั้งเดิมเท่านั้น[ 103 ]

LLVM IR

llvmpipeโปรแกรมนี้ไม่ได้สร้างโค้ดเครื่องโดยตรง แต่จะสร้าง LLVM IR แทน จากนั้น LLVM จะทำการปรับแต่งและคอมไพล์เป็นโค้ดเครื่อง ซึ่งหมายความว่าต้องติดตั้ง LLVM เวอร์ชันขั้นต่ำที่กำหนดไว้ด้วย

คอมไพเลอร์ GLSL ของ Mesa

คอมไพเลอร์ GLSL ของ Mesa สร้าง IR ของตัวเอง เนื่องจากไดรเวอร์แต่ละตัวมีข้อกำหนดที่แตกต่างจาก LIR มาก จึงแยกความแตกต่างระหว่าง HIR (high-level IR) และ LIR (low-level IR)

แกลเลียม3ดี

แกลเลียม3ดี
ผู้เขียนต้นฉบับTungsten Graphics (ปัจจุบันคือVMware )
รุ่นทดลองใช้งาน
0.4 [ 104 ] / 24 เมษายน 2553 ( 24 เมษายน 2553 )
เขียนเป็นภาษาซี ,ภาษาซี++ ,ภาษาแอสเซมบลี
ระบบปฏิบัติการข้ามแพลตฟอร์ม
พิมพ์ไลบรารีกราฟิก
ใบอนุญาตใบอนุญาต MIT
เว็บไซต์www .freedesktop .org /wiki /ซอฟต์แวร์/แกลเลียม/
ที่เก็บข้อมูล
  • gitlab .freedesktop .org /mesa /mesa

Gallium3Dเป็นชุดอินเทอร์เฟซและชุดไลบรารีสนับสนุน[ 105 ]ที่มีจุดประสงค์เพื่อลดความยุ่งยากในการเขียนโปรแกรมไดรเวอร์อุปกรณ์สำหรับ ชิปเซ็ต กราฟิก 3 มิติสำหรับระบบปฏิบัติการหลายระบบ API การเรนเดอร์หรือการเร่งความเร็ววิดีโอเป็นซอฟต์แวร์ ไดรเวอร์อุปกรณ์กราฟิกแบบโอเพนซอร์สและฟรี

มี เมทริก ซ์ คุณลักษณะให้ดูได้ที่mesamatrix.net

การพัฒนา Gallium3D เริ่มขึ้นในปี 2551 ที่ Tungsten Graphics [ 106 ]และการใช้งานนั้นมีให้ใช้งานเป็นซอฟต์แวร์โอเพนซอร์สฟรีซึ่งเป็นส่วนหนึ่งของMesa 3Dที่โฮสต์โดยfreedesktop.orgเป้าหมายหลักคือการทำให้การพัฒนาไดรเวอร์ง่ายขึ้น โดยการรวมโค้ดที่ซ้ำซ้อนของไดรเวอร์หลายตัวเข้าไว้ในจุดเดียว และเพื่อรองรับสถาปัตยกรรมฮาร์ดแวร์สมัยใหม่ ซึ่งทำได้โดยการแบ่งงานที่ดีขึ้น ตัวอย่างเช่น การปล่อยให้การจัดการหน่วยความจำเป็นหน้าที่ของไดรเวอร์ DRI ของเคอร์เนล

Gallium3D เป็นส่วนหนึ่งของ Mesa มาตั้งแต่ปี 2009 [ 107 ]และถูกใช้โดยไดรเวอร์ที่ไม่ใช่ Vulkan ทั้งหมดตั้งแต่เวอร์ชัน 22.0 เป็นต้นไป[ 108 ]ณ ปี 2026 มีไดรเวอร์ Gallium3D อย่างน้อย 20 ตัว[ 109 ]ซึ่งรวมถึงไดรเวอร์ฮาร์ดแวร์ การใช้งานซอฟต์แวร์ การส่งผ่านเวอร์ชวลไลเซชัน และเลเยอร์การแปลที่ใช้ Gallium3D บน API ต่างๆ เช่นVulkan , Apple's Metal APIและ Microsoft's Direct3D 12

สถาปัตยกรรมซอฟต์แวร์

Gallium3D ช่วยให้การเขียนโปรแกรมไดรเวอร์อุปกรณ์ง่ายขึ้น โดยแบ่งไดรเวอร์อุปกรณ์กราฟิกออกเป็นสามส่วน ซึ่งทำได้โดยการแนะนำอินเทอร์เฟซ สองตัว ได้แก่Gallium3D State Tracker InterfaceและGallium3D WinSys Interfaceส่วนประกอบทั้งสามส่วนนี้มีชื่อเรียกว่า:

Gallium3D State Tracker
แต่ละAPI กราฟิก ที่ใช้ในการเรียกใช้ไดรเวอร์อุปกรณ์จะมี State Tracker ของตัวเอง เช่น มี Gallium3D State Tracker สำหรับOpenGLและอีกตัวหนึ่ง (Rusticl) สำหรับOpenCLแต่ละ State Tracker จะมีการใช้งาน Gallium3D State Tracker Interface และถูกใช้โดยไดรเวอร์อุปกรณ์ฮาร์ดแวร์ Gallium3D ที่มีอยู่ทั้งหมด
ไดรเวอร์อุปกรณ์ฮาร์ดแวร์ Gallium3D
นี่คือโค้ดจริงที่เฉพาะเจาะจงกับตัวเร่งกราฟิก 3 มิติพื้นฐาน แต่เฉพาะเท่าที่อินเทอร์เฟซ Gallium3D WinSys อนุญาตเท่านั้น มีไดรเวอร์อุปกรณ์ฮาร์ดแวร์ Gallium3D เฉพาะสำหรับชิปกราฟิกแต่ละตัวที่มีอยู่ และแต่ละตัวจะใช้งานอินเทอร์เฟซ Gallium3D State Tracker รวมถึงอินเทอร์เฟซ Gallium3D WinSys ด้วย ไดรเวอร์อุปกรณ์ฮาร์ดแวร์ Gallium3D เข้าใจ NIR (NIR Intermediate Representation ซึ่งเป็นตัวย่อแบบเรียกซ้ำ) ซึ่งเป็นภาษาระดับกลางสำหรับอธิบายเชเดอร์ โค้ดนี้แปลงเชเดอร์ NIR จากตัวติดตามสถานะไปเป็นชุดคำสั่งที่ใช้งานโดย GPU
Gallium3D WinSys
นี่เป็นส่วนเฉพาะของเคอร์เนล พื้นฐาน ของระบบปฏิบัติการและแต่ละเคอร์เนลจะใช้งานอินเทอร์เฟซ Gallium3D WinSys เพื่อเชื่อมต่อกับไดรเวอร์อุปกรณ์ฮาร์ดแวร์ Gallium3D ที่มีอยู่ทั้งหมด
ไดรเวอร์ฮาร์ดแวร์ส่วนใหญ่สามารถใช้งาน NIR ได้โดยตรง (และใช้ tgsi_to_nir แทนสำหรับเชเดอร์ภายในที่ไม่ใช้ glsl_to_nir) ไดรเวอร์ฮาร์ดแวร์รุ่นเก่าที่ยังคงต้องการ TGSI สามารถใช้ nir_to_tgsi เพื่อแปลงโค้ด NIR จากตัวติดตามสถานะให้เป็น TGSI ได้
ภาพประกอบแสดงส่วนประกอบกราฟิก ของ Linux
Mesa/ DRI และ Gallium3D มีโมเดลไดรเวอร์ที่แตกต่างกัน แต่ทั้งสองระบบก็มี โค้ดโอเพนซอร์สและใช้งานได้ฟรีอยู่มาก
ตัวอย่างเมทริกซ์ที่เป็นไปได้เมื่อนำโมเดลไดรเวอร์ Gallium3D มาใช้ ด้วยการแนะนำอินเทอร์เฟซ Gallium3D Tracker และอินเทอร์เฟซ Gallium3D WinSys ทำให้จำเป็นต้องใช้โมดูลเพียง 18 โมดูลแทนที่จะเป็น 36 โมดูล แต่ละโมดูล WinSys สามารถทำงานร่วมกับแต่ละโมดูลไดรเวอร์อุปกรณ์ Gallium3D และแต่ละโมดูล State Tracker ได้

ความแตกต่างจากไดรเวอร์กราฟิกแบบคลาสสิก

Gallium3D ให้API ที่เป็นหนึ่งเดียว ซึ่งเปิดเผยฟังก์ชันฮาร์ดแวร์มาตรฐาน เช่น หน่วยประมวล ผลเฉดสีที่พบในฮาร์ดแวร์สมัยใหม่ ดังนั้น API 3 มิติ เช่นOpenGL 1.x/2.x, OpenGL 3.x, OpenVG , โครงสร้างพื้นฐาน GPGPUหรือแม้แต่Direct3D (ดังที่พบใน เลเยอร์ความเข้ากันได้ของ Wine ) จะต้องการเพียงแบ็กเอนด์เดียวที่เรียกว่าตัวติดตามสถานะ ซึ่งกำหนดเป้าหมายไปที่ API ของ Gallium3D ในทางตรงกันข้าม ไดรเวอร์อุปกรณ์ DRI แบบดั้งเดิมต้องการแบ็กเอนด์ที่แตกต่างกันสำหรับแต่ละแพลตฟอร์มฮาร์ดแวร์ และ API อื่นๆ อีกหลายตัวจำเป็นต้องมีการแปลงเป็น OpenGL ซึ่งต้องแลกมาด้วยการทำซ้ำโค้ด[ 110 ] [ 111 ] [ 112 ]ไดรเวอร์อุปกรณ์ของผู้จำหน่ายทั้งหมด เนื่องจากลักษณะที่เป็นกรรมสิทธิ์และปิดแหล่งที่มา จึงเขียนในลักษณะนั้น ซึ่งหมายความว่า เช่นAMD Catalystใช้ทั้งOpenGLและDirect3Dและไดรเวอร์ของผู้จำหน่ายสำหรับGeForceก็มีการใช้งานของตนเอง

ภายใต้ Gallium3D ไดรเวอร์เคอร์เนลDirect Rendering Manager (DRM) จะจัดการหน่วยความจำ และไดรเวอร์ Direct Rendering Interface (DRI2) จะเน้นการประมวลผล GPU มากขึ้น[ 113 ]

โครงสร้างพื้นฐาน Shader ของ Tungsten Graphics

Tungsten Graphics Shader Infrastructure (TGSI) เป็นรูปแบบการแสดงผลระดับกลางที่ใช้ในบางส่วนของ Mesa โดยเชเดอร์ที่เขียนด้วยภาษา OpenGL Shading Languageจะต้องถูกแปลง/คอมไพล์เป็น TGSI ก่อน จากนั้นจึงทำการปรับแต่ง และสุดท้ายเชเดอร์ TGSI จะถูกคอมไพล์เป็นเชเดอร์สำหรับชุดคำสั่งของ GPU ที่ใช้งานอยู่

ณ ปี 2026 ผู้ขับขี่ส่วนใหญ่ได้เปลี่ยนจากระบบ TGSI ไปใช้ระบบ NIR แทนแล้ว

การแสดงผลระดับกลางของ NIR

NIR เป็นตัวแทนระดับกลางหลักใน Mesa การพัฒนา NIR เริ่มขึ้นในปี 2014 ภายใน Intel และเมื่อเวลาผ่านไป NIR ได้เข้ามาแทนที่ TGSI ในส่วนใหญ่ของMesa [ 114 ]

ประวัติศาสตร์

ผู้เขียน Gallium3D ดั้งเดิมคือ Keith Whitwell และ Brian Paul ที่ Tungsten Graphics (ซึ่งถูกVMware ซื้อกิจการ ในปี 2008) [ 115 ]

เหตุการณ์สำคัญ

13 กรกฎาคม 2551 ( 13 กรกฎาคม 2551 )
การพัฒนา Nouveau ดำเนินการเฉพาะสำหรับเฟรมเวิร์ก Gallium เท่านั้น ไดรเวอร์ DRI เก่าถูกลบออกจากสาขาหลักของที่เก็บ Mesa บน Freedesktop.org [ 116 ]
11 กุมภาพันธ์ 2552 ( 11 กุมภาพันธ์ 2552 )
สาขา gallium-0.2 ถูกรวมเข้ากับสาขา Master หลักของ Mesa [ 117 ]การพัฒนาดำเนินการใน Mesa mainline
25 กุมภาพันธ์ 2552 ( 25 กุมภาพันธ์ 2552 )
Gallium3D สามารถทำงานได้ทั้งบนเคอร์เนล Linux และ FreeBSD [ 118 ]
1 พฤษภาคม 2552 ( 1 พฤษภาคม 2552 )
Zack Rusin จาก Tungsten Graphics ได้เพิ่ม ตัวติดตามสถานะ OpenVGลงใน Mesa 3D [ 119 ]ซึ่งช่วยให้Scalable Vector Graphicsสามารถเร่งความเร็วด้วยฮาร์ดแวร์โดยไดรเวอร์ที่ใช้ Gallium3D ใดๆ ก็ได้
17 กรกฎาคม 2552 ( 17 กรกฎาคม 2552 )
Mesa3D 7.5 ได้รับการเผยแพร่ ซึ่งเป็นเวอร์ชันแรกที่รวม Gallium3D ไว้ด้วย[ 120 ]
10 กันยายน 2553 ( 10 กันยายน 2010 )
การสนับสนุนเบื้องต้นสำหรับ GPU Evergreen ถูกเพิ่มลงในไดรเวอร์ r600g [ 121 ]
21 กันยายน 2010 ( 21 กันยายน 2010 )
มีไดรเวอร์ Gallium3D สองตัวสำหรับฮาร์ดแวร์ ATI ซึ่งรู้จักกันในชื่อ r300g และ r600g สำหรับ GPU รุ่น R300-R500 และ R600-Evergreen ตามลำดับ
21 กันยายน 2010 ( 21 กันยายน 2010 )
มีการแก้ไขโค้ดครั้งใหญ่เพื่อรองรับ Direct3D 10 และ 11 [ 122 ]ในอนาคต สิ่งนี้อาจทำให้สามารถใช้การใช้งาน Direct3D รุ่นล่าสุดบนระบบ Linux ได้
30 พฤศจิกายน 2011 ( 30 พฤศจิกายน 2011 )
ไดรเวอร์ Intel 965g และ Cell Gallium ถูกลบออกจาก master branch ของ Mesa เนื่องจากไม่มีการบำรุงรักษาและเสียหาย[ 123 ] [ 124 ]
30 พฤศจิกายน 2013 ( 30 พฤศจิกายน 2013 )
Mesa 10 พร้อม OpenGL 3.2, 3.3 และ OpenCL 1.0+
18 พฤศจิกายน 2014 ( 18 พฤศจิกายน 2014 )
มีการแก้ไขโค้ดครั้งใหญ่เพื่อรองรับ Direct3D 9 [ 125 ]
15 กันยายน 2558 ( 15 กันยายน 2015 )
Mesa 11 พร้อม OpenGL 4.0, 4.1 และ OpenCL 1.2 (ยังไม่สมบูรณ์)
15 ธันวาคม 2015 (2015-12-15)
ไดรเวอร์ Mesa 11.1 VIRGL สำหรับเครื่องเสมือนที่ใช้ OpenGL 3.3
8 กรกฎาคม 2559 (2016-07-08)
Mesa 12 พร้อม OpenGL 4.2, 4.3 และ Vulkan 1.0 (Intel ANV และ AMD RADV)
1 พฤศจิกายน 2016 (2016-11-01)
Mesa 13 พร้อม OpenGL 4.4 และ OpenGL ES 3.2
13 กุมภาพันธ์ 2560 (2017-02-13)
Mesa 17.0 พร้อม OpenGL 4.5 และไดรเวอร์ FreeDreno พร้อม OpenGL 3.0 และ 3.1
10 พฤษภาคม 2560 (2017-05-10)
Mesa 17.1 รองรับ OpenGL 4.2+ สำหรับ Intel Ivy Bridge (มากกว่าไดรเวอร์ Intel สำหรับ Windows, OpenGL 3.3+ สำหรับ Intel) และ Open SWR Rasterizer (สำคัญสำหรับคอมพิวเตอร์คลัสเตอร์สำหรับการจำลองขนาดใหญ่)
8 ธันวาคม 2017 (2017-12-08)
Mesa 17.3 AMD Vulkan Driver RADV ผ่านการทดสอบอย่างสมบูรณ์ใน Khronos Test ของ Vulkan 1.0
18 พฤษภาคม 2561 (2018-05-18)
Mesa 18.1 พร้อม Vulkan 1.1 (Intel ANV และ AMD RADV)
7 กันยายน 2018 (2018-09-07)
Mesa 18.2 พร้อม OpenGL 4.3 สำหรับซอฟต์แวร์ไดรเวอร์ VIRGL (สำคัญสำหรับเครื่องเสมือนในคลัสเตอร์คอมพิวเตอร์บนคลาวด์) และ OpenGL ES 3.1 สำหรับ Freedreno พร้อม Adreno A5xx
11 มิถุนายน 2019 (2019-06-11)
Mesa 19.1 เปิดตัวพร้อมไดรเวอร์กราฟิก 'iris' รุ่นต่อไปของ Intel สำหรับ iGPU รุ่นที่ 8 ขึ้นไป ซึ่งสร้างขึ้นโดยใช้ Gallium3D [ 126 ]
11 ธันวาคม 2019 (2019-12-11)
Mesa 19.3 ได้เปิดตัว OpenGL 4.6 สำหรับ Intel i965 เจนเนอเรชั่น 7 ขึ้นไป และมีตัวเลือก Iris เจนเนอเรชั่น 8 ขึ้นไป
18 มีนาคม 2020 (2020-03-18)
Mesa 20.0 ได้เปิดตัว OpenGL 4.6 สำหรับ AMD GCN และ Vulkan 1.2 สำหรับ Intel
27 พฤษภาคม 2020 (2020-05-27)
Mesa 20.1 ได้เปิดตัวการรองรับการแปลงเวกเตอร์ NIR และการรองรับหน่วยความจำเสมือนแบบใช้ร่วมกันสำหรับ OpenCL ใน Clover
30 พฤศจิกายน 2020 (2020-11-30)
Mesa 20.3 รองรับ OpenCL 1.2 อย่างสมบูรณ์ใน Clover [ 15 ]
11 มีนาคม 2021 (2021-03-11)
Mesa 21.0 รองรับ "D3D12" เบื้องต้น: Direct 3D 12 สำหรับ WSL2 ใน Windows 10 ที่ใช้ OpenGL 3.3+, ARM Freedreno: OpenGL 3.3+
5 พฤษภาคม 2021 (2021-05-05)
Mesa 21.1 รองรับไดรเวอร์ GPU Google VirtIO "Venus" เบื้องต้น พร้อม Vulkan 1.2+; Zink: OpenGL 4.6+, OpenGL ES 3.1+; Qualcomm Turnip, Lavapipe: Vulkan 1.1+
4 สิงหาคม 2021 (2021-08-04)
Mesa 21.2 ได้เปิดตัวพร้อมไดรเวอร์ Intel Crocus ใหม่ ซึ่งใช้ Gallium3D เป็นพื้นฐาน รองรับ iGPU Intel Sandy Bridge ถึง Haswell ทำให้ไม่จำเป็นต้องใช้ไดรเวอร์ i965 รุ่นเก่าที่ไม่ใช้ Gallium3D อีกต่อไป นอกจากนี้ยังเพิ่มไดรเวอร์ PanVK Vulkan สำหรับ GPU ARM Mali ด้วย
9 มีนาคม 2022 (2022-03-09)
Mesa 22.0 ได้ลบไดรเวอร์ที่ไม่ใช่ Gallium3D รุ่นเก่าทั้งหมด[ 127 ] ออกไป นอกจากนี้ยังรองรับ Vulkan 1.3 อย่างเต็มรูปแบบโดย Intel Anvil และ AMD RADV
10 พฤษภาคม 2023 (2023-05-10)
Mesa 23.1 OpenCL กับ Rust: RustiCL สำหรับฮาร์ดแวร์ AMD GCN พร้อมใช้งานแล้ว (ฮาร์ดแวร์อื่นๆ อยู่ระหว่างการพัฒนา) [ 128 ]
30 กันยายน 2023 (2023-09-30)
Mesa 23.2 พร้อม Apple Asahi OpenGL 3.1 และ OpenGL ES 3.0, RADV รองรับ Ray Tracing ใน AMD RDNA 2 และ 3, รองรับการถอดรหัส Intel Anvil Vulkan H.265 [ 129 ]

ผลงาน

ไดรเวอร์ที่พัฒนาแล้วใน Mesa มักจะมีประสิทธิภาพเหนือกว่าไดรเวอร์ที่เป็นกรรมสิทธิ์สำหรับฮาร์ดแวร์เดียวกัน โดยเฉพาะอย่างยิ่งบนอุปกรณ์เล่นเกมพกพาที่มีข้อจำกัดอย่างมากทั้งในด้านพลังงานและความร้อน การใช้งาน Linux ด้วยไดรเวอร์ Mesa ได้รับการพิสูจน์แล้วว่ามีประสิทธิภาพเหนือกว่า Windows ที่ใช้ไดรเวอร์ที่เป็นกรรมสิทธิ์ของผู้ผลิตบนฮาร์ดแวร์เดียวกันอย่างสม่ำเสมอและมีนัยสำคัญ[ 130 ] บางครั้งอาจมากถึง 75% [ 131 ] มีการกล่าวอ้างว่า Microsoftตั้งเป้าหมายภายในไว้ว่าจะสามารถเทียบเท่าประสิทธิภาพของ SteamOS บนอุปกรณ์เล่นเกมพกพาได้ [ 132 ]

ประวัติศาสตร์

ไบรอัน พอล ผู้ริเริ่มโครงการ เป็นผู้ที่ชื่นชอบงานกราฟิก เขาคิดว่าการสร้างไลบรารีกราฟิก 3 มิติแบบง่ายๆ โดยใช้ API ของ OpenGL จะเป็นเรื่องสนุก ซึ่งเขาอาจจะใช้แทน VOGL (very ordinary GL Like Library) [ 133 ] เขาเริ่มพัฒนาซอฟต์แวร์แบบไม่เต็มเวลาเป็นเวลาสิบแปดเดือนตั้งแต่ปี 1993 ก่อนที่จะเผยแพร่ซอฟต์แวร์บนอินเทอร์เน็ตในเดือนกุมภาพันธ์ 1995 [ 134 ]ซอฟต์แวร์ได้รับการตอบรับเป็นอย่างดี และผู้คนเริ่มมีส่วนร่วมในการพัฒนา Mesa เริ่มต้นด้วยการเรนเดอร์กราฟิกคอมพิวเตอร์ 3 มิติ ทั้งหมด บนCPUแม้ว่าจะเป็นเช่นนั้น สถาปัตยกรรมภายในของ Mesa ก็ได้รับการออกแบบให้เปิดกว้างสำหรับการเชื่อมต่อกับ การเรนเดอร์ 3 มิติที่เร่งความเร็วด้วย โปรเซสเซอร์กราฟิกในระยะแรกนี้ การเรนเดอร์จะทำโดยอ้อมในเซิร์ฟเวอร์แสดงผลทำให้มีค่าใช้จ่ายเพิ่มเติมและความเร็วที่สังเกตได้ช้ากว่าค่าสูงสุดทางทฤษฎีDiamond Monster 3Dซึ่งใช้ ชิปเซ็ต Voodoo Graphicsเป็นหนึ่งในอุปกรณ์ฮาร์ดแวร์ 3 มิติเครื่องแรกที่ Mesa รองรับ

การสนับสนุนฮาร์ดแวร์กราฟิกที่แท้จริงครั้งแรกถูกเพิ่มลงใน Mesa ในปี 1997 โดยอิงตามAPI ของ Glideสำหรับการ์ดกราฟิก3dfx Voodoo I/II รุ่นใหม่ในขณะนั้น และรุ่นต่อๆ มา[ 80 ]ปัญหาสำคัญของการใช้ Glide เป็นเลเยอร์เร่งความเร็วคือ Glide มักจะทำงานแบบเต็มหน้าจอ ซึ่งเหมาะสำหรับเกมคอมพิวเตอร์เท่านั้น นอกจากนี้ Glide ยังล็อกหน่วยความจำหน้าจอ ทำให้เซิร์ฟเวอร์แสดงผลไม่สามารถทำงาน GUI อื่นๆ ได้[ 135 ]

Mesa 10 เป็นไปตามมาตรฐาน OpenGL 3.3 สำหรับฮาร์ดแวร์ GPU ของ Intel, AMD/ATI และ Nvidia Mesa 11 ได้รับการประกาศโดยมีไดรเวอร์บางตัวที่เป็นไปตามมาตรฐาน OpenGL 4.1 [ 136 ]

Mesa 12 รองรับ OpenGL 4.2 และ 4.3 และ Intel Vulkan 1.0

Mesa 13 นำเสนอการสนับสนุน Intel สำหรับ OpenGL 4.4 และ 4.5 ​​(รองรับคุณสมบัติทั้งหมดสำหรับ Intel Gen 8+, Radeon GCN, Nvidia (Fermi, Kepler) แต่ไม่มี Khronos-Test สำหรับฉลาก 4.5) และการสนับสนุน AMD Vulkan 1.0 แบบทดลองผ่านไดรเวอร์ชุมชน RADV OpenGL ES 3.2 สามารถใช้งานได้กับ Intel Skylake (Gen9) [ 57 ]

เวอร์ชันเสถียรแรกของปี 2017 คือ 17.0 (นับปีใหม่) [ 40 ] [ 137 ] [ 138 ]คุณสมบัติที่พร้อมใช้งานได้รับการรับรอง OpenGL 4.5, OpenGL 4.5 สำหรับ Intel Haswell, [ 139 ] [ 140 ] OpenGL 4.3 สำหรับ Nvidia Maxwell และ Pascal (GM107+) [ 141 ] มีการวัดประสิทธิภาพที่เพิ่มขึ้นอย่างมากด้วย Maxwell 1 (GeForce GTX 750 Ti และอื่นๆ ที่ใช้ GM1xx) การ์ด Maxwell-2 (GeForce GTX 980 และอื่นๆ ที่ใช้ GM2xx) ถูกลดความเร็วลงโดยไม่มีข้อมูลจาก Nvidia [ 142 ]

ชุดทดสอบ Khronos CTS สำหรับ OpenGL 4.4, 4.5 และ OpenGL ES 3.0+ เปิดให้ใช้งานแบบโอเพนซอร์สแล้ว (24 มกราคม 2017) และสามารถทำการทดสอบทั้งหมดสำหรับ Mesa 13 และ 17 ได้โดยไม่มีค่าใช้จ่าย[ 143 ]

เวอร์ชันเสถียรที่ 2 ของปี 2017 คือ 17.1.0 ออกมาเมื่อวันที่ 10 พฤษภาคม 2017 พร้อมกับการปรับปรุงที่น่าสนใจบางอย่าง OpenGL 4.2+ สำหรับ Intel Ivy Bridge และ OpenGL 3.3+ สำหรับ Intel Open SWR Rasterizer เป็น 2 ในไฮไลท์[ 144 ] [ 145 ]

เนื่องจากลักษณะที่เป็นโมดูลของ OpenGL ทำให้ Mesa สามารถรองรับส่วนขยายจาก OpenGL เวอร์ชันใหม่กว่าได้โดยไม่ต้องอ้างว่ารองรับเวอร์ชันเหล่านั้นอย่างเต็มที่ ตัวอย่างเช่น ในเดือนกรกฎาคม 2559 Mesa รองรับ OpenGL ES 3.1 แต่ยังรองรับส่วนขยาย OpenGL ES 3.2 ทั้งหมด ยกเว้นห้าส่วน รวมถึงส่วนขยายจำนวนหนึ่งที่ไม่ได้เป็นส่วนหนึ่งของ OpenGL หรือ OpenGL ES เวอร์ชันใด ๆ[ 146 ]

เวอร์ชันที่ 3 17.2 พร้อมใช้งานตั้งแต่เดือนกันยายน 2017 พร้อมคุณสมบัติ OpenGL 4.6 ใหม่บางประการและการปรับปรุงความเร็วในการประมวลผล 3 มิติสำหรับ Intel และ AMD มีเพียง 1.4% ของการทดสอบที่ล้มเหลวสำหรับ OpenGL 4.5 ใน Nouveau สำหรับ Kepler [ 147 ]

เวอร์ชันที่ 4 17.3 พร้อมใช้งานตั้งแต่เดือนธันวาคม 2017 มีการปรับปรุงมากมายในไดรเวอร์หลายตัว OpenGL 4.6 พร้อมใช้งานเกือบสมบูรณ์แล้ว (Spir-V ยังไม่พร้อมใช้งาน) ไดรเวอร์ AMD Vulkan RADV เป็นไปตามมาตรฐาน Khronos-Test อย่างสมบูรณ์แล้ว[ 148 ]

เวอร์ชันแรกของปี 2018 คือ 18.0 และพร้อมใช้งานตั้งแต่เดือนมีนาคม 2018 โดยใช้รูปแบบเดียวกับปี 2017 [ 13 ]การสนับสนุน OpenGL 4.6 อย่างเต็มรูปแบบยังไม่พร้อมใช้งาน แต่คุณสมบัติและการปรับปรุงหลายอย่างได้รับการทดสอบสำเร็จใน RC3 การสนับสนุน 10 บิตสำหรับ Intel i965 ใน Colors ก็เป็นจุดเด่นเช่นกัน[ 149 ]ใหม่คือการสนับสนุนIntel Cannon LakeและAMD Vegaด้วยเวอร์ชัน Linux ปัจจุบัน ชิป AMD Evergreen (RV800 หรือ R900) ใกล้จะรองรับ OpenGL 4.5 แล้ว ชิป AMD R600 หรือ RV700 รุ่นเก่าสามารถรองรับ OpenGL 3.3 ได้เท่านั้น โดยมีคุณสมบัติบางอย่างของ OpenGL 4.x Freedreno เป็นไดรเวอร์สำหรับฮาร์ดแวร์ Adreno และใกล้จะรองรับ OpenGL 3.3 แล้ว

เวอร์ชันที่ 2 ของปี 2018 คือ 18.1 และเปิดให้ใช้งานตั้งแต่เดือนพฤษภาคม เป้าหมายคือ Vulkan 1.1.72 ในไดรเวอร์ Intel ANV และ AMD RADV นอกจากนี้ OpenGL 4.6 พร้อม spir-V ก็เป็นเป้าหมายหลักเช่นกัน การพัฒนาอย่างต่อเนื่องคือการเพิ่มฟีเจอร์และเพิ่มประสิทธิภาพไดรเวอร์สำหรับฮาร์ดแวร์รุ่นเก่า เช่น AMD R600/Evergreen, Nvidia Tesla และรุ่นก่อนหน้า, Fermi, Kepler หรือ Intel Sandybridge, Ivybridge, Haswell หรือ Broadwell สถาปัตยกรรม ARM ก็ได้รับการปรับปรุงอย่างมากใน Adreno 3xx/4xx/5xx และ Broadwell VC4/VC5 สำหรับ Raspberry Pi โดยมีเป้าหมายหลักคือ OpenGL ES

เวอร์ชันที่ 3 ของปี 2018 คือ 18.2 และจะพร้อมใช้งานในเวอร์ชันเสถียรในเดือนกันยายน OpenGL 4.6 พร้อม spir-V และ Vulkan 1.1.80 อยู่ในระหว่างการพัฒนา ไดรเวอร์ซอฟต์แวร์สำหรับเครื่องเสมือน VIRGL พร้อมใช้งานสำหรับ OpenGL 4.3 และ OpenGL ES 3.2 แล้ว RadeonSI ก็พร้อมใช้งานสำหรับ OpenGL ES 3.2 เช่นกัน การสนับสนุนการบีบอัดพื้นผิว ASTC และการสนับสนุนโหมดความเข้ากันได้สำหรับ OpenGL 4.4 (3.1 ใน 18.1) เป็นจุดเด่นอื่นๆ ใน RadeonSI สำหรับการ์ด AMD GCN Vulkan 1.1 ใหม่และคุณสมบัติเพิ่มเติมสำหรับ Intel และ AMD พร้อมใช้งานแล้ว ดูรายละเอียดเพิ่มเติมเกี่ยวกับ Vulkan ใน Mesamatrix [ 35 ]

เวอร์ชันที่ 4 ของปี 2018 คือ 18.3 และได้รับการปล่อยออกมาเป็นเวอร์ชันเสถียร 18.3.1 ในเดือนธันวาคม 2018 คุณสมบัติมากมายโดยละเอียดและการรองรับฮาร์ดแวร์รุ่นใหม่เป็นส่วนสำคัญ การรองรับ OpenGL 4.6 อย่างเต็มรูปแบบยังไม่พร้อมใช้งาน[ 150 ] [ 151 ]

เวอร์ชันแรกของปี 2019 คือ 19.0 และได้วางจำหน่ายแล้วในเดือนมีนาคม การสนับสนุน OpenGL 4.6 อย่างเต็มรูปแบบยังไม่พร้อมใช้งาน แต่มีการปรับปรุงหลายอย่างในไดรเวอร์ทั้งหมด[ 152 ] [ 153 ]

เวอร์ชันที่สองของปี 2019 คือ 19.1 คุณสมบัติหลักคือการเปลี่ยน TGSI เป็น NIR ซึ่งถือเป็นก้าวไปสู่ ​​OpenGL 4.6 พร้อมการสนับสนุน SPIR-V และความเข้ากันได้กับ OpenCL ที่กว้างขึ้น RadeonSI ทำงานได้ดีกับ NIR ในเวอร์ชันพัฒนา[ 154 ]

เวอร์ชันที่ 3 ของปี 2019 คือ 19.2 OpenGL 4.6 พร้อมใช้งานเบต้าสำหรับไดรเวอร์ Intel Iris ใหม่[ 155 ]

เวอร์ชันที่ 4 ของปี 2019 คือ 19.3 OpenGL 4.6 พร้อมใช้งานสำหรับ Intel i965 และเป็นตัวเลือกสำหรับไดรเวอร์ Iris ใหม่[ 34 ]

เวอร์ชันแรกของปี 2020 คือ 20.0 Vulkan 1.2 พร้อมใช้งานสำหรับ AMD RADV และ Intel ANV Intel Iris เป็นค่าเริ่มต้นสำหรับ Intel Broadwell Gen 8+ [ 156 ] [ 157 ]ไดรเวอร์ RadeonSI เปลี่ยนไปใช้ NIR เป็นค่าเริ่มต้นแทน TGSI

เวอร์ชันที่ 2 ของปี 2020 คือ 20.1 มีการปรับปรุงมากมายในไดรเวอร์หลายตัว Zink เป็นไดรเวอร์เสมือนใหม่สำหรับ OpenGL บน Vulkan [ 31 ]

เวอร์ชันที่ 3 ของปี 2020 คือ 20.2 คุณสมบัติใหม่คือ OpenGL 3.0 สำหรับ Zink LLVMpipe จะรองรับ OpenGL 4.3+ (4.5+ ในเวอร์ชัน 20.3) ARM Panfrost ได้รับการปรับปรุงเป็นส่วนใหญ่ด้วยโมดูลจำนวนมาก หน่วยความจำเสมือนที่ใช้ร่วมกันได้สำหรับ OpenCL ใน Nouveau ที่ใช้ Pascal และเวอร์ชันที่สูงกว่า[ 158 ] [ 159 ] [ 160 ]

เวอร์ชันที่ 4 ของปี 2020 คือ 20.3 v3d และ v3dv เป็นไดรเวอร์ใหม่สำหรับ OpenGL และ Vulkan 1.0 กับฮาร์ดแวร์ Broadcom เช่น Raspberry Pi 4 OpenCL 1.2 ได้รับการสนับสนุนอย่างเต็มที่ในโมดูล clover Zink รองรับ OpenGL 3.3+ ไดรเวอร์เสมือน LLVMpipe รองรับ OpenGL 4.5+ แล้ว และกำลังพิจารณา 4.6 Lavapipe (เดิมชื่อ Vallium [ 161 ] ) ซึ่งเป็น Vulkan Tree ของ LLVMpipe ได้ถูกรวมเข้าด้วยกัน[ 162 ] [ 15 ] [ 163 ] [ 164 ] [ 165 ]

ใน Mesa 21.0 d3d12 จะถูกรวมเข้ากับ OpenGL 3.0 ถึง 3.3 Microsoft และ Collabora พัฒนาการจำลอง d3d12 ใหม่ใน WSL2 สำหรับ Windows 10 ด้วย Direct 3D 12 OpenCL 1.2 ก็เป็นเป้าหมายใน d3d12 เช่นกัน การเร่งความเร็ว 2 ถึง 5 เท่าทำได้ใน Benchmark SPECviewperf ด้วยโค้ด OpenGL ที่ได้รับการปรับปรุง[ 94 ] [ 166 ] [ 167 ] [ 168 ]คุณสมบัติมากมายใน Mesa 21.0 ช่วยปรับปรุงประสิทธิภาพ[ 169 ]เวอร์ชันใหม่ 21.0.0 เปิดให้ใช้งานแล้วตั้งแต่วันที่ 11 มีนาคม 2021

Mesa 21.1 เป็นเวอร์ชันที่สองของปี 2021 [ 170 ] OpenGL 4.6+ และ OpenGL ES 3.1+ พร้อมใช้งานสำหรับ Zink แล้ว ไดรเวอร์ AMD 600g สามารถเปลี่ยนเป็น NIR พร้อมความเป็นไปได้มากขึ้นสำหรับกราฟิกการ์ด Radeon HD 5000 และ 6000 รุ่นเก่า[ 171 ] Qualcomm Turnip รองรับ Vulkan 1.1+ และซอฟต์แวร์จำลอง Lavapipe Vulkan 1.1+ ไดรเวอร์ GPU Google VirtIO Venus พร้อม Vulkan 1.2+ ถูกรวมเข้าในสถานะทดลองด้วยประสิทธิภาพต่ำใน Mesa main tree [ 60 ]

Mesa 21.2 เป็นเวอร์ชันที่สามของปี 2021 Google Virtual Vulkan IO Driver Venus จะถูกนำเสนออย่างเป็นทางการพร้อมการสนับสนุน Vulkan 1.2+ อย่างเต็มรูปแบบ (mesamatrix เพิ่มเติม) ARM Panfrost: รองรับ OpenGL ES 3.1+ และ panVK เป็นไดรเวอร์ Vulkan ใหม่ การสนับสนุนเบื้องต้นเริ่มต้นสำหรับ ARM Apple M1 ด้วยไดรเวอร์ Asahi ใหม่ เวอร์ชัน 21.2 พร้อมใช้งานตั้งแต่วันที่ 4 สิงหาคม 2021 [ 172 ]

การเปลี่ยนแปลงทางสถาปัตยกรรมที่เสนอเกี่ยวข้องกับการย้ายไดรเวอร์รุ่นเก่าไปยังโครงสร้าง "คลาสสิก" แบบสแตนด์อโลน เพื่อปรับปรุงการบำรุงรักษาและการแก้ไขข้อบกพร่องสำหรับ เฟรมเวิร์ก Gallium3D รุ่นใหม่ ความซับซ้อนที่สำคัญยังคงอยู่ที่ ไดรเวอร์ Intel i965ซึ่งให้การสนับสนุนที่สำคัญสำหรับฮาร์ดแวร์รุ่นเก่าที่เป็นที่นิยม รวมถึง สถาปัตยกรรมไมโคร Intel Haswellและรักษาความเข้ากันได้กับWindows 10 [ 173 ] ไดรเวอร์ Gallium3D ใหม่ Crocus สำหรับกราฟิก Intel Gen 4 ไปยัง Haswell กำลังอยู่ในระหว่างการพัฒนาเพื่อทำให้พื้นที่ Gallium3D สมบูรณ์ โดยอาจมีการแยกออกในปลายปี 2021 Crocus มีให้เลือกใช้ในเวอร์ชัน 21.2 [ 174 ]สาขา Amber สำหรับไดรเวอร์รุ่นเก่าที่ไม่มีฟังก์ชัน Gallium 3D เช่น Radeon R200, Intel i915 และ 965 ที่มีเวอร์ชันปัจจุบัน 21.3.9 [ 175 ]

ในเวอร์ชัน 22.0 ไดรเวอร์แบบคลาสสิกถูกยกเลิกแล้ว Vulkan 1.3 พร้อมใช้งานสำหรับ Intel Anvil และ AMD RADV [ 176 ]

Microsoft เปิดตัวไดรเวอร์ใหม่ "Dozen" สำหรับ WSL 2 ในขั้นตอนการพัฒนาขั้นต้นในรูปแบบ Vulkan บน d3d12 ใน Mesa 22.1 [ 177 ]

RustiCL พร้อมใช้งานที่เวอร์ชัน 22.3 พร้อมการปฏิบัติตามมาตรฐาน OpenCL 3.0 อย่างเป็นทางการสำหรับ Intel XE Graphics ประสิทธิภาพเทียบเท่าหรือดีกว่า AMD ROCm เมื่อใช้การ์ด AMD 6700 XT [ 178 ] [ 179 ]

เป้าหมายการพัฒนาหลักของ Mesa 23.0 คือการติดตามรังสีสำหรับ Vulkan [ 180 ] [ 181 ]

Microsoft พัฒนาไดรเวอร์ Dozen สำหรับ Vulkan ใน WSL Vulkan 1.0+ ที่มี 80% ของ 1.1 และ 1.2 จะพร้อมใช้งานใน Mesa 23.2 หลังจากเลื่อนไปเป็น 23.1 (ดู mesamatrix) [ 182 ] RustiCL สำหรับฮาร์ดแวร์ AMD พร้อมใช้งานใน 23.1 [ 128 ]

VirGL สำหรับเครื่องเสมือนมีการอัปเกรดจาก Mesa 23.2 เป็น OpenGL 4.6 [ 183 ] Apple Asahi สำหรับเครื่อง Apple Arm มีการอัปเกรดจาก OpenGL 2.1 เป็น 3.1 โดยมีฟีเจอร์ 90% ของ OpenGL 3.2 และ 3.3 และ OpenGL ES 2.0 เป็น 3.0 [ 184 ]

Microsoft รองรับ OpenGL 4.6+ ใน WSL ใน Mesa 24.0 (ใน Mesa 23.3: 4.3+) พร้อม ไดรเวอร์การแปล DirectX 12จำนวนมาก[ 185 ]

ดูเพิ่มเติม

  • เว็บไซต์อย่างเป็นทางการแก้ไขข้อมูลนี้ได้ที่วิกิดาต้า
  • เอจ, เจค (ตุลาคม 2013). "ประวัติศาสตร์ของเมซา" .
  • freedesktop.org - Gallium3Dบทความเกี่ยวกับสถานะปัจจุบันของ Gallium3D
  • Fonseca, José (เมษายน 2551) บทนำสู่ Gallium3D
  • รูซิน, แซ็ค (21 กันยายน 2550), Gallium3D
  • คอร์เบ็ต, โจนาธาน (พฤศจิกายน 2550), การจัดการหน่วยความจำสำหรับหน่วยประมวลผลกราฟิก
  • การถอดรหัสวิดีโอแบบเร่งความเร็วด้วย GPU ทั่วไปโครงการ Google Summer of Code 2008 โดยใช้ Gallium เก็บถาวรจากต้นฉบับเมื่อวันที่ 31 กรกฎาคม 2551
  • รูซิน, แซ็ค (2008), Gallium3D: กราฟิกที่ถูกต้อง (PDF) (งานนำเสนอ), อะคาเดมี
  • Rusin, Zack (2008), Gallium3D: Graphics Done Right (การนำเสนอ), Akademy , เก็บถาวรจากต้นฉบับ(วิดีโอ)เมื่อวันที่ 1 มกราคม 2011
  • ความคืบหน้าเกี่ยวกับการพอร์ต Gallium3D ไปยัง AROS และ Haiku (PDF) , FOSDEM 2010, 7 กุมภาพันธ์ 2010
ชั้นต่างๆ ภายในระบบลินุกซ์ แสดงให้เห็นถึงการแบ่งแยกระหว่างพื้นที่ผู้ใช้และพื้นที่เคอร์เนล ด้วย
โหมดผู้ใช้ แอปพลิเคชันของผู้ใช้bash , LibreOffice , GIMP , Blender , 0 AD , Mozilla Firefox , ...
ส่วนประกอบของระบบเริ่มต้น daemon : OpenRC , runit , systemd , ...โปรแกรมบริการระบบ : polkitd , smbd , sshd , udevd , ...ระบบจัดการหน้าต่าง : X11 , Wayland , SurfaceFlinger (Android)กราฟิก : Mesa , AMD Software , ...ไลบรารีอื่นๆ: GTK , Qt , EFL , SDL , SFML , FLTK , GNUstep , ...
ไลบรารีมาตรฐาน Cfopenexecv... ( มากถึง 2000 ซับรูทีน ) glibc มีเป้าหมายที่จะทำงานเร็วmuslมีเป้าหมายที่จะมีขนาดเล็กuClibcมุ่งเป้าไปที่ระบบฝังตัว bionicถูกเขียนขึ้นสำหรับAndroidเป็นต้น ทั้งหมดนี้มีเป้าหมายที่จะmallocเข้ากันได้กับ POSIX / SUSmemcpylocaltimepthread_create
โหมดเคอร์เนล เคอร์เนลลินุกซ์stat, splice, dup, read, open, ioctl, write, mmap, , close, exitฯลฯ (ประมาณ 380 การเรียกใช้ระบบ) อินเทอร์เฟซการเรียกใช้ระบบ (SCI) ของเคอร์เนล Linux มีเป้าหมายที่จะเข้ากันได้ กับ POSIX / SUS [ 1 ]
ระบบย่อย การจัดตารางเวลาของกระบวนการระบบย่อย IPCระบบย่อย การจัดการหน่วยความจำระบบย่อย ไฟล์เสมือนระบบย่อยเครือข่าย
ส่วนประกอบอื่นๆ: ALSA , DRI , evdev , klibc , LVM , device mapper , Linux Network Scheduler , Netfilter โมดูลความปลอดภัยของ Linux : SELinux , TOMOYO , AppArmor , Smack
ฮาร์ดแวร์ ( ซีพียูหน่วยความจำหลักอุปกรณ์จัดเก็บข้อมูลฯลฯ)
  1. ^ "คู่มือผู้ดูแลระบบ README" . ที่เก็บ Git ของ Kernel.org .
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Mesa_(computer_graphics)&oldid=1359985091#Gallium3D "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ เมซา (กราฟิกคอมพิวเตอร์)

Mesa หรือที่เรียกว่า Mesa3D และ The Mesa 3D Graphics Library เป็นการ ใช้งาน แบบโอเพนซอร์ส ของ OpenGL , OpenGL ES , Vulkan และ ข้อกำหนด API กราฟิก อื่นๆ รวมถึง OpenCL...

ภาพรวม

เกมวิดีโอ ใช้การประมวลผลการเรนเดอร์ผ่าน GPU โดยใช้ OpenGL แบบเรียลไทม์ เชเดอร์ถูกเขียนด้วย ภาษา OpenGL Shading Language หรือ SPIR-V และคอมไพล์บน CPU จากนั้นโปรแกรมที่คอมไพล์แล้วจะถูกประมวลผลบน GPU ภาพประกอบแสดง ส่วนประกอบกราฟิกของ Linux : DRM & libDRM, Mesa...

การใช้งาน API การเรนเดอร์

Mesa เป็นที่รู้จักในฐานะที่เป็นแหล่งรวมการใช้งาน API กราฟิกในอดีต API หลักที่ Mesa นำมาใช้งานคือ OpenGL พร้อมกับข้อกำหนดอื่นๆ ที่เกี่ยวข้องกับ Khronos Group (เช่น OpenVG , OpenGL ES หรือ EGL ในปัจจุบัน ) แต่ Mesa สามารถใช้งาน API อื่นๆ ได้...

การใช้งาน API เร่งความเร็ววิดีโอ

มีวิธีการคำนวณที่จำเป็นสำหรับการเข้ารหัสและถอดรหัสสตรีมวิดีโออยู่สามวิธีด้วยกัน: