#12206 NORM 13.1.0: XO-1.75 rotation rendering error

Zarro Boogs per Child bugtracker at laptop.org
Thu Dec 20 11:37:05 EST 2012


#12206: XO-1.75 rotation rendering error
---------------------------------------+------------------------------------
           Reporter:  greenfeld        |       Owner:  jnettlet                         
               Type:  defect           |      Status:  new                              
           Priority:  normal           |   Milestone:  13.1.0                           
          Component:  x window system  |     Version:  Development build as of this date
         Resolution:                   |    Keywords:                                   
        Next_action:  review           |    Verified:  0                                
Deployment_affected:                   |   Blockedby:                                   
           Blocking:                   |  
---------------------------------------+------------------------------------
Changes (by dsd):

 * cc: dsd (added)
  * next_action:  diagnose => review


Comment:

 There are 2 bugs here.

 Firstly, rotation of "nearest" interpolation images produces bad results,
 as can be seen on the first and third rows of the output. (the bilinear
 interpolation used on the second and fourth rows is rejected by the EXA
 path in the driver, so it is rendered in software).

 This rotation causes a composite operation with an appropriate
 transformation matrix applied. However, the dove driver only handles the
 transformation matrix in a simple way that will only work for scaling. So
 we should refuse to accelerate other types of matrix, such as rotation.
 Fixed in only-scale-transforms.patch

 -----

 The second bug can be seen in the third image on the first row. This is
 the scale operation where the original image is enlarged. If you look
 carefully you can see some yellow and grey pixels on the very left side
 near the bottom, and also the whole image is shifted right a bit by that
 (it is missing the final vertical row of pixels - you can see the image is
 not quite symmetrical). The same applies on the other plane; the image has
 a spurious row of white pixels at the top, and is missing the final row of
 pixels at the bottom.

 The scale operation again hits a composite path with a transformation
 matrix, and in this case the matrix is a scaling matrix which we can deal
 with. However, the translation of coordinates after applying the matrix is
 not totally accurate, resulting in an off-by-one error and causing this
 bad rendering (we start the composite op from one pixel before where the
 source drawable starts, in both dimensions). Fixed in transformation-
 rounding.patch

-- 
Ticket URL: <http://dev.laptop.org/ticket/12206#comment:3>
One Laptop Per Child <http://laptop.org/>
OLPC bug tracking system


More information about the Bugs mailing list