New commits:
http://git.directfb.org/?p=core/DirectFB.git;a=commit;h=25132e718c00bb4b65d0f4f59520692d203b83b2
commit 25132e718c00bb4b65d0f4f59520692d203b83b2
Author: Denis Oliver Kropp <[email protected]>
Date:   Sun Apr 14 20:29:51 2013 +0200

    Task: Implement real throttling of the source when too many graphics 
operations are pending, gets rid of ugly usleep in Renderer::updateLock() :)
    
    Add Throttle interface that can be passed to Renderer constructor to get 
callbacks about throttling,
    with one implementation using fusion_call_set_quota() and the other simply 
blocking on wait queue,
    the former is used for indirect rendering via CoreGraphicsState object with 
FusionCall, the latter
    is used when the master renders from its main thread, or none throttling is 
used when running within
    the Fusion Dispatch thread.
    
    Add SurfaceTask::AddHook() to register a callback interface for setup() and 
finalise() calls within the Task Manager thread,
    used by the Throttle to count the running tasks and adjust the value...
    
    Also remove other blocking call in GenefxEngine. Task based rendering is 
completely free of blocking calls except for
    the source being throttled when needed (avoiding sleeps in dispatch threads 
etc...)
    
    Debug, cleanups...
    
    == Throttle in action:
    
    Benchmarking 256x256 on 640x464 ARGB (32bit)...
    
    (-) [Main Thread      113680.005,970] ( 1196) DirectFB/Renderer/Throttle:  
Renderer::Throttle::Throttle( 0x1595d50 )
    (-) [Main Thread      113680.151,528] ( 1196) DirectFB/Renderer/Throttle:  
Renderer::Throttle::AddTask( 0x154caf0, task 0x1596f90 )
    (-) [Task Manager     113680.151,583] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::setup( 0x154caf0, task 0x1596f90 )
    (-) [Task Manager     113680.151,595] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 1
    (-) [Task Manager     113680.151,749] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::finalise( 0x154caf0, task 0x1596f90 )
    (-) [Task Manager     113680.151,755] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 0
    (-) [Main Thread      113680.152,784] ( 1196) DirectFB/Renderer/Throttle:  
Renderer::Throttle::AddTask( 0x154caf0, task 0x1596f90 )
    (-) [Task Manager     113680.152,801] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::setup( 0x154caf0, task 0x1596f90 )
    (-) [Task Manager     113680.152,805] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 1
    (-) [Task Manager     113680.152,881] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::finalise( 0x154caf0, task 0x1596f90 )
    (-) [Task Manager     113680.152,885] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 0
    (-) [Main Thread      113680.153,475] ( 1196) DirectFB/Renderer/Throttle:  
Renderer::Throttle::AddTask( 0x1595d50, task 0x159f6d0 )
    (-) [Task Manager     113680.153,489] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::setup( 0x1595d50, task 0x159f6d0 )
    (-) [Task Manager     113680.153,493] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 1
    (-) [Main Thread      113680.154,166] ( 1196) DirectFB/Renderer/Throttle:  
Renderer::Throttle::AddTask( 0x1595d50, task 0x159bb30 )
    (-) [Task Manager     113680.154,181] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::setup( 0x1595d50, task 0x159bb30 )
    (-) [Task Manager     113680.154,185] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 2
    (-) [Main Thread      113680.154,926] ( 1196) DirectFB/Renderer/Throttle:  
Renderer::Throttle::AddTask( 0x1595d50, task 0x159fc10 )
    (-) [Task Manager     113680.154,941] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::setup( 0x1595d50, task 0x159fc10 )
    (-) [Task Manager     113680.154,945] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 3
    (-) [Task Manager     113680.155,553] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::finalise( 0x1595d50, task 0x159f6d0 )
    (-) [Task Manager     113680.155,557] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 2
    (-) [Main Thread      113680.155,795] ( 1196) DirectFB/Renderer/Throttle:  
Renderer::Throttle::AddTask( 0x1595d50, task 0x15a0150 )
    (-) [Task Manager     113680.155,811] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::setup( 0x1595d50, task 0x15a0150 )
    (-) [Task Manager     113680.155,815] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 3
    (-) [Main Thread      113680.157,024] ( 1196) DirectFB/Renderer/Throttle:  
