اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release بدلاً من aosp-main لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
Cuttlefish: ميزة تسريع الرسومات باستخدام وحدة معالجة الرسومات
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يستخدم وضع الرسومات المحسّنة في 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
API مباشرةً إلى المضيف.
launch_cvd --gpu_mode=gfxstream
Virgl
لاستخدام وضع الرسومات المُسرَّعة في Virgl، ابدأ تشغيل جهاز Cuttlefish على الجهاز
مع إضافة العلامة --gpu_mode=drm_virgl.
launch_cvd --gpu_mode=drm_virgl
عند استخدام وضع الرسومات المحسّنة في Virgl، تتم ترجمة طلبات البيانات من واجهة برمجة التطبيقات OpenGL
إلى تمثيل وسيط (راجِع
Gallium3D). يتم إرسال التمثيل الوسيط إلى المضيف ومكتبة
virglrenderer على
المضيف، وتُعيد مكتبة
virglrenderer ترجمة التمثيل الوسيط إلى طلبات OpenGL API.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Cuttlefish: GPU graphics acceleration\n\nCuttlefish's accelerated graphics mode uses your host machine's physical\ngraphics processing unit (GPU) for rendering by passing guest rendering commands\nto your host machine, running the rendering commands calls on your host machine,\nand passing the rendered results back to the guest.\n\nA Cuttlefish device running in Android 11 or higher\ndetects and uses accelerated graphics. If the host machine doesn't support\naccelerated graphics or the Android version is\nAndroid 10 or lower, guest-side rendering (for example,\nUI and video playback) in your Cuttlefish device is handled by SwiftShader.\nSwiftShader is a software implementation of the OpenGL and Vulkan APIs. Because\nSwiftShader is a software implementation, it provides a universally accessible\nrendering solution for Cuttlefish capable of running on any host machine.\n\nHowever, using SwiftShader isn't as performant as a normal device. Rendering is\na parallel problem that can be massively parallelized, as pixel\nvalues can be computed independently. Graphics processing units (GPUs) are\nhardware units that address this problem by accelerating rendering.\n\nRequirements\n------------\n\nAccelerated graphics mode requires that the host have:\n\n- EGL capable driver supporting the `GL_KHR_surfaceless_context` extension\n- OpenGL ES capable driver\n- Vulkan capable driver\n\nUse accelerated graphics modes\n------------------------------\n\n### GfxStream\n\nTo use the GfxStream accelerated graphics mode, launch your local Cuttlefish\ndevice with the `--gpu_mode=gfxstream` flag. Using this mode, OpenGL and Vulkan\nAPI calls are forwarded directly to the host. \n\n```\nlaunch_cvd --gpu_mode=gfxstream\n```\n\n### Virgl\n\nTo use the Virgl accelerated graphics mode, launch your local Cuttlefish device\nwith the `--gpu_mode=drm_virgl` flag. \n\n```\nlaunch_cvd --gpu_mode=drm_virgl\n```\n\nWhen using the Virgl accelerated graphics mode, OpenGL API calls are translated\ninto an intermediate representation (see\n[Gallium3D](https://www.freedesktop.org/wiki/Software/gallium/)). The\nintermediate representation is communicated to the host and the\n[virglrenderer](https://gitlab.freedesktop.org/virgl/virglrenderer) library on\nthe host translates the intermediate representation back to OpenGL API calls.\n| **Note:** Vulkan isn't supported."]]