[meta-freescale] Video overlay on sabresd

Nikolay Dimitrov picmaster at mail.bg
Wed May 20 19:01:33 PDT 2015


Hi all,

On 05/21/2015 02:43 AM, Nikolay Dimitrov wrote:
> Hi all,
>
> On 05/20/2015 08:41 PM, Nikolay Dimitrov wrote:
>> Hi Prabhu,
>>
>> On 05/19/2015 07:22 PM, Prabhu S wrote:
>>> How about this?
>>> /unit_tests/mxc_v4l2_output.out -iw 1024 -ih 768 -ow 1024 -oh 768 -d
>>> /dev/video17 -fr 30 -l 10 -f YUYV ./your-file.yuyv
>>>
>>> /dev/video17 is for overlay
>>>
>>> On Tue, May 19, 2015 at 11:16 AM, Nikolay Dimitrov <picmaster at mail.bg
>>> <mailto:picmaster at mail.bg>> wrote:
>>>
>>>     Hi guys,
>>>
>>>     I'm trying to get the video overlay working on imx6q sabresd's HDMI.
>>>     Here's the kernel command line:
>>>
>>>     console=ttymxc0,115200 root=/dev/mmcblk2p2 rootwait rw
>>>     video=mxcfb0:dev=hdmi,1280x720M at 60,if=RGB2
>>>     4,bpp=32 fbmem=28M
>>>
>>>     This is the kernel version:
>>>
>>>     # uname -a
>>>     Linux imx6qsabresd 3.14.28-1.0.0_ga+g91cf351 #1 SMP PREEMPT Tue May
>>>     19 17:32:51 EEST 2015 armv7l
>>>     GNU/Linux
>>>
>>>     Here are the framebuffer devices nodes:
>>>
>>>     # ls -lh /dev/fb*
>>>     crw-rw----    1 root     video      29,   0 Jan  1  1970 /dev/fb0
>>>     crw-rw----    1 root     video      29,   1 Jan  1  1970 /dev/fb1
>>>     crw-rw----    1 root     video      29,   2 Jan  1  1970 /dev/fb2
>>>     crw-rw----    1 root     video      29,   3 Jan  1  1970 /dev/fb3
>>>
>>>     I can write arbitrary data on /dev/fb0 and see it on screen, like
>>> this:
>>>
>>>     # cat /bin/busybox.nosuid > /dev/fb0
>>>
>>>     But I can't write to /dev/fb1:
>>>
>>>     # cat /bin/busybox.nosuid > /dev/fb1
>>>     cat: write error: No space left on device
>>>
>>>     I'm assuming that fb0 is the background layer, and fb1 is the
>>>     foreground IPU layer.
>>>
>>>     So the question is - how to make the foreground (fb1) layer
>>> working at
>>>     all? Should I configure mxcfb1 in the bootargs, or it needs some
>>> IOCTL
>>>     in /dev/fb1 to enable the device?
>>
>> Thanks for sharing. This works, but I'm trying to achieve exactly the
>> opposite.
>>
>> I need to have my UI on the FG layer (which imho means X rendering to
>> /dev/fb1), and my video player must render on BG layer (/dev/video16,
>> which imho corresponds to /dev/fb0).
>>
>> At the moment I can't seem to be able to draw anything on /dev/fb1, so
>> I doubt that Xorg will also run properly on it.
>
> I've reordered the video interfaces in the DT, and also in the kernel
> cmdline, to make sure the hdmi is the first and only video interface,
> so hopefully the IPU driver will create both BG and FG channels for it.
>
> Unfortunately I still can't write to /dev/fb1, so I'm digging further.

Prabhu's comment hinted me to start looking around /unit_tests and
if/how they work. It turned out that the mxc_fb_test application worked
somewhat and I was able observe alpha-blending between FG & BG layers.

Then, after some more head-banging, the issue where I couldn't write to
the framebuffer was resolved by this:

echo 0 > /sys/class/graphics/fb1/blank

Much nicer! Now I can go and test how Xorg works on /dev/fb1, but it's
probably a better idea to get some sleep before this...

Regards,
Nikolay


More information about the meta-freescale mailing list