حقيقة الدعم الكامل ل DX12 من NVIDIA و AMD

DX12_FULL_SUPPORT_TRUTH_ART0

منذ إطلاق جيل GTX900 من NVIDIA و جيل بطاقات FuryX من AMD ونحن بصدد تساؤلات و مناقشات عديدة حول حقيقة وجود دعم كامل للخصائص التي يقدمها DirectX12 أم لا ؟!  دار السباق بين AMD و NVIDIA فى الفترة ليست بالبعيدة حول من ينتزع الدعم الكامل لـ DX12 .

كلتا الشركتان تحاولان استغلال DX12 تسويقياً لصالحها وكانت NVIDIA هي الأفضل “تسويقياً” حيث أكدت أكثر من مرة على دعم بطاقات GTX900 ل DX12 دعماً كاملاً ! ولكن ماهي حقيقة ذلك ؟! هل هناك دعم كامل ل DX12 حقاً ؟!

DX12_FULL_SUPPORT_TRUTH_ART1

فأما عن AMD فهي لم تذكر أي شيئ فى الدعاية حول FuryX بخصوص الدعم الكامل لـ DX12  ولكن بالنسبة لبطاقات الجيل الأقدم R9 290X فتم تأكيد عدم الدعم الكامل له .
وإن كان ما ذُكر فى السطور السابقة قد تغيّر كثيراً فى اليومين الماضيين ! كيف ذلك ؟!

بدأ الأمر منذ يومين بعد أن وجد مطوري OXIDE أن لعبتهم القادمة Ashes of the Singularity المبنية على DX12 تعاني من هبوط فى الأداء مع بطاقات GTX900 من NVIDIA بعد تفعيل خاصية ASYNC Compute وهي من خواص DX12  الجديدة بالمقارنة مع بطاقات AMD .
بعدها خاطب مطوري OXIDE شركة NVIDIA وكان الرد بأن طلبت منهم الشركة ألّا يعتمدوا على تلك الخاصية !

لكن ماهي خاصية Async Compute وهل هي مفيدة حقاً ؟!

كان لـ AMD السبق فى توضيح ماهية Async Compute .

فى البداية و لتوضيح الأمور , الأوامر الرسومية المتعددة يتم معالجتها فى خط معالجة واحد تحت عباءة DX11 ولكن مع واجهات برمجية API ك Mantle و DX12 فالأمر تغير كثيراً حيث يمكن اصطفاف تلك الاوامر فى عدة صفوف أو تحت مسمي “تعدد خطوط المعالجة” فى عدد من الخطوط والمسارات مرتبة حسب النوع والأهمية.

وذلك يضيف ميزة كبيرة لكيفية معالجة الأوامر الرسومية فمن خلال المعالجة الموازية Async Compute يمكنك تقسيم الأوامر لثلاث أنواع : أوامر رسومية – أوامر حسابية (كالإضاءة والمعاملات الفيزيائية) – أوامر نقل البيانات

وهذا التقسيم يتيح نسبة تأخير أقل بالتالى عدد اطارات فى الثانية FPS اسرع و زمن استجابة أقل وأداء أعلى .

DX12_FULL_SUPPORT_TRUTH_ART2

تلك الصورة توضح مسار الأوامر والاستفادة من تعددها تحت مسمي خاصية المعالجة الموازية. حيث شُبهت بطريق مرورى تريد الأوامر ان تسلُكه فيتم تقسيمها إلى صفوف أو ممرات حسب نوعها ثم حسب أولويتها وأهميتها فى أسبقية المعالجة وهذا يتيح معالجة أسرع للأوامر و زمن استجابة أقل .

جميع البطاقات المبنية على المعمارية GCN من AMD تحتوي على وحدات ACE وهي المختصة بذلك . ولكن بطاقات NVIDIA المبنية على MAXWELL وبطاقات GTX900 لا تحتوي على تلك الوحدات مما يؤكد غياب دعم بطاقات GTX900 للدعم الكامل لجميع مميزات DX12 .

