[MOD] Nexus S screen color. explanation of the 2.3.3 colors, calibration tools!

Search This thread

supercurio

Retired Senior Recognized Developer
May 31, 2010
3,550
5,041
Chambéry
spectrastudy.com
Hey :)

I see there is desire for insights and understanding by reading press articles about 2.3.3 color change.

First, a statement:
What I know:

- What I will explain here
- 2.3.3 change looks bad on my device : Colors are washed out, the response is very far from a 2.2 gamma / sRGB calibrated screen should look like.

What I don't know:

- If the result is bad on every screen. Probably not.
It's known Samsung manufactured at least 2 different Super AMOLED screen revisions, and it's possible that 2.3.3 looks perfect on some screens.

Links:
Issue 15039: Android 2.3.3 screen yellowish


What changed:

In 2.3.3, the screen (framebuffer) driver has been updated.
This screen driver consist of several files, including code that calculate gamma adjustment points and brightness levels dynamically based on a reference gamma table.

Change in 2.3.3 can be categorized in 3 types:

Code and gamma points calculations

1/ A new feature introduced is the ability of the driver to read informations from the screen hardware.
So far, there was no detection at all, just configuration sent.

Now the driver has the ability to ask to the screen: "what are your factory calibration levels for Red, Green and Blue"

2/ Another change is in the driver initialization sequence, supposed to setup the internal screen control hardware calculations for gamma 2.2 instead of something else (not specified)
It has the effect of brightening shadows.


Color temperature change

The updated driver has the ability to use multipliers to adjust the screen temperature on the linear scale.
In theory, it should allow to change red/green/blue levels without altering the color rendition accuracy, despite the complex calculations needed to generate color profiles at each brightness levels.

Today, those Red Green Blue multipliers are fixed in stone, but I'll publish shortly a kernel version + an app so you can control them manually.
It will needed to be treated with care because of potential overheat or fast burn-in side-effects at too high brightness levels.


Different Gamma table (aka Super AMOLED color profile)

Colors calibration for Super AMOLED design has almost no common points with current methods applicable to LCD only.
Calibrating a AMOLED screen requires to setup 255 different hardware correction profiles, one per brightness level.
Instead of that, math calculations, based on a reference gamma table are used to setup responses applied by the screen hardware, that control each single led accordingly.

On a LCD screen it's much simpler as the LCD panel response is always the same: One profile is virtually enough as brightness changes correspond to adjustments of the backlight power.
This is why LCD-type adjustment calibration or color change tools (like the one in CyanogenMod) cannot be used to calibrate Super AMOLED screen.

The gamma table has been vastly updated. It also brighten the shadows compared to previous profiles.
However, Google's previous Gamma table exhibited a purple deviation in dark grays, especially at low brightness settings. This new gamma table fixes the issue.


Source files:
- main driver - calculations
- hardware gamma adjustment points placement
- gamma table (and in the same file: screen initializations sequence)

Commits - source changes:
1/ ARM: herring: panel: Adjust pentile gamma table
2/ s3cfb_tl2796: Add support for reading mtp gamma register offsets
3/ s3cfb_tl2796: Add debug function to read current gamma correction registers
4/ ARM: herring: panel: Add support for reading mtp data
5/ ARM: herring: panel: Update gamma table
6/ ARM: herring: panel: Correct color temperature.


Conclusions

The new driver is properly (I would say: smartly!) written. It implement features exactly how it should be done.
Also, it should work well on each screen revision as it adapt to them.

However, something went wrong in the process.
Calibrating a screen cannot be done

Also, this is a Super AMOLED. Contrast Ratio of it is almost infinite.
Trying to apply exactly color profiles designed for lesser screens, with lower contrasts and gamut cannot work, by design.

However it doesn't mean a Super AMOLED screen is condemned to exhibit washed out or absurd over-saturated colors.
In a similar way, calibrating plasma TVs is not easy but can lead to excellent results.


Kernel for color developers, allowing hardware calibration

In this post
and this one
Yes, a third one too
Yet again another one


write in progress... comments welcome already
 
Last edited:

supercurio

