Page 1 of 2

X-Scale?

PostPosted: Jul 10, 2002 @ 3:50pm
by BrandG
So I got one of the nifty-cool Toshiba e740s. Yeah, I know all about the love-hate problems with it. I was just a starry-eyed dreamer, hoping for the faster handheld.

For most stuff, this was a lot faster than the IPaq 3650 I'd been working on. However, the project I'd been building in PocketFrog is actually a lot slower on the X-Scale processor (from 30 fps to 7 fps).

IBM is apparently ignoring the problem, saying that programmers have to make their own optimizations to make X-Scale work. Microsoft is apparently ignoring the problem, because they don't like IBM or anyone who buys from them. :(

What I'm wondering is, does anyone know how to optimize for the X-Scale? Or are there any plans for it in PocketFrog, GAPI, etc. ?

PostPosted: Jul 11, 2002 @ 1:40am
by Kzinti
PocketFrog is written in C++. As such, it will compile on any conforming compiler. Unfortunately, there is no XSCALE compiler available for the PocketPC. Until then, we are stuck with the ARM compiler.

PostPosted: Jul 11, 2002 @ 2:15am
by Digby
The performance difference that you see is not a compiler problem. There is a memory read bandwidth issue with this (and perhaps all) new XScale-based device. I've done extensive tests on the e740 and with some type of memory reads it is 3x slower than the same test running on a StrongARM-based iPaq.

There are some things that you could do in your app's code to get it to run faster on an XScale but I'm not at liberty to discuss them right now. In the meantime, if you're a developer I'd suggest you start profiling your code running on an XScale device and on a StrongARM and look for places where it's slower on the XScale.

Some guy posted an e-mail of mine describing the results from some of my tests (without asking me first, I might add) on sprinklerhead.com. You might want to read that post for more info.

Cannot find relevant post

PostPosted: Jul 11, 2002 @ 10:15am
by Conan

PostPosted: Jul 11, 2002 @ 10:57am
by Digby

PostPosted: Jul 11, 2002 @ 6:23pm
by Kzinti

finally found it

PostPosted: Jul 12, 2002 @ 3:04pm
by Conan

Link To SprinklerHead Post

PostPosted: Jul 12, 2002 @ 9:35pm
by Ken_McCaw
FYI:


Great sleuthing by Digby! I bought the Casio E-200 instead, and spent the $250+ I saved on a wireless network card - XScale will have to wait until next year ( sigh ).

Ken

Another Datum

PostPosted: Jul 14, 2002 @ 6:36am
by Brand_G
Just FYI, my game ran at 30-32 fps on a IPaq 36xx; but on the Toshiba e740, I was seeing 3-5 fps. Well, the biggest culprit was my FrameCounter. :oops: I was just doing the basic GDI GetDC, DrawText, ReleaseDC stuff with PocketFrog surfaces, but that was sucking up a huge amount of the framerate.

Digby says that the GDI should work at acceptable speeds, so I think the problem was interaction between PocketFrog surfaces, and the GDI itself. (anyone, please correct me if I'm wrong). Anyway, after taking out the FrameCounter (now it just dumps framedata to a file at the end of the game), the game runs at about 14-16 fps.

Blitting does take up some of the remaining speed (if I don't blit, I can get 25fps), and I'm working on changing my local copy of the blit function to try to wrench some more frames out of it. And that's where I am now.

Digby has been extremely helpful. Thanks!

If anybody else has had similar experiences, or has tips on how to improve e740 performance, gimmie a shout. I'm hoping to use this as my standard programming platform, since I really do think x-scale chips will start to dominate the industry soon.

PostPosted: Jul 16, 2002 @ 7:22pm
by Kzinti
Using GDI during the main loop of your game is pretty much a bad idea. Here is what you should do for your frame counter:

Render the nuemric characters to a surface using GDI (ie: create a surface and write "0123456789" to it).

During the main loop, display the frame counter by blittinh the appropriate characters (ie: display->Blit( numsurface, Rect(...) ))

A GetDC/ReleadeDC pair on a surface is usually even slower then a Lock/Unlock pair. Don't do it when you need FPS.

PostPosted: Jul 23, 2002 @ 5:57pm
by Digby

PostPosted: Jan 15, 2003 @ 1:23am
by Friggin Joe

PostPosted: Jan 24, 2003 @ 11:13pm
by Presto
Though this thread started in July, I thought I'd share my experience so far...

My Dell Axim, which uses the 300MHz XScale, runs my Pod game at near 30FPS consistently, and I think it does some pretty extensive calculating too.

One example is my distance function, which is called <U>a lot</U>:
int distance(int x1, int y1, int x2, int y2)
{
return ((int) sqrt(pow(x2-x1,2)+pow(y2-y1,2)));
}

BrandG, you might want to try the game out and see if it performs the same/worse/better than the Toshiba.

Personally, I'm quite happy with my Dell, but I can't help wondering if there's a way to make it perform even better, or if there's a flaw in the technology that's keeping it below its potential.

The specs for my Axim are:
300MHz XScale, 32MB SDRAM, 32MB StrataFlash ROM, Pocket PC 2002 OS

The Pod Demo can be downloaded <A HREF="http://www.john-till.net/personal/pod.asp">here</A>.

-John

PostPosted: Jan 28, 2003 @ 9:10pm
by Friggin Joe

..

PostPosted: Jan 29, 2003 @ 6:24am
by masCh
I cannot seem to find that benchmark article. Is there an archive anywhere?

I'm trying to figure out why my pocketfrog app sometimes produce errors on x-scale based ipaqs.