HAL ConfigStore vẫn nằm trong AOSP để hỗ trợ các phân vùng nhà cung cấp cũ. Trên các thiết bị chạy Android 10 trở lên, surfaceflinger
sẽ đọc các thuộc tính hệ thống trước; nếu không có thuộc tính hệ thống nào được xác định cho một mục cấu hình trong SurfaceFlingerProperties.sysprop
, thì surfaceflinger
sẽ quay lại HAL ConfigStore.
Cờ dựng và thuộc tính hệ thống
Mỗi cờ bản dựng trong ConfigStore có một thuộc tính hệ thống phù hợp, như minh hoạ trong bảng sau. Để biết thông tin chi tiết về các thuộc tính này, hãy tham khảo frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop
.
Cờ dựng | Thuộc tính hệ thống |
---|---|
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
|
Sử dụng SurfaceFlingerProperties
Các ví dụ sau đây cho biết cách sử dụng thư viện SurfaceFlingerProperties và thuộc tính Surface Flinger ro.surface_flinger.vsync_event_phase_offset_ns
.
Để truy vấn giá trị của thuộc tính được tham chiếu, hãy sử dụng api_name
của thuộc tính làm tên hàm.
Đưa SurfaceFlingerProperties
vào tệp bản dựng như sau:
cc_binary { name: "cc_client", srcs: ["baz.cpp"], shared_libs: ["SurfaceFlingerProperties"], } java_library { name: "JavaClient", srcs: ["foo/bar.java"], libs: ["SurfaceFlingerProperties"], }
Đoạn mã Java sau đây sử dụng thuộc tính hệ thống ro.surface_flinger.vsync_event_phase_offset_ns
:
import android.sysprop.SurfaceFlingerProperties; ... static void foo() { ... boolean temp = SurfaceFlingerProperties.vsync_event_phase_offset_ns().orElse(true); ... } ...
Đoạn mã C++ sau đây sử dụng thuộc tính hệ thống ro.surface_flinger.vsync_event_phase_offset_ns
:
#include <SurfaceFlingerProperties.sysprop.h> using namespace android::sysprop; ... void bar() { ... bool temp = SurfaceFlingerProperties::vsync_event_phase_offset_ns(true); ... } ...