Renderer::Throttle::AddTask( 0x1595d50, task 0x159f6d0 )
    (-) [Task Manager     113680.157,042] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::setup( 0x1595d50, task 0x159f6d0 )
    (-) [Task Manager     113680.157,047] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 4
    (-) [Main Thread      113680.157,856] ( 1196) DirectFB/Renderer/Throttle:  
Renderer::Throttle::AddTask( 0x1595d50, task 0x15a06b0 )
    (-) [Task Manager     113680.158,057] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::finalise( 0x1595d50, task 0x159bb30 )
    (-) [Task Manager     113680.158,064] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 3
    (-) [Task Manager     113680.158,071] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::setup( 0x1595d50, task 0x15a06b0 )
    (-) [Task Manager     113680.158,073] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 4
    (-) [Main Thread      113680.158,629] ( 1196) DirectFB/Renderer/Throttle:  
Renderer::Throttle::AddTask( 0x1595d50, task 0x15a0c10 )
    (-) [Task Manager     113680.158,643] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::setup( 0x1595d50, task 0x15a0c10 )
    (-) [Task Manager     113680.158,648] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 5
    (-) [Task Manager     113680.158,650] ( 1200) DirectFB/Renderer/Throttle:   
 -> throttling at 100% (blocked) from now
    (-) [Main Thread      113680.159,311] ( 1196) DirectFB/Renderer/Throttle:  
Renderer::Throttle::AddTask( 0x1595d50, task 0x1596f90 )
    (-) [Task Manager     113680.160,589] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::finalise( 0x1595d50, task 0x159fc10 )
    (-) [Task Manager     113680.160,600] ( 1200) DirectFB/Renderer/Throttle:   
 -> throttling at 0% (full speed) from now
    (-) [Task Manager     113680.160,606] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 4
    (-) [Task Manager     113680.160,614] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::setup( 0x1595d50, task 0x1596f90 )
    (-) [Task Manager     113680.160,618] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 5
    (-) [Task Manager     113680.160,620] ( 1200) DirectFB/Renderer/Throttle:   
 -> throttling at 100% (blocked) from now
    (-) [Main Thread      113680.161,286] ( 1196) DirectFB/Renderer/Throttle:  
Renderer::Throttle::AddTask( 0x1595d50, task 0x15a1170 )
    (-) [Task Manager     113680.162,706] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::finalise( 0x1595d50, task 0x15a0150 )
    (-) [Task Manager     113680.162,718] ( 1200) DirectFB/Renderer/Throttle:   
 -> throttling at 0% (full speed) from now
    (-) [Task Manager     113680.162,724] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 4
    (-) [Task Manager     113680.162,775] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::setup( 0x1595d50, task 0x15a1170 )
    (-) [Task Manager     113680.162,789] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 5
    (-) [Task Manager     113680.162,798] ( 1200) DirectFB/Renderer/Throttle:   
 -> throttling at 100% (blocked) from now
    (-) [Main Thread      113680.163,508] ( 1196) DirectFB/Renderer/Throttle:  
Renderer::Throttle::AddTask( 0x1595d50, task 0x159fc10 )
    (-) [Task Manager     113680.164,598] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::finalise( 0x1595d50, task 0x159f6d0 )
    (-) [Task Manager     113680.164,607] ( 1200) DirectFB/Renderer/Throttle:   
 -> throttling at 0% (full speed) from now
    (-) [Task Manager     113680.164,614] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 4
    (-) [Task Manager     113680.164,633] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::setup( 0x1595d50, task 0x159fc10 )
    (-) [Task Manager     113680.164,642] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 5
    (-) [Task Manager     113680.164,661] ( 1200) DirectFB/Renderer/Throttle:   
 -> throttling at 100% (blocked) from now
    (-) [Main Thread      113680.165,305] ( 1196) DirectFB/Renderer/Throttle:  
Renderer::Throttle::AddTask( 0x1595d50, task 0x15a0410 )
    (-) [Task Manager     113680.166,679] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::finalise( 0x1595d50, task 0x15a06b0 )
    (-) [Task Manager     113680.166,693] ( 1200) DirectFB/Renderer/Throttle:   
 -> throttling at 0% (full speed) from now
    (-) [Task Manager     113680.166,701] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 4
    (-) [Task Manager     113680.166,725] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::setup( 0x1595d50, task 0x15a0410 )
    (-) [Task Manager     113680.166,734] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 5
    (-) [Task Manager     113680.166,753] ( 1200) DirectFB/Renderer/Throttle:   
 -> throttling at 100% (blocked) from now
    (-) [Main Thread      113680.167,468] ( 1196) DirectFB/Renderer/Throttle:  
