On 02/04/14 17:15, Michael Mrozek wrote:
But any lossless compression may get a compression rate of 0%. The system must be able to handle this special case as well.
Yes, in which case lossy compression will be added. That already works fine with various encoders I use on my video editing machine: I set a maximum bitrate and can do picture-per-picture compression (I-Frame only, so no moving estimation) and it's only doing lossy compression in case the bitrate is set too low.
I could be wrong, but I don't think that's possible here. The chip receives a constant pixel stream, and it doesn't have extra memory. It can't suddenly decide that it needs to change the compression, and somehow re-compress the already received parts of the frame.
No. The kernel must program the chip so that it works as intended. So there is an additional driver in the kernel. Although it will likely be straightforward and not very complex.
According to Solomon Systech (and as I can see from the examples I've sent earlier this morning), you send the MIPI commands to the Solomon Systech chip instead of to the display.
So instead of a display driver talking to the display you got a "display" driver talking to the Solomon chip, which then takes care of the rest.
It will need a driver for both the chip and the panel. The panel driver will send commands to the panel, which go through the chip.
There's nothing magical here, the omapdss driver supports these kind of setups (although we don't have such boards at the moment, so bits and pieces could be missing).
If we use the Solomon Systech Chip, we've got the following issues:
Just for completeness how the pipeline would look like with Solomon chip:
- application (e.g. 480x800 screen 50fps) ->
- memory mapped frame buffer ->
- MIPI ->
- Rotator Chip ->
- MIPI ->
- panel (720 x 1280 x 60fps)
Removed the scaler, as the rotator chip can scale and rotate.
The chip doing scaling is actually quite interesting thing. Kind of. With that, we can make omapdrm support modesetting with the chip, so that you can use standard linux software to setup a resolution you want, the same way as on a real monitor, instead of having a single resolution, and requiring programming of the DISPC scaler.
Not that the DISPC scaler is difficult to set up, but it's still something someone needs to do if upscaling is needed.
Tomi