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