Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 125c3ae3 authored by Jaesoo Lee's avatar Jaesoo Lee Committed by Android (Google) Code Review
Browse files

Merge changes from topic 'cfg_nsfbuf'

* changes:
  configstore: removing BoardConfig variables (NUM_FRAMEBUFFER_SURFACE_BUFFERS)
  configstore: use utility functions defined in ConfigStoreUtils.h
parents 6bd7143e 720a7247
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -133,6 +133,7 @@ LOCAL_CFLAGS += -fvisibility=hidden -Werror=format

LOCAL_STATIC_LIBRARIES := \
    libhwcomposer-command-buffer \
    android.hardware.configstore-utils \
    libtrace_proto \
    libvkjson \
    libvr_manager \
+14 −3
Original line number Diff line number Diff line
@@ -47,6 +47,9 @@
#include "SurfaceFlinger.h"
#include "Layer.h"

#include <android/hardware/configstore/1.0/ISurfaceFlingerConfigs.h>
#include <configstore/Utils.h>

// ----------------------------------------------------------------------------
using namespace android;
// ----------------------------------------------------------------------------
@@ -57,6 +60,14 @@ static constexpr bool kEGLAndroidSwapRectangle = true;
static constexpr bool kEGLAndroidSwapRectangle = false;
#endif

// retrieve triple buffer setting from configstore
using namespace android::hardware::configstore;
using namespace android::hardware::configstore::V1_0;

static bool useTripleFramebuffer = getBool<
        ISurfaceFlingerConfigs,
        &ISurfaceFlingerConfigs::useTripleFramebuffer>(false);

#if !defined(EGL_EGLEXT_PROTOTYPES) || !defined(EGL_ANDROID_swap_rectangle)
// Dummy implementation in case it is missing.
inline void eglSetSwapRectangleANDROID (EGLDisplay, EGLSurface, EGLint, EGLint, EGLint, EGLint) {
@@ -165,9 +176,9 @@ DisplayDevice::DisplayDevice(
    // initialize the display orientation transform.
    setProjection(DisplayState::eOrientationDefault, mViewport, mFrame);

#ifdef NUM_FRAMEBUFFER_SURFACE_BUFFERS
    if (useTripleFramebuffer) {
        surface->allocateBuffers();
#endif
    }
}

DisplayDevice::~DisplayDevice() {
+5 −15
Original line number Diff line number Diff line
@@ -87,6 +87,7 @@
#include <cutils/compiler.h>

#include <android/hardware/configstore/1.0/ISurfaceFlingerConfigs.h>
#include <configstore/Utils.h>

#define DISPLAY_COUNT       1

@@ -100,22 +101,9 @@ EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint na

namespace android {

using namespace android::hardware::configstore;
using namespace android::hardware::configstore::V1_0;

static sp<ISurfaceFlingerConfigs> getConfigs() {
    static sp<ISurfaceFlingerConfigs> configs
            = ISurfaceFlingerConfigs::getService();
    return configs;
}

static int64_t getVsyncEventPhaseOffsetNs() {
    int64_t ret = 1000000; // default value
    getConfigs()->vsyncEventPhaseOffsetNs([&](OptionalInt64 value) {
          if (value.specified) ret = value.value;
    });
    return ret;
}

// This is the phase offset in nanoseconds of the software vsync event
// relative to the vsync event reported by HWComposer.  The software vsync
// event is when SurfaceFlinger and Choreographer-based applications run each
@@ -136,7 +124,9 @@ static int64_t getVsyncEventPhaseOffsetNs() {
// the latency will end up being an additional vsync period, and animations
// will hiccup.  Therefore, this latency should be tuned somewhat
// conservatively (or at least with awareness of the trade-off being made).
static int64_t vsyncPhaseOffsetNs = getVsyncEventPhaseOffsetNs();
static int64_t vsyncPhaseOffsetNs = getInt64<
        ISurfaceFlingerConfigs,
        &ISurfaceFlingerConfigs::vsyncEventPhaseOffsetNs>(1000000);

// This is the phase offset at which SurfaceFlinger's composition runs.
static constexpr int64_t sfVsyncPhaseOffsetNs = SF_VSYNC_EVENT_PHASE_OFFSET_NS;