Di Android, properti sistem disimpan di class ConfigStore. ConfigStore menggunakan flag build untuk menyimpan nilai konfigurasi di partisi vendor, dan layanan di partisi sistem mengakses nilai tersebut menggunakan HIDL.
Properti sistem menggunakanPRODUCT_DEFAULT_PROPERTY_OVERRIDES
untuk
menyimpan properti sistem di default.prop
dalam partisi vendor,
dan layanan menggunakan sysprop
untuk membaca properti tersebut.
HAL ConfigStore tetap ada 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
akan kembali ke HAL ConfigStore.
Flag build dan properti sistem
Setiap flag build di ConfigStore memiliki properti sistem yang cocok, seperti ditunjukkan dalam tabel berikut.
Flag build | 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 untuk library SurfaceFlingerProperties berikut, nama fungsi 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); ... } ...