Android 10 tidak lagi menggunakan ConfigStore HAL karena konsumsi memori yang tinggi dan penggunaan yang sulit, dan mengganti HAL dengan properti sistem. Di Android 10:
- ConfigStore menggunakan flag build untuk menyimpan nilai konfigurasi di partisi vendor, dan layanan di partisi sistem mengakses nilai tersebut menggunakan HIDL (ini juga berlaku di Android 9).
- Properti sistem menggunakan
PRODUCT_DEFAULT_PROPERTY_OVERRIDES
untuk menyimpan properti sistem didefault.prop
di partisi vendor, dan layanan menggunakansysprop
untuk membaca properti tersebut.
ConfigStore HAL tetap berada di AOSP untuk mendukung partisi vendor lama. Pada perangkat yang menjalankan Android 10, surfaceflinger
membaca properti sistem terlebih dahulu; jika tidak ada properti sistem yang ditentukan untuk item konfigurasi di SurfaceFlingerProperties.sysprop
, surfaceflinger
kembali ke ConfigStore HAL.
Bangun flag dan properti sistem
Setiap flag build di ConfigStore memiliki properti sistem yang cocok, seperti yang ditunjukkan pada tabel berikut.
Bangun bendera | Properti sistem |
---|---|
TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS | ro.surface_flinger.force_hwc_copy_for_virtual_displays |
TARGET_HAS_HDR_DISPLAY | ro.surface_flinger.has_HDR_display |
TARGET_HAS_WIDE_COLOR_DISPLAY | ro.surface_flinger.has_wide_color_display |
NUM_FRAMEBUFFER_SURFACE_BUFFERS | ro.surface_flinger.max_frame_buffer_acquired_buffers |
MAX_VIRTUAL_DISPLAY_DIMENSION | ro.surface_flinger.max_virtual_display_dimension |
PRIMARY_DISPLAY_ORIENTATION | ro.surface_flinger.primary_display_orientation |
PRESENT_TIME_OFFSET_FROM_VSYNC_NS | ro.surface_flinger.present_time_offset_from_vsync_ns |
TARGET_RUNNING_WITHOUT_SYNC_FRAMEWORK | ro.surface_flinger.running_without_sync_framework |
SF_START_GRAPHICS_ALLOCATOR_SERVICE | ro.surface_flinger.start_graphics_allocator_service |
TARGET_USE_CONTEXT_PRIORITY | ro.surface_flinger.use_context_priority |
USE_VR_FLINGER | ro.surface_flinger.use_vr_flinger |
VSYNC_EVENT_PHASE_OFFSET_NS | ro.surface_flinger.vsync_event_phase_offset_ns |
SF_VSYNC_EVENT_PHASE_OFFSET_NS | ro.surface_flinger.vsync_sf_event_phase_offset_ns |
Properti sistem baru
Android 10 menyertakan properti sistem baru berikut:
-
ro.surface_flinger.default_composition_dataspace
-
ro.surface_flinger.default_composition_pixel_format
-
ro.surface_flinger.use_color_management
-
ro.surface_flinger.wcg_composition_dataspace
-
ro.surface_flinger.wcg_composition_pixel_format
-
ro.surface_flinger.display_primary_red
-
ro.surface_flinger.display_primary_green
-
ro.surface_flinger.display_primary_blue
-
ro.surface_flinger.display_primary_white
-
ro.surface_flinger.protected_contents
-
ro.surface_flinger.set_idle_timer_ms
-
ro.surface_flinger.set_touch_timer_ms
-
ro.surface_flinger.use_smart_90_for_video
-
ro.surface_flinger.protected_contents
-
ro.surface_flinger.support_kernel_idle_timer
Untuk detail tentang properti ini, lihat frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop
.
Menggunakan SurfaceFlingerProperties
Dalam contoh berikut untuk pustaka SurfaceFlingerProperties, nama fungsinya adalah api_name
di SurfaceFlingerProperties.sysprop
.
cc_binary { name: "cc_client", srcs: ["baz.cpp"], shared_libs: ["SurfaceFlingerProperties"], } java_library { name: "JavaClient", srcs: ["foo/bar.java"], libs: ["SurfaceFlingerProperties"], }
import android.sysprop.SurfaceFlingerProperties; ... static void foo() { ... boolean temp = SurfaceFlingerProperties.vsync_event_phase_offset_ns().orElse(true); ... } ...
#include <SurfaceFlingerProperties.sysprop.h> using namespace android::sysprop; ... void bar() { ... bool temp = SurfaceFlingerProperties::vsync_event_phase_offset_ns(true); ... } ...