From d643fc08c5dd8c767cddabd9992e48f4dfd1d6b0 Mon Sep 17 00:00:00 2001 From: Jaesoo Lee Date: Mon, 23 Jan 2017 19:09:02 +0900 Subject: [PATCH] configstore: add new configuration item This change adds to configstore@1.0 HAL a new configuration item for surfaceflinger; useTripleFramebuffer() In the default implementation, useTripleFramebuffer() will return true only if the build flag NUM_FRAMEBUFFER_SURFACE_BUFFERS is defined as 3. Bug: 34723491 Test: build & run. log message "SurfaceFlinger FrameBuffer: ?" should be seen. Change-Id: Iac97e25cd69717c73a135f6b2a44538124544987 --- configstore/1.0/ISurfaceFlingerConfigs.hal | 1 + configstore/1.0/default/SurfaceFlingerConfigs.cpp | 9 +++++++++ configstore/1.0/default/SurfaceFlingerConfigs.h | 1 + configstore/1.0/default/surfaceflinger.mk | 4 ++++ 4 files changed, 15 insertions(+) diff --git a/configstore/1.0/ISurfaceFlingerConfigs.hal b/configstore/1.0/ISurfaceFlingerConfigs.hal index 97dc9154fe..4403a9013a 100644 --- a/configstore/1.0/ISurfaceFlingerConfigs.hal +++ b/configstore/1.0/ISurfaceFlingerConfigs.hal @@ -17,4 +17,5 @@ package android.hardware.configstore@1.0; interface ISurfaceFlingerConfigs { vsyncEventPhaseOffsetNs() generates (OptionalInt64 value); + useTripleFramebuffer() generates (OptionalBool value); }; diff --git a/configstore/1.0/default/SurfaceFlingerConfigs.cpp b/configstore/1.0/default/SurfaceFlingerConfigs.cpp index fc75182f68..5d62b151e9 100644 --- a/configstore/1.0/default/SurfaceFlingerConfigs.cpp +++ b/configstore/1.0/default/SurfaceFlingerConfigs.cpp @@ -19,6 +19,15 @@ Return SurfaceFlingerConfigs::vsyncEventPhaseOffsetNs(vsyncEventPhaseOffse return Void(); } +Return SurfaceFlingerConfigs::useTripleFramebuffer(useTripleFramebuffer_cb _hidl_cb) { + bool value = false; +#ifdef USE_TRIPLE_FRAMEBUFFER + value = true; +#endif + _hidl_cb({true, value}); + LOG(INFO) << "SurfaceFlinger FrameBuffer: " << (value ? "triple" : "double"); + return Void(); +} // Methods from ::android::hidl::base::V1_0::IBase follow. diff --git a/configstore/1.0/default/SurfaceFlingerConfigs.h b/configstore/1.0/default/SurfaceFlingerConfigs.h index 5c754a03a9..c9652fc970 100644 --- a/configstore/1.0/default/SurfaceFlingerConfigs.h +++ b/configstore/1.0/default/SurfaceFlingerConfigs.h @@ -25,6 +25,7 @@ using ::android::sp; struct SurfaceFlingerConfigs : public ISurfaceFlingerConfigs { // Methods from ::android::hardware::configstore::V1_0::ISurfaceFlingerConfigs follow. Return vsyncEventPhaseOffsetNs(vsyncEventPhaseOffsetNs_cb _hidl_cb) override; + Return useTripleFramebuffer(useTripleFramebuffer_cb _hidl_cb) override; // Methods from ::android::hidl::base::V1_0::IBase follow. diff --git a/configstore/1.0/default/surfaceflinger.mk b/configstore/1.0/default/surfaceflinger.mk index 42fa191713..5a946f4a8c 100644 --- a/configstore/1.0/default/surfaceflinger.mk +++ b/configstore/1.0/default/surfaceflinger.mk @@ -4,3 +4,7 @@ LOCAL_SRC_FILES += SurfaceFlingerConfigs.cpp ifneq ($(VSYNC_EVENT_PHASE_OFFSET_NS),) LOCAL_CFLAGS += -DVSYNC_EVENT_PHASE_OFFSET_NS=$(VSYNC_EVENT_PHASE_OFFSET_NS) endif + +ifeq ($(NUM_FRAMEBUFFER_SURFACE_BUFFERS),3) + LOCAL_CFLAGS += -DUSE_TRIPLE_FRAMEBUFFER +endif