Sunday, March 1, 2009

Initial Benchmark of the xf86-video-glamo on GTA02

After my tremendous problems building my build environment I have finally succeed :)
So I had the chance to give xorg-video-glamo a try and see how well it behaves. To do the benchmark I used expedite and the results are:


2.76 , Image Blend Unscaled
12.69 , Image Blend Solid Unscaled
1.56 , Image Blend Nearest Scaled
8.77 , Image Blend Nearest Solid Scaled
0.45 , Image Blend Smooth Scaled
5.93 , Image Blend Smooth Solid Scaled
5.02 , Image Blend Nearest Same Scaled
22.05 , Image Blend Nearest Solid Same Scaled
1.27 , Image Blend Smooth Same Scaled
11.84 , Image Blend Smooth Solid Same Scaled
0.51 , Image Blend Border
6.67 , Image Blend Solid Border
0.44 , Image Blend Border Recolor
4.29 , Image Quality Scale
7.22 , Image Data ARGB
4.89 , Image Data ARGB Alpha
6.54 , Image Data YCbCr 601 Pointer List
6.04 , Image Data YCbCr 601 Pointer List Wide Stride
6.67 , Image Crossfade
9.28 , Text Basic
1.05 , Text Styles
0.79 , Text Styles Different Strings
5.64 , Text Change
5.67 , Textblock Basic
4.67 , Textblock Intl
1.81 , Rect Blend
9.57 , Rect Solid
69.84 , Rect Blend Few
84.22 , Rect Solid Few
41.09 , Image Blend Occlude 1 Few
24.00 , Image Blend Occlude 2 Few
17.50 , Image Blend Occlude 3 Few
43.26 , Image Blend Occlude 1
14.59 , Image Blend Occlude 2
4.87 , Image Blend Occlude 3
27.31 , Image Blend Occlude 1 Many
6.81 , Image Blend Occlude 2 Many
2.21 , Image Blend Occlude 3 Many
3.79 , Image Blend Occlude 1 Very Many
0.66 , Image Blend Occlude 2 Very Many
0.36 , Image Blend Occlude 3 Very Many
3.51 , Polygon Blend
11.86 , EVAS SPEED

The benchmark took around half an hour to end and from the final EVAS SPEED value, it is really, really slow.

Note that right now the driver is just a wrapper on top of the fbdev, so no acceleration is coded yet, only software based rendering and giving that the CPU isn't that fast either, there's no surprise on the benchmark.

The Xrender acceleration is one of the possibilities to improve the performance and the good news is that Evas already provides a Xrender based engine. So let's get the hands dirty and start hacking the driver! :)

5 comments:

My sweet diary said...
This comment has been removed by the author.
lars said...

uhm, what version of xf86-video-glamo are you using?

Current trunk has exa support since quite some time. I did some benchmarks myself, a few days ago and actually exa is whats slowing everything down, because of the extra round-trips inside the xserver. Using plain fbdev or xf86-video-glamo without hardware acceleration is actually faster than xf86-video-glamo with hw acceleration. Except for a few things like solid filled rectangles.

turran said...

Hey Lars :) Im using the one at openmoko git.

About the exa/xrender making everything slower, yes, that was my initial thought as it is what happens on the desktop too, but i haven't tested yet.

Correct me if im wrong, but from glamo-draw.c there's only code for solid filling/blitting, no alpha blending or composite. I tried evas with xrender and the server segfaulted as it didnt support any other surface format but rgb565 but the hw says it supports argb8888 pre multiplied, so there's still hope for glamo :)

Treviño said...

Just for reference, could you post the results you get using Xglamo with the same rootfs?

Thanks!

Treviño said...

Ok, I've tested expedite with my svn build of enlightenment (evas was compiled few days ago), running it with only Xglamo running in my phone, and using expedite with the x11-16 engine in vga-p mode:


Xglamo -dpi 285 -screen 480x640 -hide-cursor -br :0 -pn +extension Composite -nolisten tcp
expedite -e x11-16 -p vga-p -a


I had to disable some crashing tests:

Index: src/bin/tests.h
===================================================================
--- src/bin/tests.h (revisione 39334)
+++ src/bin/tests.h (copia locale)
@@ -18,10 +18,6 @@
#include "image_blend_solid_border.c"
#include "image_blend_border_recolor.c"
#include "image_quality_scale.c"
-#include "image_data_argb.c"
-#include "image_data_argb_alpha.c"
-#include "image_data_ycbcr601pl.c"
-#include "image_data_ycbcr601pl_wide_stride.c"
#include "image_crossfade.c"
#include "text_basic.c"
#include "text_styles.c"



