I asked this question last year and received no replies. Since I still have the problem, I'll ask it again.
I'm running into an issue using double buffering in the IPU. If I can keep all drawing in a buffer within one frame time (60 HZ refresh), the alternating of EBA0 and EBA1 works fine (by setting both buffer ready bits). However, the time it takes the SW to update a buffer is ~20ms, so I need to swap buffers every other frame. Anyone out there know how to accomplish this? To me it's a design flaw to not be able to tell an "LCD" controller when to swap buffers in a double buffered system; to be able to control the rendering time.
When the processor starts, the initial image is rendered in both EBA0 and EBA1 - therefore whichever buffer actually gets displayed, it has an image. Then I set both buffers ready (using the CH_BUF0/1_RDY bits. The buffers swap once, then no more because I haven't finished rendering the new image yet, and have not set the CH_BUF0/1_RDY bits (they're automatically cleared after a buffer swap). I tried setting both bits when I finish rendering, but this does start the buffer swap again.
16ms (between VS pulses) is not much time to do a lot of drawing (which includes having to copy one (800 x 480 x 32bits) buffer into another. There should be a logical way to allow swapping buffers every OTHER VS instead of every one. What's the answer to this - anyone know??