Problem with persistent scaling/shifting in RADEONDisplayVideo()

Thomas Hilber xorg-driver-ati at toh.cx
Tue Jul 29 09:43:39 PDT 2008


On Tue, Jul 29, 2008 at 01:49:43AM +0200, Roland Scheidegger wrote:
> Well, PICK NEAREST would indicate some sort of point filter, so no
> interpolation with adjacent lines would be done. Not sure why it solves
> your problem though, since I didn't really understand what's happening
> in the first place, but since you'd want to really pick just the odd /

now after you gave me the crucial hint to solve my problem I can give 
you the full problem description:-)

I try to explain the issue again by an ascii picture:

legend:
E - even field of frame
O - odd field of frame
SRC - source image
DST - destination image


SRC:       DST:
E          ---     <--- y==0 (top of screen)
---        E+O     -+
O          ---      |
---        O+E      |
E          ---      |
---        E+O      |
O          ---      |
---        O+E      |
E          ---      |
---        E+O      |
O          ---      |
---        O+E      |
E          ---      |
---        E+O      |
O          ---      |
---        O+E      |
E          ---      | bad (even+odd mixed)
---        E+O      |
O          ---      |
---        O+E      |
E          ---      |
---        E+O      |
O          ---      |
---        O+E      |
E          ---      |
---        E+O      |
O          ---      |
---        O+E      |
E          ---      |
---        E+O      |
O          ---      |
---        O+E     -+
E          ---     <--- y==576 (bottom of screen)

Picture 1.
we see the source image is not properly aligned with destination image.
As a result even and odd fields are blurred a little. The misalignment 
is less than the width of one scanline. So even fields are blurred only 
a little into odd fields. And odd fields are blurred only a little 
into even fields. You can observe a slight jitter equally distributed 
along the whole vertical axis of the screen.


SRC:       DST:
E          ---     <--- y==0 (top of screen)
---        E+O     -+
O          ---      |
---        O+E      |
E          ---      | bad (even+odd mixed)
---        E+O      |
O          ---      |
---        O+E     -+
E          ---       
O          O       -+
---        ---      |
E          E        |
---        ---      |
O          O        |
---        ---      |
E          E        |
---        ---      |  good (even+odd fully separated)
O          O        |
---        ---      |
E          E        |
---        ---      |
O          O        |
---        ---      |
E          E       -+
O          ---
---        O+E     -+
E          ---      |
---        E+O      |
O          ---      | bad (even+odd mixed)
---        O+E      |
E          ---      |
           E       -+
           ---     <--- y==576 (bottom of screen)

Picture 2.
by scaling the SRC image by a factor of 575/576==0.99826389 I could
align the middle part almost perfectly. This minimal scaling factor
obviously compensates for the missing RADEON_SCALER_VERT_PICK_NEAREST
flag. So no noticeable jitter is observed in the middle zone. 

But the more you get to bottom or top the more the jitter gradually 
increases. That's clear because the impact of my added scale factor 
must also decrease somewhere along the Y axis. 

SRC scaling of course is fluent - sorry, I can't display that better by an
ascii picture:-)

-Thomas



More information about the xorg-driver-ati mailing list