RFC: Xv field order

Krzysztof Halasa khc at pm.waw.pl
Tue Jun 23 11:08:38 PDT 2009


Thomas Hilber <xorg at toh.cx> writes:

> sorry, but opposite to i810 and i9xx the i830 is not capable of doing
> any interlaced video output.

Aaa, right, that may be so. I meant the traditional "i830" driver (as
opposed to i810), now it's named intel and the DRM is i915. In fact I'm
not really interested in pre-915 chips.

>> - the video windows must not be scaled vertically.
>
> this restriction applies for i810 but is no longer true for i9xx
> graphics

Come on, playback of interlaced video only makes sense with vertically
unscaled display. Otherwise you have to deinterlace first and this is
hardly usable (except for maybe 1:2 scaling when you can just strip every
other line to get progressive video).
It doesn't depend on the chip.
Well, obviously there is another possibility, you can double the frame
rate - I guess not something we can do here (TV sets do that
internally).

> not necessarily by driver interrupts. In [1] (intel portion of
> vga-sync-fields patch) I simply peek some registers (DOVSTA and PIPEA_DSL)
> directly within the Xserver to determine the actual line + field position
> of CRT controller at any time.

Yes, I realize you can do it this way.

But the chip can do it in hardware. IRQ driven, faster and completely
reliable. The code already does it for progressive display + textured
video.
I've been using interrupt-driver frame sync (with selectable TFF/BFF -
though without textured video) for almost 2 years and it's simple, fast
and reliable - even with the CPU doing all the work.

I wonder... Can your current code support textured video? Multiple video
windows? Don't you have reliability problems, caused by the 20 ms sleep
taking longer than requested (due to lack of RT scheduling)?

> You are right: for i810 some field related overlay regs must be 
> reprogrammed during vertical retrace interrupts.

I didn't say that. Actually I don't know about i810.

> This is no longer true for i9xx architecture. 2 weaved fields are
> processed there with no driver (interrupt) intervention.

Consider two video windows, one is BFF and the other one TFF. You have
to sync after each field. Of course, each window will get sync events
only every complete frame, but they will be a field apart.
-- 
Krzysztof Halasa



More information about the xorg mailing list