يستخدم وضع الرسومات السريع في 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 إلى تمثيل وسيط (يُرجى الاطّلاع على Gallium3D). يتم إرسال التمثيل الوسيط إلى الجهاز المضيف، وتتولّى مكتبة virglrenderer على الجهاز المضيف ترجمة التمثيل الوسيط إلى طلبات OpenGL API.