iMX6Q IPU Double Buffering

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

iMX6Q IPU Double Buffering

329 Views
ogj
Contributor IV

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??

Tags (4)
0 Kudos
4 Replies

235 Views
ogj
Contributor IV

My question is simple. Hopefully the scope image came through OK. I'm using a double buffer setup in the IPU (just using ch 23). The yellow trace is high when processing a non-visible display buffer. As you can see, it takes 23.35ms to process. However the buffers swap every 16.67ms (60 HZ - blue trace). How do I get them to swap at a 30 Hz rate? The CH_BUF_RDY bits don't seem to have any effect on swap rate.

0 Kudos

311 Views
ogj
Contributor IV

I'm wondering if I'm looking at this wrong. Perhaps the IPU double buffering scheme isn't meant for this purpose, but for tricking the eye into looking at two different images and combining them into a single image (switching images at a 60 Hz rate)

In my application, would it be better to still have two different buffers and "manually" switch between them by changing the EBA0 address in CPMEM (ignoring the whole IPU double buffering scheme)?

0 Kudos

273 Views
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hello,

Yes, you would have to use the ipu just for process the image.

Regards

0 Kudos

254 Views
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hello,

Which bsp are you using? Which gstreamer command? Which size of image you like to obtain?

Regards

0 Kudos