OSDN Git Service

Revert "Revert "Add useVrFlinger() method to SurfaceFlinger ConfigStore""
authorSteven Thomas <steventhomas@google.com>
Tue, 14 Mar 2017 00:42:18 +0000 (17:42 -0700)
committerSteven Thomas <steventhomas@google.com>
Tue, 21 Mar 2017 19:56:57 +0000 (19:56 +0000)
This reverts commit 2877c167ff7119d0c119da7117febd322f90a8a7.

Add useVrFlinger() method to SurfaceFlinger ConfigStore, which is
used to ensure we only start vr flinger on Daydream ready devices.

Bug: 35885165

Test: Checked for "SurfaceFlinger UseVrFlinger" in the logs,
confirmed it only shows up for Daydream ready devices.

Change-Id: I839b650b63cd008de03feb4c771b330374bd0682

configstore/1.0/ISurfaceFlingerConfigs.hal
configstore/1.0/default/SurfaceFlingerConfigs.cpp
configstore/1.0/default/SurfaceFlingerConfigs.h
configstore/1.0/default/surfaceflinger.mk

index 43c96ee..c7fb78b 100644 (file)
@@ -96,4 +96,12 @@ interface ISurfaceFlingerConfigs {
      * mechanism which significantly reduces buffer processing latency.
      */
     hasSyncFramework() generates(OptionalBool value);
+
+    /*
+     * Return true if surface flinger should use vr flinger for compatible vr
+     * apps, false otherwise. Devices that will never be running vr apps should
+     * return false to avoid extra resource usage. Daydream ready devices must
+     * return true for full vr support.
+     */
+    useVrFlinger() generates (OptionalBool value);
 };
index e8872e8..fc66c59 100644 (file)
@@ -111,6 +111,18 @@ Return<void> SurfaceFlingerConfigs::maxVirtualDisplaySize(maxVirtualDisplaySize_
   return Void();
 }
 
+Return<void> SurfaceFlingerConfigs::useVrFlinger(useVrFlinger_cb _hidl_cb) {
+    bool value = false;
+    bool specified = false;
+#ifdef USE_VR_FLINGER
+    value = true;
+    specified = true;
+#endif
+    _hidl_cb({specified, value});
+    LOG(INFO) << "SurfaceFlinger UseVrFlinger: " << (value ? "true" : "false");
+    return Void();
+}
+
 // Methods from ::android::hidl::base::V1_0::IBase follow.
 ISurfaceFlingerConfigs* HIDL_FETCH_ISurfaceFlingerConfigs(const char* /* name */) {
     return new SurfaceFlingerConfigs();
index bea1ab1..b0aaaf8 100644 (file)
@@ -34,6 +34,7 @@ struct SurfaceFlingerConfigs : public ISurfaceFlingerConfigs {
     Return<void> useHwcForRGBtoYUV(useHwcForRGBtoYUV_cb _hidl_cb) override;
     Return<void> maxVirtualDisplaySize(maxVirtualDisplaySize_cb _hidl_cb) override;
     Return<void> hasSyncFramework(hasSyncFramework_cb _hidl_cb) override;
+    Return<void> useVrFlinger(useVrFlinger_cb _hidl_cb) override;
 
     // Methods from ::android::hidl::base::V1_0::IBase follow.
 
index 6e63fdc..7837498 100644 (file)
@@ -46,3 +46,7 @@ endif
 ifeq ($(TARGET_RUNNING_WITHOUT_SYNC_FRAMEWORK),true)
     LOCAL_CFLAGS += -DRUNNING_WITHOUT_SYNC_FRAMEWORK
 endif
+
+ifneq ($(USE_VR_FLINGER),)
+    LOCAL_CFLAGS += -DUSE_VR_FLINGER
+endif