Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Mengonfigurasi

Android 10 tidak lagi menggunakan ConfigStore HAL karena konsumsi memori yang tinggi dan penggunaan yang sulit, dan mengganti HAL dengan properti sistem. Di Android 10:

  • ConfigStore menggunakan flag build untuk menyimpan nilai konfigurasi di partisi vendor, dan layanan di partisi sistem mengakses nilai tersebut menggunakan HIDL (ini juga berlaku di Android 9).
  • Sifat sistem menggunakan PRODUCT_DEFAULT_PROPERTY_OVERRIDES sifat sistem toko di default.prop di partisi penjual, dan penggunaan layanan sysprop untuk membaca properti-properti.

ConfigStore HAL tetap berada di AOSP untuk mendukung partisi vendor lama. Pada perangkat yang menjalankan Android 10, surfaceflinger membaca sifat sistem pertama; jika tidak ada properti sistem didefinisikan untuk item config di SurfaceFlingerProperties.sysprop , surfaceflinger jatuh kembali ke ConfigStore HAL.

Bangun flag dan properti sistem

Setiap flag build di ConfigStore memiliki properti sistem yang cocok, seperti yang ditunjukkan pada tabel berikut.

Bangun bendera Properti sistem
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

Properti sistem baru

Android 10 menyertakan properti sistem baru berikut:

  • 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

Untuk rincian tentang properti ini, mengacu pada frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop .

Menggunakan SurfaceFlingerProperties

Dalam contoh berikut untuk perpustakaan SurfaceFlingerProperties, nama fungsi api_name di 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);
    ...
}
...