#12138 NORM 13.1.0: Incorrect repeat rendering on XO-1.5

Zarro Boogs per Child bugtracker at laptop.org
Fri Oct 5 13:39:20 EDT 2012


#12138: Incorrect repeat rendering on XO-1.5
---------------------------------------+------------------------------------
           Reporter:  dsd              |       Owner:  jnettlet     
               Type:  defect           |      Status:  new          
           Priority:  normal           |   Milestone:  13.1.0       
          Component:  x window system  |     Version:  not specified
         Resolution:                   |    Keywords:               
        Next_action:  never set        |    Verified:  0            
Deployment_affected:                   |   Blockedby:               
           Blocking:                   |  
---------------------------------------+------------------------------------

Comment(by dsd):

 The source picture has dimensions 24x24 and destination 100x100.

 If the source is 24x24, how can we composite an image larger than the
 source itself starting from a coordinate outside of its bounds? This gives
 a good answer: http://lists.x.org/archives/xorg-driver-
 geode/2010-June/000688.html

 In short, it is valid for EXA to ask us to go out of the bounds of the
 source picture - including negative coordinates. Because no repeat is
 specified, all the area outside of the source picture must be interpreted
 as 0 - black.

 When you think about this composite request and what the output rendering
 should be, it makes sense.

 In this case, it looks like the hardware is wrapping out-of-bounds
 accesses back into the source pixmap, causing the repeat effect. As no
 repeat is specified, this isn't what we want here.

 Is there any documentation for the engine used for this work? e.g. all the
 magic in via3DEmitQuad_H5 ? Maybe we can turn off the coordinate wrapping
 and ask it to provide us with black.

 If not, I see a few options for how to handle this, once we have detected
 the out-of-bounds case:

  # Perform an all-black solid fill of the entire destination region first,
 then perform a clipped composite OpSrc operation to put the source picture
 in the right place (without going outside of its coordinate bounds)
  # Perform an appropriately clipped OpSrc composite operation to put the
 source picture in place, then do 4 solid fills around the outside of it to
 make the rest of the region black.
  # Perform an appropriately clipped OpSrc composite operation to put the
 source picture in place, then construct a mask that fills the destination
 region but excludes the final location of the source picture, then perform
 a solid black fill using the mask.

 Which of these options do you see as most realistic?

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


More information about the Bugs mailing list