مدير العرض المباشر
مدير العرض المباشر ( DRM ) هو نظام فرعي من نواة لينكس مسؤول عن التفاعل مع وحدات معالجة الرسومات (GPUs) في بطاقات الفيديو الحديثة . يوفر DRM واجهة برمجة تطبيقات (API) يمكن لبرامج مساحة المستخدم استخدامها لإرسال الأوامر والبيانات إلى وحدة معالجة الرسومات وتنفيذ عمليات مثل ضبط إعدادات وضع العرض. طُوّر DRM في البداية كمكون في مساحة النواة ضمن بنية العرض المباشر لخادم X [ 1 ]، ولكن منذ ذلك الحين، استُخدم من قِبل بدائل أخرى لحزمة الرسومات مثل Wayland، وتطبيقات ومكتبات مستقلة مثل SDL2 و Kodi .
يمكن لبرامج مساحة المستخدم استخدام واجهة برمجة تطبيقات إدارة الحقوق الرقمية (DRM API) لتوجيه وحدة معالجة الرسومات (GPU) للقيام بعرض ثلاثي الأبعاد متسارع بواسطة الأجهزة وفك تشفير الفيديو ، بالإضافة إلى الحوسبة العامة لوحدة معالجة الرسومات (GPGPU) .
ملخص
كانت نواة لينكس تحتوي بالفعل على واجهة برمجة تطبيقات تُسمى fbdev ، تُستخدم لإدارة إطار العرض الخاص بمحول الرسومات ، [ 2 ] لكنها لم تكن قادرة على تلبية احتياجات أجهزة الفيديو الحديثة المُسرّعة ثلاثية الأبعاد والقائمة على وحدة معالجة الرسومات . تتطلب هذه الأجهزة عادةً إعداد وإدارة قائمة أوامر في ذاكرتها الخاصة لإرسال الأوامر إلى وحدة معالجة الرسومات، كما تتطلب إدارة المخازن المؤقتة والمساحة الحرة داخل تلك الذاكرة. [ 3 ] في البداية، كانت برامج مساحة المستخدم (مثل خادم X ) تُدير هذه الموارد مباشرةً، لكنها كانت تتصرف عادةً كما لو كانت الوحيدة التي تملك حق الوصول إليها. عندما حاول برنامجان أو أكثر التحكم في نفس الجهاز في الوقت نفسه، وقام كل منهما بتعيين موارده بطريقته الخاصة، انتهى الأمر في أغلب الأحيان بكارثة. [ 3 ]
تم إنشاء مدير العرض المباشر (DRM) لتمكين برامج متعددة من استخدام موارد أجهزة الفيديو بشكل تعاوني. [ 4 ] يحصل مدير العرض المباشر على حق الوصول الحصري إلى وحدة معالجة الرسومات (GPU) وهو مسؤول عن تهيئة وصيانة قائمة الأوامر والذاكرة وأي موارد أخرى للأجهزة. ترسل البرامج الراغبة في استخدام وحدة معالجة الرسومات طلبات إلى مدير العرض المباشر، الذي يعمل كوسيط ويحرص على تجنب أي تعارضات محتملة.
توسّع نطاق إدارة الحقوق الرقمية (DRM) على مرّ السنين ليشمل وظائف أكثر كانت تُدار سابقًا بواسطة برامج مساحة المستخدم، مثل إدارة إطار العرض وتحديد الوضع ، وكائنات مشاركة الذاكرة، ومزامنة الذاكرة. [ 5 ] [ 6 ] وقد أُطلقت أسماء محددة على بعض هذه التوسعات، مثل مدير تنفيذ الرسومات (GEM) أو ضبط وضع النواة (KMS)، ولا تزال هذه المصطلحات هي السائدة عند الإشارة تحديدًا إلى الوظائف التي توفرها. لكنها في الواقع أجزاء من نظام إدارة الحقوق الرقمية (DRM) الفرعي الكامل في النواة.
أدى التوجه نحو تضمين وحدتي معالجة رسومية (GPU) في الحاسوب - وحدة معالجة رسومية منفصلة وأخرى مدمجة - إلى ظهور مشكلات جديدة، مثل تبديل وحدات المعالجة الرسومية، والتي كان لا بد من حلها أيضًا على مستوى إدارة الحقوق الرقمية (DRM). ولمواكبة تقنية Nvidia Optimus ، زُوِّدت إدارة الحقوق الرقمية (DRM) بقدرات تفريغ العمليات إلى وحدة المعالجة الرسومية، والتي تُسمى PRIME. [ 7 ]
هندسة البرمجيات

يقع مدير العرض المباشر (DRM) في مساحة النواة ، لذا يتعين على برامج مساحة المستخدم استخدام استدعاءات نظام النواة لطلب خدماته. مع ذلك، لا يُعرّف DRM استدعاءات نظام مخصصة خاصة به، بل يتبع مبدأ يونكس القائل بأن " كل شيء عبارة عن ملف " لعرض وحدات معالجة الرسومات (GPUs) من خلال مساحة أسماء نظام الملفات، باستخدام ملفات الأجهزة ضمن /devالتسلسل الهرمي. يُشار إلى كل وحدة معالجة رسومات يكتشفها DRM باسم جهاز DRM ، ويتم إنشاء ملف جهاز (حيث X رقم تسلسلي) للتفاعل معه. [ 8 ] [ 9 ] يجب على برامج مساحة المستخدم التي ترغب في التواصل مع وحدة معالجة الرسومات فتح هذا الملف واستخدام استدعاءات ioctl للتواصل مع DRM. تتوافق استدعاءات ioctl المختلفة مع وظائف مختلفة من واجهة برمجة تطبيقات DRM ./dev/dri/cardX
تم إنشاء مكتبة تُسمى libdrm لتسهيل ربط برامج مساحة المستخدم بنظام إدارة الحقوق الرقمية (DRM). هذه المكتبة عبارة عن غلاف يوفر دالة مكتوبة بلغة C لكل عملية إدخال/إخراج (ioctl) من واجهة برمجة تطبيقات DRM، بالإضافة إلى الثوابت والهياكل وعناصر مساعدة أخرى. [ 10 ] لا يقتصر استخدام libdrm على تجنب كشف واجهة النواة مباشرةً للتطبيقات فحسب، بل يوفر أيضًا المزايا المعتادة لإعادة استخدام ومشاركة التعليمات البرمجية بين البرامج.

