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

Igor Stasenko siguctua at gmail.com
Mon May 24 20:28:59 UTC 2010


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


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



-- 
Best regards,
Igor Stasenko AKA sig.



More information about the Squeak-dev mailing list