يستخدم وضع الرسومات السريع في Cuttlefish وحدة معالجة الرسومات (GPU) الفعلية لجهازك المضيف في العرض من خلال تمرير أوامر العرض الخاصة بالجهاز الضيف إلى جهازك المضيف، وتشغيل طلبات أوامر العرض على جهازك المضيف، وتمرير نتائج العرض مرة أخرى إلى الجهاز الضيف.
يرصد جهاز Cuttlefish الذي يعمل بالإصدار 11 من نظام التشغيل Android أو إصدار أحدث الرسومات السريعة ويستخدمها. إذا كان الجهاز المضيف لا يتيح الرسومات السريعة أو كان إصدار 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 API مباشرةً إلى الجهاز المضيف.
launch_cvd --gpu_mode=gfxstream
Virgl
لاستخدام وضع الرسومات المسرَّعة من Virgl، شغِّل جهاز Cuttlefish المحلي باستخدام العلامة --gpu_mode=drm_virgl.
launch_cvd --gpu_mode=drm_virgl
عند استخدام وضع الرسومات المسرَّعة Virgl، يتم تحويل طلبات OpenGL API إلى تمثيل وسيط (راجِع Gallium3D). يتم إرسال التمثيل الوسيط إلى الجهاز المضيف، وتتولّى مكتبة virglrenderer على الجهاز المضيف ترجمة التمثيل الوسيط مرة أخرى إلى طلبات OpenGL API.