Ticket #1017 (new defect)
swizzle and other DCON-related display problems
|Reported by:||AlbertCahalan||Owned by:||wad|
|Deployments affected:||Blocked By:|
On a test pattern, I'm seeing aliasing errors which indicate that the RGB weight in the swizzle is not correct and which suggest that the swizzle is not operating on linear data.
If the the swizzle convolution is loadable and can do 5x5, and there are gamma tables both before and after the swizzle, then this can be fixed now. Otherwise I guess it will need a new ASIC. (well, maybe it isn't too late for an ASIC fix...?)
First, the sRGB values need to become linear via a lookup table. If YCrCr were supported in the framebuffer (nice idea, just set the high bit) then that would get converted too.
Second, make the result a properly weighted sum of the RGB components. In mono mode, this is how you convert from color to greyscale. In color mode, this is how you change from sRGB primaries and whitepoint to whatever the LCD is natively.
Third (color mode), perform the anti-aliasing convolution. It needs to be such that 1/3 of the weight comes from each type of pixel. A loadable 5x5 matrix or bigger would be great. It could have enforced symmetry along the diagonals to reduce cost; 5x5 only requires 9 distinct values and 7x7 only requires 16 distinct values. Another nice-to-have would be separate R/G/B matrixes, allowing step 2 and 3 to be combined if each output color can be a linear function of the 5x5x3 (x,y,channel) input.
Fourth, go through a second gamma table. This one accounts for any non-linearity in the LCD. It may need to be adjusted according to light level; otherwise it can be fixed.