Le HAL ConfigStore reste dans AOSP pour prendre en charge les partitions des anciens fournisseurs. Sur les appareils exécutant Android 10+, surfaceflinger
lit d'abord les propriétés du 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.
Construire des indicateurs et des propriétés système
Chaque indicateur de build dans ConfigStore possède une propriété système correspondante, comme indiqué dans le tableau suivant. Pour plus de détails sur ces propriétés, reportez-vous à frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop
.
Construire des drapeaux | Propriétés du 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 |
Utilisation de SurfaceFlingerProperties
Les exemples suivants montrent comment utiliser la bibliothèque SurfaceFlingerProperties et la propriété Surface Flinger ro.surface_flinger.vsync_event_phase_offset_ns
.
Pour demander la valeur de la propriété en référence, utilisez le api_name
de la propriété comme nom de fonction.
Incluez SurfaceFlingerProperties
dans votre fichier de build, 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); ... } ...