#12542 HIGH 13.2.0: Screen rotation causes graphics corruption	on XO-4
    Zarro Boogs per Child 
    bugtracker at laptop.org
       
    Tue Apr 16 11:41:04 EDT 2013
    
    
  
#12542: Screen rotation causes graphics corruption on XO-4
---------------------------------------+------------------------------------
           Reporter:  greenfeld        |       Owner:  dsd                              
               Type:  defect           |      Status:  new                              
           Priority:  high             |   Milestone:  13.2.0                           
          Component:  x window system  |     Version:  Development build as of this date
         Resolution:                   |    Keywords:                                   
        Next_action:  diagnose         |    Verified:  0                                
Deployment_affected:                   |   Blockedby:                                   
           Blocking:                   |  
---------------------------------------+------------------------------------
Comment(by dsd):
 Chris Wilson thinks this is a problem in the dove DDX. To get more of a
 grasp on the problem, here is an audit of the CreatePixmap2,
 ModifyPixmapHeader and DestroyPixmap calls that arrive in the driver, when
 running an X session which does the following.
  1. Start X
  2. xrandr -o left
  3. xrandr -o normal
  4. Run "moon.py" (program that draws a pixmap of a moon image on screen,
 exits after a couple of seconds)
  5. Close X
 == Upon X init ==
  * CreatePixmap w=0 h=0 (note that '''this pixmap is never destroyed''')
  * ModifyPixmapHeader on that pixmap, w=0 h=0
  * ModifyPixmapHeader on that pixmap, w=1200 h=1200
  * Create 3 internal 1200x900 pixmaps used for EXA operations (one for
 each of alpha, mask, repeat)
  * CreatePixmap w=16 h=16
  * ModifyPixmapHeader on that pixmap, w=16 h=16 (note that '''this pixmap
 is never destroyed''')
  * CreatePixmap w=16 h=16
  * ModifyPixmapHeader on that pixmap, w=16 h=16
  * DestroyPixmap on that pixmap
  * CreatePixmap w=16 h=16
  * ModifyPixmapHeader on that pixmap, w=16 h=16
  * DestroyPixmap on that pixmap
 == Upon xrandr -o left ==
  * Destroy 3 internal EXA pixmaps
  * Create 3 internal 900x1200 pixmaps used for EXA operations
  * CreatePixmap w=0 h=0 ('''lets call this one "pixmap A"''' for later
 reference)
  * ModifyPixmapHeader on that pixmap, w=0 h=0
  * ModifyPixmapHeader on that pixmap, w=1200 h=900
 == Upon xrandr -o normal ==
  * Destroy 3 internal EXA pixmaps
  * Create 3 internal 1200x900 pixmaps used for EXA operations (these
 pixmaps are never destroyed, but this is clearly an internal/unrelated
 driver bug)
 == Upon launching moon.py ==
  * CreatePixmap w=1 h=1
  * ModifyPixmapHeader on that pixmap, w=1 h=1
  * CreatePixmap w=726 h=726
  * ModifyPixmapHeader on that pixmap, w=726 h=726
  * ModifyPixmapHeader on '''pixmap A''', w=1536 h=64, '''happens 37
 times''' at this point
  * CreatePixmap w=726 h=726
  * DestroyPixmap on that pixmap
  * DestroyPixmap on the 1x1 pixmap that was created when moon.py was
 launched
  * DestroyPixmap on the 726x726 pixmap that was created when moon.py was
 launched
 == Upon X shutdown ==
  * DestroyPixmap on '''pixmap A'''
 == Observations ==
 The very first pixmap created (1200x1200) is never destroyed. A 16x16
 pixmap also created during X init is never destroyed.
 There are 37 consecutive calls to ModifyPixmapHeader that happen at the
 same time when the image is being drawn on screen, I assume that
 corresponds to the drawing of the image. I am a little concerned that the
 pixmap in question here was created when the screen was rotated left (we
 have since returned to normal orientation) - it just seems a little odd to
 be using that "stale" pixbuf (whereas using one that was freshly created
 or one that was created before any rotation happened would make a bit more
 sense to me).
-- 
Ticket URL: <http://dev.laptop.org/ticket/12542#comment:10>
One Laptop Per Child <http://laptop.org/>
OLPC bug tracking system
    
    
More information about the Bugs
mailing list