I'm having trouble global alpha blending on my i.MX6. Here is what I am doing:
1) Run "export VSALPHA=1"
2) Run "echo "S:1920x1080p-60" > /sys/class/graphics/fb0/mode"
3) Run "echo "D:1920x1080p-60" > /sys/class/graphics/fb2/mode" - at this step my LCD attached by LVDS turns on for some reason. :-S
4) Run "echo 24 > /sys/class/graphics/fb0/bits_per_pixel"
5) Run "echo 24 > /sys/class/graphics/fb2/bits_per_pixel"
6) Display an image on fb0 and fb2 by using mmap to write directly to the framebuffer memory. At this stage I see the image I put on fb0 on screen.
7) I set the global alpha blending to be 50% on fb0 and fb2 however the ioctl fails to set the alpha on fb2 for a reason unknown to me. Here is the code I use:
int fd = open("/dev/fb0", O_RDWR | O_CLOEXEC); | |
if(fd == -1) | |
{ | |
printf("open error!!!\n"); | |
} | |
struct mxcfb_gbl_alpha g_alpha; | |
g_alpha.alpha = 127; //alpha value | |
g_alpha.enable = 1; | |
if (ioctl(fd, MXCFB_SET_GBL_ALPHA, &g_alpha) < 0) | |
{ | |
printf( "Set global alpha failed\n"); | |
} | |
else | |
{ | |
printf("Set global alpha succeeded\n"); | |
} | |
close(fd); |
At this stage I would expect fb0 and fb2 to be blended together with 50% of each but I still only see the image on fb0. What am I doing wrong? Is it something to do with my kernel command line?
Here are the kernel boot parameters:
console=ttymxc1,115200 earlyprintk video=mxcfb0:dev=hdmi,1280x720M@60,if=RGB24 video=mxcfb1:dev=ldb,1024x600M@60,if=RGB666 video=mxcfb2:dev=lcd,CLAA-WVGA,if=RGB666 serverip=172.30.0.1 board_serial=EVAL5 fbmem=28M,10M,10M vmalloc=400M rootwait consoleblank=0 enable_wait_mode=off maxcpus=0
I tried putting this:
video=mxcfb2:dev=hdmi,CLAA-WVGA,if=RGB666
but that didn't fix anything.
Thanks in advance.