Retired Senior Recognized Developer
May 31, 2010
3,550
5,041
Chambéry
spectrastudy.com
just a bit of extra info
http://www.engadget.com/2011/02/27/nexus-s-2-3-3-update-adjusts-screens-color-temperature-we-go-e/

Poll shows
529 like the new colors.
157 do not like the new colors.

Yes but I think the poll accuracy is affected by the article's photo,
The camera white balance used favor 2.3.3 color rendition.
On the color accuracy topic, the photo is not representative of what you see on the actual screen.

It allows however to calculate differently:

581 (14.9%) "looking good"

170 + 82 + 142 = 394 not happy with the update. "No, my screen looks terrible." + "No, mine's plagued with other bugs here." + "No, everything's gone wrong!"
 
Last edited:
  • Like
Reactions: gelib0y07

terryhau

Senior Member
Feb 5, 2010
277
158
The poll asks people how they think it looks on their device, not in the picture.
But i agree, polls are inaccurate.

I haven't actually seen the 2.3.3 color profile on my own device because none of the custom kernels here use it. And i don't want to use a stock kernel (cm7 user).

When you update your kernel, will it use the new profile by default?
 

supercurio

Retired Senior Recognized Developer
May 31, 2010
3,550
5,041
Chambéry
spectrastudy.com
The poll asks people how they think it looks on their device, not in the picture.
But i agree, polls are inaccurate.

I haven't actually seen the 2.3.3 color profile on my own device because none of the custom kernels here use it. And i don't want to use a stock kernel (cm7 user).

When you update your kernel, will it use the new profile by default?

Yeah, this poll cannot be accurate as the poll answers are for different questions, mixing color changes and general update modifications.
This poll is invalid by design ^^
You cannot add apples and oranges.

Until we manage to get nice colors from the new driver & gamma table, I'll publish mine with the old solution + the Voodoo color profile applied from the app.

But in this thread yes I'll publish a special kernel running the new code. But with the ability to customize it.

The goal is to let people try adjustments and share them :)
 
Last edited:
  • Like
Reactions: gelib0y07

mhaedo

Senior Member
Apr 8, 2009
150
89
Philadelphia
When the 2.3.3 update was released a few days ago, my immediate reaction was positive. I noticed how dramatically better the greys looked. Colors looked more accurate. I viewed the change as positive. I was quite vocal about how this was a fix, not a problem.

http://xdaforums.com/showpost.php?p=11632473&postcount=7
http://xdaforums.com/showpost.php?p=11631763&postcount=56
http://xdaforums.com/showpost.php?p=11630603&postcount=49
http://xdaforums.com/showpost.php?p=11629424&postcount=41
http://xdaforums.com/showpost.php?p=11628604&postcount=30
http://xdaforums.com/showpost.php?p=11618865&postcount=448
http://xdaforums.com/showpost.php?p=11618733&postcount=446

Unfortuntately, after nearly three full days of use I must take back every single one of the above posts. My screen looks terrible. The colors ARE more accurate. The greys ARE much better. However, overall my screen looks like it has jaundice. Everything listed in post #49 referenced above (ie. the dialer) does look dramatically better. However, my whites are terrible. They are not "yellow" per se, but they look like they have a slight yellow tinge like a subtle parchament effect. And honestly, I think since I knew this was an intended fix I convinced myself to like it. I figured the yellow was just my imagination because it was overly blue before, and yellow is the opposite of blue. If I look at my Facebook widget, GMail app, or Market app objectively three days later I can honestly say the yellow is real, and it is quite gross. When compared directly to my girlfriend's myTouch 4G the change is even more apparent. It's not that her whites are overly blue...mine really do have a subtle yellow tinge. And although stock and voodoo are both a bit oversaturated, the new 2.3.3 cover profile does appear undersaturated or "washed out."

