940t Dpc_intr Rate


dwelch

Member
Joined
Jul 7, 2006
Messages
119
I must keep replying to closed threads. Anyway, in an isr to handle vsync interrupts do you need to set bit 2 of the DPC_INTR register in the isr? The example in a previous thread on this did not.

Counting interrupts I get about 111 per second. In theory that means 111 frames per second if you can create and move data that fast.

A fast memcpy from cached ram to the video page can copy 116 pages per second. Using LDM/STM pairs 4 words (16 bytes) at a time. This is on the 940.

And if I have my math right that leaves 77,000 clock cycles to draw something (200mhz). There are 76,800 pixels so you cannot draw or change every one, but you could change some of them each frame.

Do these numbers sound reasonable/correct?
 
Follow on code shows that it may be half that rate. Part of the documentation implies you get an interrupt both on the rising and falling edges, but the register implies you can specify one or the other, not both. Anyway, by making one page red and one blue and then flipping pages on every interrupt, nothing happens, you get one of the colors. Then I changed it to flip the pages every other interrupt and now I get purple....

So is that really the fastest frame rate, a little over 50 fps? Or, maybe that is programmable. The SRAM really isnt fast enough to refresh faster than 50fps from what I can tell so maybe thats all we get.

Is there a reason why the two pages in rlyehs and squidges information are so far apart?
0x03101000 and 0x3381000. I guess that leaves room for 16 pages plus some slop. or maybe ask the question this way, is there a reson why linux chose to put these pages so far apart? would it hurt to put them somewhere else? for example 0x3100000 and 0x3200000, something like that?

David
 
dwelch posted on Jul 19 2006 at 11:08 PM said:
Follow on code shows that it may be half that rate. Part of the documentation implies you get an interrupt both on the rising and falling edges, but the register implies you can specify one or the other, not both. Anyway, by making one page red and one blue and then flipping pages on every interrupt, nothing happens, you get one of the colors. Then I changed it to flip the pages every other interrupt and now I get purple....

So is that really the fastest frame rate, a little over 50 fps? Or, maybe that is programmable. The SRAM really isnt fast enough to refresh faster than 50fps from what I can tell so maybe thats all we get.

Is there a reason why the two pages in rlyehs and squidges information are so far apart?
0x03101000 and 0x3381000. I guess that leaves room for 16 pages plus some slop. or maybe ask the question this way, is there a reson why linux chose to put these pages so far apart? would it hurt to put them somewhere else? for example 0x3100000 and 0x3200000, something like that?

David
The frame rate is adjustable. Use the LCD utility in the Setting menu to play with it. I don't know the magic things to set to do it programatically.

I don't think there is any particular reason why linux uses those addresses for the frame buffers. You can use different ones if you like.
 
Last edited by a moderator:
Dzz posted on Jul 20 2006 at 01:23 AM said:
The frame rate is adjustable. Use the LCD utility in the Setting menu to play with it. I don't know the magic things to set to do it programatically.

There you go. I am getting between 223 and 85 interrupts per second (223 with the slider all the way to the left and 85 on the right side).
 
Last edited by a moderator:
Back
Top