Direct Rendering Manager
ڈائریکٹ رینڈرنگ مینیجر (ڈی آر ایم) لینکس کرنل کا ایک ذیلی نظام ہے جو جدید ویڈیو کارڈز کے جی پی یو کے ساتھ انٹرفیس کرنے کا ذمہ دار ہے۔ ڈی آر ایم ایک اے پی آئی کو بے نقاب کرتا ہے جسے یوزر اسپیس پروگرام جی پی یو کو کمانڈز اور ڈیٹا بھیجنے اور ڈسپلے کی موڈ سیٹنگ کو ترتیب دینے جیسے آپریشن انجام دینے کے لیے استعمال کر سکتے ہیں۔ ڈی آر ایم کو سب سے پہلے ایکس سرور ڈائریکٹ رینڈرنگ انفراسٹرکچر کے کرنل اسپیس جزو کے طور پر تیار کیا گیا تھا، لیکن اس کے بعد سے اسے دیگر گرافک اسٹیک متبادل جیسے ویلینڈ اور اسٹینڈ لون ایپلی کیشنز اور لائبریریوں جیسے ایس ڈی ایل 2 اور کوڈی کے ذریعے استعمال کیا گیا ہے۔ یوزر اسپیس پروگرام ڈی آر ایم اے پی آئی کا استعمال کر کے جی پی یو کو ہارڈ ویئر ایکسلریٹڈ 3 ڈی رینڈرنگ اور ویڈیو ڈیکوڈنگ کے ساتھ ساتھ جی پی جی پی یو کمپیوٹنگ کرنے کا حکم دے سکتے ہیں۔ جائزہ لینکس کرنل میں پہلے سے ہی ایف بی ڈی وی نامی ایک اے پی آئی تھا، جو گرافکس اڈاپٹر کے فریم بفر کو سنبھالنے کے لیے استعمال ہوتا تھا، لیکن اسے جدید 3 ڈی تیز رفتار جی پی یو پر مبنی ویڈیو ہارڈ ویئر کی ضروریات کو سنبھالنے کے لیے استعمال نہیں کیا جا سکا۔ ان آلات کو عام طور پر جی پی یو کو کمانڈ بھیجنے کے لیے اپنی میموری میں کمانڈ قطار کی ترتیب اور انتظام کی ضرورت ہوتی ہے اور اس میموری کے اندر بفرز اور خالی جگہ کے انتظام کی بھی ضرورت ہوتی ہے۔ ابتدائی طور پر، یوزر اسپیس پروگرام (جیسے ایکس سرور) براہ راست ان وسائل کا انتظام کرتے تھے، لیکن وہ عام طور پر اس طرح کام کرتے تھے جیسے ان تک رسائی حاصل کرنے والے صرف وہی ہوں۔ جب دو یا دو سے زیادہ پروگرام ایک ہی وقت میں ایک ہی ہارڈ ویئر کو کنٹرول کرنے کی کوشش کرتے ہیں، اور اپنے وسائل کو ہر ایک کو اپنے طریقے سے ترتیب دیتے ہیں، تو زیادہ تر اوقات وہ تباہ کن طور پر ختم ہو جاتے ہیں۔ ڈائریکٹ رینڈرنگ مینیجر متعدد پروگراموں کو ویڈیو ہارڈ ویئر کے وسائل کو باہمی تعاون سے استعمال کرنے کی اجازت دینے کے لیے بنایا گیا تھا۔ ڈی آر ایم کو جی پی یو تک خصوصی رسائی حاصل ہوتی ہے اور وہ کمانڈ قطار، میموری، اور کسی بھی دوسرے ہارڈ ویئر وسائل کو شروع کرنے اور برقرار رکھنے کا ذمہ دار ہوتا ہے۔ جی پی یو استعمال کرنے کے خواہش مند پروگرام ڈی آر ایم کو درخواستیں بھیجتے ہیں، جو ثالث کے طور پر کام کرتا ہے اور ممکنہ تنازعات سے بچنے کا خیال رکھتا ہے۔ ڈی آر ایم کے دائرہ کار کو سالوں کے دوران مزید فعالیت کا احاطہ کرنے کے لیے بڑھایا گیا ہے جو پہلے یوزر اسپیس پروگراموں کے ذریعے سنبھالا جاتا تھا، جیسے کہ فریم بفر مینجمنٹ اور موڈ سیٹنگ، میموری شیئرنگ آبجیکٹ اور میموری سنکرونائزیشن۔ ان میں سے کچھ توسیعات کو مخصوص نام دیے گئے تھے، جیسے کہ گرافکس ایگزیکیوشن مینیجر (جی ای ایم) یا کرنل موڈ سیٹنگ (کے ایم ایس)، اور اصطلاحات اس وقت رائج ہوتی ہیں جب ان کی فراہم کردہ فعالیت کا خاص طور پر اشارہ کیا جاتا ہے۔ لیکن وہ واقعی پورے دانا ڈی آر ایم ذیلی نظام کے حصے ہیں۔ کمپیوٹر میں دو جی پی یوز کو شامل کرنے کا رجحان-ایک مجرد جی پی یو اور ایک مربوط جی پی یو-جی پی یو سوئچنگ جیسے نئے مسائل کا باعث بنا جسے ڈی آر ایم پرت پر بھی حل کرنے کی ضرورت تھی۔ این ویڈیا آپٹیمس ٹیکنالوجی سے ملنے کے لیے، ڈی آر ایم کو جی پی یو آف لوڈنگ کی صلاحیتیں فراہم کی گئیں، جسے پرائم کہا جاتا ہے۔ سافٹ ویئر فن تعمیر براہ راست رینڈرنگ مینیجر کرنل کی جگہ میں رہتا ہے، لہذا یوزر اسپیس پروگراموں کو اپنی خدمات کی درخواست کرنے کے لیے کرنل سسٹم کالز کا استعمال کرنا چاہیے۔ تاہم، ڈی آر ایم اپنی مرضی کے مطابق سسٹم کالز کی وضاحت نہیں کرتا ہے۔ اس کے بجائے، یہ/dev درجہ بندی کے تحت ڈیوائس فائلوں کا استعمال کرتے ہوئے فائل سسٹم کے نام کی جگہ کے ذریعے جی پی یوز کو بے نقاب کرنے کے لیے "سب کچھ ایک فائل ہے" کے یونکس اصول کی پیروی کرتا ہے۔ ڈی آر ایم کے ذریعے دریافت کیے گئے ہر جی پی یو کو ڈی آر ایم ڈیوائس کہا جاتا ہے، اور اس کے ساتھ انٹرفیس کرنے کے لیے ایک ڈیوائس فائل/ڈیو/ڈر/کارڈ ایکس (جہاں ایکس ایک ترتیب وار نمبر ہے) بنائی جاتی ہے۔ یوزر اسپیس پروگرام جو جی پی یو سے بات کرنا چاہتے ہیں انہیں اس فائل کو کھولنا چاہیے اور ڈی آر ایم کے ساتھ بات چیت کرنے کے لیے آئی او ٹی ایل کالز کا استعمال کرنا چاہیے۔ مختلف آئیوکٹلز ڈی آر ایم اے پی آئی کے مختلف افعال سے مطابقت رکھتے ہیں۔ ڈی آر ایم سب سسٹم کے ساتھ یوزر اسپیس پروگراموں کے انٹرفیس کو آسان بنانے کے لیے libdrm نامی ایک لائبریری بنائی گئی تھی۔ یہ لائبریری محض ایک ریپر ہے جو ڈی آر ایم اے پی آئی کے ہر آئیوکٹل کے ساتھ ساتھ مستقل، ڈھانچے اور دیگر مددگار عناصر کے لیے سی میں لکھا ہوا فنکشن فراہم کرتی ہے۔ libdrm کا استعمال نہ صرف دانا انٹرفیس کو براہ راست ایپلی کیشنز پر بے نقاب کرنے سے بچاتا ہے، بلکہ پروگراموں کے درمیان کوڈ کے دوبارہ استعمال اور اشتراک کے معمول کے فوائد پیش کرتا ہے۔ ڈی آر ایم دو حصوں پر مشتمل ہوتا ہے: ہر قسم کے معاون ہارڈ ویئر کے لیے ایک عام "ڈی آر ایم کور" اور ایک مخصوص ("ڈی آر ایم ڈرائیور")۔ ڈی آر ایم کور بنیادی فریم ورک فراہم کرتا ہے جہاں مختلف ڈی آر ایم ڈرائیور رجسٹر کر سکتے ہیں اور صارف کی جگہ کو عام، ہارڈ ویئر سے آزاد فعالیت کے ساتھ آئی اوکٹلز کا کم سے کم سیٹ بھی فراہم کرتا ہے۔ دوسری طرف، ایک ڈی آر ایم ڈرائیور، اے پی آئی کے ہارڈ ویئر پر منحصر حصے کو لاگو کرتا ہے، جو اس کی حمایت کرنے والے جی پی یو کی قسم کے لیے مخصوص ہے۔ اسے باقی آئی اوکٹلز کا نفاذ فراہم کرنا چاہیے جو ڈی آر ایم کور کے تحت نہیں آتے، لیکن یہ اے پی آئی کو بھی بڑھا سکتا ہے، جس میں اضافی آئی اوکٹلز پیش کیے جاتے ہیں جو صرف اس طرح کے ہارڈ ویئر پر دستیاب ہوتے ہیں۔ جب کوئی مخصوص ڈی آر ایم ڈرائیور ایک بہتر اے پی آئی فراہم کرتا ہے، تو یوزر اسپیس libdrm کو ایک اضافی لائبریری libdrm-ڈرائیور کے ذریعے بھی بڑھایا جاتا ہے جسے صارف کی جگہ اضافی ioctls کے ساتھ انٹرفیس کرنے کے لیے استعمال کر سکتی ہے۔ اے پی آئی ڈی آر ایم کور کئی انٹرفیس کو یوزر اسپیس ایپلی کیشنز کو برآمد کرتا ہے، عام طور پر اسی libdrm ریپر افعال کے ذریعے استعمال کرنے کا ارادہ رکھتا ہے۔ اس کے علاوہ، ڈرائیورز آئی اوکٹلز اور ایس آئی ایس ایف ایس فائلوں کے ذریعے یوزر اسپیس ڈرائیوروں اور ڈیوائس سے آگاہ ایپلی کیشنز کے استعمال کے لیے ڈیوائس سے متعلق مخصوص انٹرفیس برآمد کرتے ہیں۔ بیرونی انٹرفیس میں شامل ہیں: میموری میپنگ، سیاق و سباق کا انتظام، ڈی ایم اے آپریشنز، اے جی پی مینجمنٹ، وی بلینک کنٹرول، باڑ کا انتظام، میموری مینجمنٹ، اور آؤٹ پٹ مینجمنٹ۔ ڈی آر ایم-ماسٹر اور ڈی آر ایم-اتھ ڈی آر ایم اے پی آئی میں کئی آپریشنز (آئی اوکٹلز) ہیں جو یا تو حفاظتی مقاصد کے لیے یا ہم آہنگی کے مسائل کے لیے فی ڈیوائس ایک واحد یوزر اسپیس عمل کے ذریعے استعمال کرنے تک محدود ہونا چاہیے۔ اس پابندی کو نافذ کرنے کے لیے، ڈی آر ایم اس طرح کے آئیوکٹلز کو صرف اس عمل کے ذریعے استعمال کرنے تک محدود کرتا ہے جسے ڈی آر ایم ڈیوائس کا "ماسٹر" سمجھا جاتا ہے، جسے عام طور پر ڈی آر ایم-ماسٹر کہا جاتا ہے۔ تمام عملوں میں سے صرف ایک جس میں ڈیوائس نوڈ/ڈیو/ڈر/کارڈ ایکس کھلا ہو اس کے فائل ہینڈل کو ماسٹر کے طور پر نشان زد کیا جائے گا، خاص طور پر پہلا کالنگ ioctl۔ ڈی آر ایم-ماسٹر کے بغیر ان محدود آئیوکٹلز میں سے کسی ایک کو استعمال کرنے کی کوئی بھی کوشش غلطی کا جواب دے گی۔ ایک عمل بھی اپنے ماسٹر رول کو چھوڑ سکتا ہے-اور دوسرے عمل کو اسے حاصل کرنے دیتا ہے-ioctl کو کال کرکے۔ ایکس سرور-یا کوئی دوسرا ڈسپلے سرور-عام طور پر وہ عمل ہے جو اس کے زیر انتظام ہر ڈی آر ایم ڈیوائس میں ڈی آر ایم-ماسٹر کا درجہ حاصل کرتا ہے، عام طور پر جب یہ اپنے اسٹارٹ اپ کے دوران متعلقہ ڈیوائس نوڈ کھولتا ہے، اور ان مراعات کو پورے گرافیکل سیشن کے لیے اس وقت تک رکھتا ہے جب تک کہ یہ ختم یا مر نہ جائے۔ باقی یوزر اسپیس کے عمل کے لیے ڈی آر ایم ڈیوائس پر کچھ محدود کارروائیوں کو مدعو کرنے کا استحقاق حاصل کرنے کا ایک اور طریقہ ہے جسے ڈی آر ایم-اتھ کہا جاتا ہے۔ یہ بنیادی طور پر ڈی آر ایم ڈیوائس کے خلاف تصدیق کا ایک طریقہ ہے، تاکہ یہ ثابت کیا جا سکے کہ اس عمل کو اس طرح کے مراعات حاصل کرنے کے لیے ڈی آر ایم-ماسٹر کی منظوری حاصل ہے۔ طریقہ کار پر مشتمل ہوتا ہے: کلائنٹ کو آئی اوکٹل کا استعمال کرتے ہوئے ڈی آر ایم ڈیوائس سے ایک منفرد ٹوکن-ایک 32 بٹ انٹیجر-ملتا ہے اور اسے کسی بھی طرح سے ڈی آر ایم ماسٹر کے عمل میں منتقل کرتا ہے (عام طور پر کسی قسم کی آئی پی سی ؛ مثال کے طور پر، ڈی آر آئی 2 میں ایک درخواست ہوتی ہے کہ کوئی بھی ایکس کلائنٹ ایکس سرور کو بھیج سکتا ہے۔) ڈی آر ایم-ماسٹر عمل، بدلے میں، آئی او ٹی ایل کو مدعو کرکے ڈی آر ایم ڈیوائس کو ٹوکن واپس بھیجتا ہے۔ یہ آلہ پروسیس فائل ہینڈل کو خصوصی حقوق دیتا ہے جس کا مصنف ٹوکن ڈی آر ایم-ماسٹر سے موصولہ ٹوکن سے میل کھاتا ہے۔ گرافکس ایگزیکیوشن مینیجر ویڈیو میموری کے بڑھتے ہوئے سائز اور اوپن جی ایل جیسے گرافکس اے پی آئی کی بڑھتی ہوئی پیچیدگی کی وجہ سے، ہر سیاق و سباق کے سوئچ پر گرافکس کارڈ کی حالت کو دوبارہ شروع کرنے کی حکمت عملی بہت مہنگی، کارکردگی کے لحاظ سے تھی۔ نیز، جدید لینکس ڈیسک ٹاپس کو کمپوزٹنگ مینیجر کے ساتھ آف اسکرین بفرز شیئر کرنے کے لیے ایک بہترین طریقہ درکار تھا۔ ان ضروریات کی وجہ سے دانا کے اندر گرافکس بفر کو منظم کرنے کے نئے طریقے تیار ہوئے۔ گرافکس ایگزیکیوشن مینیجر (جی ای ایم) ان طریقوں میں سے ایک کے طور پر ابھرا۔ جی ای ایم ایک اے پی آئی فراہم کرتا ہے جس میں واضح میموری مینجمنٹ پرائمیٹوز ہوتے ہیں۔ جی ای ایم کے ذریعے، ایک یوزر اسپیس پروگرام جی پی یو ویڈیو میموری میں رہنے والی میموری اشیاء کو بنا سکتا ہے، سنبھال سکتا ہے اور تباہ کر سکتا ہے۔ یہ آبجیکٹ، جنہیں "جی ای ایم آبجیکٹ" کہا جاتا ہے، یوزر اسپیس پروگرام کے نقطہ نظر سے مستقل ہوتے ہیں اور جب بھی پروگرام جی پی یو کا کنٹرول دوبارہ حاصل کرتا ہے تو انہیں دوبارہ لوڈ کرنے کی ضرورت نہیں ہوتی ہے۔ جب کسی یوزر اسپیس پروگرام کو ویڈیو میموری کے ایک حصے کی ضرورت ہوتی ہے (فریم بفر، ساخت یا جی پی یو کے ذریعہ درکار کسی دوسرے ڈیٹا کو ذخیرہ کرنے کے لیے)، تو وہ جی ای ایم اے پی آئی کا استعمال کرتے ہوئے ڈی آر ایم ڈرائیور کو مختص کرنے کی درخواست کرتا ہے۔ ڈی آر ایم ڈرائیور استعمال شدہ ویڈیو میموری پر نظر رکھتا ہے اور اگر مفت میموری دستیاب ہے تو درخواست کی تعمیل کرنے کے قابل ہوتا ہے، آنے والی کارروائیوں میں مختص کردہ میموری کا مزید حوالہ دینے کے لیے صارف کی جگہ پر "ہینڈل" واپس کرتا ہے۔ جی ای ایم اے پی آئی بفر کو آباد کرنے اور ضرورت نہ ہونے پر اسے جاری کرنے کے لیے آپریشن بھی فراہم کرتا ہے۔ غیر ریلیز شدہ جی ای ایم ہینڈلز سے میموری بازیافت ہو جاتی ہے جب یوزر اسپیس کا عمل ڈی آر ایم ڈیوائس فائل ڈسکرپٹر کو بند کر دیتا ہے-جان بوجھ کر یا اس وجہ سے کہ یہ ختم ہو جاتا ہے۔ جی ای ایم کسی جی ای ایم آبجیکٹ کو شیئر کرنے کے لیے ایک ہی ڈی آر ایم ڈیوائس (اس لیے ایک ہی ڈی آر ایم ڈرائیور) کا استعمال کرتے ہوئے دو یا زیادہ یوزر اسپیس کے عمل کی بھی اجازت دیتا ہے۔ جی ای ایم ہینڈل مقامی 32 بٹ انٹیجر ہوتے ہیں جو کسی عمل کے لیے منفرد ہوتے ہیں لیکن دوسرے عمل میں دہرائے جا سکتے ہیں، اس لیے اشتراک کے لیے موزوں نہیں ہوتے۔ جس چیز کی ضرورت ہے وہ ایک عالمی نیم اسپیس ہے، اور جی ای ایم عالمی ہینڈلز کے استعمال کے ذریعے فراہم کرتا ہے جسے جی ای ایم نام کہتے ہیں۔ جی ای ایم نام سے مراد ایک، اور صرف ایک، جی ای ایم آبجیکٹ ہے جو ایک ہی ڈی آر ایم ڈیوائس کے اندر اسی ڈی آر ایم ڈرائیور کے ذریعہ، ایک منفرد 32 بٹ انٹیجر کا استعمال کرتے ہوئے بنایا گیا ہے۔ جی ای ایم ایک جی ای ایم ہینڈل سے جی ای ایم نام حاصل کرنے کے لیے ایک آپریشن فلینک فراہم کرتا ہے۔ اس کے بعد یہ عمل دستیاب کسی بھی آئی پی سی میکانزم کا استعمال کرتے ہوئے اس جی ای ایم نام (32 بٹ انٹیجر) کو دوسرے عمل میں منتقل کر سکتا ہے۔ جی ای ایم کا نام وصول کنندہ کے عمل کے ذریعے اصل جی ای ایم آبجیکٹ کی طرف اشارہ کرنے والے مقامی جی ای ایم ہینڈل کو حاصل کرنے کے لیے استعمال کیا جا سکتا ہے۔ بدقسمتی سے، بفر کا اشتراک کرنے کے لیے جی ای ایم ناموں کا استعمال محفوظ نہیں ہے۔ اسی ڈی آر ایم ڈیوائس تک رسائی حاصل کرنے والا ایک بدنیتی پر مبنی تھرڈ پارٹی عمل صرف 32 بٹ انٹیجرز کی جانچ کر کے دیگر دو عملوں کے اشتراک کردہ بفر کے جی ای ایم نام کا اندازہ لگانے کی کوشش کر سکتا ہے۔ ایک بار جی ای ایم کا نام مل جانے کے بعد، اس کے مندرجات تک رسائی اور ترمیم کی جا سکتی ہے، جس سے بفر کی معلومات کی رازداری اور سالمیت کی خلاف ورزی ہوتی ہے۔ اس خامی کو بعد میں ڈی آر ایم میں ڈی ایم اے-بی یو ایف سپورٹ کے تعارف سے دور کیا گیا، کیونکہ ڈی ایم اے-بی یو ایف یوزر اسپیس میں بفرز کو فائل ڈسکرپٹرز کے طور پر پیش کرتا ہے، جسے محفوظ طریقے سے شیئر کیا جا سکتا ہے۔ ویڈیو میموری کی جگہ کو سنبھالنے کے علاوہ کسی بھی ویڈیو میموری مینجمنٹ سسٹم کے لیے ایک اور اہم کام جی پی یو اور سی پی یو کے درمیان میموری سنکرونائزیشن کو سنبھالنا ہے۔ موجودہ میموری آرکیٹیکچرز بہت پیچیدہ ہیں اور عام طور پر سسٹم میموری کے لیے اور بعض اوقات ویڈیو میموری کے لیے بھی کیشے کی مختلف سطحیں شامل ہوتی ہیں۔ لہذا، ویڈیو میموری مینیجرز کو کیش کی ہم آہنگی کو بھی سنبھالنا چاہیے تاکہ یہ یقینی بنایا جا سکے کہ سی پی یو اور جی پی یو کے درمیان شیئر کیا گیا ڈیٹا مستقل ہے۔ اس کا مطلب یہ ہے کہ اکثر ویڈیو میموری مینجمنٹ انٹرنلز جی پی یو اور میموری فن تعمیر کی ہارڈ ویئر تفصیلات پر بہت زیادہ انحصار کرتے ہیں، اور اس طرح ڈرائیور مخصوص ہوتے ہیں۔ GEM کو ابتدائی طور پر انٹیل انجینئروں نے اپنے i915 ڈرائیور کے لیے ویڈیو میموری مینیجر فراہم کرنے کے لیے تیار کیا تھا۔ انٹیل جی ایم اے 9 ایکس ایکس فیملی یونیفارم میموری آرکیٹیکچر (یو ایم اے) کے ساتھ مربوط جی پی یو ہیں، جہاں جی پی یو اور سی پی یو فزیکل میموری کا اشتراک کرتے ہیں، اور کوئی وقف شدہ وی آر اے ایم نہیں ہے۔ جی ای ایم میموری مطابقت پذیری کے لیے "میموری ڈومینز" کی وضاحت کرتا ہے، اور اگرچہ یہ میموری ڈومینز جی پی یو سے آزاد ہیں، لیکن وہ خاص طور پر یو ایم اے میموری فن تعمیر کو ذہن میں رکھتے ہوئے ڈیزائن کیے گئے ہیں، جس سے وہ دیگر میموری آرکیٹیکچرز جیسے کہ علیحدہ وی آر اے ایم کے لیے کم موزوں ہو جاتے ہیں۔ اس وجہ سے، دوسرے ڈی آر ایم ڈرائیوروں نے جی ای ایم اے پی آئی کو یوزر اسپیس پروگراموں کے سامنے بے نقاب کرنے کا فیصلہ کیا ہے، لیکن اندرونی طور پر انہوں نے ایک مختلف میموری مینیجر کو نافذ کیا جو ان کے مخصوص ہارڈ ویئر اور میموری فن تعمیر کے لیے بہتر موزوں ہے۔ جی ای ایم اے پی آئی نفاذ کے بہاؤ (کمانڈ بفرز) کے کنٹرول کے لیے آئی اوکٹلز بھی فراہم کرتا ہے، لیکن وہ انٹیل کے لیے مخصوص ہیں، جنہیں انٹیل آئی 915 اور بعد کے جی پی یوز کے ساتھ استعمال کیا جائے گا۔ کسی دوسرے ڈی آر ایم ڈرائیور نے میموری مینجمنٹ مخصوص آئی اوکٹلز سے آگے جی ای ایم اے پی آئی کے کسی بھی حصے کو نافذ کرنے کی کوشش نہیں کی ہے۔ ترجمہ ٹیبل میپس ترجمہ ٹیبل میپس (ٹی ٹی ایم) جی پی یوز کے لیے عام میموری مینیجر کا نام ہے جو جی ای ایم سے پہلے تیار کیا گیا تھا۔ یہ خاص طور پر مختلف قسم کی میموری کا انتظام کرنے کے لیے ڈیزائن کیا گیا تھا جس تک جی پی یو رسائی حاصل کر سکتا ہے، بشمول وقف شدہ ویڈیو رام (عام طور پر ویڈیو کارڈ میں نصب) اور سسٹم میموری جو گرافکس ایڈریس ریمیپنگ ٹیبل (جی اے آر ٹی) نامی آئی/او میموری مینجمنٹ یونٹ کے ذریعے قابل رسائی ہے۔ ٹی ٹی ایم کو ویڈیو رام کے ان حصوں کو بھی سنبھالنا چاہیے جو سی پی یو کے ذریعے براہ راست ایڈریس کے قابل نہیں ہیں اور اسے بہترین ممکنہ کارکردگی کے ساتھ کرنا چاہیے، اس بات پر غور کرتے ہوئے کہ یوزر اسپیس گرافکس ایپلی کیشنز عام طور پر بڑی مقدار میں ویڈیو ڈیٹا کے ساتھ کام کرتی ہیں۔ ایک اور اہم معاملہ مختلف یادوں اور کیشز کے درمیان مستقل مزاجی کو برقرار رکھنا تھا۔ ٹی ٹی ایم کا بنیادی تصور "بفر آبجیکٹ" ہیں، ویڈیو میموری کے وہ علاقے جو کسی وقت جی پی یو کے ذریعے قابل توجہ ہونے چاہئیں۔ جب کوئی یوزر اسپیس گرافکس ایپلی کیشن کسی مخصوص بفر آبجیکٹ تک رسائی چاہتی ہے (عام طور پر اسے مواد سے بھرنے کے لیے)، تو ٹی ٹی ایم کو اسے سی پی یو کے ذریعے قابل ایڈریس میموری کی قسم میں منتقل کرنے کی ضرورت پڑ سکتی ہے۔ مزید نقل مکانی-یا جی اے آر ٹی میپنگ آپریشن-اس وقت ہو سکتا ہے جب جی پی یو کو بفر آبجیکٹ تک رسائی کی ضرورت ہو لیکن یہ ابھی تک جی پی یو کے ایڈریس اسپیس میں نہیں ہے۔ ان نقل مکانی کی کارروائیوں میں سے ہر ایک کو کسی بھی متعلقہ ڈیٹا اور کیش کوہرنسی کے مسائل کو سنبھالنا چاہیے۔ ایک اور اہم ٹی ٹی ایم تصور باڑ ہے۔ باڑ بنیادی طور پر سی پی یو اور جی پی یو کے درمیان ہم آہنگی کا انتظام کرنے کا ایک طریقہ کار ہے۔ باڑ اس وقت ٹریک کرتی ہے جب کسی بفر آبجیکٹ کو جی پی یو کے ذریعہ مزید استعمال نہیں کیا جاتا ہے، عام طور پر اس تک رسائی کے ساتھ کسی بھی یوزر اسپیس کے عمل کو مطلع کرنے کے لیے۔ حقیقت یہ ہے کہ ٹی ٹی ایم نے ہر قسم کے میموری آرکیٹیکچرز کو منظم کرنے کی کوشش کی، بشمول وقف شدہ وی آر اے ایم کے ساتھ اور اس کے بغیر، مناسب طریقے سے، اور کسی بھی قسم کے ہارڈ ویئر کے ساتھ استعمال کے لیے میموری مینیجر میں ہر قابل تصور خصوصیت فراہم کرنے کی وجہ سے ضرورت سے کہیں زیادہ بڑے اے پی آئی کے ساتھ حد سے زیادہ پیچیدہ حل سامنے آیا۔ کچھ ڈی آر ایم ڈویلپرز نے سوچا کہ یہ کسی مخصوص ڈرائیور، خاص طور پر اے پی آئی کے ساتھ اچھی طرح سے فٹ نہیں ہوگا۔ جب جی ای ایم ایک آسان میموری مینیجر کے طور پر ابھرا تو اس کے اے پی آئی کو ٹی ٹی ایم پر ترجیح دی گئی۔ لیکن کچھ ڈرائیور ڈویلپرز کا خیال تھا کہ ٹی ٹی ایم کی طرف سے لیا گیا نقطہ نظر مخصوص ویڈیو میموری اور آئی او ایم ایم یو کے ساتھ مجرد ویڈیو کارڈز کے لیے زیادہ موزوں تھا، اس لیے انہوں نے ٹی ٹی ایم کو اندرونی طور پر استعمال کرنے کا فیصلہ کیا، جبکہ اپنے بفر آبجیکٹ کو جی ای ایم آبجیکٹ کے طور پر بے نقاب کیا اور اس طرح جی ای ایم اے پی آئی کی حمایت کی۔ ٹی ٹی ایم کو اندرونی میموری مینیجر کے طور پر استعمال کرنے والے لیکن جی ای ایم اے پی آئی فراہم کرنے والے موجودہ ڈرائیوروں کی مثالیں اے ایم ڈی ویڈیو کارڈز کے لیے ریڈیون ڈرائیور اور این وی آئی ڈی اے ویڈیو کارڈز کے لیے نووو ڈرائیور ہیں۔ ڈی ایم اے بفر شیئرنگ اور پرائم ڈی ایم اے بفر شیئرنگ اے پی آئی (اکثر ڈی ایم اے-بی یو ایف کے طور پر مختصر) ایک لینکس دانا اندرونی اے پی آئی ہے جو ممکنہ طور پر مختلف قسم کے ڈیوائس ڈرائیوروں کے زیر انتظام متعدد آلات میں ڈی ایم اے بفرز کو شیئر کرنے کے لیے ایک عام طریقہ کار فراہم کرنے کے لیے ڈیزائن کیا گیا ہے۔ مثال کے طور پر، ایک ویڈیو 4 لینکس ڈیوائس اور گرافکس اڈاپٹر ڈیوائس ڈی ایم اے-بی یو ایف کے ذریعے بفرز کا اشتراک کر سکتے ہیں تاکہ پہلے کے ذریعہ تیار کردہ اور مؤخر الذکر کے ذریعہ استعمال ہونے والے ویڈیو اسٹریم کے ڈیٹا کی صفر کاپی حاصل کی جا سکے۔ کوئی بھی لینکس ڈیوائس ڈرائیور اس API کو بطور ایکسپورٹر، بطور صارف (صارف) یا دونوں کے طور پر لاگو کر سکتا ہے۔ اس خصوصیت کا استعمال پہلی بار ڈی آر ایم میں پرائم کو نافذ کرنے کے لیے کیا گیا تھا، جو جی پی یو آف لوڈنگ کا ایک حل ہے جو ڈی ایم اے-بی یو ایف کا استعمال کرتا ہے جس کے نتیجے میں ڈی آر ایم ڈرائیوروں کے درمیان علیحدہ اور مربوط جی پی یو کے فریم بفرز کا اشتراک ہوتا ہے۔ ڈی ایم اے-بی یو ایف کی ایک اہم خصوصیت یہ ہے کہ ایک مشترکہ بفر کو فائل کی تفصیل کے طور پر صارف کی جگہ پر پیش کیا جاتا ہے۔ پرائم کی ترقی کے لیے ڈی آر ایم اے پی آئی میں دو نئے آئی اوکٹلز شامل کیے گئے، ایک مقامی جی ای ایم ہینڈل کو ڈی ایم اے-بی یو ایف فائل ڈسکرپٹر میں تبدیل کرنے کے لیے اور دوسرا بالکل مخالف آپریشن کے لیے۔ ان دو نئے آئی اوکٹلوں کو بعد میں جی ای ایم بفر شیئرنگ کی موروثی عدم تحفظ کو ٹھیک کرنے کے طریقے کے طور پر دوبارہ استعمال کیا گیا۔ جی ای ایم ناموں کے برعکس، فائل کی تفصیل کا اندازہ نہیں لگایا جا سکتا (وہ عالمی نیم اسپیس نہیں ہیں)، اور یونکس آپریٹنگ سسٹم انہیں ایس سی ایم _ رائٹس سیمنٹکس کا استعمال کرتے ہوئے یونکس ڈومین ساکٹ کے ذریعے منتقل کرنے کا ایک محفوظ طریقہ فراہم کرتے ہیں۔ ایک ایسا عمل جو کسی جی ای ایم آبجیکٹ کو کسی دوسرے عمل کے ساتھ شیئر کرنا چاہتا ہے وہ اپنے مقامی جی ای ایم ہینڈل کو ڈی ایم اے-بی یو ایف فائل ڈسکرپٹر میں تبدیل کر سکتا ہے اور اسے وصول کنندہ کو منتقل کر سکتا ہے، جو بدلے میں موصول شدہ فائل ڈسکرپٹر سے اپنا جی ای ایم ہینڈل حاصل کر سکتا ہے۔ یہ طریقہ ڈی آر آئی 3 کے ذریعے کلائنٹ اور ایکس سرور کے درمیان اور ویلینڈ کے ذریعے بھی بفر بانٹنے کے لیے استعمال کیا جاتا ہے۔ دانا موڈ کی ترتیب مناسب طریقے سے کام کرنے کے لیے، ویڈیو کارڈ یا گرافکس اڈاپٹر کو ایک موڈ سیٹ کرنا چاہیے-اسکرین ریزولوشن، رنگ کی گہرائی اور ریفریش ریٹ کا مجموعہ-جو خود اور منسلک ڈسپلے اسکرین کے ذریعے سپورٹ کردہ اقدار کی حد کے اندر ہو۔ اس عمل کو موڈ سیٹنگ کہا جاتا ہے، اور اس کے لیے عام طور پر گرافکس ہارڈ ویئر تک خام رسائی کی ضرورت ہوتی ہے۔ ویڈیو کارڈ ڈسپلے کنٹرولر کے بعض رجسٹروں پر لکھنے کی صلاحیت۔ فریم بفر کا استعمال شروع کرنے سے پہلے ایک موڈ سیٹنگ آپریشن انجام دیا جانا چاہیے، اور یہ بھی کہ جب کسی ایپلیکیشن یا صارف کو موڈ کو تبدیل کرنے کی ضرورت ہو۔ ابتدائی دنوں میں، یوزر اسپیس پروگرام جو گرافیکل فریم بفر استعمال کرنا چاہتے تھے وہ بھی موڈ سیٹنگ آپریشنز فراہم کرنے کے ذمہ دار تھے، اور اس لیے انہیں ویڈیو ہارڈ ویئر تک مراعات یافتہ رسائی کے ساتھ چلانے کی ضرورت تھی۔ یونکس قسم کے آپریٹنگ سسٹمز میں، ایکس سرور سب سے نمایاں مثال تھی، اور اس کے موڈ کی ترتیب کا نفاذ ہر مخصوص قسم کے ویڈیو کارڈ کے لیے ڈی ڈی ایکس ڈرائیور میں رہتا تھا۔ یہ نقطہ نظر، جسے بعد میں یوزر اسپیس موڈ سیٹنگ یا یو ایم ایس کہا گیا، کئی مسائل کا باعث بنتا ہے۔ یہ نہ صرف اس تنہائی کو توڑتا ہے جو آپریٹنگ سسٹم کو پروگراموں اور ہارڈ ویئر کے درمیان فراہم کرنا چاہیے، جس سے استحکام اور سیکیورٹی دونوں کے خدشات بڑھ جاتے ہیں، بلکہ اگر دو یا دو سے زیادہ یوزر اسپیس پروگرام ایک ہی وقت میں موڈ سیٹنگ کرنے کی کوشش کرتے ہیں تو گرافکس ہارڈ ویئر کو متضاد حالت میں بھی چھوڑ سکتا ہے۔ ان تنازعات سے بچنے کے لیے، ایکس سرور عملی طور پر واحد یوزر اسپیس پروگرام بن گیا جس نے موڈ سیٹنگ آپریشن انجام دیے۔ بقیہ یوزر اسپیس پروگرام مناسب موڈ سیٹ کرنے اور موڈ سیٹنگ سے متعلق کسی بھی دوسرے آپریشن کو سنبھالنے کے لیے ایکس سرور پر انحصار کرتے تھے۔ ابتدائی طور پر موڈ کی ترتیب خصوصی طور پر ایکس سرور اسٹارٹ اپ کے عمل کے دوران انجام دی گئی تھی، لیکن بعد میں ایکس سرور نے چلتے ہوئے اسے کرنے کی صلاحیت حاصل کر لی۔ ایکس فری 86-ویڈ موڈ ایکسٹینشن ایکسٹینشن کو ایکس فری 86 3.1.2 میں متعارف کرایا گیا تھا تاکہ کسی بھی ایکس کلائنٹ کی درخواست ماڈلائن (ریزولوشن) کو ایکس سرور میں تبدیل کیا جا سکے۔ ویڈ موڈ ایکسٹینشن کو بعد میں زیادہ عام ایکس رینڈ آر ایکسٹینشن نے ختم کر دیا۔ تاہم، لینکس سسٹم میں موڈ سیٹنگ کرنے والا یہ واحد کوڈ نہیں تھا۔ سسٹم بوٹنگ کے عمل کے دوران، لینکس کرنل کو ورچوئل کنسول کے لیے کم سے کم ٹیکسٹ موڈ سیٹ کرنا چاہیے (وی ای ایس اے بی آئی او ایس ایکسٹینشنز کے ذریعے بیان کردہ معیاری طریقوں پر مبنی)۔ اس کے علاوہ لینکس کرنل فریم بفر ڈرائیور میں فریم بفر ڈیوائسز کو ترتیب دینے کے لیے موڈ سیٹنگ کوڈ موجود تھا۔ موڈ کی ترتیب کے تنازعات سے بچنے کے لیے، XFrey86 سرور-اور بعد میں X.Org سرور-نے اس معاملے کو سنبھالا جب صارف نے اپنی موڈ کی ترتیب کی حالت کو محفوظ کرکے گرافیکل ماحول سے ٹیکسٹ ورچوئل کنسول میں تبدیل کیا، اور جب صارف نے X پر واپس تبدیل کیا تو اسے بحال کیا۔ یہ عمل منتقلی میں ایک پریشان کن جھلک کا سبب بنا، اور ناکام بھی ہو سکتا ہے، جس کی وجہ سے خراب یا ناقابل استعمال آؤٹ پٹ ڈسپلے ہوتا ہے۔ یوزر اسپیس موڈ کی ترتیب کا نقطہ نظر بھی دیگر مسائل کا سبب بنا: معطل/دوبارہ شروع کرنے کے عمل کو پچھلے موڈ کو بحال کرنے کے لیے یوزر اسپیس ٹولز پر انحصار کرنا پڑتا ہے۔ ان میں سے کسی ایک پروگرام کی ایک واحد ناکامی یا کریش موڈ سیٹ کی غلط کنفیگریشن کی وجہ سے سسٹم کو ورکنگ ڈسپلے کے بغیر چھوڑ سکتا ہے، اور اس وجہ سے ناقابل استعمال ہے۔ جب اسکرین گرافکس موڈ میں تھی تو دانا کے لیے غلطی دکھانا یا پیغامات کو ڈیبگ کرنا بھی ناممکن تھا-مثال کے طور پر جب ایکس چل رہا تھا-کیونکہ دانا جن واحد طریقوں کے بارے میں جانتا تھا وہ وی ای ایس اے بائیوس معیاری ٹیکسٹ موڈ تھے۔ ایک زیادہ دباؤ ڈالنے والا مسئلہ ایکس سرور کو نظرانداز کرتے ہوئے گرافیکل ایپلی کیشنز کا پھیلاؤ اور ایکس کے دوسرے گرافکس اسٹیک متبادل کا ظہور تھا، جس سے پورے سسٹم میں موڈ سیٹنگ کوڈ کی نقل کو مزید بڑھایا گیا۔ ان مسائل کو حل کرنے کے لیے، موڈ سیٹنگ کوڈ کو دانا کے اندر ایک ہی جگہ، خاص طور پر موجودہ ڈی آر ایم ماڈیول میں منتقل کر دیا گیا تھا۔ پھر، ہر عمل-بشمول ایکس سرور-کرنل کو موڈ سیٹنگ آپریشن انجام دینے کے لیے کمانڈ کرنے کے قابل ہونا چاہیے، اور کرنل اس بات کو یقینی بنائے گا کہ بیک وقت ہونے والی کارروائیوں کا نتیجہ متضاد حالت میں نہ آئے۔ ان موڈ سیٹنگ آپریشنز کو انجام دینے کے لیے ڈی آر ایم ماڈیول میں جو نیا دانا اے پی آئی اور کوڈ شامل کیا گیا تھا اسے دانا موڈ سیٹنگ (کے ایم ایس) کہا جاتا تھا۔ دانا موڈ سیٹنگ کئی فوائد فراہم کرتا ہے۔ سب سے فوری طور پر کرنل (لینکس کنسول، ایف بی ڈی وی) اور یوزر اسپیس (ایکس سرور ڈی ڈی ایکس ڈرائیوروں) دونوں سے ڈپلیکیٹ موڈ سیٹنگ کوڈ کو ہٹانا ہے۔ کے ایم ایس متبادل گرافکس سسٹمز کو لکھنا بھی آسان بناتا ہے، جنہیں اب اپنے موڈ سیٹنگ کوڈ کو نافذ کرنے کی ضرورت نہیں ہے۔ سنٹرلائزڈ موڈ مینجمنٹ فراہم کرکے، کے ایم ایس کنسول اور ایکس کے درمیان اور ایکس (فاسٹ یوزر سوئچنگ) کی مختلف مثالوں کے درمیان بدلتے ہوئے ہلکے مسائل کو حل کرتا ہے۔ چونکہ یہ دانا میں دستیاب ہے، اس لیے اسے بوٹ کے عمل کے آغاز میں بھی استعمال کیا جا سکتا ہے، جس سے ان ابتدائی مراحل میں موڈ میں ہونے والی تبدیلیوں کی وجہ سے جھلکنے کی بچت ہوتی ہے۔ یہ حقیقت کہ کے ایم ایس دانا کا حصہ ہے اسے صرف دانا کی جگہ پر دستیاب وسائل جیسے انٹرپٹس استعمال کرنے کی اجازت دیتا ہے۔ مثال کے طور پر، معطل/دوبارہ شروع کرنے کے عمل کے بعد موڈ کی بازیابی خود دانا کے ذریعے منظم کیے جانے سے بہت آسان ہو جاتی ہے، اور اتفاق سے سیکیورٹی کو بہتر بناتی ہے (مزید یوزر اسپیس ٹولز کو جڑ کی اجازت کی ضرورت نہیں ہے)۔ دانا نئے ڈسپلے ڈیوائسز کے ہاٹ پلگ کو بھی آسانی سے اجازت دیتا ہے، جس سے ایک دیرینہ مسئلہ حل ہوتا ہے۔ موڈ کی ترتیب کا میموری مینجمنٹ سے بھی گہرا تعلق ہے-چونکہ فریم بفر بنیادی طور پر میموری بفر ہوتے ہیں-اس لیے گرافکس میموری مینیجر کے ساتھ سخت انضمام کی انتہائی سفارش کی جاتی ہے۔ یہی بنیادی وجہ ہے کہ کرنل موڈ سیٹنگ کوڈ کو ڈی آر ایم میں شامل کیا گیا تھا نہ کہ ایک علیحدہ ذیلی نظام کے طور پر۔ ڈی آر ایم اے پی آئی کی پسماندہ مطابقت کو توڑنے سے بچنے کے لیے، کرنل موڈ سیٹنگ کو بعض ڈی آر ایم ڈرائیوروں کی اضافی ڈرائیور خصوصیت کے طور پر فراہم کیا جاتا ہے۔ کوئی بھی ڈی آر ایم ڈرائیور پرچم فراہم کرنے کا انتخاب کر سکتا ہے جب یہ ڈی آر ایم کور کے ساتھ رجسٹر ہوتا ہے تاکہ یہ ظاہر کیا جا سکے کہ یہ کے ایم ایس اے پی آئی کی حمایت کرتا ہے۔ وہ ڈرائیور جو کرنل موڈ سیٹنگ کو لاگو کرتے ہیں انہیں اکثر کے ایم ایس ڈرائیور کہا جاتا ہے تاکہ انہیں وراثت سے الگ کیا جا سکے-کے ایم ایس-ڈی آر ایم ڈرائیوروں کے بغیر۔ کے ایم ایس کو اس حد تک اپنایا گیا ہے کہ کچھ ڈرائیور جن میں تھری ڈی ایکسلریشن کی کمی ہے (یا جس کے لیے ہارڈ ویئر وینڈر اسے بے نقاب یا نافذ نہیں کرنا چاہتا) اس کے باوجود باقی ڈی آر ایم اے پی آئی کے بغیر کے ایم ایس اے پی آئی کو نافذ کرتے ہیں، جس سے ڈسپلے سرورز (جیسے ویلینڈ) آسانی سے چل سکتے ہیں۔ کے ایم ایس ڈیوائس ماڈل کے ایم ایس ماڈل اور آؤٹ پٹ ڈیوائسز کو تجریدی ہارڈ ویئر بلاکس کی ایک سیریز کے طور پر منظم کرتا ہے جو عام طور پر ڈسپلے کنٹرولر کی ڈسپلے آؤٹ پٹ پائپ لائن پر پایا جاتا ہے۔ یہ بلاکس یہ ہیں: سی آر ٹی سی: ہر سی آر ٹی سی (سی آر ٹی کنٹرولر سے) ڈسپلے کنٹرولر کے اسکین آؤٹ انجن کی نمائندگی کرتا ہے، جو اسکین آؤٹ بفر (فریم بفر) کی طرف اشارہ کرتا ہے۔ سی آر ٹی سی کا مقصد اسکین آؤٹ بفر میں فی الحال پکسل ڈیٹا کو پڑھنا اور اس سے پی ایل ایل سرکٹ کی مدد سے ویڈیو موڈ ٹائمنگ سگنل تیار کرنا ہے۔ دستیاب سی آر ٹی سی کی تعداد اس بات کا تعین کرتی ہے کہ ہارڈ ویئر ایک ہی وقت میں کتنے آزاد آؤٹ پٹ ڈیوائسز کو سنبھال سکتا ہے، لہذا ملٹی ہیڈ کنفیگریشن استعمال کرنے کے لیے فی ڈسپلے ڈیوائس کم از کم ایک سی آر ٹی سی درکار ہے۔ دو یا زیادہ سی آر ٹی سی کلون موڈ میں بھی کام کر سکتے ہیں اگر وہ ایک ہی فریم بفر سے ایک ہی تصویر کو کئی آؤٹ پٹ ڈیوائسز پر بھیجنے کے لیے اسکین کرتے ہیں۔ کنیکٹر: ایک کنیکٹر اس بات کی نمائندگی کرتا ہے جہاں ڈسپلے کنٹرولر اسکین آؤٹ آپریشن سے ویڈیو سگنل بھیجتا ہے۔ عام طور پر، کنیکٹر کا کے ایم ایس تصور ہارڈ ویئر میں ایک فزیکل کنیکٹر (وی جی اے، ڈی وی آئی، ایف پی ڈی-لنک، ایچ ڈی ایم آئی، ڈسپلے پورٹ، ایس-ویڈیو،) سے مطابقت رکھتا ہے جہاں آؤٹ پٹ ڈیوائس (مانیٹر، لیپ ٹاپ پینل،) مستقل طور پر ہے یا عارضی طور پر منسلک کیا جا سکتا ہے۔ موجودہ جسمانی طور پر منسلک آؤٹ پٹ ڈیوائس سے متعلق معلومات-جیسے کنکشن اسٹیٹس، ای ڈی آئی ڈی ڈیٹا، ڈی پی ایم ایس اسٹیٹس یا سپورٹڈ ویڈیو موڈز-بھی کنیکٹر کے اندر محفوظ کیے جاتے ہیں۔ انکوڈرز: ڈسپلے کنٹرولر کو مطلوبہ کنیکٹر کے لیے موزوں فارمیٹ کا استعمال کرتے ہوئے سی آر ٹی سی سے ویڈیو موڈ ٹائمنگ سگنل کو انکوڈ کرنا چاہیے۔ ایک انکوڈر ہارڈ ویئر بلاک کی نمائندگی کرتا ہے جو ان میں سے ایک انکوڈنگ کرنے کے قابل ہوتا ہے۔ ڈیجیٹل آؤٹ پٹ کے لیے انکوڈنگ کی مثالیں ٹی ایم ڈی ایس اور ایل وی ڈی ایس ہیں ؛ وی جی اے اور ٹی وی آؤٹ جیسے اینالاگ آؤٹ پٹ کے لیے، عام طور پر مخصوص ڈی اے سی بلاکس استعمال کیے جاتے ہیں۔ کنیکٹر ایک وقت میں صرف ایک انکوڈر سے سگنل وصول کر سکتا ہے، اور ہر قسم کا کنیکٹر صرف کچھ انکوڈنگ کی حمایت کرتا ہے۔ اضافی جسمانی پابندیاں بھی ہو سکتی ہیں جن کے ذریعے ہر سی آر ٹی سی ہر دستیاب انکوڈر سے منسلک نہیں ہوتا ہے، جو سی آر ٹی سی-انکوڈر-کنیکٹر کے ممکنہ امتزاج کو محدود کرتا ہے۔ طیارہ: طیارہ ہارڈ ویئر بلاک نہیں ہوتا بلکہ ایک میموری آبجیکٹ ہوتا ہے جس میں ایک بفر ہوتا ہے جس سے اسکین آؤٹ انجن (سی آر ٹی سی) کو کھلایا جاتا ہے۔ جس جہاز میں فریم بفر ہوتا ہے اسے پرائمری طیارہ کہا جاتا ہے، اور ہر سی آر ٹی سی کا ایک منسلک ہونا ضروری ہے، کیونکہ یہ سی آر ٹی سی کے لیے ویڈیو موڈ-ڈسپلے ریزولوشن (چوڑائی اور اونچائی)، پکسل سائز، پکسل فارمیٹ، ریفریش ریٹ وغیرہ کا تعین کرنے کا ذریعہ ہے۔ اگر ڈسپلے کنٹرولر ہارڈ ویئر کرسر اوورلیز کو سپورٹ کرتا ہے، یا ثانوی طیاروں کو اضافی ہارڈ ویئر اوورلیز سے اسکین کرنے اور آؤٹ پٹ ڈیوائس پر بھیجی گئی حتمی تصویر کو "آن دی فلائی" کمپوز یا مرکب کرنے کے قابل ہو تو سی آر ٹی سی کے پاس اس سے وابستہ کرسر طیارے بھی ہو سکتے ہیں۔ ایٹمک ڈسپلے حالیہ برسوں میں کے ایم ایس اے پی آئی سے متعلق کچھ باقاعدہ کارروائیوں، خاص طور پر موڈ سیٹنگ اور پیج فلاپنگ آپریشنز میں ایٹمائٹی لانے کی مسلسل کوشش کی جا رہی ہے۔ یہ بہتر شدہ کے ایم ایس اے پی آئی وہ ہے جسے ایٹمک ڈسپلے کہا جاتا ہے (پہلے ایٹمک موڈ سیٹنگ اور ایٹمک یا نیوکلیئر پیج فلپ کے نام سے جانا جاتا تھا)۔ ایٹم موڈ سیٹنگ کا مقصد متعدد پابندیوں کے ساتھ پیچیدہ ترتیبات میں موڈ کی درست تبدیلی کو یقینی بنانا ہے، درمیانی مراحل سے گریز کرکے جو متضاد یا غلط ویڈیو حالت کا باعث بن سکتے ہیں۔ یہ خطرناک ویڈیو حالتوں سے بھی بچتا ہے جب ناکام موڈ سیٹنگ کے عمل کو کالعدم کرنا پڑتا ہے ("رول بیک")۔ ایٹمک موڈ سیٹنگ موڈ ٹیسٹنگ کی صلاحیتیں فراہم کرکے پہلے سے یہ جاننے کی اجازت دیتی ہے کہ آیا کچھ مخصوص موڈ کی ترتیب مناسب ہے یا نہیں۔ جب کسی ایٹم موڈ کی جانچ کی جاتی ہے اور اس کی صداقت کی تصدیق ہوتی ہے، تو اسے ایک واحد ناقابل تقسیم (ایٹمک) کمٹ آپریشن کے ساتھ لاگو کیا جا سکتا ہے۔ ٹیسٹ اور کمٹ آپریشن دونوں ایک ہی نئے آئی او ٹی ایل کے ذریعے مختلف جھنڈوں کے ساتھ فراہم کیے جاتے ہیں۔ دوسری طرف ایٹمک پیج فلپ ایک ہی آؤٹ پٹ پر متعدد طیاروں کو اپ ڈیٹ کرنے کی اجازت دیتا ہے (مثال کے طور پر پرائمری طیارہ، کرسر طیارہ اور شاید کچھ اوورلے یا ثانوی طیارے) سبھی ایک ہی VBLANK وقفے کے اندر مطابقت پذیر ہوتے ہیں، جس سے بغیر پھٹے مناسب ڈسپلے کو یقینی بنایا جاتا ہے۔ یہ ضرورت خاص طور پر موبائل اور سرایت شدہ ڈسپلے کنٹرولرز سے متعلق ہے، جو بجلی بچانے کے لیے متعدد طیاروں/اوورلیز کا استعمال کرتے ہیں۔ نیا ایٹم اے پی آئی پرانے کے ایم ایس اے پی آئی پر بنایا گیا ہے۔ یہ ایک ہی ماڈل اور اشیاء (سی آر ٹی سی، انکوڈر، کنیکٹر، طیاروں،) کا استعمال کرتا ہے، لیکن آبجیکٹ کی خصوصیات کی بڑھتی ہوئی تعداد کے ساتھ جن میں ترمیم کی جا سکتی ہے۔ جوہری طریقہ کار اس حالت کی تعمیر کے لیے متعلقہ خصوصیات کو تبدیل کرنے پر مبنی ہے جس کی ہم جانچ یا ارتکاب کرنا چاہتے ہیں۔ ہم جن خصوصیات میں ترمیم کرنا چاہتے ہیں ان کا انحصار اس بات پر ہے کہ آیا ہم موڈ سیٹنگ (زیادہ تر سی آر ٹی سی، انکوڈرز اور کنیکٹرز کی خصوصیات) کرنا چاہتے ہیں یا پیج فلپنگ (عام طور پر طیاروں کی خصوصیات) کرنا چاہتے ہیں۔ ioctl دونوں صورتوں کے لیے یکساں ہے، فرق ہر ایک کے ساتھ منظور شدہ خصوصیات کی فہرست ہے۔ اصل ڈی آر ایم اے پی آئی میں، ڈی آر ایم ڈیوائس/ڈیو/ڈر/کارڈ ایکس مراعات یافتہ (موڈسیٹنگ، دیگر ڈسپلے کنٹرول) اور غیر مراعات یافتہ (رینڈرنگ، جی پی جی پی یو کمپیوٹ) دونوں کارروائیوں کے لیے استعمال ہوتا ہے۔ حفاظتی وجوہات کی بناء پر، متعلقہ ڈی آر ایم ڈیوائس فائل کو کھولنے کے لیے "روٹ-استحقاق کے مساوی" خصوصی مراعات کی ضرورت ہوتی ہے۔ یہ ایک ایسے فن تعمیر کی طرف لے جاتا ہے جہاں صرف کچھ قابل اعتماد یوزر اسپیس پروگراموں (ایکس سرور، ایک گرافیکل کمپوزٹر،) کو ڈی آر ایم اے پی آئی تک مکمل رسائی حاصل ہوتی ہے، بشمول مراعات یافتہ حصے جیسے موڈسیٹ اے پی آئی۔ دیگر یوزر اسپیس ایپلی کیشنز جو جی پی جی پی یو کے حسابات پیش کرنا یا بنانا چاہتی ہیں، انہیں ڈی آر ایم ڈیوائس ("ڈی آر ایم ماسٹر") کے مالک کے ذریعے ایک خصوصی تصدیق انٹرفیس کے استعمال کے ذریعے عطا کیا جانا چاہیے۔ پھر تصدیق شدہ ایپلی کیشنز مراعات یافتہ کارروائیوں کے بغیر ڈی آر ایم اے پی آئی کے محدود ورژن کا استعمال کرتے ہوئے حساب کتاب کر سکتی ہیں یا کر سکتی ہیں۔ یہ ڈیزائن ایک شدید رکاوٹ عائد کرتا ہے: ہمیشہ ایک چل رہا گرافکس سرور (ایکس سرور، ایک ویلینڈ کمپوزٹر،) ہونا چاہیے جو ڈی آر ایم ڈیوائس کے ڈی آر ایم-ماسٹر کے طور پر کام کرتا ہے تاکہ دوسرے یوزر اسپیس پروگراموں کو ڈیوائس کا استعمال دیا جا سکے، یہاں تک کہ ان صورتوں میں بھی جن میں جی پی جی پی یو کمپیوٹیشن جیسے گرافکس ڈسپلے شامل نہ ہوں۔ "رینڈر نوڈس" تصور ڈی آر ایم یوزر اسپیس اے پی آئی کو دو انٹرفیس میں تقسیم کرکے ان منظرناموں کو حل کرنے کی کوشش کرتا ہے-ایک مراعات یافتہ اور ایک غیر مراعات یافتہ-اور ہر ایک کے لیے علیحدہ ڈیوائس فائلوں (یا "نوڈس") کا استعمال کرتے ہوئے۔ پائے جانے والے ہر جی پی یو کے لیے، اس کا متعلقہ ڈی آر ایم ڈرائیور-اگر یہ رینڈر نوڈس کی خصوصیت کو سپورٹ کرتا ہے-پرائمری نوڈ/دیو/ڈر/کارڈ ایکس کے علاوہ ایک ڈیوائس فائل/دیو/ڈر/رینڈر ڈی ایکس بناتا ہے، جسے رینڈر نوڈ کہا جاتا ہے۔ وہ کلائنٹ جو براہ راست رینڈرنگ ماڈل اور ایپلی کیشنز استعمال کرتے ہیں جو جی پی یو کی کمپیوٹنگ سہولیات سے فائدہ اٹھانا چاہتے ہیں، وہ کسی بھی موجودہ رینڈر نوڈ کو کھول کر اور ڈی آر ایم اے پی آئی کے محدود ذیلی سیٹ کا استعمال کرتے ہوئے جی پی یو آپریشنز بھیج کر اضافی مراعات کی ضرورت کے بغیر ایسا کر سکتے ہیں-بشرطیکہ ان کے پاس ڈیوائس فائل کو کھولنے کے لیے فائل سسٹم کی اجازت ہو۔ ڈسپلے سرورز، کمپوزٹرز اور کوئی بھی دوسرا پروگرام جس میں موڈسیٹ اے پی آئی یا کسی دوسرے مراعات یافتہ آپریشن کی ضرورت ہوتی ہے اسے معیاری پرائمری نوڈ کھولنا چاہیے جو مکمل ڈی آر ایم اے پی آئی تک رسائی فراہم کرتا ہے اور اسے معمول کے مطابق استعمال کرتا ہے۔ غیر محفوظ جی ای ایم عالمی ناموں کا استعمال کرتے ہوئے بفر شیئرنگ کو روکنے کے لیے رینڈر نوڈس واضح طور پر جی ای ایم فلینک آپریشن کی اجازت نہیں دیتے ہیں۔ گرافکس سرور سمیت کسی دوسرے کلائنٹ کے ساتھ بفر شیئر کرنے کے لیے صرف پرائم (ڈی ایم اے-بی یو ایف) فائل ڈسکرپٹر استعمال کیے جا سکتے ہیں۔ ہارڈ ویئر سپورٹ لینکس ڈی آر ایم سب سسٹم میں ڈیسک ٹاپ کمپیوٹرز (اے ایم ڈی، این وی آئی ڈی اے اور انٹیل) کے لیے جی پی یو کے 3 اہم مینوفیکچررز کے ساتھ ساتھ موبائل جی پی یو اور سسٹم آن اے چپ (ایس او سی) انٹیگریٹرز کی بڑھتی ہوئی تعداد سے ہارڈ ویئر سپورٹ کرنے کے لیے مفت اور اوپن سورس ڈرائیور شامل ہیں۔ ہر ڈرائیور کا معیار بہت مختلف ہوتا ہے، جو کارخانہ دار کے تعاون کی ڈگری اور دیگر معاملات پر منحصر ہوتا ہے۔ تاریخی مقاصد کے لیے اگلے جدول میں پرانے، متروک ہارڈ ویئر کے لیے متعدد ڈرائیور بھی ہیں۔ ان میں سے کچھ اب بھی کرنل کوڈ میں باقی ہیں، لیکن زیادہ تر کو پہلے ہی ہٹا دیا گیا ہے۔ ڈویلپمنٹ ڈائریکٹ رینڈرنگ مینیجر لینکس کرنل کے اندر تیار کیا گیا ہے، اور اس کا سورس کوڈ لینکس سورس کوڈ کی/ڈرائیوروں/جی پی یو/ڈی آر ایم ڈائرکٹری میں رہتا ہے۔ سب سسٹم مینٹینر ڈیو ایرلی ہے، دوسرے مینٹینر مخصوص ڈرائیوروں کی دیکھ بھال کرتے ہیں۔ لینکس کرنل ڈویلپمنٹ میں ہمیشہ کی طرح، ڈی آر ایم سب مینٹینرز اور شراکت دار اپنے پیچ کو نئی خصوصیات اور بگ فکسس کے ساتھ مرکزی ڈی آر ایم مینٹینر کو بھیجتے ہیں جو انہیں اپنے لینکس ریپوزیٹری میں ضم کرتا ہے۔ ڈی آر ایم مینٹینر بدلے میں ان تمام پیچوں کو جمع کرتا ہے جو جب بھی لینکس کا نیا ورژن جاری ہونے والا ہوتا ہے تو لینس ٹوروالڈز کے لیے مین لائن ہونے کے لیے تیار ہوتے ہیں۔ ٹوروالڈس، پورے دانے کے اعلی دیکھ بھال کرنے والے کے طور پر، آخری لفظ رکھتے ہیں کہ آیا کوئی پیچ دانے میں شامل کرنے کے لیے موزوں ہے یا نہیں۔ تاریخی وجوہات کی بناء پر، libdrm لائبریری کا سورس کوڈ میسا پروجیکٹ کی چھتری کے نیچے برقرار رکھا جاتا ہے۔ 1999 میں، ایکس فری 86 کے لیے ڈی آر آئی تیار کرتے ہوئے، پریسیژن انسائٹ نے 3 ڈی ایف ایکس ویڈیو کارڈز کے لیے ڈی آر ایم کا پہلا ورژن بنایا، جیسا کہ میسا سورس کوڈ میں لینکس کرنل پیچ شامل تھا۔ اس سال کے آخر میں، ڈی آر ایم کوڈ کو لینکس کرنل 2.3.18 میں کردار کے آلات کے لیے/ڈرائیوروں/چار/ڈی آر ایم/ڈائرکٹری کے تحت مین لائن کیا گیا تھا۔ اگلے سالوں کے دوران معاون ویڈیو کارڈز کی تعداد میں اضافہ ہوا۔ جب لینکس 2.4.0 کو جنوری 2001 میں جاری کیا گیا تو 3 ڈی ایف ایکس ووڈو 3 کارڈز کے علاوہ کریٹیو لیبز جی ایم ایکس 2000، انٹیل آئی 810، میٹروکس جی 200/جی 400 اور اے ٹی آئی ریج 128 کے لیے پہلے ہی سپورٹ موجود تھی، اور اس فہرست میں 2.4. x سیریز کے دوران توسیع ہوئی، جس میں اے ٹی آئی ریڈیون کارڈز، کچھ سی آئی ایس ویڈیو کارڈز اور انٹیل 830 ایم اور اس کے بعد کے مربوط جی پی یوز کے لیے ڈرائیوروں کے ساتھ۔ ڈی آر ایم کو دو اجزاء میں تقسیم کیا گیا، ڈی آر ایم کور اور ڈی آر ایم ڈرائیور، جسے ڈی آر ایم کور/پرسنالٹی اسپلٹ کہا جاتا ہے، 2004 کے دوسرے نصف کے دوران کیا گیا، اور دانا ورژن 2.6.11 میں ضم کر دیا گیا۔ اس تقسیم نے متعدد ڈیوائسز کے لیے متعدد ڈی آر ایم ڈرائیوروں کو بیک وقت کام کرنے کی اجازت دی، جس سے ملٹی-جی پی یو سپورٹ کی راہ کھل گئی۔ کرنل کے اندر تمام ویڈیو موڈ سیٹنگ کوڈ کو ایک جگہ پر رکھنے کا خیال برسوں سے تسلیم کیا جا رہا تھا، لیکن گرافکس کارڈ بنانے والوں نے استدلال کیا تھا کہ موڈ سیٹنگ کرنے کا واحد طریقہ خود فراہم کردہ معمولات کا استعمال کرنا تھا اور ہر گرافکس کارڈ کے ویڈیو بائیوس میں موجود تھا۔ اس طرح کے کوڈ کو x86 ریئل موڈ کا استعمال کرتے ہوئے انجام دیا جانا تھا، جس نے اسے محفوظ موڈ میں چلنے والے دانا کے ذریعے استعمال ہونے سے روک دیا۔ صورتحال اس وقت بدل گئی جب لوک ویرہیگن اور دیگر ڈویلپرز نے بائیوس پر مبنی کے بجائے مقامی طور پر موڈ سیٹنگ کرنے کا ایک طریقہ تلاش کیا، جس سے یہ ظاہر ہوتا ہے کہ عام دانا کوڈ کا استعمال کرتے ہوئے ایسا کرنا ممکن تھا اور اس کی بنیاد رکھی گئی جو کہ دانا موڈ سیٹنگ بن جائے گی۔ مئی 2007 میں جیسی بارنس (انٹیل) نے ڈی آر ایم-موڈسیٹنگ اے پی آئی کے لیے پہلی تجویز اور آئی 915 ڈی آر ایم ڈرائیور کے اندر انٹیل جی پی یوز کے لیے موڈ سیٹنگ کے کام کرنے والے مقامی نفاذ کو شائع کیا۔ دسمبر 2007 میں جیروم گلیس نے ریڈیون ڈی آر ایم ڈرائیور میں اے ٹی آئی کارڈز کے لیے مقامی موڈ سیٹنگ کوڈ شامل کرنا شروع کیا۔ اے پی آئی اور ڈرائیوروں دونوں پر کام 2008 کے دوران جاری رہا، لیکن فریم بفرز کو سنبھالنے کے لیے کرنل کی جگہ میں میموری مینیجر کی ضرورت کی وجہ سے تاخیر ہوئی۔ اکتوبر 2008 میں لینکس کرنل 2.6.27 نے کچھ اہم آنے والی تبدیلیوں سے پہلے، سورس کوڈ کی ایک بڑی تنظیم نو کی۔ ڈی آر ایم سورس کوڈ ٹری کو اس کی اپنی سورس ڈائرکٹری/ڈرائیوروں/جی پی یو/ڈی آر ایم/میں منتقل کر دیا گیا اور مختلف ڈرائیوروں کو ان کی اپنی ذیلی ڈائریکٹریز میں منتقل کر دیا گیا۔ ہیڈرز کو بھی ایک نئی/شامل/ڈی آر ایم ڈائرکٹری میں منتقل کر دیا گیا۔ ویڈیو میموری مینجمنٹ کی بڑھتی ہوئی پیچیدگی اس مسئلے کو حل کرنے کے کئی طریقوں کا باعث بنی۔ پہلی کوشش ٹرانسلیشن ٹیبل میپس (ٹی ٹی ایم) میموری مینیجر تھی، جسے تھامس ہیلسٹروم (ٹونگسٹن گرافکس) نے ایما انہولٹ (انٹیل) اور ڈیو ایرلی (ریڈ ہیٹ) کے تعاون سے تیار کیا تھا۔ ٹی ٹی ایم کو نومبر 2007 میں اور پھر مئی 2008 میں مین لائن دانا 2.6.25 میں شامل کرنے کی تجویز پیش کی گئی تھی، لیکن اسے گرافکس ایگزیکیوشن منیجر (جی ای ایم) نامی ایک نئے نقطہ نظر کے حق میں چھوڑ دیا گیا۔ جی ای ایم کو سب سے پہلے انٹیل کے کیتھ پیکارڈ اور ایمما انہولٹ نے اپنے آئی 915 ڈرائیور کے لیے میموری مینجمنٹ کے لیے آسان حل کے طور پر تیار کیا تھا۔ جی ای ایم کو خوب پذیرائی ملی اور دسمبر 2008 میں جاری ہونے والے لینکس کرنل ورژن 2.6.28 میں ضم کر دیا گیا۔ دریں اثنا، ٹی ٹی ایم کو نئے ریڈیون کے ایم ایس ڈی آر ایم ڈرائیور کی ضرورت کے طور پر بالآخر لینکس 2.6.31 میں ضم ہونے کے لیے ستمبر 2009 تک انتظار کرنا پڑا۔ بفر آبجیکٹ کو سنبھالنے کے لیے میموری مینجمنٹ کے ساتھ، ڈی آر ایم ڈویلپرز آخر کار کرنل میں پہلے سے تیار شدہ اے پی آئی اور کوڈ کو موڈ سیٹنگ کرنے کے لیے شامل کر سکتے ہیں۔ اس توسیعی اے پی آئی کو کرنل موڈ سیٹنگ (کے ایم ایس) کہا جاتا ہے اور جو ڈرائیور اسے لاگو کرتے ہیں انہیں اکثر کے ایم ایس ڈرائیور کہا جاتا ہے۔ مارچ 2009 میں، کے ایم ایس کو لینکس کرنل ورژن 2.6.29 میں ضم کر دیا گیا، اس کے ساتھ ساتھ آئی 915 ڈرائیور کے لیے کے ایم ایس سپورٹ بھی۔ کے ایم ایس اے پی آئی کو libdrm 2.4.3 کے بعد سے یوزر اسپیس پروگراموں سے بے نقاب کیا گیا ہے۔ انٹیل گرافکس کارڈز کے لیے یوزر اسپیس X.Org ڈی ڈی ایکس ڈرائیور بھی سب سے پہلے نئے جی ای ایم اور کے ایم ایس اے پی آئی استعمال کرنے والا تھا۔ ریڈیون ڈی آر ایم ڈرائیور کے لیے کے ایم ایس سپورٹ کو ستمبر 2009 کے لینکس 2.6.31 ریلیز میں شامل کیا گیا تھا۔ نئے ریڈیون کے ایم ایس ڈرائیور نے ٹی ٹی ایم میموری مینیجر کا استعمال کیا لیکن ٹی ٹی ایم کے بجائے جی ای ایم سے مطابقت رکھنے والے انٹرفیس اور آئی اوکٹلز کو بے نقاب کیا۔ 2006 سے نووو پروجیکٹ سرکاری لینکس کرنل سے باہر این ویڈیا جی پی یوز کے لیے ایک مفت سافٹ ویئر ڈی آر ایم ڈرائیور تیار کر رہا تھا۔ 2010 میں نووو سورس کوڈ کو لینکس 2.6.33 میں ایک تجرباتی ڈرائیور کے طور پر ضم کر دیا گیا۔ انضمام کے وقت، ڈرائیور کو پہلے ہی کے ایم ایس میں تبدیل کر دیا گیا تھا، اور جی ای ایم اے پی آئی کے پیچھے اس نے ٹی ٹی ایم کو اپنے میموری مینیجر کے طور پر استعمال کیا۔ نیا کے ایم ایس اے پی آئی-بشمول جی ای ایم اے پی آئی-ڈی آر ایم کی ترقی میں ایک بڑا سنگ میل تھا، لیکن اس نے اگلے سالوں میں اے پی آئی کو بڑھانے سے نہیں روکا۔ کے ایم ایس نے لینکس 2.6.33 میں غیر متزلزل VBLANK اطلاعات کے ساتھ مل کر پیج فلپس کے لیے سپورٹ حاصل کی-صرف i915 ڈرائیور کے لیے، ریڈیون اور نووو نے اسے بعد میں لینکس 2.6.38 ریلیز کے دوران شامل کیا۔ نیا پیج فلپ انٹرفیس libdrm 2.4.17 میں شامل کیا گیا تھا۔ 2011 کے اوائل میں، لینکس 2.6.39 ریلیز سائیکل کے دوران، نام نہاد گونگا بفرز-فریم بفرز کے طور پر استعمال کے لیے موزوں سادہ بفرز کو سنبھالنے کا ایک ہارڈ ویئر سے آزاد غیر تیز رفتار طریقہ-کو کے ایم ایس اے پی آئی میں شامل کیا گیا۔ مقصد یہ تھا کہ پلایماؤتھ جیسی ایپلی کیشنز کی پیچیدگی کو کم کیا جائے جن کو ڈرائیور مخصوص آئی اوکٹلز کے ذریعہ فراہم کردہ خصوصی تیز رفتار کارروائیوں کو استعمال کرنے کی ضرورت نہیں ہے۔ اس خصوصیت کو libdrm نے ورژن 2.4.25 کے بعد سے بے نقاب کیا تھا۔ اس سال کے آخر میں اس نے ایک نئی اہم قسم کی اشیاء بھی حاصل کیں، جنہیں طیارے کہتے ہیں۔ طیاروں کو اسکین آؤٹ انجن کے تعاون سے ہارڈ ویئر اوورلے کی نمائندگی کرنے کے لیے تیار کیا گیا تھا۔ طیارہ سپورٹ کو لینکس 3.3 اور libdrm 2.4.30 میں ضم کر دیا گیا۔ API میں شامل کیا گیا ایک اور تصور-لینکس 3.5 اور libdrm 2.4.36 ریلیز کے دوران-عام آبجیکٹ کی خصوصیات تھیں، جو کسی بھی KMS آبجیکٹ میں عام اقدار کو شامل کرنے کا ایک طریقہ تھا۔ خصوصیات خاص طور پر سی آر ٹی سی اور طیاروں جیسی اشیاء کے لیے خصوصی رویے یا خصوصیات کو ترتیب دینے کے لیے مفید ہیں۔ ڈی آر ایم ڈرائیوروں کے درمیان جی پی یو آف لوڈنگ فراہم کرنے کے تصور کا ابتدائی ثبوت ڈیو ایئرلی نے 2010 میں تیار کیا تھا۔ چونکہ ایرلی این ویڈیا آپٹیمس ٹیکنالوجی کی نقل کرنے کی کوشش کر رہا تھا، اس لیے اس نے اس کا نام "پرائم" رکھنے کا فیصلہ کیا۔ ایرلی نے 2011 کے آخر میں پرائم پر اپنا کام دوبارہ شروع کیا، لیکن لینکس کرنل 3.3 کے ذریعہ متعارف کرائے گئے نئے ڈی ایم اے-بی یو ایف بفر شیئرنگ میکانزم پر مبنی تھا۔ بنیادی ڈی ایم اے-بی یو ایف پرائم انفراسٹرکچر مارچ 2012 میں مکمل ہوا اور لینکس 3.4 ریلیز کے ساتھ ساتھ libdrm 2.4.34 میں ضم ہو گیا۔ بعد میں لینکس 3.5 ریلیز کے دوران، کئی ڈی آر ایم ڈرائیوروں نے پرائم سپورٹ کو نافذ کیا، جس میں انٹیل کارڈز کے لیے آئی 915، اے ایم ڈی کارڈز کے لیے ریڈیون اور این ویڈیا کارڈز کے لیے نووو شامل ہیں۔ حالیہ برسوں میں، ڈی آر ایم اے پی آئی نے نئی اور بہتر خصوصیات کے ساتھ توسیع کی ہے۔ 2013 میں، جی ایس او سی کے حصے کے طور پر، ڈیوڈ ہرمن نے ایک سے زیادہ رینڈر نوڈس کی خصوصیت تیار کی۔ اس کا کوڈ لینکس کرنل ورژن 3.12 میں ایک تجرباتی خصوصیت کے طور پر شامل کیا گیا تھا جسے i915، ریڈیون اور نووو ڈرائیوروں نے سپورٹ کیا تھا، اور لینکس 3.17 کے بعد سے ڈیفالٹ کے طور پر فعال کیا گیا تھا۔ 2014 میں میٹ روپر (انٹیل) نے عالمگیر طیاروں (یا متحد طیاروں) کا تصور تیار کیا جس کے ذریعے فریم بفرز (بنیادی طیاروں)، اوورلیز (ثانوی طیاروں) اور کرسرز (کرسر طیاروں) سب کو ایک متحد API کے ساتھ ایک ہی قسم کے آبجیکٹ کے طور پر سمجھا جاتا ہے۔ یونیورسل طیاروں کی حمایت کم، زیادہ عام آئیوکٹلز کے ساتھ زیادہ مستقل ڈی آر ایم اے پی آئی فراہم کرتی ہے۔ اے پی آئی کو پیچھے کی طرف مطابقت برقرار رکھنے کے لیے، اس خصوصیت کو ڈی آر ایم کور کے ذریعے ایک اضافی صلاحیت کے طور پر ظاہر کیا جاتا ہے جو ایک ڈی آر ایم ڈرائیور فراہم کر سکتا ہے۔ یونیورسل پلین سپورٹ کا آغاز لینکس 3.15 اور libdrm 2.4.55 میں ہوا۔ کئی ڈرائیوروں، جیسے انٹیل i915، نے پہلے ہی اسے لاگو کیا ہے۔ سب سے حالیہ ڈی آر ایم اے پی آئی اضافہ ایٹمک موڈ سیٹنگ اے پی آئی ہے، جو ڈی آر ایم ڈیوائس پر موڈ سیٹنگ اور پیج فلاپنگ آپریشنز میں ایٹمائٹی لاتا ہے۔ موڈ کی ترتیب کے لیے جوہری API کا خیال پہلی بار 2012 کے اوائل میں پیش کیا گیا تھا۔ ولی سرجلا (انٹیل) نے اس طرح کے جوہری API کو ڈیزائن کرنے اور اس پر عمل درآمد کرنے کا کام سنبھالا۔ اپنے کام کی بنیاد پر، روب کلارک (ٹیکساس انسٹرومینٹس) نے اسی طرح کا نقطہ نظر اختیار کیا جس کا مقصد ایٹم پیج فلپس کو نافذ کرنا تھا۔ بعد میں 2013 میں دونوں مجوزہ خصوصیات کو دونوں کاموں کے لیے ایک ہی آئی او ٹی ایل کا استعمال کرتے ہوئے ایک ہی میں دوبارہ ملایا گیا۔ چونکہ یہ ایک ضرورت تھی، اس خصوصیت کو 2014 کے وسط میں یونیورسل طیاروں کے انضمام کے لیے انتظار کرنا پڑا۔ 2014 کے دوسرے نصف کے دوران ڈینیل ویٹر (انٹیل) اور دیگر ڈی آر ایم ڈویلپرز نے ایٹم کوڈ میں بہت اضافہ کیا تاکہ موجودہ کے ایم ایس ڈرائیوروں کو نئے ایٹم فریم ورک میں منتقلی میں سہولت فراہم کی جا سکے۔ یہ تمام کام آخر کار لینکس 3.19 اور لینکس 4.0 ریلیزز میں ضم کر دیا گیا، اور لینکس 4.2 کے بعد سے ڈیفالٹ طور پر فعال کر دیا گیا۔ libdrm نے ورژن 2.4.62 کے بعد سے نئے ایٹم API کو بے نقاب کر دیا۔ متعدد ڈرائیوروں کو پہلے ہی نئے جوہری API میں تبدیل کیا جا چکا ہے۔ 2018 تک اس نئے جوہری ماڈل پر مبنی دس نئے ڈی آر ایم ڈرائیوروں کو لینکس دانا میں شامل کیا گیا تھا۔ اپنانا ڈائریکٹ رینڈرنگ مینیجر کرنل سب سسٹم ابتدائی طور پر ایکس فری 86 4.0 ڈسپلے سرور کے نئے ڈائریکٹ رینڈرنگ انفراسٹرکچر کے ساتھ استعمال کرنے کے لیے تیار کیا گیا تھا، جو بعد میں اس کے جانشین، X.Org سرور کو وراثت میں ملا۔ لہذا، ڈی آر ایم کے اہم صارفین ڈی آر آئی کلائنٹ تھے جو ہارڈ ویئر سے تیز رفتار اوپن جی ایل کے نفاذ سے منسلک ہوتے ہیں جو میسا 3 ڈی لائبریری کے ساتھ ساتھ خود ایکس سرور میں بھی رہتا ہے۔ آج کل ڈی آر ایم کا استعمال کئی ویلینڈ کمپوزٹرز بھی کرتے ہیں، جن میں ویسٹن ریفرنس کمپوزٹر بھی شامل ہے۔ کے ایم ایسکون ایک ورچوئل کنسول کا نفاذ ہے جو ڈی آر ایم کے ایم ایس سہولیات کا استعمال کرتے ہوئے صارف کی جگہ پر چلتا ہے۔ 2015 میں، ملکیتی این ویڈیا جی فورس ڈرائیور کے ورژن 358.09 (بیٹا) کو ڈی آر ایم موڈ سیٹنگ انٹرفیس کے لیے سپورٹ موصول ہوئی جسے nvidia-modeset.ko نامی ایک نئے دانا بلب کے طور پر لاگو کیا گیا۔ یہ نیا ڈرائیور جزو ڈسپلے انجن کو پروگرام کرنے کے لیے nvidia.ko دانا ماڈیول کے ساتھ مل کر کام کرتا ہے۔ ڈسپلے کنٹرولر) جی پی یو کا۔ ڈائرکٹ رینڈرنگ انفراسٹرکچر فری اور اوپن سورس گرافکس ڈیوائس ڈرائیور لینکس فریم بفر حوالہ جات بیرونی لنکس ڈی آر ایم ہوم پیج لینکس جی پی یو ڈرائیور ڈویلپر گائیڈ (سابقہ لینکس ڈی آر ایم ڈویلپر گائیڈ) لینکس دانا لینکس دانا کی خصوصیات کے براہ راست رینڈرنگ انفراسٹرکچر انٹرفیس دیکھیں۔