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

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

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

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

المتطلبات

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

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

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

GfxStream

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

launch_cvd --gpu_mode=gfxstream

فيرج

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

launch_cvd --gpu_mode=drm_virgl

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