27 Mart 2025'ten itibaren AOSP'yi derlemek ve AOSP'ye katkıda bulunmak için aosp-main yerine android-latest-release kullanmanızı öneririz. Daha fazla bilgi için AOSP'de yapılan değişiklikler başlıklı makaleyi inceleyin.
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Android 13, sinyallenmemiş arabellekleri kilitlemek için AutoSingleLayer adlı yeni bir yapılandırma ekler. Bu yapılandırma, SurfaceFlinger'ın yalnızca tek bir katman güncellenirken sinyalsiz bir arabellek kilitlemesine olanak tanır. Geometri değişiklikleri veya senkronizasyon işlemleri gibi katmanlar arasında gerçekleşen durumlar için bu yapılandırma geçerli değildir.
Android 13'ten önce AOSP'deki debug.sf.latch_unsignaled işaretçisi, kullanım alanından bağımsız olarak SurfaceFlinger'ın tüm sinyalsiz arabellekleri kilitlemesine olanak tanır. Bu yapılandırma etkinleştirildiğinde, senkronizasyon işlemlerinin kesilmesi ve tamamlanmamış arabellekler beklenirken ekranın tamamının donması gibi istenmeyen yan etkiler ortaya çıkar.
AutoSingleLayer modunda, bir karede yalnızca tek bir yüzeyin arabelleği güncellenir. Bu mod, oyunların ve diğer tam ekran uygulamaların, sinyalsiz arabellekleri kilitleme ve ekran donmalarından etkilenmeden uygulamadaki takılmaları azaltma avantajlarından yararlanmasını sağlar.
SurfaceFlinger, önyükleme sırasında LatchUnsignaledConfig dosyasını okur.
Olası yapılandırmalar şunlardır:
LatchUnsignaledConfig::AutoSingleLayer
Bu AOSP varsayılan modunda, bir karede tek bir katman güncellendiğinde ve güncelleme yalnızca senkronizasyon işlemleri veya geometri değişiklikleri içermeyen bir arabellek güncellemesi içerdiğinde sinyalsiz arabelleklerin kilitlenmesine izin verilir. Bu modda debug.sf.auto_latch_unsignaled, varsayılan olarak true olarak ayarlanır.
LatchUnsignaledConfig::Disabled
Bu mod, sinyalsiz kilitleme davranışını devre dışı bırakır ve yalnızca sinyal verilen işlemleri kilitler. Bu mod, AutoSingleLayer modunu da devre dışı bırakır. Bu modu yapılandırmak için debug.sf.latch_unsignaled ve debug.sf.auto_latch_unsignaled'i false olarak ayarlayın.
LatchUnsignaledConfig::Always
Bu modda, tüm tamponlar sinyalsiz olarak kilitlenir. Bu modu yapılandırmak için debug.sf.latch_unsignaled değerini true olarak ayarlayın.
Test AutoSingleLayer
Bir arabelleğin sinyalsiz olarak kilitlenip kilitlenmediğini test etmek için Perfetto'da SurfaceFlinger'dan aşağıdaki izlemleri arayın:
Şekil 1. Perfetto'da kilitli, sinyalsiz bir arabelleğin izlemesi
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-07-27 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2025-07-27 UTC."],[],[],null,["# Unsignaled buffer latching with AutoSingleLayer\n\nAndroid 13 adds a new configuration called\n[`AutoSingleLayer`](https://android.googlesource.com/platform/frameworks/native/+/refs/heads/android16-release/services/surfaceflinger/SurfaceFlinger.h#160) for latching\nunsignaled buffers. This configuration lets SurfaceFlinger latch an unsignaled\nbuffer when only a single layer is updating, and not for the cases that occur\nacross layers, such as geometry changes or sync transactions.\n\nBefore Android 13, the `debug.sf.latch_unsignaled` flag\nin AOSP lets SurfaceFlinger latch all unsignaled buffers, regardless of the use\ncase. When this configuration is enabled, there are undesired side effects, such\nas breaking sync transactions and freezing the entire display while waiting on\nincomplete buffers.\n\nWith the `AutoSingleLayer` mode, only a buffer of a single surface is updated\nin a frame. This mode enables games and other fullscreen apps to get the benefit\nof latching unsignaled buffers and reducing app jank while remaining unaffected\nby display freezes.\n\nAutoSingleLayer mode settings\n-----------------------------\n\nIn Android 13,\n[`AutoSingleLayer`](https://android.googlesource.com/platform/frameworks/native/+/refs/heads/android16-release/services/surfaceflinger/SurfaceFlinger.h#160) is the default\nmode for the latch unsignaled buffer feature. This mode is controlled by the\nsystem property [`debug.sf.auto_latch_unsignaled`](https://android.googlesource.com/platform/frameworks/native/+/refs/heads/android16-release/services/surfaceflinger/SurfaceFlinger.cpp#454).\n\nSurfaceFlinger reads [`LatchUnsignaledConfig`](https://android.googlesource.com/platform/frameworks/native/+/refs/heads/android16-release/services/surfaceflinger/SurfaceFlinger.cpp#449) on boot.\nHere are the possible configurations:\n\n- `LatchUnsignaledConfig::AutoSingleLayer`\n\n In this AOSP default mode, latching unsignaled buffers is permitted when a\n single layer is updated in a frame, and the update includes just a buffer\n update with no sync transactions or geometry changes. In this mode, [`debug.sf.auto_latch_unsignaled`](https://android.googlesource.com/platform/frameworks/native/+/refs/heads/android16-release/services/surfaceflinger/SurfaceFlinger.cpp#454)\n is set to `true` by default.\n- `LatchUnsignaledConfig::Disabled`\n\n This mode disables the latch unsignaled behavior and latches only signaled\n transactions. This mode also disables the `AutoSingleLayer` mode. To\n configure this mode, set [`debug.sf.latch_unsignaled`](https://android.googlesource.com/platform/frameworks/native/+/refs/heads/android16-release/services/surfaceflinger/SurfaceFlinger.cpp#450) and\n [`debug.sf.auto_latch_unsignaled`](https://android.googlesource.com/platform/frameworks/native/+/refs/heads/android16-release/services/surfaceflinger/SurfaceFlinger.cpp#454) to `false`.\n- `LatchUnsignaledConfig::Always`\n\n In this mode, all buffers are latched unsignaled. To configure this mode, set\n [`debug.sf.latch_unsignaled`](https://android.googlesource.com/platform/frameworks/native/+/refs/heads/android16-release/services/surfaceflinger/SurfaceFlinger.cpp#450) to `true`.\n | **Note:** This mode takes priority over setting `AutoSingleLayer` but can cause display freezing and other undesired effects. This mode might be deprecated in future releases.\n\nTest `AutoSingleLayer`\n----------------------\n\nTo test whether a buffer is latched unsignaled, look for the following traces\nfrom SurfaceFlinger in [Perfetto](https://developer.android.com/topic/performance/tracing):\n\n**Figure 1.** Trace of a latched unsignaled buffer in Perfetto"]]