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

Commit 9f24ca4e authored by Oleg Petšjonkin's avatar Oleg Petšjonkin Committed by Android (Google) Code Review
Browse files

Merge "Feature flag for moving HDR related logic to separate modifier" into main

parents 76d684ea 248f6f0f
Loading
Loading
Loading
Loading
+19 −18
Original line number Diff line number Diff line
@@ -29,9 +29,10 @@ import java.util.Objects;
 */
public final class DisplayBrightnessState {
    public static final float CUSTOM_ANIMATION_RATE_NOT_SET = -1f;
    public static final float BRIGHTNESS_NOT_SET = -1f;

    private final float mBrightness;
    private final float mSdrBrightness;
    private final float mHdrBrightness;

    private final float mMaxBrightness;
    private final float mMinBrightness;
@@ -51,7 +52,7 @@ public final class DisplayBrightnessState {

    private DisplayBrightnessState(Builder builder) {
        mBrightness = builder.getBrightness();
        mSdrBrightness = builder.getSdrBrightness();
        mHdrBrightness = builder.getHdrBrightness();
        mBrightnessReason = builder.getBrightnessReason();
        mDisplayBrightnessStrategyName = builder.getDisplayBrightnessStrategyName();
        mShouldUseAutoBrightness = builder.getShouldUseAutoBrightness();
@@ -73,10 +74,10 @@ public final class DisplayBrightnessState {
    }

    /**
     * Gets the sdr brightness
     * Gets the hdr brightness
     */
    public float getSdrBrightness() {
        return mSdrBrightness;
    public float getHdrBrightness() {
        return mHdrBrightness;
    }

    /**
@@ -163,8 +164,8 @@ public final class DisplayBrightnessState {
        StringBuilder stringBuilder = new StringBuilder("DisplayBrightnessState:");
        stringBuilder.append("\n    brightness:");
        stringBuilder.append(getBrightness());
        stringBuilder.append("\n    sdrBrightness:");
        stringBuilder.append(getSdrBrightness());
        stringBuilder.append("\n    hdrBrightness:");
        stringBuilder.append(getHdrBrightness());
        stringBuilder.append("\n    brightnessReason:");
        stringBuilder.append(getBrightnessReason());
        stringBuilder.append("\n    shouldUseAutoBrightness:");
@@ -198,7 +199,7 @@ public final class DisplayBrightnessState {
        DisplayBrightnessState otherState = (DisplayBrightnessState) other;

        return mBrightness == otherState.getBrightness()
                && mSdrBrightness == otherState.getSdrBrightness()
                && mHdrBrightness == otherState.getHdrBrightness()
                && mBrightnessReason.equals(otherState.getBrightnessReason())
                && TextUtils.equals(mDisplayBrightnessStrategyName,
                        otherState.getDisplayBrightnessStrategyName())
@@ -216,7 +217,7 @@ public final class DisplayBrightnessState {

    @Override
    public int hashCode() {
        return Objects.hash(mBrightness, mSdrBrightness, mBrightnessReason,
        return Objects.hash(mBrightness, mHdrBrightness, mBrightnessReason,
                mShouldUseAutoBrightness, mIsSlowChange, mMaxBrightness, mMinBrightness,
                mCustomAnimationRate,
                mShouldUpdateScreenBrightnessSetting, mBrightnessEvent, mBrightnessAdjustmentFlag,
@@ -235,7 +236,7 @@ public final class DisplayBrightnessState {
     */
    public static class Builder {
        private float mBrightness;
        private float mSdrBrightness;
        private float mHdrBrightness = BRIGHTNESS_NOT_SET;
        private BrightnessReason mBrightnessReason = new BrightnessReason();
        private String mDisplayBrightnessStrategyName;
        private boolean mShouldUseAutoBrightness;
@@ -260,7 +261,7 @@ public final class DisplayBrightnessState {
        public static Builder from(DisplayBrightnessState state) {
            Builder builder = new Builder();
            builder.setBrightness(state.getBrightness());
            builder.setSdrBrightness(state.getSdrBrightness());
            builder.setHdrBrightness(state.getHdrBrightness());
            builder.setBrightnessReason(state.getBrightnessReason());
            builder.setDisplayBrightnessStrategyName(state.getDisplayBrightnessStrategyName());
            builder.setShouldUseAutoBrightness(state.getShouldUseAutoBrightness());
@@ -295,20 +296,20 @@ public final class DisplayBrightnessState {
        }

        /**
         * Gets the sdr brightness
         * Gets the hdr brightness
         */
        public float getSdrBrightness() {
            return mSdrBrightness;
        public float getHdrBrightness() {
            return mHdrBrightness;
        }

        /**
         * Sets the sdr brightness
         * Sets the hdr brightness
         *
         * @param sdrBrightness The sdr brightness to be associated with DisplayBrightnessState's
         * @param hdrBrightness The hdr brightness to be associated with DisplayBrightnessState's
         *                      builder
         */
        public Builder setSdrBrightness(float sdrBrightness) {
            this.mSdrBrightness = sdrBrightness;
        public Builder setHdrBrightness(float hdrBrightness) {
            this.mHdrBrightness = hdrBrightness;
            return this;
        }

+7 −3
Original line number Diff line number Diff line
@@ -1633,9 +1633,13 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
            // use instead. We still preserve the calculated brightness for Standard Dynamic Range
            // (SDR) layers, but the main brightness value will be the one for HDR.
            float sdrAnimateValue = animateValue;
            // TODO(b/216365040): The decision to prevent HBM for HDR in low power mode should be
            // done in HighBrightnessModeController.
            if (mBrightnessRangeController.getHighBrightnessMode()

            if (clampedState.getHdrBrightness() != DisplayBrightnessState.BRIGHTNESS_NOT_SET) {
                // TODO(b/343792639): The decision to prevent HBM for HDR in low power mode will be
                // done in HdrBrightnessModifier.
                // customAnimationRate and reason also handled by HdrBrightnessModifier
                animateValue = clampedState.getHdrBrightness();
            } else if (mBrightnessRangeController.getHighBrightnessMode()
                    == BrightnessInfo.HIGH_BRIGHTNESS_MODE_HDR
                    && (mBrightnessReasonTemp.getModifier() & BrightnessReason.MODIFIER_DIMMED) == 0
                    && (mBrightnessReasonTemp.getModifier() & BrightnessReason.MODIFIER_LOW_POWER)
+3 −5
Original line number Diff line number Diff line
@@ -52,9 +52,8 @@ public final class BrightnessUtils {
     * A utility to construct the DisplayBrightnessState
     */
    public static DisplayBrightnessState constructDisplayBrightnessState(
            int brightnessChangeReason, float brightness, float sdrBrightness,
            String displayBrightnessStrategyName) {
        return constructDisplayBrightnessState(brightnessChangeReason, brightness, sdrBrightness,
            int brightnessChangeReason, float brightness, String displayBrightnessStrategyName) {
        return constructDisplayBrightnessState(brightnessChangeReason, brightness,
                displayBrightnessStrategyName, /* slowChange= */ false);
    }

@@ -62,13 +61,12 @@ public final class BrightnessUtils {
     * A utility to construct the DisplayBrightnessState
     */
    public static DisplayBrightnessState constructDisplayBrightnessState(
            int brightnessChangeReason, float brightness, float sdrBrightness,
            int brightnessChangeReason, float brightness,
            String displayBrightnessStrategyName, boolean slowChange) {
        BrightnessReason brightnessReason = new BrightnessReason();
        brightnessReason.setReason(brightnessChangeReason);
        return new DisplayBrightnessState.Builder()
                .setBrightness(brightness)
                .setSdrBrightness(sdrBrightness)
                .setBrightnessReason(brightnessReason)
                .setDisplayBrightnessStrategyName(displayBrightnessStrategyName)
                .setIsSlowChange(slowChange)
+3 −0
Original line number Diff line number Diff line
@@ -304,6 +304,9 @@ public class BrightnessClamperController {
                modifiers.add(new BrightnessLowLuxModifier(handler, listener, context,
                        displayDeviceConfig));
            }
            if (flags.useNewHdrBrightnessModifier()) {
                modifiers.add(new HdrBrightnessModifier());
            }
            return modifiers;
        }

+51 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.server.display.brightness.clamper;

import android.hardware.display.DisplayManagerInternal;

import com.android.server.display.DisplayBrightnessState;

import java.io.PrintWriter;

public class HdrBrightnessModifier implements BrightnessStateModifier {
    @Override
    public void apply(DisplayManagerInternal.DisplayPowerRequest request,
            DisplayBrightnessState.Builder stateBuilder) {
        // noop
    }

    @Override
    public void dump(PrintWriter printWriter) {
        // noop
    }

    @Override
    public void stop() {
        // noop
    }

    @Override
    public boolean shouldListenToLightSensor() {
        return false;
    }

    @Override
    public void setAmbientLux(float lux) {
        // noop
    }
}
Loading