sonyxperiadev / bug_tracker

Empty repository that is used as a bugtracker for Open Devices project
52 stars 13 forks source link

[Yoshino][Lilac] Changing Display white point calibration has no visual effect #425

Closed stefanhh0 closed 5 years ago

stefanhh0 commented 5 years ago

Platform: Yoshino Device: Lilac Kernel version: 4.9.177-g79f3a95ecb4b Android version: android-9.0.0_r37 OEM Image: SW_binaries_for_Xperia_Android_9.0_2.3.2_v9_yoshino.zip Build: aosp_g8441-userdebug 9 PQ3A.190505.002 eng.stefan.20190615.220747 Version baseband: 1308-8921_47.1.A.16.20

Description Settings -> System -> Extended Settings -> Display white point calibration Changing the calibration from 6000k to any other value (e.g. D50: 5000k) does not have any effect on the calibration of the display.

When opening the Extended settings following exception is logged in the logcat ```text 06-16 07:13:06.729 5594 5594 I Zygote : seccomp disabled by setenforce 0 06-16 07:13:06.735 5594 5594 E xtendedsetting: Not starting debugger since process cannot load the jdwp agent. 06-16 07:13:06.761 5594 5594 D libnativeloader: classloader namespace configured for unbundled vendor apk. library_path=/vendor/priv-app/ExtendedSettings/lib/arm64:/vendor/lib64 06-16 07:13:06.780 5594 5594 D OpenGLRenderer: Skia GL Pipeline 06-16 07:13:06.799 5594 5594 W System.err: java.io.FileNotFoundException: /sys/devices/virtual/graphics/fb0/modes (No such file or directory) 06-16 07:13:06.800 5594 5594 W System.err: at java.io.FileInputStream.open0(Native Method) 06-16 07:13:06.800 5594 5594 W System.err: at java.io.FileInputStream.open(FileInputStream.java:231) 06-16 07:13:06.800 5594 5594 W System.err: at java.io.FileInputStream.(FileInputStream.java:165) 06-16 07:13:06.800 5594 5594 W System.err: at java.io.FileInputStream.(FileInputStream.java:112) 06-16 07:13:06.800 5594 5594 W System.err: at java.io.FileReader.(FileReader.java:58) 06-16 07:13:06.800 5594 5594 W System.err: at sonyxperiadev.extendedsettings.ExtendedSettingsFragment.sysfs_readResolutions(ExtendedSettingsFragment.java:307) 06-16 07:13:06.800 5594 5594 W System.err: at sonyxperiadev.extendedsettings.ExtendedSettingsFragment.initializeDRSListPreference(ExtendedSettingsFragment.java:376) 06-16 07:13:06.800 5594 5594 W System.err: at sonyxperiadev.extendedsettings.ExtendedSettingsFragment.onCreatePreferences(ExtendedSettingsFragment.java:222) 06-16 07:13:06.800 5594 5594 W System.err: at android.support.v14.preference.PreferenceFragment.onCreate(PreferenceFragment.java:225) 06-16 07:13:06.800 5594 5594 W System.err: at android.app.Fragment.performCreate(Fragment.java:2503) 06-16 07:13:06.800 5594 5594 W System.err: at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1256) 06-16 07:13:06.800 5594 5594 W System.err: at android.app.FragmentManagerImpl.addAddedFragments(FragmentManager.java:2426) 06-16 07:13:06.800 5594 5594 W System.err: at android.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2205) 06-16 07:13:06.800 5594 5594 W System.err: at android.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2161) 06-16 07:13:06.800 5594 5594 W System.err: at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2062) 06-16 07:13:06.800 5594 5594 W System.err: at android.app.FragmentManagerImpl.dispatchMoveToState(FragmentManager.java:3051) 06-16 07:13:06.800 5594 5594 W System.err: at android.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:2998) 06-16 07:13:06.800 5594 5594 W System.err: at android.app.FragmentController.dispatchActivityCreated(FragmentController.java:182) 06-16 07:13:06.800 5594 5594 W System.err: at android.app.Activity.performCreate(Activity.java:7151) 06-16 07:13:06.800 5594 5594 W System.err: at android.app.Activity.performCreate(Activity.java:7135) 06-16 07:13:06.800 5594 5594 W System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) 06-16 07:13:06.800 5594 5594 W System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2931) 06-16 07:13:06.800 5594 5594 W System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086) 06-16 07:13:06.800 5594 5594 W System.err: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 06-16 07:13:06.800 5594 5594 W System.err: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 06-16 07:13:06.800 5594 5594 W System.err: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 06-16 07:13:06.800 5594 5594 W System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816) 06-16 07:13:06.800 5594 5594 W System.err: at android.os.Handler.dispatchMessage(Handler.java:106) 06-16 07:13:06.800 5594 5594 W System.err: at android.os.Looper.loop(Looper.java:193) 06-16 07:13:06.800 5594 5594 W System.err: at android.app.ActivityThread.main(ActivityThread.java:6718) 06-16 07:13:06.800 5594 5594 W System.err: at java.lang.reflect.Method.invoke(Native Method) 06-16 07:13:06.800 5594 5594 W System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 06-16 07:13:06.800 5594 5594 W System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 06-16 07:13:06.800 5594 5594 W System.err: java.io.FileNotFoundException: /sys/devices/virtual/graphics/fb0/mode (No such file or directory) 06-16 07:13:06.800 5594 5594 W System.err: at java.io.FileInputStream.open0(Native Method) 06-16 07:13:06.800 5594 5594 W System.err: at java.io.FileInputStream.open(FileInputStream.java:231) 06-16 07:13:06.800 5594 5594 W System.err: at java.io.FileInputStream.(FileInputStream.java:165) 06-16 07:13:06.800 5594 5594 W System.err: at java.io.FileInputStream.(FileInputStream.java:112) 06-16 07:13:06.800 5594 5594 W System.err: at java.io.FileReader.(FileReader.java:58) 06-16 07:13:06.800 5594 5594 W System.err: at sonyxperiadev.extendedsettings.ExtendedSettingsFragment.sysfs_getCurrentResolution(ExtendedSettingsFragment.java:333) 06-16 07:13:06.800 5594 5594 W System.err: at sonyxperiadev.extendedsettings.ExtendedSettingsFragment.initializeDRSListPreference(ExtendedSettingsFragment.java:389) 06-16 07:13:06.800 5594 5594 W System.err: at sonyxperiadev.extendedsettings.ExtendedSettingsFragment.onCreatePreferences(ExtendedSettingsFragment.java:222) 06-16 07:13:06.800 5594 5594 W System.err: at android.support.v14.preference.PreferenceFragment.onCreate(PreferenceFragment.java:225) 06-16 07:13:06.801 5594 5594 W System.err: at android.app.Fragment.performCreate(Fragment.java:2503) 06-16 07:13:06.801 5594 5594 W System.err: at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1256) 06-16 07:13:06.801 5594 5594 W System.err: at android.app.FragmentManagerImpl.addAddedFragments(FragmentManager.java:2426) 06-16 07:13:06.801 5594 5594 W System.err: at android.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2205) 06-16 07:13:06.801 5594 5594 W System.err: at android.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2161) 06-16 07:13:06.801 5594 5594 W System.err: at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2062) 06-16 07:13:06.801 5594 5594 W System.err: at android.app.FragmentManagerImpl.dispatchMoveToState(FragmentManager.java:3051) 06-16 07:13:06.801 5594 5594 W System.err: at android.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:2998) 06-16 07:13:06.801 5594 5594 W System.err: at android.app.FragmentController.dispatchActivityCreated(FragmentController.java:182) 06-16 07:13:06.801 5594 5594 W System.err: at android.app.Activity.performCreate(Activity.java:7151) 06-16 07:13:06.801 5594 5594 W System.err: at android.app.Activity.performCreate(Activity.java:7135) 06-16 07:13:06.801 5594 5594 W System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) 06-16 07:13:06.801 5594 5594 W System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2931) 06-16 07:13:06.801 5594 5594 W System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086) 06-16 07:13:06.801 5594 5594 W System.err: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 06-16 07:13:06.801 5594 5594 W System.err: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 06-16 07:13:06.801 5594 5594 W System.err: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 06-16 07:13:06.801 5594 5594 W System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816) 06-16 07:13:06.801 5594 5594 W System.err: at android.os.Handler.dispatchMessage(Handler.java:106) 06-16 07:13:06.801 5594 5594 W System.err: at android.os.Looper.loop(Looper.java:193) 06-16 07:13:06.801 5594 5594 W System.err: at android.app.ActivityThread.main(ActivityThread.java:6718) 06-16 07:13:06.801 5594 5594 W System.err: at java.lang.reflect.Method.invoke(Native Method) 06-16 07:13:06.801 5594 5594 W System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 06-16 07:13:06.801 5594 5594 W System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 06-16 07:13:06.801 5594 5594 E ExtendedSettings: initializeDRSListPreference: Active mode is blank or cannot be detected. DRS will be disabled 06-16 07:13:06.841 5594 5612 I Adreno : QUALCOMM build : 9128d71, Ib33d3e8e13 06-16 07:13:06.841 5594 5612 I Adreno : Build Date : 10/23/18 06-16 07:13:06.841 5594 5612 I Adreno : OpenGL ES Shader Compiler Version: EV031.25.03.01 06-16 07:13:06.841 5594 5612 I Adreno : Local Branch : 06-16 07:13:06.841 5594 5612 I Adreno : Remote Branch : 06-16 07:13:06.841 5594 5612 I Adreno : Remote Branch : 06-16 07:13:06.841 5594 5612 I Adreno : Reconstruct Branch : 06-16 07:13:06.841 5594 5612 I Adreno : Build Config : S L 6.0.7 AArch64 06-16 07:13:06.844 5594 5612 I Adreno : PFP: 0x005ff087, ME: 0x005ff063 06-16 07:13:06.847 5594 5612 I ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0 06-16 07:13:06.847 5594 5612 I ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 1 06-16 07:13:06.848 5594 5612 I OpenGLRenderer: Initialized EGL, version 1.4 06-16 07:13:06.848 5594 5612 D OpenGLRenderer: Swap behavior `1` ```