Last night I reverted to voodoo color and WOW, it was a breath of fresh air. The colors are not as accurate. However, I don't care. The jaundice is gone, and my screen is vibrant again. If I must accept a tradeoff, I'll take the vibrant oversaturated colors over the sickly jaundice update colors. And this is coming from someone who initially viewed the change as overwhelmingly positive. I suppose subtle differences in sAMOLED manufacturing and each person's own perception of color make each person's preference different. Some people's screens may not have the yellow mine does. However after almost three days of trying to like the new profile, and then a VERY throrough comparison of stock 2.3.2, voodoo, and 2.3.3 ...I'll stick with voodoo. I just can't take the LED jaundice.

Thanks for your hard work supercurio. I'm really looking forward to the calibration tools.
 

supercurio

Retired Senior Recognized Developer
May 31, 2010
3,550
5,041
Chambéry
spectrastudy.com
You know @mhaedo, if it a screen looks terrible (in some situations) it's always because the color rendition is not accurate.
Despite each screen physical/technical limitations.

People will tell you "it's washed out because it's calibrated" => wrong.

There is nothing more beautiful − objectively − than a accurately color calibrated screen.
I mean, with a calibrated screen you just forget it because everything is how it should be.

Because it becomes neutral, you don't see the screen anymore, only the images displayed on it.

Thanks for your report!
 
Last edited:
  • Like
Reactions: gelib0y07

mhaedo

Senior Member
Apr 8, 2009
150
89
Philadelphia
You know @mhaedo, if it something looks terrible it's because the colors are not accurate.

People will tell you "it's washed out because it's calibrated" => wrong.

There is nothing more beautiful − objectively − than a accurately color calibrated screen.
I mean, with a calibrated screen you just forget it because everything is how it should be.

Because it becomes neutral, you don't see the screen anymore, only the images displayed on it.

Thanks for your report!

Well greys are definitely more accurate and look great. However I suppose you are right. As a whole, it is not accurate. I just purchased your voodoo donate market app to support the development. Thanks again.

Sent from my Nexus S using Tapatalk
 
  • Like
Reactions: supercurio

kenvan19

Senior Member
Dec 7, 2010
3,562
540
You know @mhaedo, if it a screen looks terrible (in some situations) it's always because the color rendition is not accurate.
Despite each screen physical/technical limitations.

People will tell you "it's washed out because it's calibrated" => wrong.

There is nothing more beautiful − objectively − than a accurately color calibrated screen.
I mean, with a calibrated screen you just forget it because everything is how it should be.

Because it becomes neutral, you don't see the screen anymore, only the images displayed on it.

Thanks for your report!

I tend to disagree that people forget about a color calibrated screen. Actually, I know it to be completely false. Most best buy locations have a color calibrated TV display where they have two TVs side by side; one calibrated and one not. If you ask people which TV looks better 99 out of 100 people will tell you the overly blue saturated TV is clearly more bright and has deeper blacks. Those people are wrong. That is exactly what is going on here and its exactly why Samsung and others do this to displays. I'm all for giving people the choice when it comes to their screens but I'm also for not letting people perpetuate a falsehood; I've looked closely at my screen and my wife's, looked at every "horriblely" yellow tinted screen people have posted pictures of and I stand by my statement that there us nothing wrong. People are just used to horribly tuned screens.

Sent from my Nexus S using XDA Premium App
 

supercurio

Retired Senior Recognized Developer
May 31, 2010
3,550
5,041
Chambéry
spectrastudy.com
There is calibration and calibration.
Often, the name calibration is used for reddish screen tones and dull colors.

It should only describe a rendering scientifically accurate that fit the intended target color space.
Most times: sRGB color space.

However, I fully agree on the temperature. 6500K, which is the natural sRGB white point is fine compared to natural colors in exterior, but it's rarely the best choice for screens except for people working on imaging only.
I don't think either it's the absolute best choice for a mobile display.

- Cooler (more blue) temperature look better inside especially: more.. white :D
- We are used to blueish screens. As a consequence 65000 looks strange to most of us.
 
Last edited:
  • Like
Reactions: gelib0y07

Nutsonfire

Senior Member
Jun 13, 2010
374
62
Nyon
Polls don't mean a lot, if there are different screen versions, it's possible that the update works great on some screens and not on others.. It's possible that the people answering the Engadget poll have in majority devices with the same screen for which the update worked great.

