Le HAL ConfigStore reste dans AOSP pour prendre en charge les anciennes partitions de fournisseurs. Sur les appareils exécutant 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
utilise le 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é Surface Flinger ro.surface_flinger.vsync_event_phase_offset_ns
.
Pour interroger la valeur de la propriété référencée, utilisez le api_name
de la propriété 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); ... } ...