configurando

Android 10 descarta la HAL de ConfigStore debido al alto consumo de memoria y al uso difícil, y reemplaza la HAL con propiedades del sistema. En Android 10:

  • ConfigStore usa indicadores de compilación para almacenar valores de configuración en la partición del proveedor, y un servicio en la partición del sistema accede a esos valores mediante HIDL (esto también es cierto en Android 9).
  • Las propiedades del sistema usan PRODUCT_DEFAULT_PROPERTY_OVERRIDES para almacenar las propiedades del sistema en default.prop en la partición del proveedor, y el servicio usa sysprop para leer esas propiedades.

ConfigStore HAL permanece en AOSP para admitir particiones de proveedores heredados. En los dispositivos que ejecutan Android 10, surfaceflinger lee primero las propiedades del sistema; si no se define ninguna propiedad del sistema para un elemento de configuración en SurfaceFlingerProperties.sysprop , surfaceflinger a ConfigStore HAL.

Marcas de compilación y propiedades del sistema

Cada indicador de compilación en ConfigStore tiene una propiedad del sistema coincidente, como se muestra en la siguiente tabla.

Construir banderas Propiedades del sistema
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

Nuevas propiedades del sistema

Android 10 incluye las siguientes propiedades nuevas del sistema:

  • ro.surface_flinger.default_composition_dataspace
  • ro.surface_flinger.default_composition_pixel_format
  • ro.surface_flinger.use_color_management
  • ro.surface_flinger.wcg_composition_dataspace
  • ro.surface_flinger.wcg_composition_pixel_format
  • ro.surface_flinger.display_primary_red
  • ro.surface_flinger.display_primary_green
  • ro.surface_flinger.display_primary_blue
  • ro.surface_flinger.display_primary_white
  • ro.surface_flinger.protected_contents
  • ro.surface_flinger.set_idle_timer_ms
  • ro.surface_flinger.set_touch_timer_ms
  • ro.surface_flinger.use_smart_90_for_video
  • ro.surface_flinger.protected_contents
  • ro.surface_flinger.support_kernel_idle_timer

Para obtener detalles sobre estas propiedades, consulte frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop .

Uso de SurfaceFlingerProperties

En los siguientes ejemplos de la biblioteca SurfaceFlingerProperties, el nombre de la función es api_name en SurfaceFlingerProperties.sysprop .

cc_binary {
    name: "cc_client",
    srcs: ["baz.cpp"],
    shared_libs: ["SurfaceFlingerProperties"],
}
java_library {
    name: "JavaClient",
    srcs: ["foo/bar.java"],
    libs: ["SurfaceFlingerProperties"],
}
import android.sysprop.SurfaceFlingerProperties;
...

static void foo() {
    ...
    boolean temp = SurfaceFlingerProperties.vsync_event_phase_offset_ns().orElse(true);
    ...
}
...
#include <SurfaceFlingerProperties.sysprop.h>
using namespace android::sysprop;

...

void bar() {
    ...
    bool temp = SurfaceFlingerProperties::vsync_event_phase_offset_ns(true);
    ...
}
...