ولكن بهذا لقد عرّفنا خاصية المعالجة الموازية “نظرياً” فهل هناك فائدة “عملية” من هذه الخاصية حقاً ؟!

بالفعل فامت AMD بالقيام ببعض الاختبارات وطرحها , وبقياس الاطارات فى الثانية FPS مع تفعيل الخاصية Async compute وعدم تفعيلها لبطاقات AMD .

DX12_FULL_SUPPORT_TRUTH_ART4

الاختبار تم على وحدة LiquidVr من AMD و مُقسّم على ثلاثة أقسام :

القسم الأول مع عدم تفعيل محسنات الرسوم من ظلال وتأثيرات رسومية مع غلق خاصية Async Compute أي بتقليل الرسوميات ونحصل على 245 اطار .

القسم الثاني مع تفعيل محسنات الرسوم للحصول على تجربة رسومية جيدة وغلق خاصية Async Compute ونلاحظ هبوط معدل الاطارات FPS لتحسين الرسوم الى 158 اطار فى الثانية.

القسم الثالث هو مع تفعيل محسنات الرسوم و خاصية Async Compute ونلاحظ ارتفاع الاداء مرة أخري بنسبة كبيرة لنحصل على 230 اطار.
وهي – إن صدقت تلك الاختبارات – ميزة كبيرة لبطاقات GCN من AMD على بطاقات Maxwell من NVIDIA !

ماذا بعد ؟

أردات NVIDIA من مطوري OXIDE أن يمنعوا استخدام خاصية Async Compute فى لعبتهم القادمة Ashes of the Singularity لكيلا يحدث هبوط فى أداء بطاقاتها مع اللعبة بالمقارنة مع بطاقات AMD التى حققت أداءاً مميزاً .

وهو ما يؤكد غياب دعم بطاقات NVidia لتلك الخاصية والتي سبق وأن قالت NVIDIA أنها ستدعم DX12 بشكل كامل بالإضافة إلى أن الـ DRIVER الخاص بها يؤكد على دعم بطاقات Maxwell الكامل لـ DX12 .

ولكن ماذا عن AMD ؟ 

كانت الشركة صريحة فعلى لسان أحد المسئولين بالشركة “لا يوجد بطاقة على وجه الأرض حالياً تدعم DX12 دعماً كاملاً” جاء هذا التصريح على لسان Robert Hallock وهو رئيس التسويق التقني بشركة AMD وقد ظهر اليومين الماضيين كثيراً فى عدة مناسبات تتعلق بالنقاش حول دعم DX12 . حيث ذكر فى منشور Post له على الـ facebook :

I feel like people are _finally_ starting to see the chess game we’ve been playing with GCN, Mantle, Vulkan and DX12. People thought we were crazy for doing Mantle. Few understood the true value and thought we were just screwing around with a silly also-ran API, not realizing or willfully ignoring that we were seeding devs with the knowledge for a paradigm shift in graphics development.

Meanwhile:
DX12 appeared with the same types of workloads.
Then Mantle became Vulkan.
Then Mantle powered LiquidVR.

And all of them make incredible use of the asynchronous/low-latency resources in GCN. Who’s laughing now?

 

وكملخص لما قاله فهو يشعر بأن المستخدمين قد بدأو يلاحظون “لعبة الشطرنج” على حد وصفه التى قامت بها AMD مستخدمة أوراقها Mantle و Vulcan  فهي كانت بمثابة خطوة جنونية لدي البعض ولكن القليل أدرك أن القيمة الحقيقة لما تفلعه AMD ليست فقط أن تقوم بطرح واجهات برمجية API جديدة فحسب ! بل كانت فى تنمية المطورين على واجهات برمجية API تشبه DX12 ك Mantle وكأبسط مثال فالواجهات البرمجية Mantle/Vulcan يستغلون خاصية Async Compute كما يفعل DX12 تماماً .

 

