ConfigStore HAL vẫn nằm trong AOSP để hỗ trợ các phân vùng cũ của nhà cung cấp. 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 ConfigStore HAL.
Cờ dựng và thuộc tính hệ thống
Mỗi cờ bản dựng trong ConfigStore đều 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 xem 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 minh hoạ 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, hãy sử dụng api_name làm tên hàm.
Thêm SurfaceFlingerProperties vào tệp bản dựng của bạn 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);
...
}
...