يستخدم وضع الرسومات المسرّعة في لعبة Cuttlefish على جهازك المضيف وحدة معالجة الرسومات (GPU) للعرض من خلال تمرير أوامر عرض الضيف إلى جهازك المضيف، وتشغيل طلبات أوامر العرض على الجهاز المضيف، وتمرير النتائج المعروضة إلى الضيف
يرصد جهاز Cuttlefish الذي يعمل بالإصدار 11 من نظام التشغيل Android أو إصدار أحدث الرسومات المُسرَّعة ويستخدمها. إذا كان الجهاز المضيف لا يتيح استخدام الرسومات المحسّنة أو كان إصدار Android هو Android 10 أو إصدارًا أقدم، سيتولى SwiftShader عملية المعالجة من جهة العميل (مثل معالجة واجهة المستخدم وتشغيل الفيديو) في جهاز Cuttlefish. SwiftShader عبارة عن تنفيذ برمجي لواجهات برمجة تطبيقات OpenGL وVulkan. بما أنّ SwiftShader هو تطبيق برمجي، فهو يقدّم حلّاً لعرض رسومات يمكن الوصول إليه بشكل عام في Cuttlefish ويمكن تشغيله على أي جهاز مضيف.
ومع ذلك، لا يؤدي استخدام SwiftShader إلى تحقيق أداء جيد مثل الأجهزة العادية. العرض هو لمشكلة متوازية يمكن توازيها بشكل كبير، حيث إن وحدات البكسل حساب القيم بشكل مستقل. وحدات معالجة الرسومات هي وحدات أجهزة تعالج هذه المشكلة من خلال تسريع عملية العرض.
المتطلبات
يتطلب وضع الرسومات المسرّعة؛ أن يكون لدى المضيف ما يلي:
- برنامج تشغيل متوافق مع EGL ويتوافق مع إضافة
GL_KHR_surfaceless_context
- برنامج تشغيل متوافق مع OpenGL ES
- برنامج تشغيل متوافق مع Vulkan
استخدام أوضاع الرسومات المُسرَّعة
GfxStream
لاستخدام وضع الرسومات المُسرَّعة في GfxStream، شغِّل جهاز Cuttlefish
المتاح على الجهاز باستخدام العلامة --gpu_mode=gfxstream
. وباستخدام هذا الوضع، يستطيع OpenGL وVulkan
تتم إعادة توجيه طلبات البيانات من واجهة برمجة التطبيقات إلى المضيف مباشرةً.
launch_cvd --gpu_mode=gfxstream
Virgl
لاستخدام وضع الرسومات المسرّعة من Virgl، شغِّل جهاز Cuttlefish محلي
باستخدام العلامة --gpu_mode=drm_virgl
.
launch_cvd --gpu_mode=drm_virgl
عند استخدام وضع الرسومات المسرّعة من Virgl، تتم ترجمة طلبات البيانات من واجهة برمجة التطبيقات OpenGL في تمثيل متوسط (راجع Gallium3D). تشير رسالة الأشكال البيانية توصيل التمثيل المتوسط إلى المضيف virglrenderer على يقوم المضيف بترجمة التمثيل المتوسط مرة أخرى إلى طلبات واجهة برمجة تطبيقات OpenGL.