Renderer::Throttle::AddTask( 0x1595d50, task 0x159f8e0 )
    (-) [Task Manager     113680.168,667] ( 1200) DirectFB/Renderer/Throttle:  
Renderer::Throttle::finalise( 0x1595d50, task 0x15a0c10 )
    (-) [Task Manager     113680.168,683] ( 1200) DirectFB/Renderer/Throttle:   
 -> throttling at 0% (full speed) from now
    (-) [Task Manager     113680.168,694] ( 1200) DirectFB/Renderer/Throttle:   
 -> count 4
    
    == df_dok without tests running much longer due to too many buffers:
    
    cyto [~/DFB/DirectFB/src] df_dok --dfb:task-manager,software-cores=4 
--fullscreen
    (*) Direct/Thread: Started 'SigHandler' (1451) [CRITICAL - OTHER/0] 
<8392704>...
    
       ~~~~~~~~~~~~~~~~~~~~~~~~~~| DirectFB 1.7.0 |~~~~~~~~~~~~~~~~~~~~~~~~~~
            (c) 2012-2013  DirectFB integrated media GmbH
            (c) 2001-2013  The world wide DirectFB Open Source Community
            (c) 2000-2004  Convergence (integrated media) GmbH
          ----------------------------------------------------------------
    
    (*) DirectFB/Core: Multi Application Core. (2013-04-14 18:13)
    (*) Direct/Memcpy: Forced to use libc memcpy()
    (*) Fusion/SHM: Using MADV_REMOVE (3.5.0.0 >= 2.6.19.2)
    (*) Fusion/SHM: Shared root (0) is 2232 bytes [0x1000 @ 0x523000000000]
    (*) Direct/Thread: Started 'Fusion Dispatch' (1452) [MESSAGING - OTHER/0] 
<8392704>...
    (*) Direct/Thread: Started 'Fusion Deferred' (1453) [MESSAGING - OTHER/0] 
<8392704>...
    (*) Direct/Thread: Started 'Task Manager' (1454) [CRITICAL - OTHER/0] 
<8392704>...
    (*) Direct/Thread: Started 'Genefx/0' (1455) [DEFAULT - OTHER/0] 
<8392704>...
    (*) Direct/Thread: Started 'Genefx/1' (1456) [DEFAULT - OTHER/0] 
<8392704>...
    (*) Direct/Thread: Started 'Genefx/2' (1457) [DEFAULT - OTHER/0] 
<8392704>...
    (*) Direct/Thread: Started 'Genefx/3' (1458) [DEFAULT - OTHER/0] 
<8392704>...
     (!!!)  *** WARNING [/dev/shm/dfb.0 exists, cleaning up] *** 
[shared_secure_surface_pool.c:126 in sharedSecureInitPool()]
    (*) DirectFB/Input: Hot-plug detection enabled with Input Hub Driver
    (*) Direct/Thread: Started 'Virtual Input' (1459) [INPUT - OTHER/0] 
<8392704>...
    (*) DirectFB/Input: Virtual Input 1.7 (Convergence GmbH)
    (*) Direct/Thread: Started 'X11 Input' (1460) [INPUT - OTHER/0] <8392704>...
    (*) DirectFB/Input: X11 Input 0.1 (directfb.org)
    (*) DirectFB/Genefx: MMX detected and enabled
    (*) DirectFB/Graphics: MMX Software Rasterizer 0.7 (directfb.org)
    (*) DirectFB/Core/WM: SaWMan 0.2 (directfb.org)
    (*) SaWMan/Config: Parsing config file '/opt/dfb/etc/sawmanrc'.
    (*) SaWMan/Config: Parsing config file '/home/dok/.sawmanrc'.
    (*) SaWMan: Initializing stack 0x5230010ad400 for tier 0x5230024d4000, 0x0, 
