कटलफ़िश: जीपीयू ग्राफ़िक एक्सेलरेटर

Cuttlefish के बेहतर ग्राफ़िक मोड में, रेंडरिंग के लिए आपकी होस्ट मशीन की फ़िज़िकल ग्राफ़िक प्रोसेसिंग यूनिट (जीपीयू) का इस्तेमाल किया जाता है. इसके लिए, मेहमान को रेंडरिंग के निर्देश देने वाली कमांड को आपकी होस्ट मशीन पर भेजा जाता है. साथ ही, रेंडरिंग के निर्देशों को आपकी होस्ट मशीन पर चलाया जाता है और रेंडर किए गए नतीजों को मेहमान को वापस भेजा जाता है.

Android 11 या उसके बाद के वर्शन पर चलने वाला कटलफ़िश डिवाइस, Accelerated ग्राफ़िक की पहचान करता है और उसका इस्तेमाल करता है. अगर होस्ट मशीन पर बेहतर ग्राफ़िक की सुविधा काम नहीं करती या Android का वर्शन 10 या उससे पहले का है, तो Cuttlefish डिवाइस में मेहमान-साइड रेंडरिंग (उदाहरण के लिए, यूज़र इंटरफ़ेस और वीडियो चलाना) को SwiftShader मैनेज करता है. SwiftShader, OpenGL और Vulkan एपीआई का एक सॉफ़्टवेयर इंप्लिमेंटेशन है. SwiftShader, सॉफ़्टवेयर को लागू करने का एक टूल है, इसलिए यह कटलफ़िश के लिए दुनिया भर में ऐक्सेस करने लायक रेंडरिंग समाधान उपलब्ध कराता है, जो किसी भी होस्ट मशीन पर चल सकता है.

हालांकि, SwiftShader का इस्तेमाल करने पर, सामान्य डिवाइस की तरह परफ़ॉर्मेंस नहीं मिलती. रेंडर करना एक साथ चलने वाली समस्या है, जो बड़े पैमाने पर एक साथ रखी जा सकती है, क्योंकि पिक्सल वैल्यू को अलग-अलग कंप्यूट किया जा सकता है. ग्राफ़िक प्रोसेसिंग यूनिट (जीपीयू), ऐसी हार्डवेयर यूनिट हैं जो रेंडरिंग को तेज़ करके इस समस्या को हल करती हैं.

ज़रूरी शर्तें

Accelerated ग्राफ़िक्स मोड के लिए ज़रूरी है कि होस्ट के पास:

  • GL_KHR_surfaceless_context एक्सटेंशन के साथ काम करने वाला EGL सक्षम ड्राइवर
  • OpenGL ES सक्षम ड्राइवर
  • Vulkan की सुविधा वाला ड्राइवर

एक्सेलरेटेड ग्राफ़िक मोड का इस्तेमाल करना

GfxStream

GfxStream के ज़रिए तेज़ी से काम करने वाले ग्राफ़िक मोड का इस्तेमाल करने के लिए, --gpu_mode=gfxstream फ़्लैग के साथ अपना स्थानीय Cuttlefish डिवाइस लॉन्च करें. इस मोड का इस्तेमाल करके, OpenGL और Vulkan के एपीआई कॉल सीधे होस्ट को भेजे जाते हैं.

launch_cvd --gpu_mode=gfxstream

विर्गल

Virgl के एक्सेलरेटेड ग्राफ़िक मोड का इस्तेमाल करने के लिए, अपने स्थानीय कटलफ़िश डिवाइस को --gpu_mode=drm_virgl फ़्लैग के साथ लॉन्च करें.

launch_cvd --gpu_mode=drm_virgl

Virgl accelrated ग्राफ़िक्स मोड का इस्तेमाल करने पर, OpenGL एपीआई कॉल को इंटरमीडिएट रेप्रज़ेंटेशन में बदल दिया जाता है (Gallium3D देखें). इंटरमीडिएट प्रज़ेंटेशन की जानकारी होस्ट को दी जाती है और होस्ट पर मौजूद virglrenderer लाइब्रेरी, इंटरमीडिएट प्रज़ेंटेशन को OpenGL API कॉल में बदल देती है.