I just realized there was another helpful set of changes (creating
aligned buffers!) for the previous set related to enabling a
graphics driver to handle system memory buffer allocations.

Here are the details from patch:

-----------------------
Subject: [PATCH] GPU system memory support mods for aligned buffer directfbrc 
commands.
 Added the directfbrc commands system-surface-base-alignment and
 system-surface-pitch-alignment. If the graphics driver supports system memory, 
these commands
 are used to sets the byte alignment for the system memory based surface's base 
address and
 pitch, or zero for no alignment (which is the default). Aligning these allows 
pixel data to
 travel more efficiently through the CPU and across the memory bus to increase 
performance,
 and meet GPU requirements (if any).

Updated the system memory surface pools to use these values for creating 
surface buffers when
they are non-zero. The local surface pool will use the posix_memalign function 
and the shared
surface pool will bloat the size to allow for base address to be aligned.

-----------------------

Note:  I set the minimum base address and pitch alignment size to
very small values since different graphics drivers will have
different requirements (some may be larger than others).

Cheers,
Timothy

>-----Original Message-----
>From: Strelchun, Timothy 
>Sent: Sunday, May 15, 2011 3:36 AM
>To: 'directfb-dev@directfb.org'
>Subject: [PATCH] 3 patch set with core changes made to enable 
>gfx drivers to handle system memory buffer allocations
>
>Well it took longer than anticipated to find some spare time 
>to yank out the key changes from our custom DFB 1.4.3 core, 
>but it's done now.  Attached are the patches against the 
>latest 1.5 tip that my team made to enable GPU-based support 
>for malloc memory based surfaces.
>
>Note:  Aside from validation compilation with the latest 1.5 
>code, we have only done runtime tests with these changes on 
>our custom systems and graphics driver(s), and not with the 
>standard DFB solution.  It would be good to hear of any issues 
>with it, improvements and/or successes.
>
>Here are the details from the patches:
>
>--------------------1 of 3
>Subject: [PATCH] Allow graphic drivers to get buffers from any 
>surface pools.
> This was done by adding the 
>dfb_surface_pool_gfx_driver_update function  to update any 
>surface pools that match the specified types (such as
> CSTF_INTERNAL/PREALLOCATED) to by adding the specified 
>CSAF_READ/WRITE  flags to the indicated accessor (such as 
>CSAID_GPU).  It is intended to  be called by a graphics driver 
>from its driver_init_driver function.
>
>On a platform with a UMA, this now allows a graphics driver to 
>say it also supports the local surface pool, shared surface 
>pool, and/or pre-allocated surface pool.
>
>-----------------------2 of 3
>Subject: [PATCH] Added buffer alloc destroy notify message.
> Added a surface notification message sent for each buffer 
>allocation  that is destroyed.  It is sent by the 
>dfb_surface_pool_deallocate  function using a new notify 
>function called dfb_surface_pool_notify.
>
>A graphics driver that allocates custom shared/local resources 
>for a buffer allocation from any surface pool (such as the 
>pre-allocated memory one) should register to receive this new 
>buffer allocation destruction message.  This will give the 
>graphics driver (in each registered process) an opportunity to 
>destroy those associated custom shared/local resources.
>
>-----------------------3 of 3
>Subject: [PATCH] GPU system memory support cache flushing mods.
> Made changes necessary in the dfb_surface_buffer_lock 
>function to handle GPU based reading  or writing support for 
>local and system memory based surface buffers (as well ones in 
>user  pre-allocated memory).  Previously, when a GPU 
>read/write was requested, the CPU memory  cache was not 
>flushed when the CPU had only read from the memory.  Changes 
>require  validation on traditional non-UMA based graphics drivers.
>
>Updated the dfb_surface_pool_allocate function to alway mark 
>brand new CoreSurfaceAllocations as having been both read and 
>written to by the CPU.  Updated the allocation_update_copy 
>function to track that the CPU wrote to the destination buffer 
>allocation and that it read from the source buffer allocation 
>so that proper cache flushing will occur.
>
>-----------------------
>
>Cheers,
>Timothy
>
>--
>
>Timothy Strelchun
>CE Software Engineering
>Digital Home Group
>Intel Corporation

Attachment: 0001-GPU-system-memory-support-mods-for-aligned-buffer-di.patch
Description: 0001-GPU-system-memory-support-mods-for-aligned-buffer-di.patch

_______________________________________________
directfb-dev mailing list
directfb-dev@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to