Der ConfigStore HAL verbleibt in AOSP, um ältere Anbieterpartitionen zu unterstützen. Auf Geräten mit Android 10 oder höher liest surfaceflinger zuerst Systemeigenschaften. Wenn für ein Konfigurationselement in SurfaceFlingerProperties.sysprop keine Systemeigenschaft definiert ist, greift surfaceflinger auf die ConfigStore-HAL zurück.
Build-Flags und Systemeigenschaften
Jedes Build-Flag in ConfigStore hat eine entsprechende Systemeigenschaft, wie in der folgenden Tabelle dargestellt. Weitere Informationen zu diesen Attributen finden Sie unter frameworks/native/services/surfaceflinger/sysprop/
SurfaceFlingerProperties.sysprop.
| Build-Flags | Systemattribute |
|---|---|
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 verwenden
Die folgenden Beispiele zeigen, wie die SurfaceFlingerProperties-Bibliothek und die SurfaceFlinger-Eigenschaft ro.surface_flinger.vsync_event_phase_offset_ns verwendet werden.
Wenn Sie den Wert der Eigenschaft abfragen möchten, verwenden Sie ihren api_name als Funktionsnamen.
Fügen Sie SurfaceFlingerProperties in Ihre Build-Datei ein:
cc_binary {
name: "cc_client",
srcs: ["baz.cpp"],
shared_libs: ["SurfaceFlingerProperties"],
}
java_library {
name: "JavaClient",
srcs: ["foo/bar.java"],
libs: ["SurfaceFlingerProperties"],
}
Im folgenden Java-Code-Snippet wird die Systemeigenschaft ro.surface_flinger.vsync_event_phase_offset_ns verwendet:
import android.sysprop.SurfaceFlingerProperties;
...
static void foo() {
...
boolean temp = SurfaceFlingerProperties.vsync_event_phase_offset_ns().orElse(true);
...
}
...
Im folgenden C++-Code-Snippet wird die Systemeigenschaft ro.surface_flinger.vsync_event_phase_offset_ns verwendet:
#include <SurfaceFlingerProperties.sysprop.h>
using namespace android::sysprop;
...
void bar() {
...
bool temp = SurfaceFlingerProperties::vsync_event_phase_offset_ns(true);
...
}
...