ConfigStore HAL vẫn còn 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+, surfaceflinger
đọ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ục cấu hình trong SurfaceFlingerProperties.sysprop
thì surfaceflinger
sẽ quay trở lại ConfigStore HAL.
Xây dựng cờ và thuộc tính hệ thống
Mỗi cờ xây dựng trong ConfigStore có một thuộc tính hệ thống phù hợp, như minh họa trong bảng sau. Để biết chi tiết về các thuộc tính này, hãy tham khảo frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop
.
Xây dựng cờ | 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 thấy 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 trong tham chiếu, hãy sử dụng api_name
của thuộc tính làm tên hàm.
Bao gồm SurfaceFlingerProperties
trong tệp xây 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); ... } ...