When changing the white point calibration following appears in the logcat output:

06-16 07:13:15.555   681   817 W SurfaceFlinger: Attempting to set client state on removed layer: sonyxperiadev.extendedsettings/sonyxperiadev.extendedsettings.ExtendedSettingsActivity#1
06-16 07:13:15.555   681   817 W SurfaceFlinger: Attempting to destroy on removed layer: sonyxperiadev.extendedsettings/sonyxperiadev.extendedsettings.ExtendedSettingsActivity#1
06-16 07:13:15.567   681  1611 W SurfaceFlinger: Attempting to set client state on removed layer: Dim Layer for - Task=58#0
06-16 07:13:15.567   681  1611 W SurfaceFlinger: Attempting to destroy on removed layer: Dim Layer for - Task=58#0
06-16 07:13:16.260   681  1611 D SurfaceFlinger: duplicate layer name: changing sonyxperiadev.extendedsettings/sonyxperiadev.extendedsettings.ExtendedSettingsActivity to sonyxperiadev.extendedsettings/sonyxperiadev.extendedsettings.ExtendedSettingsActivity#1
06-16 07:13:16.472   681  1611 W SurfaceFlinger: Attempting to set client state on removed layer: Surface(name=9c7fe4e sonyxperiadev.extendedsettings/sonyxperiadev.extendedsettings.ExtendedSettingsActivity)/@0x7f73b6f - animation-leash#0
06-16 07:13:16.472   681  1611 W SurfaceFlinger: Attempting to destroy on removed layer: Surface(name=9c7fe4e sonyxperiadev.extendedsettings/sonyxperiadev.extendedsettings.ExtendedSettingsActivity)/@0x7f73b6f - animation-leash#0

