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

Commit c8e387ed authored by Fabien Sanglard's avatar Fabien Sanglard
Browse files

Use configStore for maxVirtualDisplay Size

Test: Manual and AUPT
Change-Id: I17ec13f782a7c7c693d84d11c9b5e87624ee71d0
parent 62ef044d
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -73,12 +73,6 @@ ifeq ($(TARGET_RUNNING_WITHOUT_SYNC_FRAMEWORK),true)
    LOCAL_CFLAGS += -DRUNNING_WITHOUT_SYNC_FRAMEWORK
endif

ifneq ($(MAX_VIRTUAL_DISPLAY_DIMENSION),)
    LOCAL_CFLAGS += -DMAX_VIRTUAL_DISPLAY_DIMENSION=$(MAX_VIRTUAL_DISPLAY_DIMENSION)
else
    LOCAL_CFLAGS += -DMAX_VIRTUAL_DISPLAY_DIMENSION=0
endif

LOCAL_CFLAGS += -fvisibility=hidden -Werror=format

LOCAL_HEADER_LIBRARIES := \
+5 −5
Original line number Diff line number Diff line
@@ -267,12 +267,12 @@ status_t HWComposer::allocateVirtualDisplay(uint32_t width, uint32_t height,
        return NO_MEMORY;
    }

    if (MAX_VIRTUAL_DISPLAY_DIMENSION != 0 &&
        (width > MAX_VIRTUAL_DISPLAY_DIMENSION ||
         height > MAX_VIRTUAL_DISPLAY_DIMENSION)) {
    if (SurfaceFlinger::maxVirtualDisplaySize != 0 &&
        (width > SurfaceFlinger::maxVirtualDisplaySize ||
         height > SurfaceFlinger::maxVirtualDisplaySize)) {
        ALOGE("createVirtualDisplay: Can't create a virtual display with"
                      " a dimension > %u (tried %u x %u)",
              MAX_VIRTUAL_DISPLAY_DIMENSION, width, height);
                      " a dimension > %" PRIu64 " (tried %u x %u)",
              SurfaceFlinger::maxVirtualDisplaySize, width, height);
        return INVALID_OPERATION;
    }

+6 −0
Original line number Diff line number Diff line
@@ -99,6 +99,7 @@ EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint na

namespace android {


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

@@ -115,6 +116,7 @@ int64_t SurfaceFlinger::sfVsyncPhaseOffsetNs;
bool SurfaceFlinger::useContextPriority;
int64_t SurfaceFlinger::dispSyncPresentTimeOffset;
bool SurfaceFlinger::useHwcForRgbToYuv;
uint64_t SurfaceFlinger::maxVirtualDisplaySize;

SurfaceFlinger::SurfaceFlinger()
    :   BnSurfaceComposer(),
@@ -176,6 +178,9 @@ SurfaceFlinger::SurfaceFlinger()
    useHwcForRgbToYuv = getBool< ISurfaceFlingerConfigs,
            &ISurfaceFlingerConfigs::useHwcForRGBtoYUV>(false);

    maxVirtualDisplaySize = getUInt64<ISurfaceFlingerConfigs,
            &ISurfaceFlingerConfigs::maxVirtualDisplaySize>(0);

    // debugging stuff...
    char value[PROPERTY_VALUE_MAX];

@@ -3243,6 +3248,7 @@ void SurfaceFlinger::appendSfConfigString(String8& result) const

    result.appendFormat(" PRESENT_TIME_OFFSET=%" PRId64 , dispSyncPresentTimeOffset);
    result.appendFormat(" FORCE_HWC_FOR_RBG_TO_YUV=%d", useHwcForRgbToYuv);
    result.appendFormat(" MAX_VIRT_DISPLAY_DIM=%" PRIu64, maxVirtualDisplaySize);
    result.append("]");
}

+4 −1
Original line number Diff line number Diff line
@@ -105,7 +105,6 @@ class SurfaceFlinger : public BnSurfaceComposer,
{
public:


    // 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
@@ -142,6 +141,10 @@ public:
    // GL composition.
    static bool useHwcForRgbToYuv;

    // Maximum dimension supported by HWC for virtual display.
    // Equal to min(max_height, max_width).
    static uint64_t maxVirtualDisplaySize;

    static char const* getServiceName() ANDROID_API {
        return "SurfaceFlinger";
    }
+10 −4
Original line number Diff line number Diff line
@@ -114,6 +114,7 @@ int64_t SurfaceFlinger::sfVsyncPhaseOffsetNs;
bool SurfaceFlinger::useContextPriority;
int64_t SurfaceFlinger::dispSyncPresentTimeOffset;
bool SurfaceFlinger::useHwcForRgbToYuv;
uint64_t SurfaceFlinger::maxVirtualDisplaySize;

SurfaceFlinger::SurfaceFlinger()
    :   BnSurfaceComposer(),
@@ -150,13 +151,17 @@ SurfaceFlinger::SurfaceFlinger()
        mLastSwapTime(0),
        mNumLayers(0)
{

    ALOGI("SurfaceFlinger is starting");

    vsyncPhaseOffsetNs = getInt64< ISurfaceFlingerConfigs,
            &ISurfaceFlingerConfigs::vsyncEventPhaseOffsetNs>(1000000);

    sfVsyncPhaseOffsetNs = getInt64< ISurfaceFlingerConfigs,
            &ISurfaceFlingerConfigs::vsyncSfEventPhaseOffsetNs>(1000000);

    ALOGI("SurfaceFlinger is starting");
    maxVirtualDisplaySize = getUInt64<ISurfaceFlingerConfigs,
            &ISurfaceFlingerConfigs::maxVirtualDisplaySize>(0);

    useContextPriority = getBool< ISurfaceFlingerConfigs,
            &ISurfaceFlingerConfigs::useContextPriority>(false);
@@ -1701,9 +1706,9 @@ void SurfaceFlinger::handleTransactionLocked(uint32_t transactionFlags)
                            ALOGE_IF(status != NO_ERROR,
                                    "Unable to query height (%d)", status);
                            if (mUseHwcVirtualDisplays &&
                                    (MAX_VIRTUAL_DISPLAY_DIMENSION == 0 ||
                                    (width <= MAX_VIRTUAL_DISPLAY_DIMENSION &&
                                     height <= MAX_VIRTUAL_DISPLAY_DIMENSION))) {
                                    (SurfaceFlinger::maxVirtualDisplaySize == 0 ||
                                    (width <= static_cast<int>(SurfaceFlinger::maxVirtualDisplaySize) &&
                                     height <= static_cast<int>(SurfaceFlinger::maxVirtualDisplaySize)))) {
                                hwcDisplayId = allocateHwcDisplayId(state.type);
                            }

@@ -3015,6 +3020,7 @@ void SurfaceFlinger::appendSfConfigString(String8& result) const

    result.appendFormat(" PRESENT_TIME_OFFSET=%" PRId64, dispSyncPresentTimeOffset);
    result.appendFormat(" FORCE_HWC_FOR_RBG_TO_YUV=%d", useHwcForRgbToYuv);
    result.appendFormat(" MAX_VIRT_DISPLAY_DIM=%" PRIu64, maxVirtualDisplaySize);
    result.append("]");
}