Problem with persistent scaling/shifting in RADEONDisplayVideo()

Roland Scheidegger sroland at tungstengraphics.com
Mon Jul 28 06:32:39 PDT 2008


On 28.07.2008 15:12, Corbin Simpson wrote:
> Michel Dänzer wrote:
>> On Mon, 2008-07-28 at 13:06 +0200, Thomas Hilber wrote:
>>>> I assume this is due to scheduling latency between the vblank interrupt
>>>> and the textured video rendering getting emitted from userspace. It may
>>>> be possible to avoid this by synchronizing the textured video rendering
>>>> to vertical blank, see
>>>>
>>>> http://cgit.freedesktop.org/~agd5f/xf86-video-ati/log/?h=vsync_accel
>>> yeah! I already tried this. Syncronization with VBLANK itself is not a 
>>> problem but the sheer vertical size of tearing area in texture mode.
>> If there is diagonal tearing, this indicates the 3D primitive used for
>> textured video rendering is rendered as two consecutive triangles
>> instead of as a single rectangle. It should be possible to fix this.
> 
> Indeed, Dave and Alex suggested to me that I do this, when I was bored a
> week ago. (I ended up working on bicubic filtering for textured Xv instead.)
> 
> Delicious ASCII:
> 
> |\
> | \
> |  \
> |   \
> |____\
> |    |\
> | Xv | \
> |----|__\
> 
> If somebody actually wants it, then perhaps I can take another look in a
> bit.
> 

Yes, that's something which is definitely needed (I actually wanted to
look into this myself but didn't have time yet) - at least for slower
devices any vsync method is not going to work otherwise. The nouveau
driver already does it exactly like that (one big tri + scissors instead
of rendering a quad which gets decomposed into two tris).

Roland


More information about the xorg-driver-ati mailing list