Surprise! I stumbled upon the need for a fourth patch I had missed (our custom development branch did not have a general solution implemented for graphics drivers to report full support for system memory based surfaces using the CCF flags yet).
Here are the details from this FOURTH patch:
-----------------------
Subject: [PATCH] Updated dfb_gfxcard_check_state to check for
full system memory support.
Added CCF_WRITESYSMEM so that a graphics driver can fully
report that it supports reading and writing to system memory
based surfaces, and updated the dfb_gfxcard_check_state
function to use that data to determine if acceleration is
possible when the back buffer policy is system only.
-----------------------
Regarding usage: With these four patches, for a UMA-based
graphics driver to support system memory surface (and
preallocated ones) it just needs to make the following call
from the driver_init_driver function:
dfb_surface_pool_gfx_driver_update(
CSTF_INTERNAL | CSTF_PREALLOCATED,
CSAID_GPU,
CSAF_READ | CSAF_WRITE );
and from the driver_init_device function add support for
reading and writing system memory surfaces to the flags
already specified:
device_info->caps.flags |= CCF_READSYSMEM | CCF_WRITESYSMEM;
Then make sure the driver handles all of the different
types of surface buffers and allocations that it will
receive in the CheckState and SetState functions.
Cheers,
Timothy
>-----Original Message-----
>From: Strelchun, Timothy
>Sent: Sunday, May 15, 2011 3:36 AM
>To: '[email protected]'
>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
0004-Updated-dfb_gfxcard_check_state-to-check-for-full-sy.patch
Description: 0004-Updated-dfb_gfxcard_check_state-to-check-for-full-sy.patch
_______________________________________________ directfb-dev mailing list [email protected] http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev
