حبَّار: تسريع الرسومات على وحدة معالجة الرسومات

يستخدم وضع الرسومات المسرّعة في تطبيق Cuttlefish وحدة معالجة الرسومات (GPU) في الجهاز المضيف للعرض من خلال تمرير أوامر عرض الضيف إلى الجهاز المضيف، وتشغيل أوامر العرض على الجهاز المضيف، وتمرير النتائج المعروضة إلى الضيف.

يرصد جهاز حبَّار يعمل بنظام التشغيل Android 11 أو الإصدارات الأحدث رسومات مسرَّعة ويستخدمها. إذا كان الجهاز المضيف لا يتيح الرسومات المسرّعة أو كان إصدار Android هو Android 10 أو الإصدارات الأقدم، سيتعامل SwiftShader مع العرض من جهة الضيف (على سبيل المثال، واجهة المستخدم وتشغيل الفيديو) في جهاز Cuttlefish. SwiftShader عبارة عن تنفيذ برمجي لواجهات برمجة تطبيقات OpenGL وVulkan. وبما أنّ SwiftShader هو تطبيق برمجي، فهو يوفّر حل عرض يمكن الوصول إليه عالميًا للعبة Cuttlefish يمكنها العمل على أي جهاز مضيف.

ومع ذلك، لا يؤدي استخدام SwiftShader إلى تحقيق أداء جيد مثل الأجهزة العادية. يُعد العرض مشكلة متوازية يمكن توازيها بشكل كبير، حيث يمكن حساب قيم البكسل بشكل مستقل. وحدات معالجة الرسومات (GPU) هي وحدات من الأجهزة تعالج هذه المشكلة من خلال تسريع العرض.

المتطلبات الأساسية

يتطلب وضع الرسومات المسرّعة؛ أن يكون لدى المضيف ما يلي:

  • برنامج تشغيل متوافق مع EGL يتوافق مع الإضافة GL_KHR_surfaceless_context
  • برنامج تشغيل متوافق مع OpenGL ES
  • برنامج تشغيل متوافق مع Vulkan

استخدام أوضاع الرسومات المسرّعة

GfxStream

لاستخدام وضع الرسومات المسرّعة في GfxStream، عليك تشغيل جهاز Cuttlefish المحلي باستخدام علامة --gpu_mode=gfxstream. باستخدام هذا الوضع، تتم إعادة توجيه طلبات البيانات من واجهة برمجة التطبيقات OpenGL وVulkan مباشرةً إلى المضيف.

launch_cvd --gpu_mode=gfxstream

فيرج

لاستخدام وضع الرسومات المسرّعة من Virgl، يمكنك تشغيل جهاز حبَّار محلي باستخدام علامة --gpu_mode=drm_virgl.

launch_cvd --gpu_mode=drm_virgl

عند استخدام وضع الرسومات المسرّعة من Virgl، تتم ترجمة طلبات واجهة برمجة التطبيقات OpenGL إلى تمثيل متوسط (يمكنك الاطلاع على Gallium3D). يتم إرسال التمثيل المتوسط إلى المضيف، وتنقل مكتبة virglrenderer على المضيف التمثيل المتوسط إلى طلبات واجهة برمجة تطبيقات OpenGL.