يتكون نظام إدارة الحقوق الرقمية (DRM) من جزأين: "نواة DRM" عامة، و"برنامج تشغيل DRM" خاص بكل نوع من أنواع الأجهزة المدعومة. [ 11 ] توفر نواة DRM الإطار الأساسي الذي يمكن لبرامج تشغيل DRM المختلفة التسجيل فيه، كما توفر لمساحة المستخدم مجموعة أساسية من أوامر الإدخال/الإخراج (ioctls) ذات وظائف مشتركة ومستقلة عن نوع الجهاز. [ 8 ] من ناحية أخرى، يُنفذ برنامج تشغيل DRM الجزء الخاص بالأجهزة من واجهة برمجة التطبيقات (API)، والمُخصص لنوع وحدة معالجة الرسومات (GPU) التي يدعمها؛ إذ ينبغي أن يوفر تنفيذ أوامر الإدخال/الإخراج المتبقية التي لا تغطيها نواة DRM، ولكنه قد يُوسع واجهة برمجة التطبيقات أيضًا، مُقدمًا أوامر إدخال/إخراج إضافية بوظائف إضافية متاحة فقط على هذا النوع من الأجهزة. [ 8 ] عندما يُوفر برنامج تشغيل DRM مُحدد واجهة برمجة تطبيقات مُحسّنة، يتم أيضًا توسيع مكتبة libdrm الخاصة بمساحة المستخدم بواسطة مكتبة إضافية libdrm- driver ، والتي يمكن لمساحة المستخدم استخدامها للتفاعل مع أوامر الإدخال/الإخراج الإضافية.
واجهة برمجة التطبيقات (API)
يُصدّر نظام إدارة الحقوق الرقمية (DRM) الأساسي عدة واجهات لتطبيقات مساحة المستخدم، والتي تُستخدم عادةً من خلال libdrmدوال تغليف مُخصصة. بالإضافة إلى ذلك، تُصدّر برامج التشغيل واجهات خاصة بالجهاز لاستخدامها من قِبل برامج تشغيل مساحة المستخدم والتطبيقات المُدركة للجهاز عبر أوامر ioctl وملفات sysfs . تشمل الواجهات الخارجية: تعيين الذاكرة، وإدارة السياق، وعمليات الوصول المباشر إلى الذاكرة (DMA) ، وإدارة بروتوكول AGP ، والتحكم في فاصل vblank ، وإدارة الحواجز، وإدارة الذاكرة، وإدارة الإخراج.
DRM-Master و DRM-Auth
توجد عدة عمليات (ioctls) في واجهة برمجة تطبيقات إدارة الحقوق الرقمية (DRM API) يجب تقييد استخدامها، إما لأغراض أمنية أو لمعالجة مشكلات التزامن، بحيث لا يُسمح باستخدامها إلا من قِبل عملية واحدة في مساحة المستخدم لكل جهاز. [ 8 ] ولتطبيق هذا التقييد، تقصر إدارة الحقوق الرقمية استدعاء هذه العمليات (ioctls) على العملية التي تُعتبر "الرئيسية" لجهاز إدارة الحقوق الرقمية، والتي تُسمى عادةً DRM-Master . سيتم تحديد مُعرّف الملف الخاص بعملية واحدة فقط من بين جميع العمليات التي لديها عقدة الجهاز مفتوحة على أنه رئيسي، وتحديدًا العملية الأولى التي تستدعي عملية SET_MASTER ioctl. أي محاولة لاستخدام إحدى هذه العمليات المقيدة دون أن تكون العملية DRM-Master ستؤدي إلى ظهور خطأ. يمكن للعملية أيضًا التخلي عن دورها الرئيسي - والسماح لعملية أخرى باكتسابه - عن طريق استدعاء عملية DROP_MASTER ioctl./dev/dri/cardX
خادم X - أو أي خادم عرض آخر - هو عادةً العملية التي تحصل على حالة DRM-Master في كل جهاز DRM يديره، وعادةً ما يكون ذلك عندما يفتح عقدة الجهاز المقابلة أثناء بدء تشغيله، ويحتفظ بهذه الامتيازات طوال جلسة الرسومات حتى ينتهي أو يتوقف.
بالنسبة لعمليات مساحة المستخدم المتبقية، توجد طريقة أخرى للحصول على امتياز استدعاء بعض العمليات المقيدة على جهاز إدارة الحقوق الرقمية (DRM) تُسمى DRM-Auth . وهي في الأساس طريقة للتحقق من هوية المستخدم أمام جهاز إدارة الحقوق الرقمية، لإثبات أن العملية حاصلة على موافقة مدير إدارة الحقوق الرقمية (DRM-Master) للحصول على هذه الامتيازات. يتكون الإجراء من: [ 12 ] : 13
- يحصل العميل على رمز مميز فريد - عدد صحيح 32 بت - من جهاز إدارة الحقوق الرقمية باستخدام GET_MAGIC ioctl ويمرره إلى عملية DRM-Master بأي وسيلة (عادةً نوع من أنواع الاتصال بين العمليات ؛ على سبيل المثال، في DRI2 يوجد طلب DRI2Authenticate يمكن لأي عميل X إرساله إلى خادم X. [ 13 ] )
- تقوم عملية DRM-Master بدورها بإعادة إرسال الرمز المميز إلى جهاز DRM عن طريق استدعاء AUTH_MAGIC ioctl.
- يمنح الجهاز حقوقًا خاصة لمقبض ملف العملية الذي يتطابق رمز المصادقة الخاص به مع الرمز المميز المستلم من DRM-Master.
مدير تنفيذ الرسومات
نظراً لزيادة حجم ذاكرة الفيديو وتزايد تعقيد واجهات برمجة تطبيقات الرسومات مثل OpenGL ، أصبحت استراتيجية إعادة تهيئة حالة بطاقة الرسومات عند كل تبديل سياق مكلفة للغاية من حيث الأداء. كما احتاجت أنظمة لينكس المكتبية الحديثة إلى طريقة مثلى لمشاركة المخازن المؤقتة خارج الشاشة مع مدير التركيب . أدت هذه المتطلبات إلى تطوير أساليب جديدة لإدارة مخازن الرسومات المؤقتة داخل النواة. وبرز مدير تنفيذ الرسومات (GEM) كأحد هذه الأساليب. [ 6 ]
توفر GEM واجهة برمجة تطبيقات (API) تتضمن أدوات إدارة ذاكرة صريحة . [ 6 ] من خلال GEM، يستطيع برنامج المستخدم إنشاء كائنات الذاكرة الموجودة في ذاكرة الفيديو الخاصة بوحدة معالجة الرسومات (GPU) والتعامل معها وحذفها. تُسمى هذه الكائنات "كائنات GEM"، [ 14 ] وهي ثابتة من وجهة نظر برنامج المستخدم، ولا تحتاج إلى إعادة تحميلها في كل مرة يستعيد فيها البرنامج التحكم في وحدة معالجة الرسومات. عندما يحتاج برنامج المستخدم إلى جزء من ذاكرة الفيديو (لتخزين إطار عرض أو نسيج أو أي بيانات أخرى تتطلبها وحدة معالجة الرسومات [ 15 ] )، فإنه يطلب تخصيصها من برنامج تشغيل إدارة الذاكرة الديناميكية (DRM) باستخدام واجهة برمجة تطبيقات GEM. يتتبع برنامج تشغيل إدارة الذاكرة الديناميكية ذاكرة الفيديو المستخدمة، ويستطيع تلبية الطلب إذا كانت هناك ذاكرة متاحة، ويعيد "مؤشرًا" إلى مساحة المستخدم للرجوع إلى الذاكرة المخصصة في العمليات اللاحقة. [ 6 ] [ 14 ] كما توفر واجهة برمجة تطبيقات GEM عمليات لملء المخزن المؤقت وتحريره عند عدم الحاجة إليه. يتم استعادة الذاكرة من معالجات GEM غير المحررة عندما تغلق عملية مساحة المستخدم واصف ملف جهاز DRM - سواء كان ذلك عن قصد أو بسبب إنهائها. [ 16 ]
يسمح GEM أيضًا لعمليتين أو أكثر في مساحة المستخدم، تستخدمان نفس جهاز إدارة الحقوق الرقمية (وبالتالي نفس برنامج تشغيل إدارة الحقوق الرقمية)، بمشاركة كائن GEM. [ 16 ] مقابض GEM هي أعداد صحيحة محلية 32 بت، فريدة لكل عملية، ولكنها قابلة للتكرار في عمليات أخرى، لذا فهي غير مناسبة للمشاركة. المطلوب هو مساحة أسماء عامة، ويوفرها GEM من خلال استخدام مقابض عامة تُسمى أسماء GEM . يشير اسم GEM إلى كائن GEM واحد فقط، تم إنشاؤه داخل نفس جهاز إدارة الحقوق الرقمية بواسطة نفس برنامج تشغيل إدارة الحقوق الرقمية، باستخدام عدد صحيح فريد 32 بت . يوفر GEM عملية flink للحصول على اسم GEM من مقبض GEM. [ 16 ] [ 12 ] : 16 يمكن للعملية بعد ذلك تمرير اسم GEM هذا (عدد صحيح 32 بت) إلى عملية أخرى باستخدام أي آلية اتصال بين العمليات متاحة. [ 12 ] : 15 يمكن للعملية المتلقية استخدام اسم GEM للحصول على مقبض GEM محلي يشير إلى كائن GEM الأصلي.
لسوء الحظ، يُعدّ استخدام أسماء GEM لمشاركة المخازن المؤقتة غير آمن. [ 12 ] : 16 [ 17 ] [ 18 ] إذ يمكن لعملية خبيثة تابعة لجهة خارجية، تصل إلى جهاز إدارة الحقوق الرقمية نفسه، أن تحاول تخمين اسم GEM لمخزن مؤقت مشترك بين عمليتين أخريين، وذلك ببساطة عن طريق فحص أعداد صحيحة 32 بت. [ 19 ] [ 18 ] وبمجرد العثور على اسم GEM، يُمكن الوصول إلى محتوياته وتعديلها، مما يُنتهك سرية وسلامة معلومات المخزن المؤقت. وقد تم التغلب على هذا العيب لاحقًا من خلال إدخال دعم DMA-BUF في إدارة الحقوق الرقمية، حيث يُمثل DMA-BUF المخازن المؤقتة في مساحة المستخدم كمعرّفات ملفات، والتي يُمكن مشاركتها بشكل آمن .
من المهام المهمة الأخرى لأي نظام لإدارة ذاكرة الفيديو، إلى جانب إدارة مساحة ذاكرة الفيديو، هي مزامنة الذاكرة بين وحدة معالجة الرسومات (GPU) ووحدة المعالجة المركزية (CPU). تتسم بنى الذاكرة الحالية بتعقيدها الشديد، وعادةً ما تتضمن مستويات متعددة من ذاكرة التخزين المؤقت لذاكرة النظام، وأحيانًا لذاكرة الفيديو أيضًا. لذلك، ينبغي لأنظمة إدارة ذاكرة الفيديو أيضًا معالجة اتساق ذاكرة التخزين المؤقت لضمان اتساق البيانات المشتركة بين وحدة المعالجة المركزية ووحدة معالجة الرسومات. [ 20 ] وهذا يعني أن تفاصيل إدارة ذاكرة الفيديو الداخلية غالبًا ما تعتمد بشكل كبير على تفاصيل عتاد وحدة معالجة الرسومات وبنية الذاكرة، وبالتالي فهي خاصة ببرنامج التشغيل. [ 21 ]
طُوِّرت GEM في البداية من قِبَل مهندسي إنتل لتوفير مدير ذاكرة فيديو لبرنامج تشغيل i915 الخاص بها. [ 20 ] تُعدّ عائلة Intel GMA 9xx وحدات معالجة رسومية مدمجة ذات بنية ذاكرة موحدة (UMA)، حيث تتشارك وحدة المعالجة الرسومية ووحدة المعالجة المركزية الذاكرة الفعلية، ولا توجد ذاكرة وصول عشوائي مخصصة للفيديو (VRAM). [ 22 ] تُعرّف GEM "نطاقات ذاكرة" لمزامنة الذاكرة، وعلى الرغم من أن نطاقات الذاكرة هذه مستقلة عن وحدة المعالجة الرسومية، [ 6 ] إلا أنها مصممة خصيصًا مع مراعاة بنية ذاكرة UMA، مما يجعلها أقل ملاءمة لبنى الذاكرة الأخرى مثل تلك التي تحتوي على ذاكرة وصول عشوائي منفصلة للفيديو. لهذا السبب، قررت برامج تشغيل إدارة الحقوق الرقمية الأخرى إتاحة واجهة برمجة تطبيقات GEM لبرامج مساحة المستخدم، ولكنها قامت داخليًا بتنفيذ مدير ذاكرة مختلف أكثر ملاءمة لأجهزتها وبنية ذاكرتها الخاصة. [ 23 ]
توفر واجهة برمجة تطبيقات GEM أيضًا أوامر ioctl للتحكم في تدفق التنفيذ (مخازن الأوامر)، ولكنها خاصة بمعالجات Intel، وتُستخدم مع معالجات Intel i915 وما بعدها. [ 6 ] لم يحاول أي برنامج تشغيل DRM آخر تنفيذ أي جزء من واجهة برمجة تطبيقات GEM باستثناء أوامر ioctl الخاصة بإدارة الذاكرة.
خرائط جداول الترجمة
تُعرف خرائط جداول الترجمة (TTM) باسم مدير الذاكرة العام لوحدات معالجة الرسومات (GPUs)، والذي طُوّر قبل GEM. [ 5 ] [ 14 ] صُمّمت خصيصًا لإدارة أنواع الذاكرة المختلفة التي قد تصل إليها وحدة معالجة الرسومات، بما في ذلك ذاكرة الفيديو المخصصة (المثبتة عادةً في بطاقة الفيديو) وذاكرة النظام التي يمكن الوصول إليها من خلال وحدة إدارة ذاكرة الإدخال/الإخراج المسماة جدول إعادة تعيين عناوين الرسومات (GART). [ 5 ] يجب أن تتعامل TTM أيضًا مع أجزاء ذاكرة الفيديو التي لا يمكن لوحدة المعالجة المركزية (CPU) الوصول إليها مباشرةً، وأن تفعل ذلك بأفضل أداء ممكن، نظرًا لأن تطبيقات الرسومات في مساحة المستخدم تعمل عادةً مع كميات كبيرة من بيانات الفيديو. ومن الأمور المهمة الأخرى الحفاظ على التناسق بين مختلف أنواع الذاكرة وذاكرات التخزين المؤقت.
المفهوم الأساسي لتقنية إدارة الذاكرة المؤقتة (TTM) هو "كائنات المخزن المؤقت"، وهي مناطق في ذاكرة الفيديو يجب أن تكون قابلة للعنونة بواسطة وحدة معالجة الرسومات (GPU) في مرحلة ما. [ 5 ] عندما يحتاج تطبيق رسومات في مساحة المستخدم إلى الوصول إلى كائن مخزن مؤقت معين (عادةً لملئه بالمحتوى)، قد تتطلب تقنية إدارة الذاكرة المؤقتة (TTM) نقله إلى نوع من الذاكرة يمكن لوحدة المعالجة المركزية (CPU) الوصول إليه. قد تحدث عمليات نقل إضافية - أو عمليات تعيين GART - عندما تحتاج وحدة معالجة الرسومات (GPU) إلى الوصول إلى كائن مخزن مؤقت ولكنه ليس موجودًا في مساحة عناوين وحدة معالجة الرسومات (GPU) بعد. يجب أن تعالج كل عملية من عمليات النقل هذه أي مشكلات متعلقة بالبيانات وتناسق ذاكرة التخزين المؤقت. [ 5 ]
من المفاهيم المهمة الأخرى في إدارة الوقت (TTM) مفهوم " الحواجز" . تُعدّ الحواجز آليةً أساسيةً لإدارة التزامن بين وحدة المعالجة المركزية (CPU) ووحدة معالجة الرسومات (GPU). [ 24 ] يتتبع الحاجز متى يتوقف استخدام كائن المخزن المؤقت بواسطة وحدة معالجة الرسومات، وذلك عادةً لإعلام أي عملية في مساحة المستخدم لديها حق الوصول إليه. [ 5 ]
إن محاولة TTM إدارة جميع أنواع بنى الذاكرة، بما في ذلك تلك المزودة بذاكرة فيديو مخصصة (VRAM) وتلك غير المزودة بها، بطريقة مناسبة، وتوفير كل ميزة ممكنة في مدير الذاكرة لاستخدامها مع أي نوع من الأجهزة، أدت إلى حل معقد للغاية بواجهة برمجة تطبيقات (API) أكبر بكثير من اللازم. [ 24 ] [ 14 ] اعتقد بعض مطوري إدارة الحقوق الرقمية (DRM) أنها لن تتناسب جيدًا مع أي برنامج تشغيل محدد، وخاصة واجهة برمجة التطبيقات. عندما ظهر GEM كمدير ذاكرة أبسط، تم تفضيل واجهة برمجة تطبيقاته على واجهة TTM. لكن بعض مطوري برامج التشغيل رأوا أن النهج الذي اتبعته TTM كان أكثر ملاءمة لبطاقات الفيديو المنفصلة المزودة بذاكرة فيديو مخصصة ووحدات إدارة ذاكرة الإدخال/الإخراج (IOMMUs)، لذلك قرروا استخدام TTM داخليًا، مع عرض كائنات المخزن المؤقت الخاصة بهم ككائنات GEM، وبالتالي دعم واجهة برمجة تطبيقات GEM. [ 23 ] من أمثلة برامج التشغيل الحالية التي تستخدم TTM كمدير ذاكرة داخلي ولكنها توفر واجهة برمجة تطبيقات GEM، برنامج تشغيل Radeon لبطاقات فيديو AMD وبرنامج تشغيل Nouveau لبطاقات فيديو NVIDIA.
مشاركة مخزن DMA المؤقت و PRIME
واجهة برمجة تطبيقات مشاركة مخزن DMA المؤقت (DMA-BUF) هي واجهة برمجة تطبيقات داخلية لنواة لينكس، مصممة لتوفير آلية عامة لمشاركة مخازن DMA المؤقتة بين أجهزة متعددة، والتي قد تُدار بواسطة أنواع مختلفة من برامج تشغيل الأجهزة. [ 25 ] [ 26 ] على سبيل المثال، يمكن لجهاز Video4Linux وجهاز محول رسومات مشاركة المخازن المؤقتة عبر DMA-BUF لتحقيق عدم نسخ بيانات دفق الفيديو الذي ينتجه الأول ويستهلكه الثاني. يمكن لأي برنامج تشغيل جهاز في لينكس تنفيذ واجهة برمجة التطبيقات هذه كمصدر، أو كمستخدم (مستهلك)، أو كليهما.
استُغلت هذه الخاصية لأول مرة في DRM لتطبيق PRIME، وهو حلٌّ لتفريغ معالجة الرسومات باستخدام DMA-BUF لمشاركة مخازن الإطارات الناتجة بين برامج تشغيل DRM لوحدة معالجة الرسومات المنفصلة والمدمجة. [ 27 ] : 13 من أهم ميزات DMA-BUF تقديم مخزن مؤقت مشترك لمساحة المستخدم كمعرّف ملف . [ 14 ] [ 12 ] : 17 ولتطوير PRIME، أُضيف أمران جديدان ioctl إلى واجهة برمجة تطبيقات DRM، أحدهما لتحويل مُعرِّف GEM محلي إلى معرّف ملف DMA-BUF، والآخر للعملية المعاكسة تمامًا.
أُعيد استخدام هذين الأمرين الجديدين ioctl لاحقًا كوسيلة لمعالجة عدم الأمان المتأصل في مشاركة مخزن GEM المؤقت. [ 12 ] : 17 على عكس أسماء GEM، لا يمكن تخمين مُعرّفات الملفات (فهي ليست مساحة اسم عامة)، وتوفر أنظمة تشغيل Unix طريقة آمنة لتمريرها عبر مقبس نطاق Unix باستخدام دلالات SCM_RIGHTS. [ 14 ] [ 28 ] : 11 يمكن لعملية ترغب في مشاركة كائن GEM مع عملية أخرى تحويل مُعرّف GEM المحلي الخاص بها إلى مُعرّف ملف DMA-BUF وتمريره إلى المُستقبِل، الذي بدوره يمكنه الحصول على مُعرّف GEM الخاص به من مُعرّف الملف المُستلم. [ 12 ] : 16 تُستخدم هذه الطريقة بواسطة DRI3 لمشاركة المخازن المؤقتة بين العميل وخادم X [ 29 ] ، وكذلك بواسطة Wayland .
إعداد وضع النواة

