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

Commit 980109ad authored by Kriti Dang's avatar Kriti Dang Committed by Android (Google) Code Review
Browse files

Merge "Hdr format settings [Backend]" into sc-dev

parents df537ed6 49ad4135
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -477,6 +477,26 @@ public:
        return reply.readInt32();
    }

    virtual status_t overrideHdrTypes(const sp<IBinder>& display,
                                      const std::vector<ui::Hdr>& hdrTypes) {
        Parcel data, reply;
        SAFE_PARCEL(data.writeInterfaceToken, ISurfaceComposer::getInterfaceDescriptor());
        SAFE_PARCEL(data.writeStrongBinder, display);

        std::vector<int32_t> hdrTypesVector;
        for (ui::Hdr i : hdrTypes) {
            hdrTypesVector.push_back(static_cast<int32_t>(i));
        }
        SAFE_PARCEL(data.writeInt32Vector, hdrTypesVector);

        status_t result = remote()->transact(BnSurfaceComposer::OVERRIDE_HDR_TYPES, data, &reply);
        if (result != NO_ERROR) {
            ALOGE("overrideHdrTypes failed to transact: %d", result);
            return result;
        }
        return result;
    }

    status_t enableVSyncInjections(bool enable) override {
        Parcel data, reply;
        status_t result = data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor());
@@ -1963,6 +1983,20 @@ status_t BnSurfaceComposer::onTransact(
            SAFE_PARCEL(reply->writeInt32, extraBuffers);
            return NO_ERROR;
        }
        case OVERRIDE_HDR_TYPES: {
            CHECK_INTERFACE(ISurfaceComposer, data, reply);
            sp<IBinder> display = nullptr;
            SAFE_PARCEL(data.readStrongBinder, &display);

            std::vector<int32_t> hdrTypes;
            SAFE_PARCEL(data.readInt32Vector, &hdrTypes);

            std::vector<ui::Hdr> hdrTypesVector;
            for (int i : hdrTypes) {
                hdrTypesVector.push_back(static_cast<ui::Hdr>(i));
            }
            return overrideHdrTypes(display, hdrTypesVector);
        }
        default: {
            return BBinder::onTransact(code, data, reply, flags);
        }
+5 −0
Original line number Diff line number Diff line
@@ -1985,6 +1985,11 @@ status_t SurfaceComposerClient::getAnimationFrameStats(FrameStats* outStats) {
    return ComposerService::getComposerService()->getAnimationFrameStats(outStats);
}

status_t SurfaceComposerClient::overrideHdrTypes(const sp<IBinder>& display,
                                                 const std::vector<ui::Hdr>& hdrTypes) {
    return ComposerService::getComposerService()->overrideHdrTypes(display, hdrTypes);
}

status_t SurfaceComposerClient::getDisplayedContentSamplingAttributes(const sp<IBinder>& display,
                                                                      ui::PixelFormat* outFormat,
                                                                      ui::Dataspace* outDataspace,
+8 −0
Original line number Diff line number Diff line
@@ -267,6 +267,13 @@ public:
     */
    virtual status_t getAnimationFrameStats(FrameStats* outStats) const = 0;

    /* Overrides the supported HDR modes for the given display device.
     *
     * Requires the ACCESS_SURFACE_FLINGER permission.
     */
    virtual status_t overrideHdrTypes(const sp<IBinder>& display,
                                      const std::vector<ui::Hdr>& hdrTypes) = 0;

    virtual status_t enableVSyncInjections(bool enable) = 0;

    virtual status_t injectVSync(nsecs_t when) = 0;
@@ -570,6 +577,7 @@ public:
        GET_DYNAMIC_DISPLAY_INFO,
        ADD_FPS_LISTENER,
        REMOVE_FPS_LISTENER,
        OVERRIDE_HDR_TYPES,
        // Always append new enum to the end.
    };

+3 −0
Original line number Diff line number Diff line
@@ -572,6 +572,9 @@ public:
    static status_t clearAnimationFrameStats();
    static status_t getAnimationFrameStats(FrameStats* outStats);

    static status_t overrideHdrTypes(const sp<IBinder>& display,
                                     const std::vector<ui::Hdr>& hdrTypes);

    static void setDisplayProjection(const sp<IBinder>& token, ui::Rotation orientation,
                                     const Rect& layerStackRect, const Rect& displayRect);

+4 −0
Original line number Diff line number Diff line
@@ -772,6 +772,10 @@ public:
    status_t getAnimationFrameStats(FrameStats* /*outStats*/) const override {
        return NO_ERROR;
    }
    status_t overrideHdrTypes(const sp<IBinder>& /*display*/,
                              const std::vector<ui::Hdr>& /*hdrTypes*/) override {
        return NO_ERROR;
    }
    status_t enableVSyncInjections(bool /*enable*/) override {
        return NO_ERROR;
    }
Loading