Le HAL ConfigStore reste dans AOSP pour prendre en charge les anciennes partitions du fournisseur. Sur les appareils équipés d'Android 10 ou version ultérieure, surfaceflinger lit d'abord les propriétés système. Si aucune propriété système n'est définie pour un élément de configuration dans SurfaceFlingerProperties.sysprop, surfaceflinger revient au HAL ConfigStore.
Indicateurs de compilation et propriétés système
Chaque indicateur de compilation dans ConfigStore possède une propriété système correspondante, comme indiqué dans le tableau suivant. Pour en savoir plus sur ces propriétés, consultez frameworks/native/services/surfaceflinger/sysprop/
SurfaceFlingerProperties.sysprop.
| Indicateurs de compilation | Propriétés système |
|---|---|
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
|
Utiliser SurfaceFlingerProperties
Les exemples suivants montrent comment utiliser la bibliothèque SurfaceFlingerProperties et la propriété SurfaceFlinger ro.surface_flinger.vsync_event_phase_offset_ns.
Pour interroger la valeur de la propriété, utilisez son api_name comme nom de fonction.
Incluez SurfaceFlingerProperties dans votre fichier de compilation, comme suit :
cc_binary {
name: "cc_client",
srcs: ["baz.cpp"],
shared_libs: ["SurfaceFlingerProperties"],
}
java_library {
name: "JavaClient",
srcs: ["foo/bar.java"],
libs: ["SurfaceFlingerProperties"],
}
L'extrait de code Java suivant utilise la propriété système 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);
...
}
...
L'extrait de code C++ suivant utilise la propriété système 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);
...
}
...