History

Symptoms Changing the Display white point calibration to e.g. D50: 5000k has no visual effect on the display.

How to reproduce It is easy and always reproducible for me.

Logfiles dmesg.log logcat.log

MarijnS95 commented 5 years ago

The first stacktrace is irrelevant and erroneously printed on devices without DRS: ExtendedSettings: initializeDRSListPreference: Active mode is blank or cannot be detected. DRS will be disabled.

The second one is something "wrong" with the UI of the app. It "works", so I guess no-one is going to spend time looking at it.

The actual problem is shown in dmesg. It can't read the calibration table:

[    1.388653] somc_panel_color_manager: somc_panel_parse_dt_colormgr_config:403, Unable to read pcc table
[    1.389116] somc_panel_color_manager: somc_panel_parse_dt_colormgr_config:417, Unable to read srgb_pcc table
[    1.389575] somc_panel_color_manager: somc_panel_parse_dt_colormgr_config:431, Unable to read vivid_pcc table
[    1.390039] somc_panel_color_manager: somc_panel_parse_dt_colormgr_config:444, Unable to read hdr_pcc table

And there's also the odd issue of u,v:

[   68.004583] somc_panel_color_manager: somc_panel_inject_crtc_overrides (751): Override: Already have original funcs! Is setup called twice??
[   68.004981] somc_panel_color_manager: somc_panel_pcc_setup (855): u,v is flashed 0.
[   68.005215] somc_panel_color_manager: somc_panel_colormgr_apply_calibrations: Couldn't apply PCC calibration
[   68.005497] somc_panel_color_manager: somc_panel_colormgr_apply_calibrations: Cannot send HSIC calibration

