ConfigStore HAL, eski satıcı bölümlerini desteklemek için AOSP'de kalır. Android 10+ çalıştıran cihazlarda, surfaceflinger
önce sistem özelliklerini okur; SurfaceFlingerProperties.sysprop
dosyasındaki bir yapılandırma öğesi için hiçbir sistem özelliği tanımlanmamışsa, surfaceflinger
ConfigStore HAL'ye geri döner.
Bayraklar ve sistem özellikleri oluşturun
ConfigStore'daki her yapı bayrağı, aşağıdaki tabloda gösterildiği gibi eşleşen bir sistem özelliğine sahiptir. Bu özelliklerle ilgili ayrıntılar için frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop
dosyasına bakın.
Bayraklar oluşturun | Sistem özellikleri |
---|---|
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 |
SurfaceFlingerProperties'i kullanma
Aşağıdaki örnekler SurfaceFlingerProperties kitaplığının ve Surface Flinger özelliği ro.surface_flinger.vsync_event_phase_offset_ns
nasıl kullanılacağını gösterir.
Başvurudaki özelliğin değerini sorgulamak için özelliğin api_name
değerini işlev adı olarak kullanın.
SurfaceFlingerProperties
derleme dosyanıza aşağıdaki şekilde ekleyin:
cc_binary { name: "cc_client", srcs: ["baz.cpp"], shared_libs: ["SurfaceFlingerProperties"], } java_library { name: "JavaClient", srcs: ["foo/bar.java"], libs: ["SurfaceFlingerProperties"], }
Aşağıdaki Java kod parçacığı ro.surface_flinger.vsync_event_phase_offset_ns
sistem özelliğini kullanır:
import android.sysprop.SurfaceFlingerProperties; ... static void foo() { ... boolean temp = SurfaceFlingerProperties.vsync_event_phase_offset_ns().orElse(true); ... } ...
Aşağıdaki C++ kod parçacığı ro.surface_flinger.vsync_event_phase_offset_ns
sistem özelliğini kullanır:
#include <SurfaceFlingerProperties.sysprop.h> using namespace android::sysprop; ... void bar() { ... bool temp = SurfaceFlingerProperties::vsync_event_phase_offset_ns(true); ... } ...