The Google forums posts say exactly the opposite, 90%+ not happy and only a few happy.

In my opinion it is not possible to think that the colors on the screen of my phone look correct. The screen colors look like something you find on a cheap LCD or an old LCD screen with worn out back light that gives no more contrast.

Anyhow with Supercurio's kernel the issues is temporarily fixed.

Thanks for the hard work!
 

supercurio

Retired Senior Recognized Developer
May 31, 2010
3,550
5,041
Chambéry
spectrastudy.com
You're welcome.
It's barely a choice, I would prefer selling my Nexus S than using it with 2.3.3 colors :p

Voodoo color profile V1 currently is app is far from perfect however. I gave it a 5 or 10 rating only.

− Began porting latest Voodoo color code and code documentation in 2.3.3
 

MadFerIt2011

Senior Member
Dec 14, 2010
59
8
Toronto, Ontario
I tend to disagree that people forget about a color calibrated screen. Actually, I know it to be completely false. Most best buy locations have a color calibrated TV display where they have two TVs side by side; one calibrated and one not. If you ask people which TV looks better 99 out of 100 people will tell you the overly blue saturated TV is clearly more bright and has deeper blacks. Those people are wrong. That is exactly what is going on here and its exactly why Samsung and others do this to displays. I'm all for giving people the choice when it comes to their screens but I'm also for not letting people perpetuate a falsehood; I've looked closely at my screen and my wife's, looked at every "horriblely" yellow tinted screen people have posted pictures of and I stand by my statement that there us nothing wrong. People are just used to horribly tuned screens.

Sent from my Nexus S using XDA Premium App

Look, I'll agree that an overtly "blue" tinted screen is not good, both for colour accuracy and the life of your SAMOLED screen.

But, I do not for a minute believe the current 2.3.3 colour profile is anywhere close to "calibrated" or "accurate". It's not. Some are experiencing extreme yellow tint and washout. Also as supercurio's Voodoo colour profile has demonstrated the "purple tint" issue can be eliminated without introducing a yellow tint.

And I will repeat this over and over again until I can't type. NOT all SAMOLED screens are the same as supercurio pointed out. There are displays out there more negatively impacted by the 2.3.3 driver update.
 
Last edited:

MadFerIt2011

Senior Member
Dec 14, 2010
59
8
Toronto, Ontario
You're welcome.
It's barely a choice, I would prefer selling my Nexus S than using it with 2.3.3 colors :p

Voodoo color profile V1 currently is app is far from perfect however. I gave it a 5 or 10 rating only.

− Began porting latest Voodoo color code and code documentation in 2.3.3

You rock! :D

I agree about selling the NS due to 2.3.3. I never intended to unlock my bootloader and mess with the kernel.. But here we are, and thankfully you did the amazing work of helping us out.

And I agree there's room to improve (and I will leave that to the master), there is still too much blue tint on my screen, even if the purple tint has been eliminated. I can imagine obtaining a 6500 temperature on this phone, and not the yellow tinted mess Google provided.
 

ogdobber

Inactive Recognized Developer
Nov 4, 2008
3,256
1,827
You're welcome.
It's barely a choice, I would prefer selling my Nexus S than using it with 2.3.3 colors :p

Voodoo color profile V1 currently is app is far from perfect however. I gave it a 5 or 10 rating only.

− Began porting latest Voodoo color code and code documentation in 2.3.3

based on the downloads of my kernels...people running 2.3.3 prefer "2.3.2 w/voodoo colors" 2:1 over stock "2.3.3 colors"
thanks for your attention
 
  • Like
Reactions: supercurio

kenvan19

Senior Member
Dec 7, 2010
3,562
540
Look, I'll agree that an overtly "blue" tinted screen is not good, both for colour accuracy and the life of your SAMOLED screen.

But, I do not for a minute believe the current 2.3.3 colour profile is anywhere close to "calibrated" or "accurate". It's not. Some are experiencing extreme yellow tint and washout. Also as supercurio's Voodoo colour profile has demonstrated the "purple tint" issue can be eliminated without introducing a yellow tint.

