On 02/04/14 12:09, Michael Mrozek wrote:
With conventional displays the SoC will be driving the panel, i.e. the SoC will send vsync and hsync signals to the panel, and the panel will comply. With a buffer chip, the chip is driving the panel in the same way as SoC does with conventional panels. What this means is that (obviously) the SoC does _not_ drive the panel, which means that the SoC doesn't know when there vsync happens. TE is basically a vsync signal (although it can be programmed to give the signal at other points also). When the SoC gets the TE signal, it knows that it can start the frame transfer to the chip. This way tearing can be avoided, but only when rotation is not used.
Okay... so with rotation, we'll still have tearing? Hm. I'll send that question to the manufacturer.
So we have no way avoiding the tearing here with rotation?
Well, I didn't study the specs, so perhaps they have some magic functionality there to support rotation. But afaik, the only way to have tear-free rotation with that kind of chip is that the chip has a double framebuffer, so that the other can be written to while the other is read from.
Well, there _is_ a way to avoid the tearing issue in such a setup. Nokia N9 uses it. It's basically about updating the panel's/chip's framebuffer in two parts, so that the reads and writes never collide. The mainline driver doesn't support that, as it's a bit hacky and not very easy to support properly. I would not go that way.
Tomi