#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