craigix
Mega GP Mania
I am quite happy to donate a 1Ghz unit to this, sounds like a great project.
Last edited by a moderator:
consider the 1ghz pandora an incentive then.Would one not be better able to test games that require more overclocking to run properly etc?
Craig might donate a 1ghz pandora to you for this emulator.I pm'd him a week ago about this and he was game.Me and Zuk also offer a bounty of 300 euros and 200 dollars also zuk is willing to pay for a 1ghz pandora for you to get this emu running on the 1ghz pandora.There is loads of interest in dreamcast emulation from users here on the forums.What do you think?
Dude, he already has a Pandora. He doesn't need a new one. I don't think you are understanding that you don't need a 1GHz Pandora to develop software that works on it. It runs the SAME SOFTWARE.
80% at 1Ghz (with sound). I'll try to update the pandora libs to see perfm. (i updated OS, and angstrom has wayy too old std libs ..).
The SGX driver loves to eat cpu time, doing ... no idea what exactly. CPU is always a bottleneck, as is poor cache perfomance and low (effective) bandwidth to ram. But hey, thats what gets you into low power
Since nothing beats real numbers ...
@ 800 mhz
bios main menu: 101%
recv ingame: 74, intro 65~70, with HEAVY freamskipping (SGX was at around 7 fps out of 18 or so -- the game runs at 25 normally).
Recv is one of the fast games (and happyly gets into tripple digits with A9 at similar clock).
This is interesting, and seems like a big improvement over the performance in MWeston's video which ran at about 40% realtime with no audio, at 800MHz. But you say this is one of the less demanding games, so I guess people should take this as a best case.
I'd love to hear more information, of course. I have some specific questions like usual..
1) How are you handling emulated instructions/second these days? Is there some timing depending on instruction type or a fixed number? Are you adjusting it based on game? If so is this done manually, stored in profiles, or what? Is there idle loop detection or some variability based on hardware sleep?
2) You say there's a lot of frameskip in your test, and seem to be implying that it's determined automatically. Since you aren't reaching real time speed with it, what is your cutoff exactly? Is it being driven by lack of CPU time or lack of GPU time? If it's the latter, is it a matter of preparing the display list then not sending it if the last display list is still being rendered? The 1GHz Pandoras have a 200MHz SGX so it should render a lot more quickly.
3) You seem to think softfp is a big performance limiter. That should only be the case if you're calling a lot of C (or some other high-level) functions with float return values (there's a little bit of a penalty for float parameters but it's not nearly as bad). Are you calling these functions frequently from recompiled code? If so, it seems like you'd gain a lot more from writing the functions in ASM than from hardfp alone, since you'd get a lot more control over the ABI overall..
Before we all get too excited, there are still some issues that i don't have control over that need to be resolved. I don't need a new pandora (i got a beagleboard-xm & my old pandora) -- and there were also some donations last time which I didn't manage to put into good use and i don't want that happening again.
1) predefined (very) pesimistic calculation + idle loop detection
2) There's a render thread, if it gets more than one frames queued for rendering it simply discards them
Yeah, sadly, there are many cases that C functions are used w/ floats. Most of them are copying data around, so it might be possible to have the types changed to partially fix the issue -- and this might not be as much of a problem on newer gcc versions (and well, brute forcing with asm might work .. but then why write thousand lines of platform specific asm code to fix a tool issue ?).
The main issue is the drivers, on A9 moving from softfp to hardfp calling cut the driver overhead to almost half .. and generally sablised speed for the better, A8 could be even more affected...
Does pandora has a package for oprof or smth ?
Pessimistic as in a very high number of instructions per second? Like 200M? 400M? Does the idle loop detection work for most games? Is it working for RE:CV? Can you post any statistics about instruction counts/utilizations for it?
Thousands of lines seems rather exacerbating.. you must be talking about a lot of individual instructions..
It's really not just down to hardfp, the fixed ABI is going to limit you. Especially for a bunch of float-only leaf functions. Your recompiled code has no idea about what registers they could be modifying and has to assume all the caller save regs (r0-r3 and r12) will be destroyed. It's not nearly as bad as on MIPS, where the temporaries are over half the register file. But it's still less than ideal.
You might be able to do custom ABIs/calling conventions with C functions starting with declspec __naked__ or something.. no idea where to go from there..
Do you know if most of those calls were internal to the drivers, rather than ones you were making? If you're calling the driver a lot it sounds like you have a large number of draw calls. Which will equate to a lot of driver overhead. If it's the former.. let's just say I'm pretty disappointed, not that I had high expectations for the driver's efficiency..
If softfp is much slower on A9 then A8 would surely be more affected. The penalty for moving from FP/NEON to ARM registers is much worse.
Not sure if you want typical statistical profiling or what, I think it's available but I haven't used it. I've personally only been interested in raw performance counter values, which have been made accessible in user mode. I have some C code for accessing them if you're interested.
I use VBOs, and only do draw calls when i have to. Dreamcast is around 10k vtx/frame, so i'd say 100-500 calls/frame ? Nothing too terribly evil anyway. I have the drivers regularly hardlock on beagleboard -and- pandaboard .. even when running underspected with very good psu and no SD card ... so .. yeah ... In two of the pandaboards i have crazy taxi crashes within 30 seconds, always . They also locked up today on panda, but i was running @ 800 for testing so i can't blame them for that
Actually A9 has a huge issue if you mix neon w/ vfp -- over 400 cycles stall switching mode according to my results.. thats why i don't use neon at all anymore .. (which is actually bad on A8)
can someone explain to me why some of you devs hold back so much when it comes to releasing your work unless its perfect? Took us forever here to get Exophase to release any kind of build of Temper, and even then he refuses to put it anywhere official. And there's obviously something working with a Pandora build of nullDC but its obvious the customers won't and haven't seen anything for a while. At least Ari knows that while we hope for perfection, we will settle for anything less.
can someone explain to me why some of you devs hold back so much when it comes to releasing your work unless its perfect? Took us forever here to get Exophase to release any kind of build of Temper, and even then he refuses to put it anywhere official. And there's obviously something working with a Pandora build of nullDC but its obvious the customers won't and haven't seen anything for a while. At least Ari knows that while we hope for perfection, we will settle for anything less.