از Android 13، Hardware Composer (HWC) HAL در AIDL تعریف شده است و نسخههای HIDL از android.hardware.graphics.composer@2.1
تا android.hardware.graphics.composer@2.4
منسوخ شدهاند.
در این صفحه تفاوت های AIDL و HIDL HAL برای HWC و اجرا و آزمایش AIDL HAL توضیح داده شده است.
به دلیل مزایای ارائه شده توسط AIDL، فروشندگان تشویق می شوند تا به جای نسخه HIDL ، AIDL composer HAL را با شروع اندروید 13 اجرا کنند. برای اطلاعات بیشتر به بخش پیاده سازی مراجعه کنید.
تفاوت بین AIDL و HIDL HAL
آهنگساز جدید AIDL HAL، با نام android.hardware.graphics.composer3
، در IComposer.aidl
تعریف شده است. API مشابه HIDL HAL android.hardware.graphics.composer@2.4
را با تغییرات زیر نشان می دهد:
حذف صف پیام سریع (FMQ) به نفع دستورات قابل بسته بندی.
AIDL HAL رابط فرمان را بر اساس انواع قابل تایپ قوی در مقابل دستورات سریالی FMQ در HIDL تعریف می کند. این یک رابط پایدار برای دستورات و یک تعریف قابل خواندن از نحوه تفسیر بار فرمان ارائه می کند.
متد
executeCommands
درIComposerClient.aidl
به صورت تعریف شده استCommandResultPayload[] executeCommands(in DisplayCommand[] commands);
که در آن هر فرمان یک نوع parcelable با تایپ قوی است که در
DisplayCommand.aidl
تعریف شده است. پاسخهای فرمان، بستهبندیهایی با تایپ قوی هستند که درCommandResultPayload.aidl
تعریف شدهاند.Removal of
IComposerClient.getClientTargetSupport
as there are no active clients for this method.نمایش رنگها بهعنوان شناور بهجای بایت برای همسویی بهتر با پشته گرافیکی بالایی در Android همانطور که در
ASurfaceTransaction_setColor
تعریف شده است.افزودن فیلدهای جدید برای کنترل محتوای HDR.
در AIDL HAL، پشته های لایه SDR/HDR مختلط از کم نور شدن یکپارچه لایه های SDR هنگامی که یک لایه HDR به طور همزمان روی صفحه است پشتیبانی می کند.
فیلد
brightness
درLayerCommand
به SurfaceFlinger اجازه می دهد روشنایی هر لایه را مشخص کند، به طوری که HWC محتوای لایه را در فضای نور خطی، بر خلاف فضای گاما، کم رنگ می کند.فیلد
brightness
درClientTargetPropertyWithBrightness
به HWC اجازه میدهد فضای روشنایی را برای ترکیب کلاینت مشخص کند و بهRenderEngine
دستور دهد که آیا لایههای SDR را در ترکیب کلاینت کم رنگ کند یا خیر.فیلد
dimmingStage
به HWC اجازه می دهد تا زمانی کهRenderEngine
محتوا را کم نور کند، پیکربندی کند. این حالتColorModes
تعریفشده توسط فروشنده را در خود جای میدهد، که ممکن است ترجیح دهند در فضای گاما کمنور باشند تا به افزایش کنتراست تعریفشده توسط فروشنده در خطوط لوله رنگ خود اجازه دهند.Addition of a new composition type
DISPLAY_DECORATION
inComposition.aidl
for screen decorations.برخی از دستگاهها سختافزاری را برای بهینهسازی طراحی ماسک آلفا اختصاص دادهاند که گوشههای گرد و برشهای نمایشگر را صاف میکند. دستگاههایی با چنین سختافزاری باید
IComposerClient.getDisplayDecorationSupport
برای بازگرداندن ساختارDisplayDecorationSupport
همانطور که درDisplayDecorationSupport.aidl
جدید تعریف شده است، پیادهسازی کنند. این ساختار شمارههایPixelFormat
وAlphaInterpretation
مورد نیاز دستگاه را توصیف میکند. پس از این پیاده سازی، سیستم UI لایه ماسک آلفا را به عنوانDISPLAY_DECORATION
علامت گذاری می کند، یک نوع ترکیب جدید که از سخت افزار اختصاصی بهره می برد.افزودن یک فیلد
expectedPresentTime
جدید بهDisplayCommand.aidl
.فیلد
expectedPresentTime
به SurfaceFlinger این امکان را میدهد که زمان فعلی مورد انتظار را برای زمانی که محتوای فعلی باید روی صفحه نمایش داده شود، تنظیم کند. با استفاده از این ویژگی، SurfaceFlinger یک فرمان حاضر را زودتر از موعد به پیادهسازی ارسال میکند و به آن اجازه میدهد تا کارهای ترکیببندی بیشتری را خط لوله کند.افزودن APIهای جدید برای کنترل پیکربندی نمایش بوت.
با استفاده از
BOOT_DISPLAY_CONFIG
، فروشندگان می توانند مشخص کنند که پیکربندی نمایش بوت پشتیبانی می شود. متدهایsetBootDisplayConfig
،clearBootDisplayConfig
، وgetPreferredBootDisplayConfig
ازBOOT_DISPLAY_CONFIG
به صورت زیر استفاده می کنند:با استفاده از
setBootDisplayConfig
، فریم ورک فروشندگان را از پیکربندی نمایش زمان بوت مطلع می کند. فروشندگان باید در پیکربندی نمایش بوت کش، و در راه اندازی مجدد بعدی در این پیکربندی بوت شوند. اگر دستگاه قادر به بوت شدن در این پیکربندی نباشد، فروشنده باید پیکربندی را پیدا کند که با وضوح و نرخ تازه سازی این پیکربندی مطابقت داشته باشد. اگر چنین پیکربندی وجود نداشته باشد، فروشنده باید از پیکربندی نمایش ترجیحی خود استفاده کند.با استفاده از
clearBootDisplayConfig
، چارچوب به فروشندگان اطلاع میدهد که پیکربندی صفحه نمایش راهاندازی را پاک کنند و در هنگام راهاندازی مجدد بعدی، تنظیمات صفحه نمایش ترجیحی خود را راهاندازی کنند.با استفاده از
getPreferredBootDisplayConfig
، چارچوب حالت بوت ترجیحی فروشنده را پرس و جو می کند.
When the boot display configuration isn't supported, these methods return a value of
UNSUPPORTED
.افزودن APIهای جدید برای کنترل تایمر بیکار نمایشگر.
Using
DISPLAY_IDLE_TIMER
, vendors can specify that an inactivity timer is implemented by the vendor for this display. در حالت بیکار، این قابلیت برای حفظ قدرت، نرخ تازه سازی را به تنظیم کمتری تغییر می دهد. این پلتفرم ازsetIdleTimerEnabled
برای کنترل مهلت زمانی تایمر و در برخی موارد برای غیرفعال کردن آن استفاده میکند تا از سوئیچهای نرخ تازهسازی ناخواسته در زمان بیحرکت جلوگیری کند.استفاده از پاسخ تماس
IComposerCallback.onVsyncIdle
به پلتفرم نشان می دهد که صفحه نمایش بیکار است و آهنگvsync
تغییر کرده است. پلتفرم با تنظیم مجدد مدلvsync
خود به این تماس پاسخ می دهد. یکvsync
resync را در فریم بعدی مجبور می کند و آهنگvsync
جدید را یاد می گیرد.
پیاده سازی
فروشندگان ملزم به پیاده سازی AIDL HAL برای Android 13 نیستند. با این حال، آنها تشویق می شوند برای استفاده از عملکرد و API های جدید، HAL AIDL composer را به جای نسخه HIDL پیاده سازی کنند.
یک پیاده سازی مرجع برای AIDL HWC HAL در شبیه سازهای اندروید پیاده سازی شده است.
تست کردن
To test your implementation, run VtsHalGraphicsComposer3_TargetTest
.
Starting in Android 13, the Hardware Composer (HWC) HAL is defined in AIDL and the HIDL versions ranging from android.hardware.graphics.composer@2.1
to android.hardware.graphics.composer@2.4
are deprecated.
در این صفحه تفاوت های AIDL و HIDL HAL برای HWC و اجرا و آزمایش AIDL HAL توضیح داده شده است.
Because of the advantages offered by AIDL, vendors are encouraged to implement the AIDL composer HAL starting Android 13 instead of the HIDL version. برای اطلاعات بیشتر به بخش پیاده سازی مراجعه کنید.
تفاوت بین AIDL و HIDL HAL
آهنگساز جدید AIDL HAL، با نام android.hardware.graphics.composer3
، در IComposer.aidl
تعریف شده است. API مشابه HIDL HAL android.hardware.graphics.composer@2.4
را با تغییرات زیر نشان می دهد:
حذف صف پیام سریع (FMQ) به نفع دستورات قابل بسته بندی.
AIDL HAL رابط فرمان را بر اساس انواع قابل تایپ قوی در مقابل دستورات سریالی FMQ در HIDL تعریف می کند. این یک رابط پایدار برای دستورات و یک تعریف قابل خواندن از نحوه تفسیر بار فرمان ارائه می کند.
متد
executeCommands
درIComposerClient.aidl
به صورت تعریف شده استCommandResultPayload[] executeCommands(in DisplayCommand[] commands);
که در آن هر فرمان یک نوع parcelable با تایپ قوی است که در
DisplayCommand.aidl
تعریف شده است. پاسخهای فرمان، بستهبندیهایی با تایپ قوی هستند که درCommandResultPayload.aidl
تعریف شدهاند.حذف
IComposerClient.getClientTargetSupport
زیرا هیچ کلاینت فعالی برای این روش وجود ندارد.Representation of colors as floats instead of bytes to better align with the upper graphics stack in Android as defined in
ASurfaceTransaction_setColor
.افزودن فیلدهای جدید برای کنترل محتوای HDR.
در AIDL HAL، پشته های لایه SDR/HDR مختلط از کم نور شدن یکپارچه لایه های SDR هنگامی که یک لایه HDR به طور همزمان روی صفحه است پشتیبانی می کند.
فیلد
brightness
درLayerCommand
به SurfaceFlinger اجازه می دهد روشنایی هر لایه را مشخص کند، به طوری که HWC محتوای لایه را در فضای نور خطی، بر خلاف فضای گاما، کم رنگ می کند.فیلد
brightness
درClientTargetPropertyWithBrightness
به HWC اجازه میدهد فضای روشنایی را برای ترکیب کلاینت مشخص کند و بهRenderEngine
دستور دهد که آیا لایههای SDR را در ترکیب کلاینت کم رنگ کند یا خیر.فیلد
dimmingStage
به HWC اجازه می دهد تا زمانی کهRenderEngine
محتوا را کم نور کند، پیکربندی کند. This accommodates vendor-definedColorModes
, which might prefer to dim in gamma space, to allow vendor-defined contrast enhancements in their color pipelines.افزودن نوع ترکیب بندی جدید
DISPLAY_DECORATION
درComposition.aidl
برای تزئینات صفحه نمایش.برخی از دستگاهها سختافزاری را برای بهینهسازی طراحی ماسک آلفا اختصاص دادهاند که گوشههای گرد و برشهای نمایشگر را صاف میکند. دستگاههایی با چنین سختافزاری باید
IComposerClient.getDisplayDecorationSupport
برای بازگرداندن ساختارDisplayDecorationSupport
همانطور که درDisplayDecorationSupport.aidl
جدید تعریف شده است، پیادهسازی کنند. این ساختار شمارههایPixelFormat
وAlphaInterpretation
مورد نیاز دستگاه را توصیف میکند. Upon this implementation, System UI marks the alpha mask layer asDISPLAY_DECORATION
, a new composition type that takes advantage of the dedicated hardware.افزودن یک فیلد
expectedPresentTime
جدید بهDisplayCommand.aidl
.فیلد
expectedPresentTime
به SurfaceFlinger این امکان را میدهد که زمان فعلی مورد انتظار را برای زمانی که محتوای فعلی باید روی صفحه نمایش داده شود، تنظیم کند. با استفاده از این ویژگی، SurfaceFlinger یک فرمان حاضر را زودتر از موعد به پیادهسازی ارسال میکند و به آن اجازه میدهد تا کارهای ترکیببندی بیشتری را خط لوله کند.افزودن APIهای جدید برای کنترل پیکربندی نمایش بوت.
Using
BOOT_DISPLAY_CONFIG
, vendors can specify that the boot display configuration is supported. متدهایsetBootDisplayConfig
،clearBootDisplayConfig
، وgetPreferredBootDisplayConfig
ازBOOT_DISPLAY_CONFIG
به صورت زیر استفاده می کنند:با استفاده از
setBootDisplayConfig
، فریم ورک فروشندگان را از پیکربندی نمایش زمان بوت مطلع می کند. فروشندگان باید در پیکربندی نمایش بوت کش، و در راه اندازی مجدد بعدی در این پیکربندی بوت شوند. اگر دستگاه قادر به بوت شدن در این پیکربندی نباشد، فروشنده باید پیکربندی را پیدا کند که با وضوح و نرخ تازه سازی این پیکربندی مطابقت داشته باشد. اگر چنین پیکربندی وجود نداشته باشد، فروشنده باید از پیکربندی نمایش ترجیحی خود استفاده کند.با استفاده از
clearBootDisplayConfig
، چارچوب به فروشندگان اطلاع میدهد که پیکربندی صفحه نمایش راهاندازی را پاک کنند و در هنگام راهاندازی مجدد بعدی، تنظیمات صفحه نمایش ترجیحی خود را راهاندازی کنند.با استفاده از
getPreferredBootDisplayConfig
، چارچوب حالت بوت ترجیحی فروشنده را پرس و جو می کند.
وقتی پیکربندی نمایش بوت پشتیبانی نمیشود، این روشها مقدار
UNSUPPORTED
را برمیگردانند.افزودن APIهای جدید برای کنترل تایمر بیکار نمایشگر.
با استفاده از
DISPLAY_IDLE_TIMER
، فروشندگان می توانند تعیین کنند که تایمر عدم فعالیت توسط فروشنده برای این نمایشگر پیاده سازی شود. در حالت بیکار، این قابلیت برای حفظ قدرت، نرخ تازه سازی را به تنظیم کمتری تغییر می دهد. این پلتفرم ازsetIdleTimerEnabled
برای کنترل مهلت زمانی تایمر و در برخی موارد برای غیرفعال کردن آن استفاده میکند تا از سوئیچهای نرخ تازهسازی ناخواسته در زمان بیحرکت جلوگیری کند.Using the
IComposerCallback.onVsyncIdle
callback indicates to the platform that the display is idle and thevsync
cadence has changed. پلتفرم با تنظیم مجدد مدلvsync
خود به این تماس پاسخ می دهد. یکvsync
resync را در فریم بعدی مجبور می کند و آهنگvsync
جدید را یاد می گیرد.
پیاده سازی
فروشندگان ملزم به پیاده سازی AIDL HAL برای Android 13 نیستند. با این حال، آنها تشویق می شوند برای استفاده از عملکرد و API های جدید، HAL AIDL composer را به جای نسخه HIDL پیاده سازی کنند.
یک پیاده سازی مرجع برای AIDL HWC HAL در شبیه سازهای اندروید پیاده سازی شده است.
تست کردن
برای آزمایش پیاده سازی خود، VtsHalGraphicsComposer3_TargetTest
را اجرا کنید.
از Android 13، Hardware Composer (HWC) HAL در AIDL تعریف شده است و نسخههای HIDL از android.hardware.graphics.composer@2.1
تا android.hardware.graphics.composer@2.4
منسوخ شدهاند.
در این صفحه تفاوت های AIDL و HIDL HAL برای HWC و اجرا و آزمایش AIDL HAL توضیح داده شده است.
به دلیل مزایای ارائه شده توسط AIDL، فروشندگان تشویق می شوند تا به جای نسخه HIDL ، AIDL composer HAL را با شروع اندروید 13 اجرا کنند. برای اطلاعات بیشتر به بخش پیاده سازی مراجعه کنید.
تفاوت بین AIDL و HIDL HAL
آهنگساز جدید AIDL HAL، با نام android.hardware.graphics.composer3
، در IComposer.aidl
تعریف شده است. API مشابه HIDL HAL android.hardware.graphics.composer@2.4
را با تغییرات زیر نشان می دهد:
حذف صف پیام سریع (FMQ) به نفع دستورات قابل بسته بندی.
AIDL HAL رابط فرمان را بر اساس انواع قابل تایپ قوی در مقابل دستورات سریالی FMQ در HIDL تعریف می کند. این یک رابط پایدار برای دستورات و یک تعریف قابل خواندن از نحوه تفسیر بار فرمان ارائه می کند.
متد
executeCommands
درIComposerClient.aidl
به صورت تعریف شده استCommandResultPayload[] executeCommands(in DisplayCommand[] commands);
که در آن هر فرمان یک نوع parcelable با تایپ قوی است که در
DisplayCommand.aidl
تعریف شده است. پاسخهای فرمان، بستهبندیهایی با تایپ قوی هستند که درCommandResultPayload.aidl
تعریف شدهاند.حذف
IComposerClient.getClientTargetSupport
زیرا هیچ کلاینت فعالی برای این روش وجود ندارد.نمایش رنگها بهعنوان شناور بهجای بایت برای همسویی بهتر با پشته گرافیکی بالایی در Android همانطور که در
ASurfaceTransaction_setColor
تعریف شده است.افزودن فیلدهای جدید برای کنترل محتوای HDR.
در AIDL HAL، پشته های لایه SDR/HDR مختلط از کم نور شدن یکپارچه لایه های SDR هنگامی که یک لایه HDR به طور همزمان روی صفحه است پشتیبانی می کند.
فیلد
brightness
درLayerCommand
به SurfaceFlinger اجازه می دهد روشنایی هر لایه را مشخص کند، به طوری که HWC محتوای لایه را در فضای نور خطی، بر خلاف فضای گاما، کم رنگ می کند.فیلد
brightness
درClientTargetPropertyWithBrightness
به HWC اجازه میدهد فضای روشنایی را برای ترکیب کلاینت مشخص کند و بهRenderEngine
دستور دهد که آیا لایههای SDR را در ترکیب کلاینت کم رنگ کند یا خیر.فیلد
dimmingStage
به HWC اجازه می دهد تا زمانی کهRenderEngine
محتوا را کم نور کند، پیکربندی کند. این حالتColorModes
تعریفشده توسط فروشنده را در خود جای میدهد، که ممکن است ترجیح دهند در فضای گاما کمنور باشند تا به افزایش کنتراست تعریفشده توسط فروشنده در خطوط لوله رنگ خود اجازه دهند.افزودن نوع ترکیب بندی جدید
DISPLAY_DECORATION
درComposition.aidl
برای تزئینات صفحه نمایش.برخی از دستگاهها سختافزاری را برای بهینهسازی طراحی ماسک آلفا اختصاص دادهاند که گوشههای گرد و برشهای نمایشگر را صاف میکند. دستگاههایی با چنین سختافزاری باید
IComposerClient.getDisplayDecorationSupport
برای بازگرداندن ساختارDisplayDecorationSupport
همانطور که درDisplayDecorationSupport.aidl
جدید تعریف شده است، پیادهسازی کنند. این ساختار شمارههایPixelFormat
وAlphaInterpretation
مورد نیاز دستگاه را توصیف میکند. Upon this implementation, System UI marks the alpha mask layer asDISPLAY_DECORATION
, a new composition type that takes advantage of the dedicated hardware.افزودن یک فیلد
expectedPresentTime
جدید بهDisplayCommand.aidl
.فیلد
expectedPresentTime
به SurfaceFlinger این امکان را میدهد که زمان فعلی مورد انتظار را برای زمانی که محتوای فعلی باید روی صفحه نمایش داده شود، تنظیم کند. با استفاده از این ویژگی، SurfaceFlinger یک فرمان حاضر را زودتر از موعد به پیادهسازی ارسال میکند و به آن اجازه میدهد تا کارهای ترکیببندی بیشتری را خط لوله کند.افزودن APIهای جدید برای کنترل پیکربندی نمایش بوت.
با استفاده از
BOOT_DISPLAY_CONFIG
، فروشندگان می توانند مشخص کنند که پیکربندی نمایش بوت پشتیبانی می شود. ThesetBootDisplayConfig
,clearBootDisplayConfig
, andgetPreferredBootDisplayConfig
methods useBOOT_DISPLAY_CONFIG
as follows:با استفاده از
setBootDisplayConfig
، فریم ورک فروشندگان را از پیکربندی نمایش زمان بوت مطلع می کند. فروشندگان باید در پیکربندی نمایش بوت کش، و در راه اندازی مجدد بعدی در این پیکربندی بوت شوند. اگر دستگاه قادر به بوت شدن در این پیکربندی نباشد، فروشنده باید پیکربندی را پیدا کند که با وضوح و نرخ تازه سازی این پیکربندی مطابقت داشته باشد. اگر چنین پیکربندی وجود نداشته باشد، فروشنده باید از پیکربندی نمایش ترجیحی خود استفاده کند.با استفاده از
clearBootDisplayConfig
، چارچوب به فروشندگان اطلاع میدهد که پیکربندی صفحه نمایش راهاندازی را پاک کنند و در هنگام راهاندازی مجدد بعدی، تنظیمات صفحه نمایش ترجیحی خود را راهاندازی کنند.با استفاده از
getPreferredBootDisplayConfig
، چارچوب حالت بوت ترجیحی فروشنده را پرس و جو می کند.
وقتی پیکربندی نمایش بوت پشتیبانی نمیشود، این روشها مقدار
UNSUPPORTED
را برمیگردانند.افزودن APIهای جدید برای کنترل تایمر بیکار نمایشگر.
با استفاده از
DISPLAY_IDLE_TIMER
، فروشندگان می توانند تعیین کنند که تایمر عدم فعالیت توسط فروشنده برای این نمایشگر پیاده سازی شود. در حالت بیکار، این قابلیت برای حفظ قدرت، نرخ تازه سازی را به تنظیم کمتری تغییر می دهد. این پلتفرم ازsetIdleTimerEnabled
برای کنترل مهلت زمانی تایمر و در برخی موارد برای غیرفعال کردن آن استفاده میکند تا از سوئیچهای نرخ تازهسازی ناخواسته در زمان بیحرکت جلوگیری کند.استفاده از پاسخ تماس
IComposerCallback.onVsyncIdle
به پلتفرم نشان می دهد که صفحه نمایش بیکار است و آهنگvsync
تغییر کرده است. پلتفرم با تنظیم مجدد مدلvsync
خود به این تماس پاسخ می دهد. یکvsync
resync را در فریم بعدی مجبور می کند و آهنگvsync
جدید را یاد می گیرد.
پیاده سازی
فروشندگان ملزم به پیاده سازی AIDL HAL برای Android 13 نیستند. با این حال، آنها تشویق می شوند برای استفاده از عملکرد و API های جدید، HAL AIDL composer را به جای نسخه HIDL پیاده سازی کنند.
یک پیاده سازی مرجع برای AIDL HWC HAL در شبیه سازهای اندروید پیاده سازی شده است.
تست کردن
To test your implementation, run VtsHalGraphicsComposer3_TargetTest
.