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

Commit f97df4d8 authored by Alec Mouri's avatar Alec Mouri
Browse files

Support fp16 in sf

* Make sure we don't dim SDR in renderengine, and instead map HDR to the
  correct relative luminance above 1.0
* Plumb the HDR/SDR ratio into HWC

Bug: 236745178
Test: builds
Change-Id: I325972a01280d287189d38dd6c5bf7f2d4b776bb
parent d6a6f38c
Loading
Loading
Loading
Loading
+16 −8
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ cc_defaults {
        "libSurfaceFlingerProp",
        "libui",
        "libutils",
        "server_configurable_flags",
    ],
    static_libs: [
        "liblayers_proto",
@@ -60,13 +61,8 @@ cc_defaults {
    ],
}

cc_library {
    name: "libcompositionengine",
    defaults: ["libcompositionengine_defaults"],
    static_libs: [
        "libsurfaceflinger_common",
        "libsurfaceflingerflags",
    ],
filegroup {
    name: "libcompositionengine_sources",
    srcs: [
        "src/planner/CachedSet.cpp",
        "src/planner/Flattener.cpp",
@@ -89,6 +85,18 @@ cc_library {
        "src/OutputLayerCompositionState.cpp",
        "src/RenderSurface.cpp",
    ],
}

cc_library {
    name: "libcompositionengine",
    defaults: ["libcompositionengine_defaults"],
    static_libs: [
        "libsurfaceflinger_common",
        "libsurfaceflingerflags",
    ],
    srcs: [
        ":libcompositionengine_sources",
    ],
    local_include_dirs: ["include"],
    export_include_dirs: ["include"],
    shared_libs: [
@@ -133,6 +141,7 @@ cc_test {
    ],
    defaults: ["libcompositionengine_defaults"],
    srcs: [
        ":libcompositionengine_sources",
        "tests/planner/CachedSetTest.cpp",
        "tests/planner/FlattenerTest.cpp",
        "tests/planner/LayerStateTest.cpp",
@@ -151,7 +160,6 @@ cc_test {
        "tests/RenderSurfaceTest.cpp",
    ],
    static_libs: [
        "libcompositionengine",
        "libcompositionengine_mocks",
        "libgui_mocks",
        "librenderengine_mocks",
+1 −1
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ public:
    //
    // advanceFrame must be followed by a call to  onFrameCommitted before
    // advanceFrame may be called again.
    virtual status_t advanceFrame() = 0;
    virtual status_t advanceFrame(float hdrSdrRatio) = 0;

    // onFrameCommitted is called after the frame has been committed to the
    // hardware composer. The surface collects the release fence for this
+1 −1
Original line number Diff line number Diff line
@@ -86,7 +86,7 @@ public:

    // Queues the drawn buffer for consumption by HWC. readyFence is the fence
    // which will fire when the buffer is ready for consumption.
    virtual void queueBuffer(base::unique_fd readyFence) = 0;
    virtual void queueBuffer(base::unique_fd readyFence, float hdrSdrRatio) = 0;

    // Called after the HWC calls are made to present the display
    virtual void onPresentDisplayCompleted() = 0;
+3 −1
Original line number Diff line number Diff line
@@ -137,7 +137,8 @@ protected:
    void applyCompositionStrategy(const std::optional<DeviceRequestedChanges>&) override{};
    bool getSkipColorTransform() const override;
    compositionengine::Output::FrameFences presentFrame() override;
    virtual renderengine::DisplaySettings generateClientCompositionDisplaySettings() const;
    virtual renderengine::DisplaySettings generateClientCompositionDisplaySettings(
            const std::shared_ptr<renderengine::ExternalTexture>& buffer) const;
    std::vector<LayerFE::LayerSettings> generateClientCompositionRequests(
            bool supportsProtectedContent, ui::Dataspace outputDataspace,
            std::vector<LayerFE*>& outLayerFEs) override;
@@ -168,6 +169,7 @@ private:
    compositionengine::Output::ColorProfile pickColorProfile(
            const compositionengine::CompositionRefreshArgs&) const;
    void updateHwcAsyncWorker();
    float getHdrSdrRatio(const std::shared_ptr<renderengine::ExternalTexture>& buffer) const;

    std::string mName;
    std::string mNamePlusId;
+1 −1
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ public:
    void prepareFrame(bool usesClientComposition, bool usesDeviceComposition) override;
    std::shared_ptr<renderengine::ExternalTexture> dequeueBuffer(
            base::unique_fd* bufferFence) override;
    void queueBuffer(base::unique_fd readyFence) override;
    void queueBuffer(base::unique_fd readyFence, float hdrSdrRatio) override;
    void onPresentDisplayCompleted() override;
    bool supportsCompositionStrategyPrediction() const override;

Loading