يبقى ConfigStore HAL في AOSP لدعم أقسام المورّدين القديمة. على الأجهزة التي تعمل بإصدار Android 10 والإصدارات الأحدث، يقرأ surfaceflinger أولاً سمات النظام. إذا لم يتم تحديد أي سمة نظام لعنصر إعداد في SurfaceFlingerProperties.sysprop، يعود surfaceflinger إلى ConfigStore HAL.
إنشاء العلامات وسمات النظام
تحتوي كل علامة إصدار في ConfigStore على سمة نظام مطابقة، كما هو موضّح في الجدول التالي. للحصول على تفاصيل حول هذه السمات، يُرجى الاطّلاع على
frameworks/native/services/surfaceflinger/sysprop/
SurfaceFlingerProperties.sysprop.
| علامات الإصدار | سمات النظام |
|---|---|
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
|
استخدام SurfaceFlingerProperties
توضّح الأمثلة التالية كيفية استخدام مكتبة SurfaceFlingerProperties وسمة Surface Flinger ro.surface_flinger.vsync_event_phase_offset_ns.
للاستعلام عن قيمة السمة، استخدِم api_name كاسم للدالة.
أدرِج SurfaceFlingerProperties في ملف الإصدار على النحو التالي:
cc_binary {
name: "cc_client",
srcs: ["baz.cpp"],
shared_libs: ["SurfaceFlingerProperties"],
}
java_library {
name: "JavaClient",
srcs: ["foo/bar.java"],
libs: ["SurfaceFlingerProperties"],
}
يستخدم مقتطف رمز Java التالي سمة النظام 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);
...
}
...
يستخدم مقتطف الرمز التالي بلغة C++ السمة 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);
...
}
...