layer 0, context 0x5230000a0000 [655416]...
    (*) SaWMan/Init: Layer  0:  640x480, ARGB, options: 0
    (*) SaWMan/Init: Border 0:  640x480, ARGB, options: 8
    (*) Direct/Thread: Started 'Task/0' (1461) [DEFAULT - OTHER/0] <8392704>...
    (*) Direct/Thread: Started 'Task/1' (1462) [DEFAULT - OTHER/0] <8392704>...
    (*) Direct/Thread: Started 'Task/2' (1463) [DEFAULT - OTHER/0] <8392704>...
    (*) Direct/Thread: Started 'Task/3' (1464) [DEFAULT - OTHER/0] <8392704>...
    (*) X11/Display: Not using XShm.
    (*) Direct/Interface: Loaded 'PNG' implementation of 
'IDirectFBImageProvider'.
    (*) Direct/Interface: Loaded 'FT2' implementation of 'IDirectFBFont'.
    (*) X11/Display: Not using XShm.
    (*) Direct/Interface: Using 'GIF' implementation of 
'IDirectFBImageProvider'.
    
    Benchmarking 256x256 on 640x480 ARGB (32bit)...
    
    Anti-aliased Text                              3.006 secs ( 7211.976 
KChars/sec) [360.0%]
    Anti-aliased Text (blend)                      3.034 secs ( 1877.125 
KChars/sec) [386.4%]
    Fill Rectangle                                 3.053 secs ( 17587.174 
MPixel/sec) [304.5%]
    Fill Rectangle (blend)                         3.068 secs (  461.400 
MPixel/sec) [269.9%]
    Fill Rectangles [10]                           3.045 secs ( 18143.464 
MPixel/sec) [278.9%]
    Fill Rectangles [10] (blend)                   3.120 secs (  462.112 
MPixel/sec) [268.9%]
    Fill Triangles                                 3.009 secs ( 4205.716 
MPixel/sec) [354.3%]
    Fill Triangles (blend)                         3.077 secs (  385.505 
MPixel/sec) [252.1%]
    Draw Rectangle                                 3.019 secs (  456.409 
KRects/sec) [328.9%]
    Draw Rectangle (blend)                         3.221 secs (  105.526 
KRects/sec) [305.2%]
    Draw Lines [10]                                3.149 secs ( 5607.176 
KLines/sec) [342.6%]
    Draw Lines [10] (blend)                        3.229 secs ( 1738.618 
KLines/sec) [265.5%]
    Fill Spans                                     3.002 secs ( 8520.553 
MPixel/sec) [373.6%]
    Fill Spans (blend)                             3.058 secs (  450.051 
MPixel/sec) [274.0%]
    Fill Trapezoids [10]                           3.016 secs ( 7605.305 
MPixel/sec) [328.9%]
    Blit                                           3.074 secs ( 10201.358 
MPixel/sec) [282.4%]
    Blit 180                                       3.093 secs ( 4027.931 
MPixel/sec) [277.0%]
    Blit colorkeyed                                3.103 secs ( 4112.104 
MPixel/sec) [274.1%]
    Blit destination colorkeyed                    3.076 secs ( 5128.255 
MPixel/sec) [282.7%]
    Blit with format conversion                    3.106 secs (  508.505 
MPixel/sec) [270.6%]
    Blit with colorizing                           3.029 secs (  424.069 
MPixel/sec) [271.5%]
    Blit from 32bit (blend)                        3.047 secs (  281.759 
MPixel/sec) [273.0%]
    Blit from 32bit (blend) with colorizing        3.051 secs (  244.873 
MPixel/sec) [274.4%]
    Blit SrcOver (premultiplied source)            3.005 secs ( 1387.051 
MPixel/sec) [268.3%]
    Blit SrcOver (premultiply source)              3.008 secs ( 1383.489 
MPixel/sec) [269.3%]
    Stretch Blit                                   3.693 secs (  569.891 
MPixel/sec) [288.3%]
    Stretch Blit colorkeyed                        3.395 secs (  542.997 
MPixel/sec) [288.7%]
    
    Signed-off-by: Denis Oliver Kropp <[email protected]>

 src/core/CoreGraphicsStateClient.cpp |   47 +++++++++++-
 src/core/CoreGraphicsState_real.cpp  |   41 ++++++++---
 src/core/CoreLayerRegion_real.cpp    |   11 ++-
 src/core/Renderer.cpp                |  135 ++++++++++++++++++++++------------
 src/core/Renderer.h                  |   28 ++++++-
 src/core/Task.cpp                    |   41 ++++++++++-
 src/core/Task.h                      |    9 +++
 src/gfx/generic/GenefxEngine.cpp     |    2 -
 8 files changed, 242 insertions(+), 72 deletions(-)

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

Reply via email to