لكي تعمل بطاقة الفيديو أو محول الرسومات بشكل صحيح، يجب عليها ضبط وضع - وهو مزيج من دقة الشاشة وعمق الألوان ومعدل التحديث - ضمن نطاق القيم التي تدعمها هي وشاشة العرض المتصلة بها . تُسمى هذه العملية "ضبط الوضع" [ 30 ] ، وتتطلب عادةً الوصول المباشر إلى وحدة معالجة الرسومات - أي القدرة على الكتابة إلى سجلات معينة في وحدة تحكم عرض بطاقة الفيديو [ 31 ] [ 32 ] . يجب إجراء عملية ضبط الوضع قبل بدء استخدام مخزن الإطارات ، وكذلك عندما يحتاج التطبيق أو المستخدم إلى تغيير الوضع.
في البدايات، كانت برامج مساحة المستخدم التي ترغب في استخدام إطار العرض الرسومي مسؤولة أيضًا عن توفير عمليات ضبط الوضع. [ 3 ] ولذلك، كان عليها العمل بصلاحيات وصول مميزة إلى وحدة معالجة الفيديو. في أنظمة التشغيل من نوع يونكس، كان خادم X المثال الأبرز. وكان تنفيذ ضبط الوضع الخاص به موجودًا في برنامج تشغيل DDX لكل نوع محدد من بطاقات الفيديو. [ 33 ] هذا النهج، الذي يُشار إليه لاحقًا باسم ضبط وضع مساحة المستخدم أو UMS، [ 34 ] [ 35 ] يطرح العديد من المشكلات. [ 36 ] [ 30 ] فهو لا يكسر فقط العزل الذي يجب أن توفره أنظمة التشغيل بين البرامج والمكونات المادية، مما يثير مخاوف تتعلق بالاستقرار والأمان، بل قد يترك أيضًا وحدة معالجة الرسومات في حالة غير متناسقة إذا حاول برنامجان أو أكثر من برامج مساحة المستخدم ضبط الوضع في الوقت نفسه. لتجنب هذه التعارضات، أصبح خادم X عمليًا برنامج مساحة المستخدم الوحيد الذي يُنفذ عمليات ضبط الوضع. اعتمدت برامج مساحة المستخدم المتبقية على خادم X لضبط الوضع المناسب ومعالجة أي عملية أخرى تتضمن ضبط الوضع. في البداية، كان ضبط الوضع يتم حصريًا أثناء عملية بدء تشغيل خادم X، ولكن لاحقًا اكتسب خادم X القدرة على القيام بذلك أثناء التشغيل. [ 37 ] تم تقديم امتداد XFree86-VidModeExtension في XFree86 3.1.2 للسماح لأي عميل X بطلب تغييرات في دقة العرض ( Modeline ) من خادم X. [ 38 ] [ 39 ] تم استبدال امتداد VidMode لاحقًا بامتداد XRandR الأكثر عمومية .
مع ذلك، لم يكن هذا هو الكود الوحيد المسؤول عن ضبط الوضع في نظام لينكس . أثناء عملية بدء تشغيل النظام، يجب على نواة لينكس ضبط وضع نصي بسيط لوحدة التحكم الافتراضية (استنادًا إلى الأوضاع القياسية المحددة بواسطة ملحقات VESA BIOS ). [ 40 ] كما احتوى برنامج تشغيل إطار العرض في نواة لينكس على كود لضبط الوضع لتهيئة أجهزة إطار العرض. [ 2 ] لتجنب تعارضات ضبط الوضع، تولى خادم XFree86 - ولاحقًا خادم X.Org - معالجة حالة انتقال المستخدم من البيئة الرسومية إلى وحدة تحكم افتراضية نصية عن طريق حفظ حالة ضبط الوضع، واستعادتها عند عودة المستخدم إلى X. [ 41 ] تسببت هذه العملية في وميض مزعج أثناء الانتقال، وقد تفشل أيضًا، مما يؤدي إلى تلف شاشة العرض أو عدم إمكانية استخدامها. [ 42 ]
كما تسبب أسلوب ضبط وضع مساحة المستخدم في مشاكل أخرى: [ 43 ] [ 42 ]
- تعتمد عملية تعليق/استئناف النظام على أدوات مساحة المستخدم لاستعادة الوضع السابق. قد يؤدي عطل واحد أو توقف مفاجئ لأحد هذه البرامج إلى تعطيل شاشة العرض بسبب خلل في إعدادات الوضع، وبالتالي يصبح النظام غير قابل للاستخدام .
- كان من المستحيل أيضًا على النواة عرض رسائل الخطأ أو التصحيح عندما تكون الشاشة في وضع الرسومات - على سبيل المثال عندما يكون X قيد التشغيل - لأن الأوضاع الوحيدة التي كانت النواة تعرفها هي أوضاع النص القياسية VESA BIOS.
- كانت المشكلة الأكثر إلحاحًا هي انتشار التطبيقات الرسومية التي تتجاوز خادم X وظهور بدائل أخرى لمكدس الرسومات لـ X، مما أدى إلى زيادة تكرار رمز ضبط الوضع عبر النظام بشكل أكبر.
لمعالجة هذه المشكلات، نُقل رمز ضبط الوضع إلى مكان واحد داخل النواة، وتحديدًا إلى وحدة إدارة الحقوق الرقمية (DRM) الموجودة. [ 36 ] [ 37 ] [ 44 ] [ 42 ] [ 43 ] وبذلك، أصبح بإمكان كل عملية - بما في ذلك خادم X - إصدار أوامر للنواة لتنفيذ عمليات ضبط الوضع، وتضمن النواة ألا تؤدي العمليات المتزامنة إلى حالة غير متناسقة. سُميت واجهة برمجة تطبيقات النواة الجديدة والرمز المُضاف إلى وحدة إدارة الحقوق الرقمية (DRM) لتنفيذ عمليات ضبط الوضع هذه بضبط وضع النواة (KMS). [ 30 ]
يوفر نظام إدارة وضع النواة (KMS) العديد من المزايا. وأبرزها بالطبع إزالة التعليمات البرمجية المكررة لضبط الوضع، سواءً من النواة (وحدة تحكم لينكس، fbdev) أو من مساحة المستخدم (برامج تشغيل خادم X DDX). كما يُسهّل KMS كتابة أنظمة رسومات بديلة، والتي لم تعد بحاجة إلى تنفيذ تعليمات برمجية خاصة بها لضبط الوضع. [ 42 ] [ 43 ] ومن خلال توفير إدارة مركزية للوضع، يحل KMS مشكلات الوميض عند التبديل بين وحدة التحكم وX، وكذلك بين مثيلات X المختلفة (تبديل سريع للمستخدم). [ 41 ] [ 44 ] وبما أنه متوفر في النواة، يمكن استخدامه أيضًا في بداية عملية الإقلاع، مما يمنع الوميض الناتج عن تغييرات الوضع في هذه المراحل المبكرة.
إن كون نظام إدارة وضع النواة (KMS) جزءًا من النواة يسمح له باستخدام موارد متاحة فقط في مساحة النواة، مثل المقاطعات . [ 45 ] على سبيل المثال، يُبسط استعادة الوضع بعد عملية التعليق/الاستئناف بشكل كبير بفضل إدارتها بواسطة النواة نفسها، ويُحسّن الأمان بشكل غير مباشر (إذ لم تعد أدوات مساحة المستخدم تتطلب صلاحيات الجذر). كما تُسهّل النواة توصيل أجهزة العرض الجديدة أثناء التشغيل، ما يحل مشكلةً قائمة منذ زمن طويل. [ 45 ] يرتبط ضبط الوضع ارتباطًا وثيقًا بإدارة الذاكرة - نظرًا لأن مخازن الإطارات هي في الأساس مخازن ذاكرة - لذا يُوصى بشدة بالتكامل الوثيق مع مدير ذاكرة الرسومات. هذا هو السبب الرئيسي لدمج كود ضبط وضع النواة في إدارة الحقوق الرقمية (DRM) وليس كنظام فرعي منفصل. [ 44 ]
لتجنب الإخلال بالتوافق مع الإصدارات السابقة لواجهة برمجة تطبيقات إدارة الحقوق الرقمية (DRM API)، تُوفّر ميزة ضبط وضع النواة (Kernel Mode-Setting) كميزة إضافية لبعض برامج تشغيل إدارة الحقوق الرقمية. [ 46 ] يمكن لأي برنامج تشغيل إدارة حقوق رقمية اختيار توفير علامة DRIVER_MODESET عند التسجيل في نواة إدارة الحقوق الرقمية للإشارة إلى دعمه لواجهة برمجة تطبيقات KMS. [ 8 ] تُسمى برامج التشغيل التي تُطبّق ميزة ضبط وضع النواة عادةً ببرامج تشغيل KMS لتمييزها عن برامج تشغيل إدارة الحقوق الرقمية القديمة التي لا تدعم KMS .
تم اعتماد KMS على نطاق واسع لدرجة أن بعض برامج التشغيل التي تفتقر إلى تسريع ثلاثي الأبعاد (أو التي لا يرغب مُصنِّع الأجهزة في عرضها أو تنفيذها) تُنفِّذ واجهة برمجة تطبيقات KMS دون بقية واجهة برمجة تطبيقات إدارة الحقوق الرقمية، مما يسمح لخوادم العرض (مثل Wayland ) بالعمل بسهولة. [ 47 ] [ 48 ]
طراز جهاز KMS
يقوم نظام إدارة المفاتيح (KMS) بنمذجة وإدارة أجهزة الإخراج كسلسلة من وحدات الأجهزة المجردة الموجودة عادةً في مسار إخراج العرض لوحدة تحكم العرض . وهذه الوحدات هي: [ 49 ]
- وحدات التحكم في شاشة العرض (CRTCs) : تمثل كل وحدة CRTC (من وحدة تحكم شاشة العرض [ 50 ] [ 33 ] ) محرك مسح ضوئي لوحدة تحكم العرض، وتشير إلى مخزن مؤقت للمسح الضوئي ( مخزن الإطار ). [ 49 ] تتمثل وظيفة وحدة CRTC في قراءة بيانات البكسل الموجودة حاليًا في مخزن المسح الضوئي، وتوليد إشارة توقيت وضع الفيديو منها باستخدام دائرة PLL . [ 51 ] يحدد عدد وحدات CRTC المتاحة عدد أجهزة الإخراج المستقلة التي يمكن للجهاز التعامل معها في الوقت نفسه، لذا يتطلب استخدام تكوينات متعددة الرؤوس وحدة CRTC واحدة على الأقل لكل جهاز عرض. [ 49 ] يمكن لوحدتي CRTC - أو أكثر - العمل في وضع الاستنساخ إذا كانتا تمسحان ضوئيًا من مخزن الإطار نفسه لإرسال الصورة نفسها إلى عدة أجهزة إخراج. [ 51 ] [ 50 ]
- الموصلات : يُمثل الموصل المكان الذي يُرسل إليه مُتحكم العرض إشارة الفيديو من عملية المسح لعرضها. عادةً، يتوافق مفهوم الموصل في نظام إدارة المفاتيح (KMS) مع موصل فعلي ( VGA ، DVI ، FPD-Link ، HDMI ، DisplayPort ، S-Video ، ...) في الجهاز حيث يتم توصيل جهاز إخراج ( شاشة ، لوحة كمبيوتر محمول ، ...) بشكل دائم أو مؤقت. كما يتم تخزين المعلومات المتعلقة بجهاز الإخراج المتصل فعليًا - مثل حالة الاتصال، وبيانات EDID ، وحالة DPMS ، أو أوضاع الفيديو المدعومة - داخل الموصل. [ 49 ]
- أجهزة التشفير : يجب على وحدة التحكم في العرض تشفير إشارة توقيت وضع الفيديو من وحدة التحكم في عرض الفيديو (CRTC) باستخدام تنسيق مناسب للموصل المُستخدم. [ 49 ] يُمثل جهاز التشفير وحدة الأجهزة القادرة على إجراء أحد هذه التشفيرات. من أمثلة التشفيرات - للمخرجات الرقمية - TMDS و LVDS ؛ أما بالنسبة للمخرجات التناظرية مثل VGA ومخرج التلفزيون، فتُستخدم عادةً وحدات DAC مُخصصة. لا يمكن للموصل استقبال الإشارة إلا من جهاز تشفير واحد في كل مرة، [ 49 ] ويدعم كل نوع من أنواع الموصلات بعض التشفيرات فقط. قد توجد أيضًا قيود مادية إضافية تمنع توصيل كل وحدة تحكم في عرض الفيديو (CRTC) بكل جهاز تشفير مُتاح، مما يحد من التوليفات المُمكنة بين وحدة التحكم في عرض الفيديو (CRTC) وجهاز التشفير والموصل.
- المستويات : المستوى ليس وحدة مادية، بل هو كائن ذاكرة يحتوي على مخزن مؤقت يُغذّى منه محرك المسح الضوئي (وحدة تحكم عرض الشاشة). يُسمى المستوى الذي يحتوي على مخزن الإطار بالمستوى الأساسي ، ويجب أن يكون لكل وحدة تحكم عرض شاشة مستوى أساسي مرتبط بها، [ 49 ] لأنه المصدر الذي تحدد به وحدة التحكم وضع الفيديو - دقة العرض (العرض والارتفاع)، وحجم البكسل، وتنسيق البكسل، ومعدل التحديث، وما إلى ذلك. قد تحتوي وحدة تحكم عرض الشاشة أيضًا على مستويات مؤشر مرتبطة بها إذا كان متحكم العرض يدعم تراكبات مؤشر الأجهزة، أو مستويات ثانوية إذا كانت قادرة على المسح الضوئي من تراكبات أجهزة إضافية وتكوين أو مزج الصورة النهائية المرسلة إلى جهاز الإخراج "أثناء التشغيل". [ 33 ]
شاشة عرض ذرية
في السنوات الأخيرة، بُذلت جهود متواصلة لإضفاء الطابع الذري على بعض العمليات الاعتيادية المتعلقة بواجهة برمجة تطبيقات KMS، وتحديدًا عمليات ضبط الوضع وتقليب الصفحات . [ 33 ] [ 52 ] تُعرف واجهة برمجة تطبيقات KMS المحسّنة هذه باسم العرض الذري (المعروف سابقًا باسم ضبط الوضع الذري وتقليب الصفحات الذري أو النووي ).
يهدف ضبط الوضع الذري إلى ضمان تغيير الوضع بشكل صحيح في التكوينات المعقدة ذات القيود المتعددة، وذلك بتجنب الخطوات الوسيطة التي قد تؤدي إلى حالة فيديو غير متناسقة أو غير صالحة؛ [ 52 ] كما أنه يتجنب حالات الفيديو الخطرة عند الحاجة إلى التراجع عن عملية ضبط وضع فاشلة ("التراجع"). [ 53 ] : 9 يتيح ضبط الوضع الذري معرفة ما إذا كان تكوين وضع معين مناسبًا مسبقًا، من خلال توفير إمكانيات اختبار الوضع. [ 52 ] عند اختبار وضع ذري والتأكد من صحته، يمكن تطبيقه بعملية تثبيت واحدة غير قابلة للتجزئة (ذرية) . يتم توفير كل من عمليتي الاختبار والتثبيت بواسطة نفس ioctl الجديد مع علامات مختلفة.
من ناحية أخرى، يسمح تقليب الصفحات الذري بتحديث عدة مستويات على نفس المخرج (على سبيل المثال، المستوى الأساسي، ومستوى المؤشر، وربما بعض الطبقات أو المستويات الثانوية) بشكل متزامن ضمن نفس فاصل VBLANK ، مما يضمن عرضًا سليمًا دون تشويش. [ 53 ] : 9، 14 [ 52 ] يُعد هذا الشرط ذا أهمية خاصة لوحدات تحكم العرض في الأجهزة المحمولة والمدمجة، والتي تميل إلى استخدام مستويات/طبقات متعددة لتوفير الطاقة.
تعتمد واجهة برمجة التطبيقات الذرية الجديدة على واجهة برمجة تطبيقات KMS القديمة. وهي تستخدم نفس النموذج والكائنات (وحدات التحكم في عرض البيانات، والمشفرات، والموصلات، والطبقات، ...)، ولكن مع زيادة عدد خصائص الكائنات التي يمكن تعديلها. [ 52 ] يعتمد الإجراء الذري على تغيير الخصائص ذات الصلة لإنشاء الحالة التي نريد اختبارها أو تثبيتها. وتعتمد الخصائص التي نريد تعديلها على ما إذا كنا نريد إجراء ضبط للوضع (غالبًا خصائص وحدات التحكم في عرض البيانات، والمشفرات، والموصلات) أو تقليب الصفحات (عادةً خصائص الطبقات). وتكون عملية الإدخال/الإخراج (ioctl) هي نفسها في كلتا الحالتين، ويكمن الاختلاف في قائمة الخصائص التي يتم تمريرها مع كل منهما. [ 54 ]
عقد العرض
في واجهة برمجة تطبيقات إدارة الحقوق الرقمية (DRM API) الأصلية، يُستخدم جهاز إدارة الحقوق الرقمية لكلٍ من العمليات ذات الامتيازات (مثل ضبط وضع العرض والتحكم في الشاشة) والعمليات غير ذات الامتيازات (مثل العرض، وحسابات GPGPU ). [ 9 ] ولأسباب أمنية، يتطلب فتح ملف جهاز إدارة الحقوق الرقمية المرتبط امتيازات خاصة "تُعادل امتيازات المستخدم الجذر". [ 55 ] يؤدي هذا إلى بنية لا تتمتع فيها سوى بعض برامج مساحة المستخدم الموثوقة (مثل خادم X، وبرنامج تركيب الرسوميات، وما إلى ذلك) بإمكانية الوصول الكامل إلى واجهة برمجة تطبيقات إدارة الحقوق الرقمية، بما في ذلك الأجزاء ذات الامتيازات مثل واجهة برمجة تطبيقات ضبط وضع العرض. أما تطبيقات مساحة المستخدم الأخرى التي ترغب في العرض أو إجراء حسابات GPGPU، فيجب منحها من قِبل مالك جهاز إدارة الحقوق الرقمية ("DRM Master") من خلال استخدام واجهة مصادقة خاصة. [ 56 ] بعد ذلك، يمكن للتطبيقات المُصادق عليها العرض أو إجراء الحسابات باستخدام نسخة مُقيدة من واجهة برمجة تطبيقات إدارة الحقوق الرقمية دون عمليات ذات امتيازات. يفرض هذا التصميم قيدًا صارمًا: يجب أن يكون هناك دائمًا خادم رسومات قيد التشغيل (خادم X، أو مُركِّب Wayland، ...) يعمل كخادم إدارة حقوق النشر الرقمية (DRM) لجهاز إدارة حقوق النشر الرقمية، بحيث يمكن منح برامج مساحة المستخدم الأخرى استخدام الجهاز، حتى في الحالات التي لا تتضمن أي عرض رسومات مثل حسابات GPGPU. [ 55 ] [ 56 ]/dev/dri/cardX
يحاول مفهوم "عُقد العرض" حل هذه السيناريوهات بتقسيم واجهة برمجة تطبيقات مساحة مستخدم إدارة الحقوق الرقمية (DRM) إلى واجهتين - إحداهما ذات امتيازات والأخرى بدون امتيازات - واستخدام ملفات أجهزة منفصلة (أو "عُقد") لكل منهما. [ 9 ] لكل وحدة معالجة رسومية (GPU) موجودة، يقوم برنامج تشغيل إدارة الحقوق الرقمية (DRM) المقابل لها - إذا كان يدعم ميزة عُقد العرض - بإنشاء ملف جهاز ، يُسمى عُقدة العرض ، بالإضافة إلى العقدة الأساسية . [ 56 ] [ 9 ] يمكن للعملاء الذين يستخدمون نموذج العرض المباشر والتطبيقات التي ترغب في الاستفادة من إمكانيات الحوسبة لوحدة معالجة الرسوميات (GPU) القيام بذلك دون الحاجة إلى امتيازات إضافية، وذلك ببساطة عن طريق فتح أي عُقدة عرض موجودة وإرسال عمليات وحدة معالجة الرسوميات (GPU) باستخدام المجموعة الفرعية المحدودة من واجهة برمجة تطبيقات إدارة الحقوق الرقمية (DRM) التي تدعمها تلك العُقد - بشرط أن يكون لديهم أذونات نظام الملفات لفتح ملف الجهاز. يجب على خوادم العرض، وبرامج التركيب، وأي برنامج آخر يتطلب واجهة برمجة تطبيقات مجموعة الأوضاع (modeset API) أو أي عملية أخرى ذات امتيازات، فتح العقدة الأساسية القياسية التي تمنح الوصول إلى واجهة برمجة تطبيقات إدارة الحقوق الرقمية (DRM) الكاملة واستخدامها كالمعتاد. تمنع عقد العرض صراحةً عملية GEM flink لمنع مشاركة المخزن المؤقت باستخدام أسماء GEM العامة غير الآمنة؛ ولا يمكن استخدام سوى واصفات ملفات PRIME (DMA-BUF) لمشاركة المخازن المؤقتة مع عميل آخر، بما في ذلك خادم الرسومات. [ 9 ] [ 56 ]/dev/dri/renderDX/dev/dri/cardX
دعم الأجهزة

