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

Commit 05ae6986 authored by Alec Mouri's avatar Alec Mouri Committed by Automerger Merge Worker
Browse files

Merge "DisplayPowerController uses max desired SDR/HDR ratio" into udc-dev am: c3428ddc

parents a19ee1fc c3428ddc
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -42,10 +42,13 @@ public abstract class SurfaceControlHdrLayerInfoListener {
     * @param maxH The height of the HDR layer with the largest area
     * @param flags Additional metadata flags, currently always 0
     *              TODO(b/182312559): Add some flags
     * @param maxDesiredHdrSdrRatio The max desired HDR/SDR ratio. Unbounded if the ratio is
     *                              positive infinity.
     *
     * @hide */
     * @hide
     */
    public abstract void onHdrInfoChanged(IBinder displayToken, int numberOfHdrLayers,
            int maxW, int maxH, int flags);
            int maxW, int maxH, int flags, float maxDesiredHdrSdrRatio);

    /**
     * Registers this as an HDR info listener on the provided display
+4 −4
Original line number Diff line number Diff line
@@ -42,12 +42,12 @@ struct SurfaceControlHdrLayerInfoListener : public gui::BnHdrLayerInfoListener {
        LOG_ALWAYS_FATAL_IF(env->GetJavaVM(&mVm) != JNI_OK, "Failed to GetJavaVm");
    }

    binder::Status onHdrLayerInfoChanged(int numberOfHdrLayers, int maxW, int maxH,
                                         int flags) override {
    binder::Status onHdrLayerInfoChanged(int numberOfHdrLayers, int maxW, int maxH, int flags,
                                         float maxDesiredHdrSdrRatio) override {
        JNIEnv* env = requireEnv();

        env->CallVoidMethod(mListener, gListenerClassInfo.mOnHdrInfoChanged, mDisplayToken,
                            numberOfHdrLayers, maxW, maxH, flags);
                            numberOfHdrLayers, maxW, maxH, flags, maxDesiredHdrSdrRatio);

        if (env->ExceptionCheck()) {
            ALOGE("SurfaceControlHdrLayerInfoListener.onHdrInfoChanged() failed.");
@@ -129,7 +129,7 @@ int register_android_view_SurfaceControlHdrLayerInfoListener(JNIEnv* env) {
    jclass clazz = env->FindClass("android/view/SurfaceControlHdrLayerInfoListener");
    gListenerClassInfo.mClass = MakeGlobalRefOrDie(env, clazz);
    gListenerClassInfo.mOnHdrInfoChanged =
            env->GetMethodID(clazz, "onHdrInfoChanged", "(Landroid/os/IBinder;IIII)V");
            env->GetMethodID(clazz, "onHdrInfoChanged", "(Landroid/os/IBinder;IIIIF)V");
    return 0;
}

+4 −3
Original line number Diff line number Diff line
@@ -889,11 +889,12 @@ public class DisplayDeviceConfig {
    }

    /**
     * Calculate the HDR brightness for the specified SDR brightenss.
     * Calculate the HDR brightness for the specified SDR brightenss, restricted by the
     * maxDesiredHdrSdrRatio (the ratio between the HDR luminance and SDR luminance)
     *
     * @return the HDR brightness or BRIGHTNESS_INVALID when no mapping exists.
     */
    public float getHdrBrightnessFromSdr(float brightness) {
    public float getHdrBrightnessFromSdr(float brightness, float maxDesiredHdrSdrRatio) {
        if (mSdrToHdrRatioSpline == null) {
            return PowerManager.BRIGHTNESS_INVALID;
        }
@@ -904,7 +905,7 @@ public class DisplayDeviceConfig {
            return PowerManager.BRIGHTNESS_INVALID;
        }

        float ratio = mSdrToHdrRatioSpline.interpolate(nits);
        float ratio = Math.min(mSdrToHdrRatioSpline.interpolate(nits), maxDesiredHdrSdrRatio);
        float hdrNits = nits * ratio;
        if (mNitsToBacklightSpline == null) {
            return PowerManager.BRIGHTNESS_INVALID;
+8 −4
Original line number Diff line number Diff line
@@ -975,8 +975,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
                mDisplayDeviceConfig.getHighBrightnessModeData(),
                new HighBrightnessModeController.HdrBrightnessDeviceConfig() {
                    @Override
                    public float getHdrBrightnessFromSdr(float sdrBrightness) {
                        return mDisplayDeviceConfig.getHdrBrightnessFromSdr(sdrBrightness);
                    public float getHdrBrightnessFromSdr(
                            float sdrBrightness, float maxDesiredHdrSdrRatio) {
                        return mDisplayDeviceConfig.getHdrBrightnessFromSdr(
                                sdrBrightness, maxDesiredHdrSdrRatio);
                    }
                });
        mBrightnessThrottler.resetThrottlingData(
@@ -2088,8 +2090,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
                displayUniqueId, PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX, hbmData,
                new HighBrightnessModeController.HdrBrightnessDeviceConfig() {
                    @Override
                    public float getHdrBrightnessFromSdr(float sdrBrightness) {
                        return mDisplayDeviceConfig.getHdrBrightnessFromSdr(sdrBrightness);
                    public float getHdrBrightnessFromSdr(
                            float sdrBrightness, float maxDesiredHdrSdrRatio) {
                        return mDisplayDeviceConfig.getHdrBrightnessFromSdr(
                                sdrBrightness, maxDesiredHdrSdrRatio);
                    }
                },
                () -> {
+8 −4
Original line number Diff line number Diff line
@@ -809,8 +809,10 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
                mDisplayDeviceConfig.getHighBrightnessModeData(),
                new HighBrightnessModeController.HdrBrightnessDeviceConfig() {
                    @Override
                    public float getHdrBrightnessFromSdr(float sdrBrightness) {
                        return mDisplayDeviceConfig.getHdrBrightnessFromSdr(sdrBrightness);
                    public float getHdrBrightnessFromSdr(
                            float sdrBrightness, float maxDesiredHdrSdrRatio) {
                        return mDisplayDeviceConfig.getHdrBrightnessFromSdr(
                                sdrBrightness, maxDesiredHdrSdrRatio);
                    }
                });
        mBrightnessThrottler.resetThrottlingData(
@@ -1796,8 +1798,10 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
                displayUniqueId, PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX, hbmData,
                new HighBrightnessModeController.HdrBrightnessDeviceConfig() {
                    @Override
                    public float getHdrBrightnessFromSdr(float sdrBrightness) {
                        return mDisplayDeviceConfig.getHdrBrightnessFromSdr(sdrBrightness);
                    public float getHdrBrightnessFromSdr(
                            float sdrBrightness, float maxDesiredHdrSdrRatio) {
                        return mDisplayDeviceConfig.getHdrBrightnessFromSdr(
                                sdrBrightness, maxDesiredHdrSdrRatio);
                    }
                },
                () -> {
Loading