Android 13 की शुरुआत में, हार्डवेयर कंपोज़र (एचडब्ल्यूसी) एचएएल की जानकारी
AIDL और HIDL वर्शन यहां दिए गए हैं:
android.hardware.graphics.composer@2.1
से
android.hardware.graphics.composer@2.4
के इस्तेमाल पर रोक लगा दी गई है.
इस पेज पर एआईडीएल और HIDL HAL के बीच के अंतर के बारे में बताया गया है एचडब्ल्यूसी और एआईडीएल एचएएल को लागू करना और उसकी जांच करना.
इसकी वजह से एआईडीएल से मिलने वाले फ़ायदे, वेंडर को इन चीज़ों का इस्तेमाल करने के लिए एआईडीएल कंपोज़र एचएएल शुरू हो रहा है HIDL वर्शन के बजाय Android 13. ज़्यादा जानकारी के लिए, लागू करने का तरीका सेक्शन देखें.
एआईडीएल और एचआईडीएल एचएएल में अंतर
नए एआईडीएल कंपोज़र एचएएल का नाम android.hardware.graphics.composer3
है
IComposer.aidl
में बताया गया है.
यह HIDL HAL से मिलते-जुलते एपीआई को दिखाता है
android.hardware.graphics.composer@2.4
में ये बदलाव किए गए हैं:
तेज़ी से मैसेज की सूची (एफ़एमक्यू) को हटाया गया के पक्ष में हो सकता है.
AIDL HAL, कमांड इंटरफ़ेस को 'बहुत ज़्यादा टाइप किए गए' के आधार पर तय करता है HIDL में एफ़एमक्यू पर क्रम से लगाए गए निर्देशों के उलट, पार्स किए जा सकने वाले टाइप. यह इससे कमांड के लिए एक स्थायी इंटरफ़ेस मिलता है. साथ ही, कमांड पेलोड के बारे में बताया गया है.
executeCommands
तरीका की जानकारीIComposerClient.aidl
में दी गई है जैसेCommandResultPayload[] executeCommands(in DisplayCommand[] commands);
जहां प्रत्येक कमांड सशक्त रूप से टाइप किया गया पार्स किया जा सकने वाला प्रकार है
DisplayCommand.aidl
. आदेश के जवाब ज़बरदस्ती टाइप किए गए पार्सल किए जा सकते हैंCommandResultPayload.aidl
.IComposerClient.getClientTargetSupport
को हटाएं, क्योंकि इस तरीके का इस्तेमाल करने वाला कोई क्लाइंट नहीं है.कलर को बाइट के बजाय फ़्लोट के तौर पर पेश करना, ताकि जैसा कि
ASurfaceTransaction_setColor
में बताया गया है, Android में ऊपरी ग्राफ़िक्स स्टैक की जानकारी दी गई है.एचडीआर कॉन्टेंट को कंट्रोल करने के लिए, नए फ़ील्ड जोड़े गए हैं.
AIDL HAL में, मिक्स SDR/HDR लेयर स्टैक, स्क्रीन पर एचडीआर लेयर होने पर एसडीआर लेयर.
LayerCommand
मेंbrightness
फ़ील्ड SurfaceFlinger को हर लेयर की चमक तय करने की सुविधा देता है, ताकि HW गामा स्पेस के उलट, लीनियर लाइट स्पेस में लेयर की सामग्री.ClientTargetPropertyWithBrightness
मेंbrightness
फ़ील्ड इससे एचडब्ल्यूसी को क्लाइंट कंपोज़िशन के लिए ब्राइटनेस स्पेस तय करने औरRenderEngine
को निर्देश दें क्लाइंट कंपोज़िशन में एसडीआर लेयर की रोशनी को कम करना है या नहीं.dimmingStage
फ़ील्ड की मदद से एचडब्ल्यूसी को कॉन्फ़िगर किया जा सकता है किRenderEngine
कॉन्टेंट को कब डिम कर सकता है. यह वेंडर के तय किए गएColorModes
को शामिल करता है, जो गामा में रोशनी को कम कर सकता है ताकि वेंडर की कलर पाइपलाइन में कंट्रास्ट को बेहतर बनाने की अनुमति मिल सके.एक नई कंपोज़िशन टाइप
DISPLAY_DECORATION
को जोड़ा गयाComposition.aidl
स्क्रीन की सजावट के लिए.कुछ डिवाइसों में ऐसा हार्डवेयर होता है जो ऐल्फ़ा मास्क को ऑप्टिमाइज़ करने के लिए काम करता है. इससे स्क्रीन के गोल किनारे और कटआउट बन जाते हैं. ऐसे हार्डवेयर वाले डिवाइसों को यह ज़रूर बताना चाहिए कि
IComposerClient.getDisplayDecorationSupport
लागू करेंDisplayDecorationSupport
संरचना वापस लौटाने के लिएDisplayDecorationSupport.aidl
. इस स्ट्रक्चर में,PixelFormat
के बारे में बताया गया है औरAlphaInterpretation
डिवाइस के लिए ज़रूरी enum. इसे लागू करने पर, सिस्टम यूज़र इंटरफ़ेस (यूआई),DISPLAY_DECORATION
के तौर पर ऐल्फ़ा मास्क लेयर, एक नया कंपोज़िशन टाइप, जो खास हार्डवेयर का इस्तेमाल करता है.एक नया
expectedPresentTime
जोड़ा गयाDisplayCommand.aidl
के लिए फ़ील्ड.expectedPresentTime
फ़ील्ड की मदद से SurfaceFlinger उम्मीद के मुताबिक सेट कर सकता है मौजूदा कॉन्टेंट को स्क्रीन पर दिखाने का मौजूदा समय. इसके साथ सुविधा का उपयोग करने के लिए, SurfaceFlinger ज़्यादा कंपोज़िशन के काम को पाइपलाइन में बदल देता है.बूट डिसप्ले कॉन्फ़िगरेशन को कंट्रोल करने के लिए नए एपीआई जोड़े गए हैं.
BOOT_DISPLAY_CONFIG
का इस्तेमाल करके, वेंडर यह बता सकते हैं कि बूट डिसप्ले कॉन्फ़िगरेशन काम करता है. कॉन्टेंट बनानेsetBootDisplayConfig
,clearBootDisplayConfig
औरgetPreferredBootDisplayConfig
विधियों का इस्तेमाल करता हैBOOT_DISPLAY_CONFIG
इस तरह से:setBootDisplayConfig
का इस्तेमाल करके, इस फ़्रेमवर्क से वेंडर को बूट टाइम डिसप्ले कॉन्फ़िगरेशन के बारे में जानकारी मिलती है. वेंडर को बूट डिसप्ले कॉन्फ़िगरेशन में कैश मेमोरी में सेव करना होगा. साथ ही, 'आगे बढ़ें' पर इस कॉन्फ़िगरेशन में बूट करना होगा डिवाइस को फिर से चालू करें. अगर डिवाइस इस कॉन्फ़िगरेशन में चालू नहीं हो पा रहा है, तो वेंडर को कॉन्फ़िगरेशन जो इस कॉन्फ़िगरेशन के रिज़ॉल्यूशन और रीफ़्रेश दर से मेल खाता है. अगर ऐसा नहीं है कॉन्फ़िगरेशन मौजूद है, तो वेंडर को अपने पसंदीदा डिसप्ले कॉन्फ़िगरेशन का इस्तेमाल करना चाहिए.clearBootDisplayConfig
का इस्तेमाल करके, फ़्रेमवर्क, वेंडर को बूट डिसप्ले कॉन्फ़िगरेशन को हटाने के बारे में बताता है. डिवाइस को अगली बार फिर से चालू करने के दौरान, अपनी पसंद के डिसप्ले कॉन्फ़िगरेशन में बूट करें.getPreferredBootDisplayConfig
का इस्तेमाल करके, फ़्रेमवर्क, वेंडर के पसंदीदा बूट मोड के बारे में क्वेरी करता है.
जब बूट डिसप्ले कॉन्फ़िगरेशन समर्थित नहीं होता है, तो ये तरीके
UNSUPPORTED
की वैल्यू.डिसप्ले कुछ समय तक इस्तेमाल न होने वाले टाइमर को कंट्रोल करने के लिए, नए एपीआई जोड़े गए हैं.
DISPLAY_IDLE_TIMER
का इस्तेमाल करके, वेंडर यह बता सकते हैं कि वेंडर के लिए, कोई इनऐक्टिविटी टाइमर लागू किया गया है यह डिसप्ले. कुछ समय से इस्तेमाल में न होने पर, यह सुविधा रीफ़्रेश दर को कम कर देती है पावर बचाने के लिए सेटिंग. यह प्लैटफ़ॉर्मsetIdleTimerEnabled
का इस्तेमाल करता है का इस्तेमाल करके, टाइमर के टाइम आउट को कंट्रोल किया जा सकता है. साथ ही, कुछ मामलों में ताकि डिवाइस कुछ समय इस्तेमाल न होने पर रीफ़्रेश दर को स्विच होने से रोका जा सके.IComposerCallback.onVsyncIdle
का इस्तेमाल करके कॉलबैक प्लैटफ़ॉर्म को बताता है कि डिसप्ले कुछ समय से इस्तेमाल में नहीं है औरvsync
समय बदल गया है. यह प्लैटफ़ॉर्म इस कॉलबैक का जवाब देने के लिए, इसकेvsync
मॉडल. ऐसा करने पर,vsync
को अगले फ़्रेम पर फिर से सिंक करना पड़ता है और नई सेटिंग के बारे में पता चलता हैvsync
की रफ़्तार.
लागू करना
वेंडर को Android 13 के लिए AIDL HAL लागू करने की ज़रूरत नहीं है. हालांकि, उन्हें एआईडीएल लागू करने के लिए प्रोत्साहित किया जाता है नए फ़ंक्शन और एपीआई का इस्तेमाल करने के लिए, HIDL वर्शन के बजाय कंपोज़र HAL.
पहचान फ़ाइल लागू करना लागू किया गया है.
टेस्ट करना
आपने जो लागू किया है उसकी जांच करने के लिए, VtsHalGraphicsComposer3_TargetTest
चलाएं.