This should be an easy fix, since the existing calibration and uv commands are located elsewhere. From the looks of it, reading somc,mdss-dsi-uv-command silently fails with a debug print (and the return value is not checked) causing an erroneous u,v is flashed 0..

The following should take care of it for your panel (8):

diff --git a/arch/arm64/boot/dts/qcom/dsi-panel-somc-lilac-id8_pcc.dtsi b/arch/arm64/boot/dts/qcom/dsi-panel-somc-lilac-id8_pcc.dtsi
index 8c48a9bb18fe..9f16dbcc4c44 100644
--- a/arch/arm64/boot/dts/qcom/dsi-panel-somc-lilac-id8_pcc.dtsi
+++ b/arch/arm64/boot/dts/qcom/dsi-panel-somc-lilac-id8_pcc.dtsi
@@ -18,8 +18,8 @@
  */

 /* pcc-table for Lilac JDI */
-&mdss_mdp {
-       dsi_8: somc,8_panel {
+&sde_kms {
+       sde_dsi_8: somc,8_panel {
                somc,mdss-dsi-pcc-enable;
                somc,mdss-dsi-uv-command = [
                        06 01 00 00 00 00 01 DA

We'll do the same on panel 5 after you confirm this works (and probably check the other devices).

As for the option being gone for a while, that seems odd: both drivers always expose the sysfs file (pcc_profile) regardless of DT state, and the PR to support SDE devices in ExtendededSettings has been merged well before your comment :thinking:

stefanhh0 commented 5 years ago

@MarijnS95 Awesome, the suggested proposal fixed the problem. Thanks a lot for your help!

Shall I keep the ticket open until the fix is officially merged back into the msm-4.9 kernel?

MarijnS95 commented 5 years ago

@stefanhh0 Leave it open for now, GH will automatically close it when the PR is merged. We might want to add some other changes to it anyway.