وقد أضاف أيضاً فى مناقشة طويلة على منصة REDDIT تفاصيل كثيرة أقتبس منها :

I think gamers are learning an important lesson: there’s no such thing as “full support” for DX12 on the market today.” said Robert and continued:

“There have been many attempts to distract people from this truth through campaigns that deliberately conflate feature levels, individual untiered features and the definition of “support.” This has been confusing, and caused so much unnecessary heartache and rumor-mongering.

Here is the unvarnished truth: Every graphics architecture has unique features, and no one architecture has them all. Some of those unique features are more powerful than others.

Yes, we’re extremely pleased that people are finally beginning to see the game of chess we’ve been playing with the interrelationship of GCN, Mantle, DX12, Vulkan and LiquidVR.”

وأضاف هنا أنه لا يوجد شيئ على الإطلاق اسمه دعم كامل للـ DX12 حتي الآن , وهناك محاولات تسويقية كثيرة – يقصد المنافسين شركة NVIDIA – لإبعاد أنظار المستخدمين عن حقيقة الدعم الكامل و الشك بإن كان موجوداً أصلاً ! هذا مما سبب اختلاط الأمور عند كثير من الناس .

وتابع  , أن هذه الحقيقة الصريحة : كل معمارية تنفرد بدعم بعض المميزات الفريدة وليست كلها , ولا توجد معمارية حتي الآن من AMD أو NVIDIA تدعم كل خواص DX12 بشكل كامل . ولكل خاصية أهميتها ومدي تأثيرها فليست كل الخواص بنفس الأهمية .

وأكد على أهمية ما قامت به AMD سابقاً من طرحها لـ Mantle وهو ما ساعد كثيراً فى رأيي على تطويع معماريات AMD للعمل مع خواص DX12 .

وصلنا هنا إلى مربط الفرس . فلا يوجد دعم كامل حتي الآن لDX12 سواء من AMD أو NVIDIA . وعرفنا أن معماريات NVIDIA تغيب عنها دعهم خاصية Async Compute وهي ميزة فريدة في رأيي , ولكن ماهي الميزات التى تغيب عن AMD ؟! سؤال مهم يطرح نفسه والإجابة عنها قام بها مسئول AMD عندما سأله أحد المستخدمين نفس السؤال :

“Raster Ordered Views and Conservative Raster. Thankfully, the techniques that these enable (like global illumination) can already be done in other ways at high framerates (see: DiRT Showdown).”

هناك خاصيتان لا تدعمهما معماريات AMD وهما : Raster Ordered Views و Conservative Raster واللتان على حسب ما ذكر  أنك يمكنك الاستغناء عنها ودعمها بطرق أخري مع الحفاظ على معدل اطارات عالى كما فى لعبة DIRT Showdown .

وتلخيصاً للمقال فقد سردت أهم النقاط التى جاءت فى نقاط مبسطة :

1- بطاقات GTX900 من NVIDIA لاتدعم DX12 بشكل كامل ويغيب عنها دعم تقنية Async Compute .
2- بطاقات AMD Fury هي الأخري يغيب عنها الدعم الكامل ل DX12  بالتحديد يغيب دعم الخاصيتان : Raster Ordered Views و Conservative Raster ولكنها تدعم خاصية Async Compute بشكل جيد .
3- لا نعلم أي الخواص أيضاً لاتدعمها NVIDIA  , فكل ما نعرفه أنها لاتدعم Async Compute ولا تأكيد حول باقي الخواص .
4- من الممكن دعم تلك الخواص بطرق أخري غير الدعم المعماري وهو ما يمكن أن تلجأ إليه NVIDIA فى الفترة القادمة .

احمد عزيز

أحمد عزيز , صاحب الـ 20 عامًا, متابع نهم لكل مجالات التقنية و قارئ شغوف.
زر الذهاب إلى الأعلى