Properti sistem di SurfaceFlinger

HAL ConfigStore tetap ada di AOSP untuk mendukung partisi vendor lama. Pada perangkat yang menjalankan Android 10+, surfaceflinger akan membaca properti sistem terlebih dahulu; jika tidak ada properti sistem yang ditentukan untuk item konfigurasi di SurfaceFlingerProperties.sysprop, surfaceflinger akan kembali ke HAL ConfigStore.

Flag build dan properti sistem

Setiap flag build di ConfigStore memiliki properti sistem yang cocok, seperti yang ditunjukkan pada tabel berikut. Untuk detail tentang properti ini, lihat frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop.

Flag build 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

Menggunakan SurfaceFlingerProperties

Contoh berikut menunjukkan cara menggunakan library SurfaceFlingerProperties dan properti Surface Flinger ro.surface_flinger.vsync_event_phase_offset_ns.

Untuk membuat kueri nilai properti dalam referensi, gunakan api_name properti sebagai nama fungsi.

Sertakan SurfaceFlingerProperties dalam file build Anda, sebagai berikut:

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

Cuplikan kode Java berikut menggunakan properti sistem 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);
    ...
}
...

Cuplikan kode C++ berikut menggunakan properti sistem 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);
    ...
}
...