يتضمن نظام إدارة الحقوق الرقمية (DRM) في لينكس برامج تشغيل مجانية ومفتوحة المصدر لدعم أجهزة من كبرى الشركات المصنعة لوحدات معالجة الرسومات (GPU) لأجهزة الكمبيوتر المكتبية (AMD وNVIDIA وIntel)، بالإضافة إلى عدد متزايد من مُصنّعي وحدات معالجة الرسومات المحمولة وأنظمة على شريحة (SoC). وتختلف جودة كل برنامج تشغيل اختلافًا كبيرًا، اعتمادًا على مدى تعاون الشركة المصنعة وعوامل أخرى.
| السائق | منذ النواة | الأجهزة المدعومة | دعم البائع | الحالة/ملاحظات |
|---|---|---|---|---|
| راديون | 2.4.1 | سلسلة معالجات الرسوميات Radeon من AMD (المعروفة سابقًا باسم ATi) بمعماريتي TeraScale و GCN من الجيلين الأول والثاني . تشمل هذه السلسلة طرازات من R100 / 200 / 300 / 400 ، و Radeon X1000 ، و HD 2000 / 3000 / 4000 / 5000 / 6000 / 7000 / 8000 ، وسلسلة R5 / R7 /R9 200 / 300، ووحدات المعالجة المركزية Kaveri APUs. | نعم | نشيط |
| i915 | 2.6.9 | شرائح Intel GMA 830M، 845G، 852GM، 855GM، 865G، 915G، 945G، 965G، G35، G41، G43، G45. معالجات رسومات Intel HD وIris Graphics HD Graphics 2000/3000/2500/4000/4200/4400/4600/P4600/P4700/5000، وIris Graphics 5100، وIris Pro Graphics 5200 المدمجة. | نعم | نشيط |
| جديد | 2.6.33 [ 58 ] [ 59 ] | وحدات معالجة الرسومات GeForce من NVIDIA Tesla و Fermi و Kepler و Maxwell ، و Tegra K1 ، و X1 SoC | جزئي | نشيط |
| إكسينوس | 3.2 [ 60 ] | معالجات سامسونج Exynos SoC القائمة على معمارية ARM | ||
| vmwgfx | 3.2 (من مرحلة الإعداد) [ 61 ] | وحدة معالجة الرسومات الافتراضية لـ VMware SVGA2 | سائق افتراضي | |
| gma500 | 3.3 (من مرحلة الإعداد) [ 62 ] [ 63 ] | معالجات الرسومات Intel GMA 500 وغيرها من معالجات الرسومات القائمة على تقنيات الخيال ( PowerVR ) | برنامج تشغيل تجريبي ثنائي الأبعاد يعمل بتقنية KMS فقط | |
| الماضي | 3.5 [ 64 ] | سلسلة ASpeed Technologies 2000 | تجريبي | |
| mgag200 | 3.5 [ 65 ] | محركات عرض الخادم Matrox MGA-G200 | نظام إدارة الكيلومترات فقط | |
| شموبايل | 3.7 [ 66 ] | رينيساس إس إتش موبايل | ||
| تيغرا | 3.8 [ 67 ] | معالجات Nvidia Tegra 20 و Tegra30 | نعم | نشيط |
| omapdrm | 3.9 [ 68 ] | معالجات OMAP 5 من شركة تكساس إنسترومنتس | ||
| rcar-du | 3.11 [ 69 ] | وحدات عرض Renesas R-Car SoC | ||
| إم إس إم | 3.12 [ 70 ] [ 71 ] | عائلات معالجات الرسوميات Adreno A2xx/A3xx/A4xx من شركة كوالكوم (معالجات سنابدراجون ) [ 72 ] | ||
| الأسطول | 3.13 [ 73 ] [ 74 ] | معالجات Marvell Armada 510 | ||
| بوخس | 3.14 [ 75 ] | بطاقات VGA افتراضية تستخدم واجهة Bochs dispi vga (مثل QEMU stdvga) | سائق افتراضي | |
| مرض التهاب المفاصل | 3.17 [ 76 ] [ 77 ] | سلسلة STMicroelectronics SoC stiH41x | ||
| imx | 3.19 (من مرحلة الإعداد) [ 78 ] [ 79 ] | أنظمة Freescale i.MX SoC | ||
| رقائق الصخور | 3.19 [ 78 ] [ 80 ] | وحدات معالجة الرسومات القائمة على معالج Rockchip SoC | نظام إدارة الكيلومترات فقط | |
| amdgpu [ 57 ] | 4.2 [ 81 ] [ 82 ] | سلسلة معالجات الرسوميات AMD Radeon بمعمارية GCN من الجيل الثالث والرابع . تشمل طرازات من سلسلة Radeon Rx 200 / 300 / 400 / 500 [ 83 ] ووحدات المعالجة المركزية Carrizo و Bristol وStoney Ridge . | نعم | نشيط |
| فيرتيو | 4.2 [ 84 ] | برنامج تشغيل وحدة معالجة الرسومات الافتراضية لمديري الأجهزة الافتراضية القائمين على QEMU (مثل KVM أو Xen ) | سائق افتراضي | |
| vc4 | 4.4 [ 85 ] [ 86 ] [ 87 ] | معالجات Broadcom BCM2835 و BCM2836 SoCs الخاصة بـ Raspberry Pi (معالج الرسوميات VideoCore IV) | ||
| إتنافيف | 4.5 [ 88 ] [ 89 ] [ 90 ] | توجد أنوية معالجة الرسومات Vivante في العديد من أنظمة SoC مثل Marvell ARMADA وسلسلة Freescale i.MX6 | ||
| sun4i | 4.7 [ 91 ] [ 92 ] | معالجات Allwinner SoCs (معالج رسوميات ARM Mali-400 ) | ||
| كيرين | 4.7 [ 93 ] [ 92 ] | معالج HiSilicon Kirin hi6220 SoC (معالج رسوميات ARM Mali 450-MP4 ) | ||
| ميديا تك | 4.7 [ 94 ] [ 92 ] | معالج MediaTek MT8173 SoC (معالج الرسوميات Imagination PowerVR GX6250) | ||
| هيبمك | 4.10 [ 95 ] | HiSilicon hi1710 Huawei iBMC SoC ( Silicon Image SM750 GPU core [ 96 ] ) | نظام إدارة الكيلومترات فقط | |
| vkms | 4.19 [ 97 ] [ 98 ] | نموذج برمجي فقط لبرنامج تشغيل KMS مفيد للاختبار ولتشغيل X (أو ما شابه) على الأجهزة بدون شاشة . | برنامج تشغيل افتراضي، تجريبي | |
| ليما | 5.2 [ 99 ] [ 100 ] | معالجات الرسوميات ARM Mali 4xx | ||
| بانفروست | 5.2 [ 101 ] [ 100 ] | وحدات معالجة الرسومات ARM Mali Txxx (Midgard) وGxx (Bifrost). | ||
| vboxvideo | 5.2 (من مرحلة الإعداد) [ 102 ] [ 100 ] | برنامج تشغيل وحدة معالجة الرسومات الافتراضية لبرنامج VirtualBox (VBoxVGA GPU) | سائق افتراضي | |
| hyperv_drm | 5.14 [ 103 ] [ 104 ] | برنامج تشغيل وحدة معالجة الرسومات الافتراضية لجهاز الفيديو الاصطناعي Hyper-V | سائق افتراضي | |
| simpledrm | 5.14 [ 105 ] [ 106 ] | برنامج تشغيل وحدة معالجة الرسومات لإطارات العرض التي توفرها البرامج الثابتة ( UEFI GOP ، وامتدادات VESA BIOS ، والأنظمة المدمجة ) | نظام إدارة الكيلومترات فقط | |
| ofdrm | 6.2 [ 107 ] [ 108 ] | برنامج تشغيل وحدة معالجة الرسومات لإطارات البرامج الثابتة المفتوحة | نظام إدارة الكيلومترات فقط | |
| لونغ. | 6.6 [ 109 ] [ 110 ] | برنامج تشغيل وحدة معالجة الرسومات لوحدات معالجة الرسومات وأنظمة SoC من شركة Loongson | ||
| باور في آر | 6.8 [ 111 ] [ 112 ] | معالجات الرسوميات PowerVR من Imagination Technologies ( السلسلة 6 وما بعدها) ومعالجات الرسوميات IMG Graphics | ||
| xe | 6.8 [ 113 ] [ 114 ] | وحدات معالجة الرسومات من سلسلة Intel Xe ( وحدات معالجة الرسومات المدمجة من الجيل 12 ، ووحدات معالجة الرسومات المنفصلة Intel Arc ) | نعم | تجريبي |
| بانثور | 6.10 [ 115 ] [ 116 ] | وحدات معالجة الرسومات ARM Mali Gxxx (Valhall) | ||
| إيفيدرم | 6.16 [ 117 ] [ 118 ] | برنامج تشغيل وحدة معالجة الرسومات لإطارات EFI (UEFI GOP) | نظام إدارة الكيلومترات فقط | |
| فيسادرم | 6.16 [ 119 ] [ 118 ] | برنامج تشغيل وحدة معالجة الرسومات لإطارات VESA (ملحقات VESA BIOS) | نظام إدارة الكيلومترات فقط |
يوجد أيضًا عدد من برامج التشغيل للأجهزة القديمة والمتقادمة، موضحة بالتفصيل في الجدول التالي لأغراض تاريخية.
| السائق | منذ النواة | الأجهزة المدعومة | الحالة/ملاحظات |
|---|---|---|---|
| جاما | 2.3.18 | 3Dlabs GLINT GMX 2000 | تمت إزالته منذ 2.6.14 [ 120 ] |
| ffb | 2.4 | Creator/Creator3D (يستخدم بواسطة محطات عمل Sun Microsystems Ultra ) | تمت إزالته منذ 2.6.21 [ 121 ] |
| tdfx | 2.4 | 3dfx Banshee/ Voodoo3 + | تمت إزالته منذ الإصدار 6.3 [ 122 ] |
| mga | 2.4 | ماتروكس G200 / G400 / G450 | تمت إزالته منذ الإصدار 6.3 [ 123 ] |
| r128 | 2.4 | ATI Rage 128 | تمت إزالته منذ الإصدار 6.3 [ 124 ] |
| i810 | 2.4 | معالج Intel i810 | تمت إزالته منذ الإصدار 6.3 [ 125 ] |
| أختي | 2.4.17 | SiS 300 /630/540 | تمت إزالته منذ الإصدار 6.3 [ 126 ] |
| i830 | 2.4.20 | معالجات Intel 830M/845G/852GM/855GM/865G | تمت إزالته منذ الإصدار 2.6.39 [ 127 ] (تم استبداله ببرنامج تشغيل i915) |
| عبر | 2.6.13 [ 128 ] | عبر يونيكروم / يونيكروم برو | تمت إزالته منذ الإصدار 6.3 [ 129 ] |
| متوحش | 2.6.14 [ 130 ] | S3 Graphics Savage 3D/MX/IX/4/SuperSavage/Pro/Twister | تمت إزالته منذ الإصدار 6.3 [ 131 ] |
تطوير
تم تطوير مدير العرض المباشر (DRM) ضمن نواة لينكس ، ويوجد كود المصدر الخاص به في /drivers/gpu/drmدليل كود مصدر لينكس. يتولى ديف إيرلي صيانة النظام الفرعي، بينما يتولى آخرون صيانة برامج تشغيل محددة. [ 132 ] وكما هو معتاد في تطوير نواة لينكس، يرسل القائمون على صيانة DRM والمساهمون فيه تصحيحاتهم التي تتضمن ميزات جديدة وإصلاحات للأخطاء إلى القائم على صيانة DRM الرئيسي، الذي يدمجها في مستودع لينكس الخاص به . بدوره، يرسل القائم على صيانة DRM جميع هذه التصحيحات الجاهزة للدمج إلى لينوس تورفالدز عند إصدار نسخة جديدة من لينكس. يمتلك تورفالدز، بصفته القائم على صيانة النواة بأكملها، الكلمة الفصل في مدى ملاءمة أي تصحيح للدمج في النواة.
لأسباب تاريخية، يتم الحفاظ على الكود المصدري لمكتبة libdrm تحت مظلة مشروع Mesa . [ 133 ]
تاريخ
في عام ١٩٩٩، أثناء تطوير برنامج DRI لنظام XFree86 ، ابتكرت شركة Precision Insight الإصدار الأول من نظام إدارة الحقوق الرقمية (DRM) لبطاقات الفيديو 3dfx ، كتعديل لنواة لينكس مُضمّن في شفرة مصدر Mesa . [ ١٣٤ ] وفي وقت لاحق من ذلك العام، تم دمج شفرة DRM في نواة لينكس ٢.٣.١٨ ضمن دليل أجهزة الأحرف . [ ١٣٥ ] وخلال السنوات اللاحقة، ازداد عدد بطاقات الفيديو المدعومة. عند إصدار لينكس ٢.٤.٠ في يناير ٢٠٠١، كان النظام يدعم بالفعل بطاقات Creative Labs GMX 2000 وIntel i810 وMatrox G200/G400 وATI Rage 128، بالإضافة إلى بطاقات 3dfx Voodoo3، [ ١٣٦ ] وتوسعت هذه القائمة خلال سلسلة ٢.٤.x، لتشمل برامج تشغيل لبطاقات ATI Radeon وبعض بطاقات فيديو SiS ومعالجات Intel 830M ووحدات معالجة الرسومات المدمجة اللاحقة./drivers/char/drm/
تم تقسيم نظام إدارة الحقوق الرقمية (DRM) إلى مكونين، هما نواة نظام إدارة الحقوق الرقمية وبرنامج تشغيل نظام إدارة الحقوق الرقمية، والذي يُطلق عليه تقسيم نواة/شخصية نظام إدارة الحقوق الرقمية، خلال النصف الثاني من عام 2004، [ 11 ] [ 137 ] وتم دمجه في إصدار النواة 2.6.11. [ 138 ] وقد سمح هذا التقسيم بتشغيل برامج تشغيل متعددة لنظام إدارة الحقوق الرقمية لأجهزة متعددة في وقت واحد، مما مهد الطريق لدعم وحدات معالجة الرسومات المتعددة.
كانت فكرة وضع جميع أكواد ضبط وضع الفيديو في مكان واحد داخل نواة النظام معروفة منذ سنوات، [ 139 ] [ 140 ] لكن مصنعي بطاقات الرسومات جادلوا بأن الطريقة الوحيدة لضبط الوضع هي استخدام الإجراءات التي يوفرونها بأنفسهم والموجودة في BIOS الخاص بالفيديو لكل بطاقة رسومات. كان لا بد من تنفيذ هذه الأكواد باستخدام الوضع الحقيقي x86 ، مما منع استدعاءها بواسطة نواة تعمل في الوضع المحمي . [ 44 ] تغير الوضع عندما وجد لوك فيرهاجن ومطورون آخرون طريقة لضبط الوضع بشكل أصلي بدلاً من الاعتماد على BIOS، [ 141 ] [ 44 ] مما أظهر إمكانية القيام بذلك باستخدام كود نواة عادي، ووضع الأساس لما سيصبح لاحقًا ضبط وضع النواة . في مايو 2007، نشر جيسي بارنز ( إنتل ) أول اقتراح لواجهة برمجة تطبيقات لضبط وضع DRM، بالإضافة إلى تطبيق أصلي فعال لضبط الوضع لوحدات معالجة الرسومات من إنتل ضمن برنامج تشغيل i915 DRM. [ 42 ] في ديسمبر 2007، بدأ جيروم جليس بإضافة رمز ضبط الوضع الأصلي لبطاقات ATI إلى برنامج تشغيل Radeon DRM. [ 142 ] [ 143 ] استمر العمل على كل من واجهة برمجة التطبيقات وبرامج التشغيل خلال عام 2008، ولكنه تأخر بسبب الحاجة إلى مدير ذاكرة في مساحة النواة أيضًا للتعامل مع مخازن الإطارات. [ 144 ]
في أكتوبر 2008، أدخلت نواة لينكس 2.6.27 إعادة تنظيم رئيسية لشفرة المصدر ، تمهيدًا لبعض التغييرات الهامة القادمة. نُقلت شجرة شفرة مصدر إدارة الحقوق الرقمية (DRM) إلى دليل مصدر خاص بها /drivers/gpu/drm/، ونُقلت برامج التشغيل المختلفة إلى أدلة فرعية خاصة بها. كما نُقلت ملفات الرأس إلى /include/drmدليل جديد. [ 145 ]
أدى ازدياد تعقيد إدارة ذاكرة الفيديو إلى ظهور عدة مناهج لحل هذه المشكلة. تمثلت المحاولة الأولى في مدير الذاكرة "خرائط جداول الترجمة " (TTM)، الذي طوره توماس هيلستروم ( شركة تنجستن جرافيكس ) بالتعاون مع إيما أنهولت (شركة إنتل) وديف إيرلي ( شركة ريد هات ). [ 5 ] اقتُرح إدراج TTM في نواة لينكس الرئيسية 2.6.25 في نوفمبر 2007، [ 5 ] ثم مرة أخرى في مايو 2008، ولكن تم التخلي عنه لصالح منهج جديد يُسمى " مدير تنفيذ الرسومات" (GEM). [ 24 ] طُوّر GEM في البداية من قِبل كيث باكارد وإيما أنهولت من شركة إنتل كحل أبسط لإدارة الذاكرة لبرنامج تشغيل i915 الخاص بهما. [ 6 ] لاقى GEM استحسانًا كبيرًا وتم دمجه في نواة لينكس الإصدار 2.6.28 الصادر في ديسمبر 2008. [ 146 ] في الوقت نفسه، اضطر TTM للانتظار حتى سبتمبر 2009 ليتم دمجه أخيرًا في لينكس 2.6.31 كشرط لتشغيل برنامج تشغيل Radeon KMS DRM الجديد. [ 147 ]
مع وجود إدارة الذاكرة اللازمة للتعامل مع كائنات المخزن المؤقت، تمكن مطورو إدارة الحقوق الرقمية (DRM) أخيرًا من إضافة واجهة برمجة التطبيقات (API) والتعليمات البرمجية الجاهزة لضبط الوضع إلى نواة النظام . تُعرف واجهة برمجة التطبيقات الموسعة هذه باسم ضبط وضع النواة (KMS)، ويُشار إلى برامج التشغيل التي تُنفذها غالبًا باسم برامج تشغيل KMS . في مارس 2009، دُمجت KMS في نواة لينكس الإصدار 2.6.29، [ 30 ] [ 148 ] إلى جانب دعم KMS لبرنامج تشغيل i915. [ 149 ] أصبحت واجهة برمجة تطبيقات KMS متاحة لبرامج مساحة المستخدم منذ libdrm 2.4.3. [ 150 ] وكان برنامج تشغيل X.Org DDX الخاص بمساحة المستخدم لبطاقات رسومات Intel أول من استخدم واجهات برمجة تطبيقات GEM وKMS الجديدة. [ 151 ] أُضيفت خاصية دعم KMS لبرنامج تشغيل Radeon DRM إلى إصدار Linux 2.6.31 الصادر في سبتمبر 2009. [ 152 ] [ 153 ] [ 154 ] استخدم برنامج تشغيل Radeon KMS الجديد مدير ذاكرة TTM، ولكنه عرض واجهات وأوامر ioctl متوافقة مع GEM بدلاً من تلك الخاصة بـ TTM. [ 23 ]
منذ عام 2006، كان مشروع نوفو يعمل على تطوير برنامج تشغيل DRM مجاني لوحدات معالجة الرسومات من إنفيديا، خارج نواة لينكس الرسمية. في عام 2010، دُمج كود مصدر نوفو في لينكس 2.6.33 كبرنامج تشغيل تجريبي. [ 58 ] [ 59 ] عند الدمج، كان برنامج التشغيل قد حُوِّل بالفعل إلى KMS، وكان يستخدم TTM كمدير للذاكرة خلف واجهة برمجة تطبيقات GEM. [ 155 ]
شكّلت واجهة برمجة تطبيقات KMS الجديدة ، بما فيها واجهة GEM ، علامة فارقة في تطوير إدارة الحقوق الرقمية (DRM)، إلا أنها لم تمنع تحسينها في السنوات اللاحقة. اكتسبت KMS دعمًا لقلب الصفحات بالتزامن مع إشعارات VBLANK غير المتزامنة في Linux 2.6.33 [ 156 ] [ 157 ] ، وذلك فقط لبرنامج تشغيل i915، بينما أضافته radeon وnouveau لاحقًا خلال إصدار Linux 2.6.38. [ 158 ] أُضيفت واجهة قلب الصفحات الجديدة إلى libdrm 2.4.17. [ 159 ] في أوائل عام 2011، خلال دورة إصدار Linux 2.6.39، أُضيفت ما يُسمى بالمخازن المؤقتة البسيطة (dumb buffers )، وهي طريقة غير مُسرّعة ومستقلة عن الأجهزة للتعامل مع المخازن المؤقتة البسيطة المناسبة للاستخدام كإطارات عرض ، إلى واجهة برمجة تطبيقات KMS. [ 160 ] [ 161 ] كان الهدف هو تقليل تعقيد التطبيقات مثل Plymouth التي لا تحتاج إلى استخدام عمليات تسريع خاصة توفرها أوامر ioctl الخاصة ببرامج التشغيل. [ 162 ] تم توفير هذه الميزة بواسطة libdrm بدءًا من الإصدار 2.4.25. [ 163 ] في وقت لاحق من ذلك العام، اكتسبت أيضًا نوعًا رئيسيًا جديدًا من الكائنات، يُسمى المستويات . تم تطوير المستويات لتمثيل طبقات الأجهزة التي يدعمها محرك scanout. [ 164 ] [ 165 ] تم دمج دعم المستويات في Linux 3.3. [ 166 ] وlibdrm 2.4.30. مفهوم آخر تمت إضافته إلى واجهة برمجة التطبيقات - خلال إصدارات Linux 3.5 [ 167 ] وlibdrm 2.4.36 [ 168 ] - هو خصائص الكائنات العامة ، وهي طريقة لإضافة قيم عامة إلى أي كائن KMS. تُعد الخصائص مفيدة بشكل خاص لتعيين سلوك أو ميزات خاصة للأشياء مثل وحدات التحكم في عرض البيانات والطائرات.
طوّر ديف إيرلي في عام 2010 نموذجًا أوليًا لإثبات المفهوم لتوفير تفريغ معالجة البيانات من وحدة معالجة الرسومات بين برامج تشغيل إدارة الحقوق الرقمية (DRM). [ 7 ] [ 169 ] ولأن إيرلي كان يحاول محاكاة تقنية NVIDIA Optimus ، فقد قرر تسميتها "PRIME". [ 7 ] استأنف إيرلي العمل على PRIME في أواخر عام 2011، ولكن بالاعتماد على آلية مشاركة المخزن المؤقت DMA-BUF الجديدة التي قدمتها نواة لينكس 3.3. [ 170 ] اكتملت البنية التحتية الأساسية لـ DMA-BUF PRIME في مارس 2012 [ 171 ] وتم دمجها في إصدار لينكس 3.4، [ 172 ] [ 173 ] [ 174 ] وكذلك في libdrm 2.4.34. [ 175 ] لاحقًا خلال إصدار لينكس 3.5، قامت العديد من برامج تشغيل إدارة الحقوق الرقمية (DRM) بتطبيق دعم PRIME، بما في ذلك i915 لبطاقات إنتل، وradeon لبطاقات AMD، وnouveau لبطاقات NVIDIA. [ 176 ] [ 177 ]
في السنوات الأخيرة، شهدت واجهة برمجة تطبيقات إدارة الحقوق الرقمية (DRM API) توسعًا تدريجيًا مع ميزات جديدة ومحسّنة. في عام 2013، وكجزء من برنامج جوجل الصيفي على الحاسوب (GSoC) ، طوّر ديفيد هيرمان ميزة عقد العرض المتعددة . [ 55 ] أُضيف كوده إلى نواة لينكس الإصدار 3.12 كميزة تجريبية [ 178 ] [ 179 ] مدعومة من برامج تشغيل i915، [ 180 ] و radeon [ 181 ] وnouveau [ 182 ] ، ومُفعّلة افتراضيًا منذ لينكس 3.17. [ 77 ] في عام 2014، طوّر مات روبر (إنتل) مفهوم المستويات العالمية (أو المستويات الموحدة ) الذي بموجبه تُعامل مخازن الإطارات ( المستويات الأساسية ) والتراكبات ( المستويات الثانوية ) والمؤشرات ( مستويات المؤشر ) كنوع واحد من الكائنات بواجهة برمجة تطبيقات موحدة. [ 183 ] يوفر دعم المستويات العالمية واجهة برمجة تطبيقات إدارة الحقوق الرقمية أكثر اتساقًا مع عدد أقل من أوامر ioctl وأكثر عمومية . [ 33 ] للحفاظ على توافق واجهة برمجة التطبيقات مع الإصدارات السابقة ، تُعرض هذه الميزة في نواة إدارة الحقوق الرقمية كقدرة إضافية يمكن أن يوفرها برنامج تشغيل إدارة الحقوق الرقمية. ظهر دعم المستوى العالمي لأول مرة في لينكس 3.15 [ 184 ] ومكتبة libdrm 2.4.55. [ 185 ] وقد قامت العديد من برامج التشغيل، مثل Intel i915، [ 186 ] بتطبيقه بالفعل.
أحدث تحسينات واجهة برمجة تطبيقات إدارة الحقوق الرقمية (DRM API) هي واجهة برمجة تطبيقات ضبط الوضع الذري ، التي تُضفي خاصية الذرية على عمليات ضبط الوضع وتقليب الصفحات على جهاز إدارة الحقوق الرقمية. طُرحت فكرة واجهة برمجة تطبيقات ضبط الوضع الذري لأول مرة في أوائل عام 2012. [ 187 ] تولى فيلي سيرجالا (إنتل) مهمة تصميم وتنفيذ هذه الواجهة. [ 188 ] استنادًا إلى عمله، اتبع روب كلارك ( تكساس إنسترومنتس ) نهجًا مشابهًا بهدف تنفيذ تقليب الصفحات الذري. [ 189 ] في وقت لاحق من عام 2013، جُمعت الميزتان المقترحتان في ميزة واحدة باستخدام أمر ioctl واحد لكلا المهمتين. [ 190 ] نظرًا لكونها شرطًا أساسيًا، كان لا بد من انتظار دمج دعم المستويات العالمية في منتصف عام 2014. [ 186 ] خلال النصف الثاني من عام 2014، قام دانيال فيتر (إنتل) ومطورو إدارة الحقوق الرقمية الآخرون بتحسين الكود الذري بشكل كبير [ 191 ] : 18 لتسهيل انتقال برامج تشغيل KMS الحالية إلى الإطار الذري الجديد. [ 192 ] دُمج هذا العمل بالكامل في إصدارات لينكس 3.19 [ 193 ] ولينكس 4.0 [ 194 ] [ 195 ] [ 196 ] ، وتم تفعيله افتراضيًا منذ لينكس 4.2. [ 197 ] كشفت مكتبة libdrm عن واجهة برمجة التطبيقات الذرية الجديدة منذ الإصدار 2.4.62. [ 198 ] تم تحويل العديد من برامج التشغيل بالفعل إلى واجهة برمجة التطبيقات الذرية الجديدة. [ 199 ] بحلول عام 2018، تمت إضافة عشرة برامج تشغيل جديدة لإدارة الحقوق الرقمية، تستند إلى هذا النموذج الذري الجديد، إلى نواة لينكس. [ 200 ]
التبني
طُوِّر النظام الفرعي لنواة إدارة العرض المباشر (DRM) في البداية لاستخدامه مع بنية العرض المباشر الجديدة لخادم العرض XFree86 4.0، والذي ورثه لاحقًا خليفته، خادم X.Org . ولذلك، كان المستخدمون الرئيسيون لـ DRM هم عملاء DRI الذين يتصلون بتنفيذ OpenGL المُسرَّع بواسطة الأجهزة الموجود في مكتبة Mesa 3D ، بالإضافة إلى خادم X نفسه. في الوقت الحاضر، يُستخدم DRM أيضًا بواسطة العديد من مُركِّبات Wayland ، بما في ذلك مُركِّب Weston المرجعي. kmscon هو تطبيق وحدة تحكم افتراضية يعمل في مساحة المستخدم باستخدام إمكانيات DRM KMS. [ 201 ]
في عام 2015، تلقى الإصدار 358.09 (بيتا) من برنامج تشغيل Nvidia GeForce الخاص دعمًا لواجهة ضبط وضع إدارة الحقوق الرقمية (DRM) المُطبقة كوحدة نواة جديدة nvidia-modeset.ko. يعمل مكون برنامج التشغيل الجديد هذا بالتزامن مع nvidia.koوحدة النواة لبرمجة محرك العرض (أي وحدة تحكم العرض) لوحدة معالجة الرسومات (GPU). [ 202 ]
انظر أيضاً
مراجع
- ↑ "Linux kernel/drivers/gpu/drm/README.drm" . kernel.org . تم الاطلاع عليه بتاريخ 26-02-2014 .
{{cite web}}: CS1 maint: deprecated archiveal service ( link ) - 1 2 أوتيرهوفن، جيرت. "جهاز المخزن المؤقت للإطار" . Kernel.org . تم الاسترجاع 28 يناير 2015 .
- 1 2 3 وايت، توماس. "كيف تعمل DRI وDRM" . تم الاسترجاع في 22 يوليو 2014 .
- ↑ فيث، ريكارد إي. (11 مايو 1999). "مدير العرض المباشر: دعم النواة لبنية العرض المباشر" . مؤرشف من الأصل في 24 مايو 2016. تم الاطلاع عليه في 12 مايو 2016 .
- 1 2 3 4 5 6 7 8 كوربيت، جوناثان (6 نوفمبر 2007). "إدارة الذاكرة لمعالجات الرسومات" . LWN.net . تم الاطلاع عليه بتاريخ 23 يوليو 2014 .
- 1 2 3 4 5 6 7 باكارد، كيث؛ أنهولت، إريك (13 مايو 2008). "GEM - مدير تنفيذ الرسومات" . قائمة بريدية dri-devel . تم الاطلاع عليه في 23 يوليو 2014 .
- 1 2 3 إيرلي، ديف (12 مارس 2010). "تفريغ معالجة الرسومات - برايم - إثبات المفهوم" . مؤرشف من الأصل في 10 فبراير 2015. تم الاطلاع عليه في 10 فبراير 2015 .
- 1 2 3 4 5 كيتشينغ، سيمون. "وحدات نواة DRM وKMS" . تم الاسترجاع في 13 مايو 2016 .
- 1 2 3 4 5 هيرمان، ديفيد (1 سبتمبر 2013). "فصل عقد أجهزة إدارة الحقوق الرقمية وإدارة المفاتيح" . تم الاسترجاع في 23 يوليو 2014 .
- ↑ "README.rst - mesa/drm - رؤوس مدير العرض المباشر ووحدات النواة" . 2020-03-21.
{{cite web}}: CS1 maint: deprecated archiveal service ( link ) - 1 2 إيرلي، ديف (4 سبتمبر 2004). "تصميم واجهة إدارة الحقوق الرقمية المقترح الجديد" . dri-devel (قائمة بريدية).
- 1 2 3 4 5 6 7 بيريز، مارتن؛ رافيير، تيموثي (2 فبراير 2013). "DRI-next/DRM2: شرح تفصيلي لحزمة رسومات لينكس وأمانها" (ملف PDF) . تم الاطلاع عليه بتاريخ 13 مايو 2016 .
- ^ هوجسبيرج ، كريستيان (4 سبتمبر 2008). "امتداد DRI2 - الإصدار 2.0" . X.Org . تم الاسترجاع في 23 مايو 2016 .
- 1 2 3 4 5 6 بارنز، جيسي؛ بينشارت، لوران؛ فيتر، دانيال؛ وونر، لوكاس. "دليل مطوري برامج تشغيل وحدة معالجة الرسومات في لينكس - إدارة الذاكرة" . تم الاطلاع عليه بتاريخ 31 أغسطس 2016 .
- ↑ فيتر، دانيال. "دورة مكثفة حول i915/GEM من إعداد دانيال فيتر" . مركز إنتل لتكنولوجيا المصادر المفتوحة . تم الاطلاع عليه بتاريخ 31 يناير 2015.
يتعامل GEM بشكل أساسي مع كائنات مخزن الرسومات (التي يمكن أن تحتوي على نسيج، ومخازن عرض، ومظللات، أو جميع أنواع كائنات الحالة والبيانات الأخرى التي تستخدمها وحدة معالجة الرسومات)
. - 1 2 3 فيتر، دانيال (4 مايو 2011). "نظرة عامة على GEM" . تم الاسترجاع في 13 فبراير 2015 .
- ↑ باكارد، كيث (28 سبتمبر 2012). "أفكار حول DRI.Next" . تم الاطلاع عليه بتاريخ 26 مايو 2016. يُعاني GEM flink من العديد من المشاكل .
أسماء flink عامة، مما يسمح لأي شخص لديه حق الوصول إلى الجهاز بالوصول إلى محتويات بيانات flink.
- ١ ٢ هيرمان، ديفيد (٢ يوليو ٢٠١٣). " أمن إدارة الحقوق الرقمية" . وقائع مؤتمر مطوري X.Org لعام ٢٠١٣ (XDC2013) . تم الاطلاع عليه في ١٣ فبراير ٢٠١٥.
لا يوفر gem-flink أي مساحات أسماء خاصة للتطبيقات والخوادم. بدلاً من ذلك، يتم توفير مساحة اسم عامة واحدة فقط لكل عقدة إدارة حقوق رقمية. يمكن للتطبيقات الخبيثة التي تم التحقق من هويتها مهاجمة عملاء آخرين عبر "تخمين الأسماء" باستخدام أسلوب التجربة والخطأ لمخازن gem المؤقتة.
- ↑ كيريسك، مايكل (25 سبتمبر 2012). "XDC2012: أمان حزمة الرسومات" . LWN.net . تم الاطلاع عليه بتاريخ 25 نوفمبر 2015 .
- 1 2 باكارد، كيث (4 يوليو 2008). "تحديث الجوهرة" . تم الاسترجاع في 25 أبريل 2016 .
- ↑ صفحة دليل "drm-memory" . أدلة أوبونتو . تم الاطلاع عليها بتاريخ 29 يناير 2015.
تأتي العديد من وحدات معالجة الرسومات الحديثة عالية الأداء مزودة ببرامج إدارة ذاكرة خاصة بها. بل إنها تتضمن عدة ذاكرات تخزين مؤقت مختلفة تحتاج إلى مزامنة أثناء الوصول إليها. [...] لذلك، فإن إدارة الذاكرة على وحدات معالجة الرسومات تعتمد بشكل كبير على برامج التشغيل والأجهزة.
- ↑ "دليل مطوري معالج الوسائط الرسومية من إنتل" . شركة إنتل . تم الاطلاع عليه بتاريخ 24 نوفمبر 2015 .
- 1 2 3 لارابيل، مايكل (26 أغسطس 2008). "مدير TTM مُعدّل بتقنية GEM لبطاقات Radeon" . فورونيكس . تم الاطلاع عليه بتاريخ 24 أبريل 2016 .
- 1 2 3 كوربيت، جوناثان (28 مايو 2008). "GEM ضد TTM" . LWN.net . تم الاطلاع عليه بتاريخ 10 فبراير 2015 .
- ↑ كوربيت، جوناثان (11 يناير 2012). "مشاركة مخزن DMA المؤقت في الإصدار 3.3" . LWN.net . تم الاطلاع عليه بتاريخ 14 مايو 2016 .
- ↑ كلارك، روب؛ سيموال، سوميت. "إطار عمل مشاركة مخزن البيانات DMA: مقدمة" (ملف PDF) . تم الاطلاع عليه بتاريخ 14 مايو 2016 .
- ↑ بيريز، مارتن (26 سبتمبر 2014). "مجموعة برامج الرسومات في لينكس، وأوبتيموس، وبرنامج تشغيل نوفو" (ملف PDF) . تم الاطلاع عليه بتاريخ 14 مايو 2016 .
- ↑ بينشارت، لوران (20 فبراير 2013). "تشريح برنامج تشغيل KMS المدمج" (ملف PDF) . تم الاطلاع عليه بتاريخ 27 يونيو 2016 .
- ↑ إيدج، جيك (9 أكتوبر 2013). "DRI3 والحاضر" . LWN.net . تم الاطلاع عليه بتاريخ 28 مايو 2016 .
- 1 2 3 4 "Linux 2.6.29 - Kernel Modesetting" . مبتدئو نواة لينكس . تم الاطلاع عليه بتاريخ 19 نوفمبر 2015 .
- ↑ "أجهزة VGA" . OSDev.org . تم الاطلاع عليه بتاريخ 23 نوفمبر 2015 .
- ↑ راثمان، ب. (15 فبراير 2008). "حالة نوفو، الجزء الأول" . LWN.net . تاريخ الاسترجاع: 23 نوفمبر 2015.
تُبرمج بطاقات الرسومات بطرق عديدة، ولكن معظم عمليات التهيئة وضبط الوضع تتم عبر الإدخال/الإخراج المُمَثَّل في الذاكرة. هذه مجرد مجموعة من السجلات التي يمكن لوحدة المعالجة المركزية الوصول إليها عبر مساحة عناوين الذاكرة القياسية. تُقسَّم السجلات في مساحة العناوين هذه إلى نطاقات تتعامل مع ميزات مختلفة لبطاقة الرسومات، مثل إعداد الوضع، والتحكم في الإخراج، أو تكوين الساعة.
- 1 2 3 4 5 بالانين، بيكا (5 يونيو 2014). "من عصور ما قبل التاريخ إلى ما بعد الحرب النووية الحرارية العالمية" . تم الاطلاع عليه بتاريخ 29 يوليو 2014 .
- ↑ "صفحة دليل drm-kms" . أدلة أوبونتو . تم الاطلاع عليها بتاريخ 19 نوفمبر 2015 .
- ↑ كوربيت، جوناثان (13 يناير 2010). "نهاية إعدادات وضع مساحة المستخدم؟" . LWN.net . تم الاطلاع عليه بتاريخ 20 نوفمبر 2015 .
- 1 2 "مناقشة تصميم إعدادات الوضع" . ويكي X.Org . تم الاطلاع عليه بتاريخ 19 نوفمبر 2015 .
- 1 2 كوربيت، جوناثان (22 يناير 2007). "LCA: تحديثات على نظام X Window" . LWN.net . تم الاطلاع عليه في 23 نوفمبر 2015 .
- ↑ "صفحة دليل XF86VIDMODE" . X.Org . تم الاطلاع عليه بتاريخ 23 أبريل 2016 .
- ↑ "ملاحظات إصدار X11R6.1" . X.Org . 14 مارس 1996. تم الاطلاع عليه بتاريخ 23 أبريل 2016 .
- ↑ كوربيت، جوناثان (20 يوليو 2004). "قمة النواة: برامج تشغيل الفيديو" . LWN.net . تم الاطلاع عليه بتاريخ 23 نوفمبر 2015 .
- ١ ٢ "فيدورا - الميزات/إعدادات وضع النواة" . مشروع فيدورا . تم الاطلاع عليه بتاريخ ٢٠ نوفمبر ٢٠١٥.
تاريخيًا، كان خادم X مسؤولاً عن حفظ حالة الإخراج عند بدء تشغيله، ثم استعادتها عند العودة إلى وضع النص. كان التبديل السريع بين المستخدمين يتم باستخدام مفتاح VT، لذا فإن التبديل من خادم X الخاص بالمستخدم الأول كان يومض مرة واحدة للانتقال إلى وضع النص، ثم يومض مرة أخرى فورًا للانتقال إلى جلسة المستخدم الثاني.
- 1 2 3 4 5 بارنز، جيسي (17 مايو 2007). " [ RFC ] تحسين النظام الفرعي للرسومات في النواة" . linux-kernel (قائمة بريدية).
- 1 2 3 "DrmModesetting - تحسين رسومات النواة" . ويكي DRI . تم الاطلاع عليه بتاريخ 23 نوفمبر 2015 .
- 1 2 3 4 5 باكارد، كيث (16 سبتمبر 2007). "برامج تشغيل وضع النواة" . تم الاسترجاع في 30 أبريل 2016 .
- 1 2 باكارد، كيث (24 أبريل 2000). "تحسين تركيز برنامج تشغيل إنتل" . تم الاطلاع عليه في 23 مايو 2016. ومن القيود الأخرى
الأقل وضوحًا أن برنامج التشغيل لم يكن قادرًا على التعامل مع المقاطعات، وبالتالي لم يكن هناك دعم لشاشات التوصيل السريع.
- ↑ بارنز، جيسي؛ بينشارت، لوران؛ فيتر، دانيال؛ وونر، لوكاس. "دليل مطوري برامج تشغيل وحدة معالجة الرسومات في لينكس - تهيئة برنامج التشغيل" . تم الاطلاع عليه بتاريخ 31 أغسطس 2016 .
- ↑ "q3k (@q3k@hackerspace.pl)" . نادي وارسو هاكرز سبيس الاجتماعي . 31 يناير 2023. تم الاطلاع عليه في 13 فبراير 2023. يعمل
برنامج تشغيل DRM/KMS الآن بكامل طاقته، على الرغم من أنه لا يزال بدون DMA. وهو مكتوب بلغة Rust، مع أنه مليء في الغالب بكتل برمجية خام غير آمنة.
- ↑ "q3k (@q3k@hackerspace.pl)" . نادي وارسو هاكرز سبيس الاجتماعي . 31 يناير 2023. تم الاطلاع عليه في 13 فبراير 2023. الأمر
الرائع هو أنه بما أن لدينا برنامج تشغيل DRM/KMS "عادي" (وبمساعدة من @emersion@hackerspace.pl)، يمكننا ببساطة القيام بأشياء مثل... تشغيل Wayland! Weston على جهاز iPod Nano 5G.
- 1 2 3 4 5 6 7 بارنز، جيسي؛ بينشارت، لوران؛ فيتر، دانيال؛ وونر، لوكاس. "دليل مطوري برامج تشغيل وحدة معالجة الرسومات في لينكس - تهيئة وتنظيف KMS" . تم الاطلاع عليه بتاريخ 31 أغسطس 2016 .
- 1 2 "بطاقات الفيديو" . ويكي X.Org . تم الاطلاع عليه بتاريخ 11 أبريل 2016 .
- 1 2 دويشر، أليكس (15 أبريل 2010). "ملاحظات حول أجهزة عرض راديون" . مؤرشف من الأصل في 5 أبريل 2016. تم الاطلاع عليه في 8 أبريل 2016 .
- 1 2 3 4 5 فيتر، دانيال (5 أغسطس 2015). "نظرة عامة على تصميم إعداد الوضع الذري، الجزء 1" . LWN.net . تم الاطلاع عليه في 7 مايو 2016 .
- 1 2 ريدينغ، تيري (1 فبراير 2015). "ضبط الوضع الذري" (ملف PDF) . أرشيفات FOSDEM . تم الاطلاع عليه في 7 مايو 2016 .
- ↑ فيتر، دانيال (12 أغسطس 2015). "نظرة عامة على تصميم إعداد الوضع الذري، الجزء 2" . LWN.net . تم الاطلاع عليه في 7 مايو 2016 .
- 1 2 3 هيرمان، ديفيد (29 مايو 2013). "عقد عرض DRM وعقد وضعيات العرض" . تم الاسترجاع في 21 يوليو 2014 .
- 1 2 3 4 بارنز، جيسي؛ بينشارت، لوران؛ فيتر، دانيال؛ وونر، لوكاس. "دليل مطوري برامج تشغيل وحدة معالجة الرسومات في لينكس - عقد العرض" . تم الاطلاع عليه بتاريخ 31 أغسطس 2016 .
- 1 2 ديوشر، أليكس (20 أبريل 2015). "الإصدار الأولي لبرنامج تشغيل amdgpu" . dri-devel (قائمة بريدية).
- 1 2 "لينكس 2.6.33 - نوفو، برنامج تشغيل لبطاقات رسومات إنفيديا" . مبتدئو نواة لينكس . تم الاطلاع عليه بتاريخ 26 أبريل 2016 .
- 1 2 "drm/nouveau: إضافة برنامج تشغيل DRM لوحدات معالجة الرسومات NVIDIA" . Kernel.org . تم الاطلاع عليه بتاريخ 27 يناير 2015 .
- ↑ "DRM: إضافة برنامج تشغيل DRM لمعالج سامسونج EXYNOS4210" . Kernel.org . تم الاطلاع عليه بتاريخ 3 مارس 2016 .
- ↑ "vmwgfx: إزالة برنامج التشغيل من مرحلة الإعداد" . Kernel.org . تم الاطلاع عليه بتاريخ 3 مارس 2016 .
- ↑ "Linux 3.3 - DriverArch - Graphics" . مبتدئو نواة لينكس . تم الاطلاع عليه بتاريخ 3 مارس 2016 .
- ↑ لارابيل، مايكل (10 يناير 2012). "تحديث نظام إدارة الحقوق الرقمية لنظام لينكس 3.3 غني بالتحسينات" . فورونيكس . تم الاطلاع عليه في 3 مارس 2016 .
- ↑ "drm: برنامج تشغيل KMS الأولي لسلسلة AST (ASpeed Technologies) 2000 (الإصدار 2)" . Kernel.org . تم الاطلاع عليه في 3 مارس 2016 .
- ↑ إيرلي، ديف (17 مايو 2012). "mgag200: برنامج تشغيل g200se الأولي (الإصدار 2)" . تم الاطلاع عليه بتاريخ 24 يناير 2018 .
- ↑ "drm: برنامج تشغيل Renesas SH Mobile DRM" . Kernel.org . تم الاطلاع عليه في 3 مارس 2016 .
- ↑ "drm: إضافة دعم NVIDIA Tegra20" . Kernel.org . تم الاطلاع عليه في 3 مارس 2016 .
- ↑ "drm/omap: الانتقال من مرحلة الاختبار" . Kernel.org . تم الاطلاع عليه بتاريخ 3 مارس 2016 .
- ↑ "drm: برنامج تشغيل وحدة عرض Renesas R-Car DRM" . Kernel.org . تم الاطلاع عليه في 3 مارس 2016 .
- ↑ "drm/msm: برنامج تشغيل KMS أساسي لمعالج سنابدراغون" . Kernel.org . تم الاطلاع عليه بتاريخ 3 مارس 2016 .
- ↑ لارابيل، مايكل (28 أغسطس 2013). "دمج برنامج تشغيل سنابدراغون DRM/KMS لنظام لينكس 3.12" . فورونيكس . تم الاطلاع عليه بتاريخ 26 يناير 2015 .
- ↑ إيدج، جيك (8 أبريل 2015). "تحديث حول برنامج تشغيل الرسومات freedreno" . LWN.net . تم الاطلاع عليه بتاريخ 23 أبريل 2015 .
- ↑ كينغ، راسل (18 أكتوبر 2013). " [ سحب من جيت ] دعم Armada DRM" . dri-devel (قائمة بريدية).
- ↑ "DRM: Armada: إضافة برنامج تشغيل Armada DRM" . Kernel.org . تم الاطلاع عليه في 3 مارس 2016 .
- ↑ "drm/bochs: برنامج تشغيل جديد" . Kernel.org . تم الاطلاع عليه في 3 مارس 2016 .
- ↑ لارابيل، مايكل (8 أغسطس 2014). "إصدار لينكس 3.17 بتقنية إدارة الحقوق الرقمية يجلب برنامج تشغيل رسومات جديد" . فورونيكس . تم الاطلاع عليه في 3 مارس 2016 .
- 1 2 كوربيت، جوناثان (13 أغسطس 2014). "3.17 نافذة الدمج، الجزء 2" . LWN.net . تم الاطلاع عليه في 7 أكتوبر 2014 .
- 1 2 كوربيت، جوناثان (17 ديسمبر 2014). "3.19 دمج النافذة الجزء 2" . LWN.net . تم الاسترجاع في 9 فبراير 2015 .
- ↑ "drm: imx: نقل برنامج تشغيل imx-drm من بيئة الاختبار" . Kernel.org . تم الاطلاع عليه بتاريخ 9 فبراير 2015 .
- ↑ "drm: rockchip: إضافة برنامج تشغيل أساسي لتقنية إدارة الحقوق الرقمية" . Kernel.org . تم الاطلاع عليه في 3 مارس 2016 .
- ↑ لارابيل، مايكل (25 يونيو 2015). "تحديثات نظام إدارة الحقوق الرقمية في لينكس 4.2: اهتمام كبير من AMD، لا تغييرات في برنامج تشغيل Nouveau" . فورونيكس . تم الاطلاع عليه في 31 أغسطس 2015 .
- ↑ كوربيت، جوناثان (1 يوليو 2015). "4.2 نافذة الدمج الجزء 2" . LWN.net . تم الاطلاع عليه بتاريخ 31 أغسطس 2015 .
- ↑ دويشر، أليكس (3 أغسطس 2015). " [ التحديث 00/11 ] إضافة دعم فيجي" . dri-devel (قائمة بريدية).
- ↑ "إضافة برنامج تشغيل وحدة معالجة الرسومات virtio" . Kernel.org . تم الاطلاع عليه في 3 مارس 2016 .
- ↑ كوربيت، جوناثان (11 نوفمبر 2015). "4.4 نافذة الدمج، الجزء 1" . LWN.net . تم الاطلاع عليه في 11 يناير 2016 .
- ↑ لارابيل، مايكل (15 نوفمبر 2015). "نظرة على الميزات الجديدة لنواة لينكس 4.4" . فورونيكس . تم الاطلاع عليه في 11 يناير 2016 .
- ↑ "drm/vc4: إضافة دعم KMS لـ Raspberry Pi" . Kernel.org .
- ↑ لارابيل، مايكل (24 يناير 2016). "الميزات والتحسينات الجديدة العديدة لنواة لينكس 4.5" . فورونيكس . تم الاطلاع عليه في 14 مارس 2016 .
- ↑ كوربيت، جوناثان (20 يناير 2016). "4.5 نافذة الدمج الجزء 2" . LWN.Net . تم الاطلاع عليه في 14 مارس 2016 .
- ↑ "دمج الوسم 'sun4i-drm-for-4.7'"" . Kernel.org .
- 1 2 3 إيرلي، ديف (23 مايو 2016). " [ git pull ] drm for v4.7" . dri-devel (قائمة بريدية).
- ↑ "دمج الوسم 'drm-hisilicon-next-2016-04-29'"" . Kernel.org .
- ↑ "دمج الوسم 'mediatek-drm-2016-05-09'"" . Kernel.org .
- ↑ لارابيل، مايكل (22 نوفمبر 2016). "إضافة برنامج تشغيل Hisilicon Hibmc DRM لنظام Linux 4.10" . فورونيكس . تم الاطلاع عليه بتاريخ 24 يناير 2018 .
- ↑ "الورقة التقنية لخادم هواوي فيوجن سيرفر RH5885 الإصدار 3" . 18 نوفمبر 2016. مؤرشفة من الأصل في 25 يناير 2018.
يستخدم شريحة عرض مدمجة في شريحة الإدارة Hi1710، ويستخدم نواة الملكية الفكرية الخاصة بـ SM750.
- ↑ "drm/vkms: تقديم برنامج تشغيل VKMS الأساسي" . git.kernel.org . تم الاسترجاع في 2022-07-20 .
- ↑ لارابيل، مايكل (15 أغسطس 2018). "إضافة برنامج تشغيل ضبط وضع النواة الافتراضية إلى لينكس 4.19" . فورونيكس . تم الاطلاع عليه في 20 يوليو 2022 .
- ↑ "drm/lima: برنامج تشغيل لوحدات معالجة الرسومات ARM Mali4xx" . git.kernel.org . تم الاطلاع عليه بتاريخ 28-11-2019 .
- 1 2 3 لارابيل، مايكل (9 مايو 2019). "نظام إدارة الحقوق الرقمية في لينكس 5.2 يجعل معالجات آيسليك جاهزة للإنتاج، ويضيف برامج تشغيل ليما وبانفروست" . فورونيكس . تم الاطلاع عليه في 20 يوليو 2022 .
- ↑ "drm/panfrost: إضافة برنامج تشغيل panfrost الأولي" . git.kernel.org . تم الاسترجاع في 28-11-2019 .
- ↑ "drm/vboxvideo: نقل برنامج تشغيل vboxvideo من بيئة الاختبار" . git.kernel.org . تم الاطلاع عليه بتاريخ 20 يوليو 2022 .
- ↑ "drm/hyperv: إضافة برنامج تشغيل DRM لجهاز الفيديو الاصطناعي لـ hyperv" . git.kernel.org . تم الاسترجاع في 30 أغسطس 2021 .
- ↑ لارابيل، مايكل (9 يونيو 2021). "برنامج تشغيل عرض Hyper-V DRM من مايكروسوفت سيصدر لنظام لينكس 5.14" . فورونيكس . تم الاطلاع عليه بتاريخ 30 أغسطس 2021 .
- ↑ "drm: إضافة برنامج تشغيل simpledrm" . git.kernel.org . تم الاطلاع عليه بتاريخ 30-08-2021 .
- ↑ لارابيل، مايكل (13 مايو 2021). "لينكس 5.14 يُضيف برنامج تشغيل SimpleDRM، وVC4 HDR، ويُصنّف المزيد من أكواد AGP على أنها قديمة" . فورونيكس . تم الاطلاع عليه في 30 أغسطس 2021 .
- ↑ "drm/ofdrm: إضافة ofdrm لإطارات Open Firmware" . git.kernel.org . تم الاطلاع عليه بتاريخ 21 فبراير 2023 .
- ↑ لارابيل، مايكل (20 أكتوبر 2022). "برنامج تشغيل إدارة الحقوق الرقمية للبرامج الثابتة المفتوحة "OFDRM" لترتيب قوائم الانتظار لنظام لينكس 6.2" . فورونيكس . تم الاطلاع عليه في 21 فبراير 2023 .
- ↑ "drm: إضافة برنامج تشغيل kms لوحدة تحكم شاشة loongson" . git.kernel.org . تم الاطلاع عليه بتاريخ 23 فبراير 2024 .
- ↑ لارابيل، مايكل (13 يوليو 2023). "بدء طرح تحديثات برامج تشغيل الرسومات مفتوحة المصدر لنظام لينكس 6.6" . فورونيكس . تم الاطلاع عليه بتاريخ 23 فبراير 2024 .
- ↑ "drm/imagination: إضافة برنامج تشغيل PowerVR الأساسي" . git.kernel.org . تم الاطلاع عليه بتاريخ 27 مايو 2024 .
- ↑ لارابيل، مايكل (23 نوفمبر 2023). "سيتم طرح برنامج تشغيل وحدة معالجة الرسومات مفتوح المصدر من Imagineation PowerVR في نظام Linux 6.8" . فورونيكس . تم الاطلاع عليه بتاريخ 27 مايو 2024 .
- ↑ "drm/xe: تقديم برنامج تشغيل DRM جديد لوحدات معالجة الرسومات من Intel" . git.kernel.org . تم الاطلاع عليه بتاريخ 27 مايو 2024 .
- ↑ لارابيل، مايكل (15 ديسمبر 2023). "تقديم برنامج تشغيل رسومات النواة "Xe" الجديد من إنتل قبل إصدار لينكس 6.8" . فورونيكس . تم الاطلاع عليه بتاريخ 27 مايو 2024 .
- ↑ "دمج الوسم 'drm-misc-next-2024-03-28' في drm-next" . git.kernel.org . تم الاطلاع عليه في 3 أغسطس 2025.
إضافة برنامج تشغيل drm/panthor ومجموعة متنوعة من الإصلاحات.
- ↑ لارابيل، مايكل (26 مارس 2024). "برنامج تشغيل Pantho DRM مُدرج في قائمة انتظار Linux 6.10 لدعم وحدات معالجة الرسومات Arm Mali الأحدث" . Phoronix . تم الاطلاع عليه في 3 أغسطس 2025 .
- ↑ "drm/sysfb: إضافة efidrm لشاشات EFI" . git.kernel.org . تم الاطلاع عليه في 3 أغسطس 2025 .
- 1 2 لارابيل، مايكل (10 أبريل 2025). "بدء إدراج تغييرات برامج تشغيل الرسومات/الشاشة في قائمة انتظار لينكس 6.16 هذا الصيف" . فورونيكس . تم الاطلاع عليه في 3 أغسطس 2025 .
- ↑ "drm/sysfb: إضافة vesadrm لشاشات VESA" . git.kernel.org . تم الاطلاع عليه في 3 أغسطس 2025 .
- ↑ "drm: إزالة برنامج تشغيل جاما" . Kernel.org . تم الاطلاع عليه بتاريخ 27 يناير 2015 .
- ↑ " [ DRM ] : حذف كود برنامج تشغيل sparc64 FFB الذي لا يتم بناؤه مطلقًا" . Kernel.org . تم الاطلاع عليه بتاريخ 27 يناير 2015 .
- ↑ "drm: إزالة برنامج التشغيل القديم driver-tdfx" . Kernel.org . تم الاطلاع عليه بتاريخ 23 فبراير 2024 .
- ↑ "drm: إزالة برنامج التشغيل القديم driver-mga" . Kernel.org . تم الاطلاع عليه بتاريخ 23 فبراير 2024 .
- ↑ "drm: إزالة برنامج التشغيل القديم driver-r128" . Kernel.org . تم الاطلاع عليه بتاريخ 23 فبراير 2024 .
- ↑ "drm: إزالة برنامج التشغيل القديم i810" . Kernel.org . تم الاطلاع عليه بتاريخ 23 فبراير 2024 .
- ↑ "drm: إزالة برنامج التشغيل القديم driver-sis" . Kernel.org . تم الاطلاع عليه بتاريخ 23 فبراير 2024 .
- ↑ "drm: إزالة برنامج تشغيل i830" . Kernel.org . تم الاطلاع عليه بتاريخ 27 يناير 2015 .
- ↑ "drm: إضافة عبر دعم يونيكروم" . Kernel.org . تم الاطلاع عليه بتاريخ 27 يناير 2015 .
- ↑ "drm: إزالة برنامج التشغيل القديم - via" . Kernel.org . تم الاطلاع عليه بتاريخ 23 فبراير 2024 .
- ↑ "drm: إضافة برنامج تشغيل savage" . Kernel.org . تم الاطلاع عليه بتاريخ 27 يناير 2015 .
- ↑ "drm: إزالة برنامج التشغيل القديم driver-savage" . Kernel.org . تم الاطلاع عليه بتاريخ 23 فبراير 2024 .
- ↑ "قائمة القائمين على صيانة نواة لينكس" . Kernel.org . تم الاطلاع عليه بتاريخ 14 يوليو 2014 .
- ↑ "مستودع libdrm git" . تم الاطلاع عليه بتاريخ 23 يوليو 2014 .
- ↑ "أول إصدار من برنامج تشغيل 3dfx بتقنية DRI" . ميسا 3D . تم الاطلاع عليه بتاريخ 15 يوليو 2014 .
- ↑ "استيراد 2.3.18pre1" . تاريخ لينكس في تنسيق مستودع GIT 1992-2010 (2010) . تم الاطلاع عليه بتاريخ 15 يوليو 2014 .
- ↑ تورفالدز، لينوس. "شفرة مصدر لينكس 2.4.0" . Kernel.org . تم الاطلاع عليه بتاريخ 29 يوليو 2014 .
- ↑ إيرلي، ديف (30 ديسمبر 2004). " [ سحب bk ] فصل النواة/الشخصية في نظام إدارة الحقوق الرقمية" . نواة لينكس (قائمة بريدية).
- ↑ تورفالدز، لينوس (11 يناير 2005). "لينكس 2.6.11-rc1" . linux-kernel (قائمة بريدية).
- ↑ جيتيس، جيمس؛ باكارد، كيث (15 يونيو 2004). "إعادة هندسة نظام النوافذ X" . تم الاطلاع عليه بتاريخ 30 أبريل 2016 .
- ↑ سميرل، جون (30 أغسطس 2005). " حالة رسومات لينكس" . تم الاطلاع عليه في 30 أبريل 2016.
أعتقد أن الحل الأمثل لهذه المشكلة هو أن توفر نواة النظام برنامج تشغيل جهاز واحد وشامل لكل قطعة من مكونات الفيديو. هذا يعني ضرورة دمج برامج التشغيل المتضاربة، مثل fbdev وDRM، في نظام واحد متكامل. كما يعني أيضًا منع الوصول إلى مكونات الجهاز من مساحة المستخدم أثناء تحميل برنامج تشغيل جهاز قائم على النواة.
- ↑ فيرهاجن، لوك (2 مارس 2006). "X وإعدادات الوضع: الضمور موضح" (ملف PDF) . تم الاطلاع عليه في 30 أبريل 2016 .
- ↑ غليس، جيروم (4 ديسمبر 2007). "إعدادات وضع نواة راديون" . تم الاسترجاع في 30 أبريل 2016 .
- ↑ لارابيل، مايكل (1 أكتوبر 2008). "حالة ضبط وضع النواة" . فورونيكس . تم الاسترجاع في 30 أبريل 2016 .
- ↑ باكارد، كيث (21 يوليو 2008). "حالة مخرجات X يوليو 2008" . تم الاسترجاع في 1 مايو 2016 .
- ↑ "drm: إعادة تنظيم شجرة drm لتكون أكثر مقاومة للمستقبل" . Kernel.org .
- ↑ "لينكس 2.6.28 - مدير ذاكرة GEM لذاكرة وحدة معالجة الرسومات" . مبتدئو نواة لينكس . تم الاطلاع عليه بتاريخ 23 يوليو 2014 .
- ↑ "drm: إضافة النظام الفرعي لإدارة ذاكرة وحدة معالجة الرسومات TTM" . Kernel.org .
- ↑ "DRM: إضافة دعم إعداد الوضع" . Kernel.org .
- ↑ "DRM: i915: إضافة دعم إعداد الوضع" . Kernel.org .
- ↑ أنهولت، إريك (22 ديسمبر 2008). " [ إعلان ] libdrm-2.4.3" . dri-devel (قائمة بريدية).
- ↑ بارنز، جيسي (20 أكتوبر 2008). " [ إعلان ] xf86-video-intel 2.5.0" . xorg-announce (قائمة بريدية).
- ↑ "لينكس 2.6.31 - دعم إعداد وضع النواة لبطاقة ATI Radeon" . موقع Linux Kernel Newbies . مؤرشف من الأصل بتاريخ 5 نوفمبر 2015. تم الاطلاع عليه بتاريخ 28 أبريل 2016 .
- ↑ تورفالدز، لينوس (9 سبتمبر 2009). "لينكس 2.6.31" . linux-kernel (قائمة بريدية).
- ↑ "drm/radeon: تقديم وضع ضبط النواة لأجهزة radeon" . Kernel.org .
- ↑ "دليل التنمية غير المنتظمة للنمط الجديد #40" . مشروع نوفو . تم الاطلاع عليه بتاريخ 3 مايو 2016 .
- ↑ "لينكس 2.6.33 - تحسينات رسومية" . موقع "مبتدئو نواة لينكس " . تم الاطلاع عليه بتاريخ 28 أبريل 2016 .
- ↑ "drm/kms: إضافة ioctl لقلب الصفحات" . Kernel.org .
- ↑ "Linux 2.6.38 - Graphics" . مبتدئو نواة لينكس . تم الاطلاع عليه بتاريخ 28 أبريل 2016 .
- ↑ إيرلي، ديف (21 ديسمبر 2009). " [ إعلان ] libdrm 2.4.17" . dri-devel (قائمة بريدية).
- ↑ "drm: dumb scanout create/mmap for intel/radeon (v3)" . Kernel.org .
- ↑ "Linux 2 6 39-DriversArch" . مبتدئو نواة لينكس . تم الاطلاع عليه بتاريخ 19 أبريل 2016 .
- ↑ بارنز، جيسي؛ بينشارت، لوران؛ فيتر، دانيال؛ وونر، لوكاس. "دليل مطوري برامج تشغيل وحدة معالجة الرسومات في لينكس - كائنات المخزن المؤقت البسيطة" . تم الاطلاع عليه بتاريخ 31 أغسطس 2016 .
- ↑ ويلسون، كريس (11 أبريل 2011). " [ إعلان ] libdrm 2.4.25" . dri-devel (قائمة بريدية).
- ↑ بارنز، جيسي (25 أبريل 2011). " [ RFC ] drm: إضافة الطبقات ككائنات KMS من الدرجة الأولى" . dri-devel (قائمة بريدية).
- ↑ بارنز، جيسي (13 مايو 2011). " [ RFC ] drm: إضافة الطبقات ككائنات KMS من الدرجة الأولى" . dri-devel (قائمة بريدية).
- ↑ "drm: إضافة دعم الطائرة الإصدار 3" . Kernel.org .
- ↑ "drm: إضافة أوامر ioctl عامة للحصول على/تعيين خصائص أي كائن" . Kernel.org .
- ↑ ويداوسكي، بن (27 يونيو 2012). " [ إعلان ] libdrm 2.4.36" . xorg-announce (قائمة بريدية).
- ↑ لارابيل، مايكل. "إثبات المفهوم: عرض متعدد وحدات معالجة الرسومات مفتوح المصدر!" . فورونيكس . تم الاسترجاع في 14 أبريل 2016 .
- ↑ لارابيل، مايكل (23 فبراير 2012). "دعم DRM Base PRIME جزء من عمل VGEM" . فورونيكس . تم الاسترجاع في 14 أبريل 2016 .
- ↑ إيرلي، ديف (27 مارس 2012). " [ رقعة ] drm: دعم base prime/dma-buf (الإصدار 5)" . dri-devel (قائمة بريدية).
- ↑ لارابيل، مايكل (30 مارس 2012). "آخر التحديثات لنظام لينكس 3.4: دعم DMA-BUF PRIME" . فورونيكس . تم الاطلاع عليه بتاريخ 15 أبريل 2016 .
- ↑ "drm: دعم قاعدة البيانات الأولية/dma-buf (الإصدار 5)" . Kernel.org .
- ↑ "Linux 3.4 DriverArch" . مبتدئو نواة لينكس . تم الاطلاع عليه بتاريخ 15 أبريل 2016 .
- ↑ أنهولت، إريك (10 مايو 2012). " [ إعلان ] libdrm 2.4.34" . dri-devel (قائمة بريدية).
- ↑ لارابيل، مايكل (12 مايو 2012). "DMA-BUF PRIME يجتمعان معًا لنظام لينكس 3.5" . فورونيكس . تم الاطلاع عليه في 15 أبريل 2016 .
- ↑ "Linux 3.5 DriverArch" . مبتدئو نواة لينكس . تم الاطلاع عليه بتاريخ 15 أبريل 2016 .
- ↑ كوربيت، جوناثان (11 سبتمبر 2013). "نافذة الدمج 3.12، الجزء 2" . LWN.net . تم الاطلاع عليه بتاريخ 21 يوليو 2014 .
- ↑ "drm: تنفيذ عقد العرض التجريبية" . Kernel.org .
- ↑ "drm/i915: دعم عقد العرض" . Kernel.org .
- ↑ "drm/radeon: دعم عقد العرض" . Kernel.org .
- ↑ "drm/nouveau: دعم عقد العرض" . Kernel.org .
- ↑ روبر، مات (7 مارس 2014). " [ RFCv2 00/10 ] دعم المستوى العالمي" . dri-devel (قائمة بريدية).
- ↑ لارابيل، مايكل (2 أبريل 2014). "مجموعة دعم Universal Plane لنظام Linux 3.15" . فورونيكس . تم الاطلاع عليه في 14 أبريل 2016 .
- ^ لانخورست ، مارتن (25 يوليو 2014). " [ إعلان ] libdrm 2.4.55" . dri-devel (القائمة البريدية).
- 1 2 فيتر، دانيال (7 أغسطس 2014). "أشياء رائعة مقابل 3.17" . تم الاسترجاع في 14 أبريل 2016 .
- ↑ بارنز، جيسي (15 فبراير 2012). " [ RFC ] drm: واجهة برمجة تطبيقات ضبط الوضع الذري" . dri-devel (قائمة بريدية).
- ↑ سيرجالا، فيل (24 مايو 2012). " [ RFC ] [ PATCH 0/6 ] WIP: drm: فكرة إعداد الوضع الذري" . dri-devel (قائمة بريدية).
- ↑ كلارك، روب (9 سبتمبر 2012). " [ RFC 0/9 ] تقليب الصفحات النووي" . dri-devel (قائمة بريدية).
- ↑ كلارك، روب (6 أكتوبر 2013). " [ RFCv1 00/12 ] وضع الذرات/النووية/قلب الصفحة" . dri-devel (قائمة بريدية).
- ↑ فيتر، دانيال (3 فبراير 2016). "احتضن عصر العرض الذري" (ملف PDF) . تم الاطلاع عليه في 4 مايو 2016 .
- ↑ فيتر، دانيال (2 نوفمبر 2014). "دعم وضع التشغيل الذري لبرامج تشغيل KMS" . تم الاسترجاع في 4 مايو 2016 .
- ↑ إيرلي، ديف (14 ديسمبر 2014). " [ git pull ] drm for 3.19-rc1" . dri-devel (قائمة بريدية).
- ↑ فيتر، دانيال (28 يناير 2015). "تحديث لتحديثات شاشة العرض الذرية" . تم الاسترجاع في 4 مايو 2016 .
- ↑ إيرلي، ديف (15 فبراير 2015). " [ git pull ] drm pull for 3.20-rc1" . dri-devel (قائمة بريدية).
- ↑ "لينكس 4.0 - DriverArch - Graphics" . مبتدئو نواة لينكس . تم الاطلاع عليه بتاريخ 3 مايو 2016 .
- ↑ "لينكس 4.2 - واجهة برمجة تطبيقات Atomic modesetting مُفعّلة افتراضيًا" . مبتدئو نواة لينكس . تم الاطلاع عليه في 3 مايو 2016 .
- ↑ فيليكوف، إميل (29 يونيو 2015). " [ إعلان ] libdrm 2.4.62" . dri-devel (قائمة بريدية).
- ↑ فيتر، دانيال (6 يونيو 2016). "تطورات ذرية مذهلة" . تم الاطلاع عليه في 7 يونيو 2016.
يوجد حاليًا 17 برنامج تشغيل يدعم وضع العرض الذري مدمجًا في النظام الفرعي لإدارة الحقوق الرقمية (DRM)
. - ↑ ستون، دانيال (20 مارس 2018). "عصر جديد لرسومات لينكس منخفضة المستوى - الجزء 1" . تم الاطلاع عليه في 5 مايو 2018 .
- ↑ هيرمان، ديفيد (10 ديسمبر 2012). "مقدمة عن KMSCON" . تم الاطلاع عليه بتاريخ 22 نوفمبر 2015 .
- ↑ "برنامج تشغيل Linux وSolaris وFreeBSD الإصدار 358.09 (تجريبي)" . 2015-12-10.
روابط خارجية
- الصفحة الرئيسية لنظام إدارة الحقوق الرقمية (DRM)
- دليل مطوري برامج تشغيل وحدة معالجة الرسومات لنظام لينكس (سابقًا دليل مطوري إدارة الحقوق الرقمية لنظام لينكس )
- مؤتمر لينكس المدمج 2013 - تشريح برنامج تشغيل KMS المدمج على يوتيوب
- البنية التحتية للعرض المباشر
- واجهات نواة لينكس
- ميزات نواة لينكس
- برامج تشغيل لينكس
