Ok, I figured most of it out from the Mali drivers. Still no solution so 
far however.

Mali is using regular framebuffer by taking fb_start and fb_size vars from 
the kernel. However, no matter what I do I still cannot make this fb layer 
transparent - I'm probably missing out something obvious here due to me 
being still fresh in all this.

What I've tried (no Mali, just trying to make fb layer transparent):

- Init video layer and run video on it (pipe 1, alpha at 0xff, scaler 
layer),
- Move the video layer to the top,
- Get the FB layer handle to play with (open /dev/fb0 and use 
FBIOGET_LAYER_HDL_0 to get the layer handle),
- Use DISP_CMD_LAYER_GET_PARA to get the layer parameters,
- Just in case - set fb layer pipe to 0, mode to interleaved, format to 
ARGB8888, seq to ARGB, alpha_en and alpha_val to 0,
- Use DISP_CMD_LAYER_SET_PARA to set the new layer parameters (DO NOT TOUCH 
.fb.addr[x]),
- Write 0x00 or 0x80 to the file handle of /dev/fb0 - HxWx4 times,
- Close /dev/fb0,
- Move the fb layer to the top.

Video is still underneath and I cannot see it, unless I move the Video 
layer up above FB layer. No alpha blending whatsoever.
My framebuffer_fb0_num is set to 4 currently, dunno if that makes any 
issues.

If someone knows why is fb layer behaving this way, please share. As I said 
- to me it seems that I'm missing out on something quite dumb here.
If I make a new layer and reserve a chunk of memory for it (through 
disp_malloc), it works as expected, but this fb layer is very weird. Also I 
have disabled FBCON in kernel, thinking it might be that, but it isn't...

On Thursday, April 10, 2014 1:49:31 AM UTC+2, Siarhei Siamashka wrote:
>
> On Wed, 2 Apr 2014 03:00:15 -0700 (PDT) 
> Ivan Kozic <jimm...@gmail.com <javascript:>> wrote: 
>
> > On Monday, March 31, 2014 5:53:52 PM UTC+2, Siarhei Siamashka wrote: 
> > > 
> > > On Mon, 31 Mar 2014 08:33:29 -0700 (PDT) 
> > > Ivan Kozic <jimm...@gmail.com <javascript:>> wrote: 
> > > 
> > > > Hi Luc, 
> > > > 
> > > > Found out why disp driver has choppy overlay - for me overlay comes 
> > > through 
> > > > DMA from memory. Funny thing - disp_malloc is fetching cached 
> memory, so 
> > > > choppiness or "trailing" is due to caching framebuffer protected 
> memory. 
> > > > Very silly - I found this out by changing caching method of ARM from 
> > > > WRITEALLOC to WRITETHROUGH, also waited 10 minutes for system to 
> boot up 
> > > :) 
> > > > 
> > > > The matter is solved by adding the following line to disp_mmap() 
> > > function: 
> > > > 
> > > > vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); 
> > > > 
> > > > Solved. Just wondering how people were using this before... 
> > > 
> > > As far as I know, nobody is using these bug ridden memory allocators 
> > > that Allwinner has implemented in disp and g2d drivers. Except for 
> > > maybe Allwinner itself in their Android code. 
> > 
> > Well, as far as I can see, the community is actively working on fixing 
> > Sunxi kernel, although it seems that interest in 3.4 kernel is somehow 
> > descending. 
>
> The sunxi-3.4 kernel is still used for reverse engineering the 
> undocumented graphics/multimedia hardware accelerators and 
> prototyping the drivers for them. But I don't think that sunxi-3.4 
> will last more than 6-12 months even for this purpose. IMHO the 
> end of life is very near. 
>
> > Anyway, I thought that someone would use overlay from original disp 
> driver, 
>
> The disp layers are used by a number of sunxi related projects: 
>     https://github.com/linux-sunxi/libvdpau-sunxi 
>     https://github.com/ssvb/xf86-video-fbturbo 
>     http://linux-sunxi.org/XBMC 
>     http://linux-sunxi.org/VLC     
>
> What I said is that disp and g2d memory allocators are not really 
> used by anyone. 
>
> The drivers from Allwinner lack any concept of security and are working 
> with physical addresses. They accept these physical addresses from the 
> userspace without any validation checks. Because every driver has full 
> access to any location in physical memory (except for cedar, which can 
> only address lowest 256MB of RAM), it is really irrelevant who has 
> allocated/reserved any particular physically contiguous memory buffer. 
> That's why xf86-video-fbturbo just uses the offscreen part of the 
> framebuffer at the moment, and can use G2D to do some operations 
> within it. And that's why libvdpau-sunxi uses the memory area 
> allocated/reserved by the cedar driver for doing all video decoding 
> in it and then just passes physical addresses to the disp driver to 
> use them as overlays. No unnecessary memory copies are done (with or 
> without DMA they would be just a waste of time and memory bandwidth). 
>
> Anyway, the allocator integrated with the sunxi disp driver is so 
> broken, that I have no non-swear words to express what I think about it. 
>
> Assuming that you really need to allocate physically contiguous 
> memory buffers for your purposes in sunxi-3.4, it would be probably 
> better to forget about the half-baked buggy allocators in disp and g2d. 
> And just implement a physically contiguous memory allocation in a 
> separate small driver. So that no functionality is copy/pasted around 
> with all the bugs and ugliness. Perhaps you could have a look at this 
> 'sunxi_mem' thing together with Juan and try to make something usable 
> out of it? 
>     
> https://www.mail-archive.com/linux-sunxi@googlegroups.com/msg03592.html 
>
> > which is why I posted fixes for it - same goes for CSI. 
>
> Maybe I have missed something. Where can we find the fixes? 
>
> > As I said before, even though everything is dirty and buggy, abstraction 
> > level is much easier to grasp in contrast with Freescale i.MX series 
> > kernels, at least for beginner/intermediate in Linux programming... 
>
> The extreme simplicity comes from totally ignoring security. This has 
> both good and bad sides. 
>
> > And honestly, it seems that A20 is suffering from much less HW bugs than 
> > i.MX6, at least as far as I can see. 
>
> Well, the kernel drivers got cleaned up a little bit and some bugs got 
> ironed out. But it is still a mess. Especially in the parts of code, 
> which are not really used by anyone. As for the HW bugs, I don't think 
> that we have any public errata documents available for A20. But some 
> HW related oddities exist. 
>
> -- 
> Best regards, 
> Siarhei Siamashka 
>

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to