And I will repeat this over and over again until I can't type. NOT all SAMOLED screens are the same as supercurio pointed out. There are displays out there more negatively impacted by the 2.3.3 driver update.

You are entitled to your opinion but I will just say this: I have not seen a single picture of a screen that possesses this "yellow tint" that does not look normal to me. You're right though, SuperCurio fixed the purple tint without normalizing the colors, however his fix (this isn't meant as a slight to SuperCurio as I am a great believer in his work and his skill as a developer) didn't actually make the screen look natural. I still hold to my belief that what most people are claiming is a bug is really just a result of the fact that manufacturers have been using this type of over-blue saturation for years and that most people's eyes have become accustomed to it not to mention the fact that our eyes are easily tricked into seeing bright blue as brighter white.
 

kenvan19

Senior Member
Dec 7, 2010
3,562
540
kenvan19, you need to see how a professionally calibrated screen look like ;)

I used to calibrate screens professionally. I calibrated all the screens in my home, my parents home and my wife's parents home. I have quite a lot of experience with the subject, actually, and I'd really appreciate not being talked down to about it.
 

supercurio

Retired Senior Recognized Developer
May 31, 2010
3,550
5,041
Chambéry
spectrastudy.com
I used to calibrate screens professionally. I calibrated all the screens in my home, my parents home and my wife's parents home. I have quite a lot of experience with the subject, actually, and I'd really appreciate not being talked down to about it.

Ah okay sorry. I'll be interested by your collaboration then with the upcoming release, especially if you still have calibration hardware !
 