However those are my results compared to yours using the expedite_cmp tool:

\: Xorg Xglamo
Image Blend Unscaled: 2.76 4.06
Image Blend Solid Unscaled: 12.69 14.02
Image Blend Nearest Scaled: 1.56 2.67
Image Blend Nearest Solid Scaled: 8.77 10.56
Image Blend Smooth Scaled: 0.45 2.67
Image Blend Smooth Solid Scaled: 5.93 10.54
Image Blend Nearest Same Scaled: 5.02 7.65
Image Blend Nearest Solid Same Scaled: 22.05 21.63
Image Blend Smooth Same Scaled: 1.27 7.68
Image Blend Smooth Solid Same Scaled: 11.84 21.53
Image Blend Border: 0.51 4.11
Image Blend Solid Border: 6.67 9.42
Image Blend Border Recolor: 0.44 2.01
Image Quality Scale: 4.29 12.65
Image Data YCbCr 601 Pointer List: 6.54 14.62
Image Crossfade: 6.67 10.64
Text Basic: 9.28 11.47
Text Styles: 1.05 1.70
Text Styles Different Strings: 0.79 1.19
Text Change: 5.64 7.46
Textblock Basic: 5.67 9.16
Textblock Intl: 4.67 12.78
Rect Blend: 1.81 2.29
Rect Solid: 9.57 13.32
Rect Blend Few: 69.84 111.20
Rect Solid Few: 84.22 137.96
Image Blend Occlude 1 Few: 41.09 68.46
Image Blend Occlude 2 Few: 24.00 33.67
Image Blend Occlude 3 Few: 17.50 26.62
Image Blend Occlude 1: 43.26 51.53
Image Blend Occlude 2: 14.59 19.03
Image Blend Occlude 3: 4.87 7.08
Image Blend Occlude 1 Many: 27.31 28.12
Image Blend Occlude 2 Many: 6.81 6.79
Image Blend Occlude 3 Many: 2.21 2.87
Image Blend Occlude 1 Very Many: 3.79 2.14


While those are the results comparison using the percentage option.

\: Xorg Xglamo
Image Blend Unscaled: 2.76 +47.1%
Image Blend Solid Unscaled: 12.69 +10.5%
Image Blend Nearest Scaled: 1.56 +71.2%
Image Blend Nearest Solid Scaled: 8.77 +20.4%
Image Blend Smooth Scaled: 0.45 +493.3%
Image Blend Smooth Solid Scaled: 5.93 +77.7%
Image Blend Nearest Same Scaled: 5.02 +52.4%
Image Blend Nearest Solid Same Scaled: 22.05 -1.9%
Image Blend Smooth Same Scaled: 1.27 +504.7%
Image Blend Smooth Solid Same Scaled: 11.84 +81.8%
Image Blend Border: 0.51 +705.9%
Image Blend Solid Border: 6.67 +41.2%
Image Blend Border Recolor: 0.44 +356.8%
Image Quality Scale: 4.29 +194.9%
Image Data YCbCr 601 Pointer List: 6.54 +123.5%
Image Crossfade: 6.67 +59.5%
Text Basic: 9.28 +23.6%
Text Styles: 1.05 +61.9%
Text Styles Different Strings: 0.79 +50.6%
Text Change: 5.64 +32.3%
Textblock Basic: 5.67 +61.6%
Textblock Intl: 4.67 +173.7%
Rect Blend: 1.81 +26.5%
Rect Solid: 9.57 +39.2%
Rect Blend Few: 69.84 +59.2%
Rect Solid Few: 84.22 +63.8%
Image Blend Occlude 1 Few: 41.09 +66.6%
Image Blend Occlude 2 Few: 24.00 +40.3%
Image Blend Occlude 3 Few: 17.50 +52.1%
Image Blend Occlude 1: 43.26 +19.1%
Image Blend Occlude 2: 14.59 +30.4%
Image Blend Occlude 3: 4.87 +45.4%
Image Blend Occlude 1 Many: 27.31 +3.0%
Image Blend Occlude 2 Many: 6.81 -0.3%
Image Blend Occlude 3 Many: 2.21 +29.9%
Image Blend Occlude 1 Very Many: 3.79 -43.5%