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