A HAL ConfigStore permanece no AOSP para oferecer suporte a partições legadas do fornecedor. Em
dispositivos com Android 10 ou versões mais recentes, surfaceflinger primeiro
lê as propriedades do sistema. Se nenhuma propriedade do sistema for definida para um item de configuração em
SurfaceFlingerProperties.sysprop, surfaceflinger vai voltar para a
HAL ConfigStore.
Flags de build e propriedades do sistema
Cada flag de build no ConfigStore tem uma propriedade do sistema correspondente, conforme mostrado na tabela a seguir. Para mais detalhes sobre essas propriedades, consulte
frameworks/native/services/surfaceflinger/sysprop/
SurfaceFlingerProperties.sysprop.
| Flags de build | Propriedades do 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
|
Usar SurfaceFlingerProperties
Os exemplos a seguir mostram como usar a biblioteca SurfaceFlingerProperties e a propriedade ro.surface_flinger.vsync_event_phase_offset_ns do Surface Flinger.
Para consultar o valor da propriedade, use o api_name dela como o nome da função.
Inclua SurfaceFlingerProperties no arquivo de build da seguinte maneira:
cc_binary {
name: "cc_client",
srcs: ["baz.cpp"],
shared_libs: ["SurfaceFlingerProperties"],
}
java_library {
name: "JavaClient",
srcs: ["foo/bar.java"],
libs: ["SurfaceFlingerProperties"],
}
O snippet de código Java a seguir usa a propriedade do sistema
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);
...
}
...
O snippet de código C++ a seguir usa a propriedade de sistema
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);
...
}
...