New commits:
http://git.directfb.org/?p=core/DirectFB.git;a=commit;h=c5d7e0c5d0b7651f80e88aaca390f9fec91d43a0
commit c5d7e0c5d0b7651f80e88aaca390f9fec91d43a0
Author: Denis Oliver Kropp <[email protected]>
Date:   Sun Feb 10 11:36:28 2013 +0100

    Task: Major step forward, cache, tiles, queues, optimisations, debug 
tools...
    
    API: Replace C wrappers SurfaceTask_Flush/etc... by Task_Flush/etc...
    
    Add qid to Task. This is set during Setup of a Task being handled
    by a multi core implementation that does not statically assign the
    cores to the tiles, but allows any core to execute any pending Task.
    This is not handled by the Task Manager, but the Task's Push()
    implementation.
    
    Add hwid to Task. This is set by or after Push() when it's decided
    which core runs the Task.
    
    Add next pointer to Task, used by Task implementations to queue up
    tasks when passing the Push() implementation. Add Task::append()
    to set the next pointer and assert that it is not set already.
    
    Implement automatic set of cache flush/invalidate flags. A set of
    accessors is stored that did not yet invalidate after last writer.
    Flush is set by default for write access, but will be cleared when
    another write task for same accessor is following. Giving the Task
    implementation the chance to skip the flush at Done().
    
    Add SurfaceTask::CacheInvalidate() and CacheFlush().
    
    In the Task's Run() function concerning tasks running on the CPU,
    CacheInvalidate() is called first.
    
    Add Task::enableDump() to turn on log dump of the task during destruction.
    This can be used for misbehaving tasks to see what happened when and
    in which thread (including stack trace).
    
    Add TASK_FLAG_NEED_SLAVE_PUSH. Task implementation indicates that
    only the master Task needs the Push() call and takes care about the
    slaves.
    
    Add TASK_FLAG_LAST_IN_QUEUE. The task runner sets this flag when it
    encounters the next pointer is NULL. This way the Finalise() later
    in Task Manager thread (but implemented in TaskThreadsQ::Finalise)
    can resume queue operation by pushing the updated next (if set).
    
    Call Finalise() also on all slave Tasks.
    
    Add TaskThreads and TaskThreadsQ. Convenience classes to run threads
    that receive Tasks to call Run() on. The first one is a simple just
    processing any pending Task in any thread. The second one takes care
    that Tasks with the same qid are not run at the same time. This way
    tasks from the same accessor can also use the follow flag when in tile
    mode, by defining one qid per tile.
    
    Add tiles_render to Engine Setup. This way an engine can choose to
    receive the rendering calls only for the master task. It will have
    to setup some tile_clip to handle in the Run() for each tile. This
    is implemented by GenefxEngine now.
    
    Make GenefxEngine require just one Task's rendering calls/buffer and
    apply tile clip on the fly in each of the tile's task's Run().
    
    In GenefxEngine::SetState() keep modified flags and emit only those
    state entities that are required.
    
    Add SimpleTask convenience class to register any Run function pointer
    (optionally Push) wrapped into a Task.
    
    Avoid fusion shm allocation by replacing the FusionVector of read tasks
    in surface allocation by an std::list.
    
    Four different debugging options (compile time) in src/core/Task.h.
    
    Set fusion_config->skirmish_warn_on_thread to print a warning when
    anyone calls fusion_skirmish_prevail() within ultra-high response
    Task Manager thread.
    
    More C wrappers for Tasks.

 src/core/CoreLayerRegion_real.cpp |   12 +-
 src/core/Fifo.h                   |  234 ++++++++++++
 src/core/Makefile.am              |    2 +
 src/core/Renderer.cpp             |   94 +++--
 src/core/Renderer.h               |    4 +-
 src/core/Task.cpp                 |  754 +++++++++++++++++++++++++++----------
 src/core/Task.h                   |  494 +++++++++++++-----------
 src/core/TaskThreadsQ.cpp         |  250 ++++++++++++
 src/core/coretypes.h              |    3 +
 src/core/layers_internal.h        |    2 +-
 src/core/surface_allocation.cpp   |    8 +-
 src/core/surface_allocation.h     |   12 +-
 src/gfx/generic/GenefxEngine.cpp  |  288 ++++++++++----
 13 files changed, 1611 insertions(+), 546 deletions(-)

_______________________________________________
directfb-cvs mailing list
[email protected]
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-cvs

Reply via email to