Thanks again Niels. I'm not sure I follow you to a 100% but am I
correct to assume that the system memory in my case is the buffer I
allocate in my driver and video memory the overlay buffer that the HW
actually use to render the video?

I will try to dig into the code but does anyone have any tips on a
good driver to use as a starting point match matches my "needs"?

I did a quick hack and verified that it was possible to access the
coherent memory that I allocated in my driver via /dev/mem. Is this a
big NO NO to do like this and does anyone know if this introduce any
risks?

cheers,
Jonas Romfelt



2010/2/23 Niels Roest <ni...@directfb.org>:
> It sounds like you want to have "video" memory.
>
> DirectFB has two main concepts of memory, namely system (let's say malloc()d
> memory) and video (let's say graphics memory) memory. You can make different
> types of memory using the memory pools as you see implemented in the
> systems. DirectFB picks a pool (system and video are also two pools, try
> dfbdump -p) based on the flags passed during allocation.
>
> Now you can have a layer surface with one video and one system buffer, so
> you can access the back buffer in software, and do a hardware-accelerated
> blit on flipping the layer. You can also have a layer with two video
> buffers, so you can do hardware accelerated drawing in the back buffer, but
> then you need to blit a software system memory buffer to the card memory "by
> hand". It's all in the drivers.
>
> Unfortunately this probably needs a longer explanation to be more
> understandable.
>
> Greets
> Niels
>
> Jonas Romfelt wrote:
>>
>> Thanks for your reply and clarification Niels.
>>
>> Since I already have a driver that does much more than being a pure
>> frame buffer, I plan to go on with implementing a graphics driver,
>> obviously(!) raising few questions.
>>
>> In my kernel driver I allocate a coherent DMA buffer. My plan was to
>> allow DirectFB mmap() this buffer and use DirectFB to create the
>> graphics overlay in this buffer. Then DMA this content over to my
>> overlay HW as an action on calling DirectFB Flip().
>>
>> Is it possible to use the system driver "devmem" on memory that is not
>> physical memory? As I mention above I would like to use kernel
>> allocated memory. Since I have a PCIe device whose DDR RAM is not
>> accessible other than via a on-PCIe-board DMA it is not(?) possible to
>> address the overlay memory using a physical address directly.
>>
>> Browsing through the mailing list archive I found a discussion
>> concerning "sysmem":
>> http://www.mail-archive.com/directfb-dev@directfb.org/msg06842.html
>>
>> It looked promising and very much like what I'm looking for. I tried
>> to dig into the code of DirectFB but couldn't see that any of this was
>> in main-line. Am I missing it or isn't it there?
>>
>> Also, is there a good starting point for a graphics _simplistic_ driver?
>>
>> Any help is much appreciated, my intention is to document my work
>> publically with the intention that it could be helpful for others.
>>
>> Cheers,
>> Jonas Romfelt
>>
>>
>> 2010/2/19 Niels Roest <ni...@directfb.org>:
>>
>>>
>>> Hi there Jonas.
>>>
>>> DirectFB needs a "system driver" and it can optionally have a "graphics
>>> driver".
>>> If you go for (1), you can reuse the "fbdev" system driver and leave out
>>> the
>>> graphics driver, since fbdev already does mapping/flipping etc.
>>> If you go for (2), you are best off using the "devmem" system which is
>>> basically an empty system which relies on the graphics driver to provide
>>> the
>>> functionality. so for (1), you only program the linux kernel driver, for
>>> (2)
>>> you make a new graphics driver. Your choice.
>>>
>>> Greets
>>> Niels
>>>
>>> Jonas Romfelt wrote:
>>>
>>>>
>>>> Hi,
>>>>
>>>> I'm new to DirectFB and need some high-level pointers in the right
>>>> direction how to add DirectFB support to an embedded system that
>>>> working on. I'm adding a custom FPGA via PCIe that provides a
>>>> simplistic graphical overlay functionality. Nothing fancy such as HW
>>>> acceleration, just a framebuffer, anything that goes into that memory
>>>> is displayed.
>>>>
>>>> I have got a custom kernel module that allows access to the
>>>> framebuffer memory via a kernel bounce buffer that can be mmap'd from
>>>> user space. The FPGA also handles numerous other things...
>>>>
>>>> How do support my custom HW from DirectFB? So, should I:
>>>>
>>>> 1) make my driver appear as a "standard" Linux framebuffer device
>>>> driver?
>>>> 2) make a custom DirectFB gfxdriver for my custom Linux kernel driver?
>>>>
>>>> Are both approaches viable?
>>>>
>>>> Is at simple as (1) if I have a "standardized" framebuffer device
>>>> driver I can go ahead using DirectFB without any modifications? And if
>>>> I already have a working driver (2) I basically only need to a add a
>>>> thin gfxdriver that maps in my custom driver?
>>>>
>>>> What is the recommended way of doing it?
>>>>
>>>> Many thanks,
>>>> Jonas
>>>> _______________________________________________
>>>> directfb-dev mailing list
>>>> directfb-dev@directfb.org
>>>> http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev
>>>>
>>>>
>>>>
>>>
>>> --
>>>
>>> .------------------------------------------.
>>> | DirectFB - Hardware accelerated graphics |
>>> | http://www.directfb.org/                 |
>>> "------------------------------------------"
>>>
>>>
>>
>>
>
>
> --
>
> .------------------------------------------.
> | DirectFB - Hardware accelerated graphics |
> | http://www.directfb.org/                 |
> "------------------------------------------"
>
_______________________________________________
directfb-dev mailing list
directfb-dev@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to