Top Liked Posts

  • There are no posts matching your filters.
  • 8
    Hey :)

    I see there is desire for insights and understanding by reading press articles about 2.3.3 color change.

    First, a statement:
    What I know:

    - What I will explain here
    - 2.3.3 change looks bad on my device : Colors are washed out, the response is very far from a 2.2 gamma / sRGB calibrated screen should look like.

    What I don't know:

    - If the result is bad on every screen. Probably not.
    It's known Samsung manufactured at least 2 different Super AMOLED screen revisions, and it's possible that 2.3.3 looks perfect on some screens.

    Links:
    Issue 15039: Android 2.3.3 screen yellowish


    What changed:

    In 2.3.3, the screen (framebuffer) driver has been updated.
    This screen driver consist of several files, including code that calculate gamma adjustment points and brightness levels dynamically based on a reference gamma table.

    Change in 2.3.3 can be categorized in 3 types:

    Code and gamma points calculations

    1/ A new feature introduced is the ability of the driver to read informations from the screen hardware.
    So far, there was no detection at all, just configuration sent.

    Now the driver has the ability to ask to the screen: "what are your factory calibration levels for Red, Green and Blue"

    2/ Another change is in the driver initialization sequence, supposed to setup the internal screen control hardware calculations for gamma 2.2 instead of something else (not specified)
    It has the effect of brightening shadows.


    Color temperature change

    The updated driver has the ability to use multipliers to adjust the screen temperature on the linear scale.
    In theory, it should allow to change red/green/blue levels without altering the color rendition accuracy, despite the complex calculations needed to generate color profiles at each brightness levels.

    Today, those Red Green Blue multipliers are fixed in stone, but I'll publish shortly a kernel version + an app so you can control them manually.
    It will needed to be treated with care because of potential overheat or fast burn-in side-effects at too high brightness levels.


    Different Gamma table (aka Super AMOLED color profile)

    Colors calibration for Super AMOLED design has almost no common points with current methods applicable to LCD only.
    Calibrating a AMOLED screen requires to setup 255 different hardware correction profiles, one per brightness level.
    Instead of that, math calculations, based on a reference gamma table are used to setup responses applied by the screen hardware, that control each single led accordingly.

    On a LCD screen it's much simpler as the LCD panel response is always the same: One profile is virtually enough as brightness changes correspond to adjustments of the backlight power.
    This is why LCD-type adjustment calibration or color change tools (like the one in CyanogenMod) cannot be used to calibrate Super AMOLED screen.

    The gamma table has been vastly updated. It also brighten the shadows compared to previous profiles.
    However, Google's previous Gamma table exhibited a purple deviation in dark grays, especially at low brightness settings. This new gamma table fixes the issue.


    Source files:
    - main driver - calculations
    - hardware gamma adjustment points placement
    - gamma table (and in the same file: screen initializations sequence)

    Commits - source changes:
    1/ ARM: herring: panel: Adjust pentile gamma table
    2/ s3cfb_tl2796: Add support for reading mtp gamma register offsets
    3/ s3cfb_tl2796: Add debug function to read current gamma correction registers
    4/ ARM: herring: panel: Add support for reading mtp data
    5/ ARM: herring: panel: Update gamma table
    6/ ARM: herring: panel: Correct color temperature.


    Conclusions

    The new driver is properly (I would say: smartly!) written. It implement features exactly how it should be done.
    Also, it should work well on each screen revision as it adapt to them.

    However, something went wrong in the process.
    Calibrating a screen cannot be done

    Also, this is a Super AMOLED. Contrast Ratio of it is almost infinite.
    Trying to apply exactly color profiles designed for lesser screens, with lower contrasts and gamut cannot work, by design.

    However it doesn't mean a Super AMOLED screen is condemned to exhibit washed out or absurd over-saturated colors.
    In a similar way, calibrating plasma TVs is not easy but can lead to excellent results.


    Kernel for color developers, allowing hardware calibration

    In this post
    and this one
    Yes, a third one too
    Yet again another one


    write in progress... comments welcome already
    2
    Measurements on my Nexus S screen running Google's kernel for 2.3.3 OTA.
    Just discovering HCFR powers...

    Measurements ran at 100% brightness.

    greyscale-luminance-measurements.png


    greyscale-gamma-measurements.png



    Interpretation:

    Gamma should be equal to 2.2 but on the whole brightness range it's far from it like eyes told us already.
    Median value for Gamma is around 1.98 instead, and not constant.

    Short story: The lower a pixel brightness is, the brighter it's rendered compared to how it should be (lower gamma value).

    Of course this also confirm that the color change don't look dull because it's calibrated.
    You'll see by yourself, calibrated colors are beautiful ;)
    2
    I'm sorry I pushed so many updates and versions real fast it's confusing for users ;)
    2
    http://dl.project-voodoo.org/nexus-s-kernels/Nexus-S-Voodoo-color-with-calibration-tools-latest.img

    Still same URL, but kernel updated.

    Added:

    Voodoo color: added control to switch of panel initialization sequence between Samsung and Google 2.2.3 ones, allowing to revert live commit 921bfc57db1849d30481b9d8ac98ab1e42feb34c

    How to use it:

    Code:
    adb shell echo 0 > /sys/class/misc/voodoo_color/panel_config_sequence
    adb shell echo 1 > /sys/class/misc/voodoo_color/panel_config_sequence

    the mode 1 is Samsung mode (same as in kernel before 2.2.3). It allow to load directly settings with apply_custom_brightness_gammas issued from Samsung Galaxy S compatible settings without over-contrast and shadows clipping.

    Like that:

    http://xdaforums.com/showthread.php?p=11695182#post11695182

    You can test with this darn fine profile tuned manually, adb pushed to /sys/class/misc/voodoo_color/apply_custom_brightness_gammas

    Code:
    185,184,252
    22,11,31
    118,110,79
    174,174,161
    181,185,166
    194,197,185
    1
    just a bit of extra info
    http://www.engadget.com/2011/02/27/nexus-s-2-3-3-update-adjusts-screens-color-temperature-we-go-e/

    Poll shows
    529 like the new colors.
    157 do not like the new colors.

    Yes but I think the poll accuracy is affected by the article's photo,
    The camera white balance used favor 2.3.3 color rendition.
    On the color accuracy topic, the photo is not representative of what you see on the actual screen.

    It allows however to calculate differently:

    581 (14.9%) "looking good"

    170 + 82 + 142 = 394 not happy with the update. "No, my screen looks terrible." + "No, mine's plagued with other bugs here." + "No, everything's gone wrong!"