Request for Intel 915 hw information

Krzysztof Halasa khc at pm.waw.pl
Thu Sep 20 11:19:34 PDT 2007


Jesse Barnes <jbarnes at virtuousgeek.org> writes:

>> Why is FRAME_HIGH always 0 for PIPE A (the active one)? Not implemented
>> on 915?
>
> No, this should work on i915.  FRAMEPIXEL's upper bits seem to be increasing 
> slowly too

Yes, it works. I didn't know they're cleared while hw_init.
It increments.
BTW: do you know which operation (register write) clears the counters?

> (assuming you're printf'ing them while your app is running and not 
> stuffing them into a buffer to dump out later).

Actually I printk() them in IRQ handler.

> In the case of an interlaced mode, I think the frame count registers will 
> count whole fields, not individual interlaced frames.

You mean "count whole frames" and not individual fields?

FRAMEPIXEL >> 24 counts fields (i.e., halfs of a frame). I'm using
50 Hz (I) PAL (20 ms for a field, 40 ms for full frame) so the counter
is incremented with 50 Hz rate (not 25 Hz for whole frame).
FRAMEPIXEL & 0xFFFFFF counts pixels in each field.

>> What is PIPEA_DSL? Is it implemented on 915 and/or other chips?
>
> Yeah, i915 has it.  It gives you the actual scanline number currently being 
> scanned out.  Again for interlaced modes it'll give you a field relative 
> number, so you'd expect all even numbers for one frame, then all odd numbers 
> the next.

Field relative number => with 576 lines I get 0-288 (288 = VSYNC IRQ).
I.e., I don't know if it's even or odd field.

>> Is it possible to generate IRQ only on the second (final) vertical
>> retrace?
>
> Yeah, that's how things *should* work afaik.  Are you seeing something 
> different?

Yes, I get IRQ on every retrace, after even and after odd field.

The problem is I don't know if the field currently being displayed
is odd or even. The counters count lines of each field only, and
FRAME_PIXEL >> 24 counts individual fields. There is no correlation
between field count and actual even/odd field being displayed.
It depends on initialization (though it's stable, so if
FRAME_PIXEL & 0x01000000 == 0 means (at start) even frame then
it will mean even frame up to next init).

I wonder if it's possible to read the address (in RAM) of current
line and/or pixel? It would include field information.
Or perhaps there is some field indication bit somewhere?

Thanks for response.
-- 
Krzysztof Halasa



More information about the xorg mailing list