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

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

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

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

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

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

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

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

Gfxस्ट्रीम

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

launch_cvd --gpu_mode=gfxstream

विर्गल

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

launch_cvd --gpu_mode=drm_virgl

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