Why no blackcrush fix? Here is why!

DanishbluntDanishblunt Level 5
edited April 2021 in ROG Phone 3

After looking into the kernel and see how everything is built up. I can tell you why black crush hasn't been fixed yet and why it's rather difficult. Many have been wondering, well why hasn't ASUS fixed this issue by now despite being such a big problem. For why black crush is happening, I made a video about it which can easily be found on youtube and via google titled "Blackcrush explained" so I won't be explaining that, however there is a big big problem here, and that is the lack of an easy way to drive the display. You see the software developers working for asus are devs specialized at working on applications, they are specialized on working on software solutions only. This is also the reason why the developers try to fix the black crush with an overlay, which simply won't work.

So what is the requirement in order to fix the gamma on the display? Well there is the problem, in order to be able to fix the gammalevel of the display you will need to tell the display direcly how to behave. Normally when you work with a top level programming language you have functions you can use in order to tell the hardware what to do, an example like:

set_gamma_level: 1.2

However due to the lack of such a feature, you'll have to do it in a much more complicated manner. Let's take an example from the nubia phone which has a gamma corrected screen:

mipi_dsi_dcs_write (dsi, 0xC7, gamma6,sizeof(gamma6));

Well great isn't it? What the fk is this supposed to mean?

Well from what I can tell this function writes direcly to a device, the arguments meaning:

  • dsi -> The device it writes to, the object in this case being the display
  • 0xC7 -> Being a DCS command
  • Gamma6 being a buffer that contains a payload.
  • and lastly the lenght of the payload

Even understanding this doesn't help much because while I do somewhat the code from the nubia solution I have no fking clue how I would implement this on the ASUS phone. You see in order to extract the gamma value they direcly red some values from adresses and defined them as gamma 1 - 10, however how they know, neither me nor the ASUS devs know, because this is more for people specialized in low level programming.

And before you ask why ASUS didn't hire a low level programmer then, well the answer is, it's hard to find one, we talk really hard.

I hope you now understand more as to why black crush hasn't been fixed yet. This also means, even with Android 11, black crush will still be an issue.


This discussion has been closed.