[Trac #1017] swizzle and other DCON-related display problems

Zarro Boogs per Child bugtracker at laptop.org
Thu Mar 15 01:00:12 EDT 2007


#1017: swizzle and other DCON-related display problems
---------------------------+------------------------------------------------
 Reporter:  AlbertCahalan  |        Owner:  blizzard 
     Type:  defect         |       Status:  new      
 Priority:  normal         |    Milestone:  Untriaged
Component:  distro         |   Resolution:           
 Keywords:                 |  
---------------------------+------------------------------------------------
Comment (by AlbertCahalan):

 Replying to [comment:1 vmb]:
 > Replying to [ticket:1017 AlbertCahalan]:
 > > 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.

 Here you go:

 http://wiki.laptop.org/go/Image:Zone_plate_boys.png

 Regarding the filter itself: The colored circles in the zone plate area
 are obviously bad. The bi-level noise patch shouldn't be showing any
 color. The bottom row of bi-level pattern patches should not be showing
 any color. The 3x2 group of patterned yellow and green color patches
 shouldn't be showing odd colors.

 Regarding the filter operating on wrong-gamma data: There are numerous
 extra aliasing circles in the zone plate area. The top row of bi-level
 pattern patches does not appear equally bright as the grey square to the
 left of them.

 > > 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.

 I forgot: this would be a good place to add temporal anti-aliasing against
 the quantization to 6:6:6, especially when the frame buffer is set to
 8:8:8. Each table lookup could provide a mask for a pseudo-random number
 generator, allowing gamma to be properly respected. (actually a pair of
 masks, equivalent to multiplication by a floating-point value with 1
 fraction bit)

 > As the person who originally designed the hardware filter kernel (which
 is 3x3, and in order to avoid having full multipliers in the ASIC needs to
 have all weights be fractional powers of 2), I'd be interested in seeing
 some of the images that give you aliasing problems.

 Multiplication is just adding weights that are fractional powers of 2. For
 a 3x3 filter labeled "a" through "i" in normal English reading order, this
 is better:

 (a + 2*b + 2*d + 2*e + 4*e + 2*f + 2*h + i)/16

 As you can see, the "e" term appears twice. The degree to which you can do
 this will greatly affect quality. I stuck with 3x3 and only increased the
 divider to 16, but higher is much better.

 I just tested the above in a screen simulator, with both broken and fixed
 gamma. It's better no matter what the gamma.

 On a real B2 OLPC XO, the test pattern looks far better if I tell my image
 viewer that the screen gamma is 1.0 rather than the standard sRGB gamma.
 I'm fairly sure this indicates that the filter is operating on raw pixel
 data, which would normally be in the sRGB color space. This is not a
 legitimate operation; the data must be linear. If the LCD itself is not
 linear, then you need a separate gamma lookup table for that.

 Got a diagram of the pipeline anywhere? It could go on the wiki. ASIC code
 would be useful too.

 Note: image link is above

-- 
Ticket URL: <http://dev.laptop.org/ticket/1017#comment:2>
One Laptop Per Child <http://laptop.org/>



More information about the Bugs mailing list