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
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