[squeak-dev] Re: Need someone to test if NBOpenGL works for you on win32

Andreas Raab andreas.raab at gmx.de
Mon May 24 21:18:09 UTC 2010


On 5/24/2010 1:28 PM, Igor Stasenko wrote:
> On 24 May 2010 23:06, Levente Uzonyi<leves at elte.hu>  wrote:
>> On Mon, 24 May 2010, Igor Stasenko wrote:
>>
>>> Btw, i noticed that running it full-screen in pharo is still quite
>>> fast and smooth,
>>> which makes me wonder, what extra a squeak image does to perform
>>> blitting on screen.
>>> Something slows things down there.
>>
>> Did you try the profiler (Extras menu)? I found it pretty useful when I was
>> hacking RFB recently.
>>
>
> The tally looks weird :)

http://lists.squeakfoundation.org/pipermail/squeak-dev/2009-February/134405.html

A real-world case of issue #3.

Cheers,
   - Andreas

>   - 100146 tallies, 100419 msec.
>
> **Tree**
> --------------------------------
> Process: other processes
> --------------------------------
> 5.7% {5724ms} EventSensor>>eventTickler
>    5.7% {5724ms} Delay>>wait
>      5.7% {5724ms} primitives
> --------------------------------
> Process: (40) 43725: nil
> --------------------------------
> 94.3% {94695ms} WorldState>>doOneCycleFor:
>    94.3% {94695ms} WorldState>>doOneCycleNowFor:
>      93.9% {94293ms} WorldState>>displayWorldSafely:
>        93.9% {94293ms} PasteUpMorph>>displayWorld
>          93.9% {94293ms} PasteUpMorph>>privateOuterDisplayWorld
>            93.9% {94293ms} WorldState>>displayWorld:submorphs:
>              85.6% {85959ms} WorldState>>drawWorld:submorphs:invalidAreasOn:
>                |85.3% {85657ms} FormCanvas(Canvas)>>fullDrawMorph:
>                |  85.3% {85657ms} FormCanvas(Canvas)>>fullDraw:
>                |    85.3% {85657ms} SystemWindow(Morph)>>fullDrawOn:
>                |      39.6% {39766ms} SystemWindow(Morph)>>hasRolloverBorder
>                |        |39.6% {39766ms} primitives
>                |      34.2% {34343ms} SystemWindow(Morph)>>drawSubmorphsOn:
>                |        |34.1% {34243ms} FormCanvas(Canvas)>>fullDrawMorph:
>                |        |  34.1% {34243ms} FormCanvas(Canvas)>>fullDraw:
>                |        |    34.1% {34243ms} GLViewportMorph(Morph)>>fullDrawOn:
>                |        |      33.9% {34042ms} FormCanvas(Canvas)>>drawMorph:
>                |        |        33.9% {34042ms} FormCanvas(Canvas)>>draw:
>                |        |          33.9% {34042ms} GLViewportMorph>>drawOn:
>                |        |            32.8% {32937ms}
> NBMSAAOffscreenDisplay>>updateForm:bounds:
>                |        |              32.7% {32837ms}
> NBGLFrameBuffer>>bindAsDrawBuffer
>                |      11.0% {11046ms} FormCanvas(Canvas)>>drawMorph:
>                |        10.9% {10946ms} FormCanvas(Canvas)>>draw:
>                |          10.9% {10946ms} SystemWindow(Morph)>>drawOn:
>                |            10.9% {10946ms}
> FormCanvas(Canvas)>>fillRectangle:fillStyle:borderStyle:
>                |              10.8% {10845ms}
> FormCanvas>>fillRectangle:fillStyle:
>                |                10.8% {10845ms}
> FormCanvas>>balloonFillRectangle:fillStyle:
>                |                  10.8% {10845ms}
> BalloonCanvas>>fillRectangle:fillStyle:
>                |                    10.8% {10845ms}
> BalloonCanvas>>drawRectangle:color:borderWidth:borderColor:
>                |                      10.7% {10745ms}
> BalloonEngine>>drawRectangle:fill:bor...borderColor:transform:
>                |                        10.7% {10745ms}
> BalloonEngine>>postFlushIfNeeded
>                |                          10.7% {10745ms} BalloonEngine>>copyBits
>                |                            10.7% {10745ms}
> BalloonEngine>>copyLoopFaster
>                |                              10.7% {10745ms} primitives
>              8.3% {8335ms} WorldState>>forceDamageToScreen:
>                8.3% {8335ms} DisplayScreen>>forceDamageToScreen:
>                  8.3% {8335ms} OrderedCollection>>do:
> 
> **Leaves**
> 39.6% {39766ms} SystemWindow(Morph)>>hasRolloverBorder
> 32.7% {32837ms} NBGLFrameBuffer>>bindAsDrawBuffer
> 10.7% {10745ms} BalloonEngine>>copyLoopFaster
> 8.3% {8335ms} OrderedCollection>>do:
> 5.7% {5724ms} Delay>>wait
>
> **Memory**
> 	old			+193,508 bytes
> 	young		+173,384 bytes
> 	used		+366,892 bytes
> 	free		-366,892 bytes
>
> **GCs**
> 	full			0 totalling 0ms (0.0% uptime)
> 	incr		1331 totalling 356ms (0.0% uptime), avg 0.0ms
> 	tenures		2 (avg 665 GCs/tenure)
> 	root table	0 overflows
>
> --------
> This is weird it shows that it spends 40% of time in
> SystemWindow(Morph)>>hasRolloverBorder
>
> The actual workload should be concentrated here:
>                |        |            32.8% {32937ms}
> NBMSAAOffscreenDisplay>>updateForm:bounds:
>                |        |              32.7% {32837ms}
> NBGLFrameBuffer>>bindAsDrawBuffer
>
> but it takes only 1/3 of all time (this is including blitting bits
> back to system memory).
>
>
>
> What is interesting, that if there is no copy to system memory,
> rendering these simple things (about
> 60 glyphs with nice AA), takes less than 2% of time:
>
>                |                  1.6% {689ms} GLViewportMorph>>drawOn:
>
> while most of the time, again spent in #hasRolloverBorder
> **Leaves**
> 61.3% {26403ms} SystemWindow(Morph)>>hasRolloverBorder
> 15.9% {6848ms} BalloonEngine>>copyLoopFaster
> 12.0% {5169ms} OrderedCollection>>do:
> 4.7% {2024ms} Delay>>wait
>
> So, it could run 32%/2% ~~ 16 times faster
>
>
>>
>> Levente
>>
>>>
>>> In both images, i used:
>>>
>>> Display depth 32
>>> Display isLittleEndian  true
>>>
>>>
>>> --
>>> Best regards,
>>> Igor Stasenko AKA sig.
>>>
>>>
>>
>>
>
>
>




More information about the Squeak-dev mailing list