This site is no longer active and is available for archival purposes only. Registration and login is disabled.

Developer Thread


Re: Developer Thread

Postby CARPEDIEM » Mar 2, 2001 @ 1:08pm

Btw, i get the same speed increase.<br>these are my scores on my E-125 @ 200.7<br><br>Timerefresh: 3.74 fps<br>demo1: 6.6 fps<br><br>These scores using the latest .cfg from 999<br><br>It's Pretty playable on the casio i must say. Im also drawing a gray sky, because if i draw it with the optimized functions, framerate on the timerefresh test drops to 3.5<br><br><br>Last modification: CARPEDIEM - 03/02/01 at 10:08:15
CARPEDIEM
pm Insider
 
Posts: 514
Joined: Feb 24, 2001 @ 3:58pm


Re: Developer Thread

Postby Dan East » Mar 2, 2001 @ 1:18pm

That's what I do, I just don't release the buffer every frame. At the beginning of the drawing I see if I have the buffer still. If not, I get it. I have rewritten those routines completely from what you have (I think). Now I calculate all drawing parameters up front, so the actual drawing is totally generic. This allows the exact same drawing routine to work for portrait, both landscape modes, and other types of devices, without having any conditional logic.<br><br>The reason I don't release the buffer each frame is because Microsoft says you don't have to, but it does not work that way on MIPS and SH3 devices (apparently you have to release each frame). <br><br>Notice the conflicting info, this is straight out of the Game API docs (do a search for GAPI, then select the document "Animating Graphics" ) :<br><br>To continue drawing more data on the screen, call GXBeginDraw to get a pointer to the VFB. As soon as drawing is complete and no later, call GXEndDraw. <br><br>Note   Consider the performance cost of these calls when implementing them in your application, because they will typically be done 20 or 30 times per second. It is acceptable to draw several frames between the GXBeginDraw and GXEndDraw calls, but you must remember to call GXEndDraw in WM_KILLFOCUS if necessary.<br><br><br>Ok, so they say you should release the buffer "as soon as drawing is complete and no later", and two sentences later say "It is acceptable to draw several frames between the GXBeginDraw and GXEndDraw calls". So to me that means you can hang onto the buffer until you get a WM_KILLFOCUS message. Even then the only reason you give up the buffer is if you want to be nice to whatever application gained the focus. <br>Thanks again Microsoft!<br><br>Dan East<br>Last modification: Dan East - 03/02/01 at 10:18:13
User avatar
Dan East
Site Admin
 
Posts: 5264
Joined: Jan 25, 2001 @ 5:19pm
Location: Virginia, USA


Re: Developer Thread

Postby norvain » Mar 2, 2001 @ 6:17pm

I have some numbers that you all might find interesting:<br>(Timming done on my Casio E-125@150mhz)<br><br>Gapi BeginDraw : 0.031ms<br>Gapi EndDraw: 3.052ms<br><br>total: 3.083ms per frame for Gapi ( ~324fps)<br><br>So calling EndDraw as little as possible isnt super critical, but definately something to think about..especially in Quake where 1fps speedup makes a tremendous difference.<br><br>Data Copying on the otherhand is a problem.. Numbers from some of the methods I tested:<br><br>Word->Word : 19.928ms(W/GAPI)50fps(~44fps)<br>Memcpy     : 11.841ms(W/GAPI)85fps(~67fps)<br><br>If anyone has some asm blitting routines that would make a huge difference.<br>Last modification: norvain - 03/02/01 at 15:17:27
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Mike Cooper(norvain) - Mythical Masterpieces
http://leviathan3d.cfxweb.net
norvain
pm Member
 
Posts: 5
Joined: Feb 26, 2001 @ 7:08pm


Re: Developer Thread

Postby Dan East » Mar 2, 2001 @ 6:45pm

Thanks, Norvain. Any idea why the buffer must be retrieved / released every frame with MIPS and SH3 devices? Do you see this behavior?<br><br>Dan East
User avatar
Dan East
Site Admin
 
Posts: 5264
Joined: Jan 25, 2001 @ 5:19pm
Location: Virginia, USA


Re: Developer Thread

Postby Phantom » Mar 3, 2001 @ 11:02am

0.2 fps speed increase? :) That's a disaster! I spend at least 10 hours on that! Anyway, apparently I'll have to think better about wich code needs to be changed...
Give me some good data and
I will give you the world
User avatar
Phantom
pm Insider
 
Posts: 913
Joined: Feb 21, 2001 @ 8:14am
Location: Houten, Netherlands


Re: Developer Thread

Postby norvain » Mar 3, 2001 @ 5:53pm

All I can do is speculate but I believe it comes down to 2 things:<br><br>first GX.dll is made by Casio, so its possible that they were listening to Microsoft and following the spec directly <br><br>secondly, The Casio Pocket PC's have Video DRAM as opposed to a spot in memory like the IPAQ, so it most likely has something to do with the way the DRAM is updated... <br><br>Speed could also be another factor, given that Mem->Mem copies are faster than Mem->Video thus updating the screen once should be faster. <br><br>Display Memory may also be banked, requiring the driver to do bank switching when it copies the buffer over to DRAM, so direct Writes would be very complicated and slow down the system( as well as make GAPI Platform Specific, which is bad)<br><br>Jimmy of Jimmysoftware.com has written his own GAPI less display drivers, maybe he can shed some light on this or share his secret :)Last modification: norvain - 03/03/01 at 14:53:59
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Mike Cooper(norvain) - Mythical Masterpieces
http://leviathan3d.cfxweb.net
norvain
pm Member
 
Posts: 5
Joined: Feb 26, 2001 @ 7:08pm


Re: Developer Thread

Postby CARPEDIEM » Mar 8, 2001 @ 1:30pm

Dan, when are you going to send me the 0.05 source?, I have some time now since i failed the exam and that means an extra year of college :(<br>so send them to carpediem@velocom.com.ar (don't forget the .ar) when you can.<br><br>
CARPEDIEM
pm Insider
 
Posts: 514
Joined: Feb 24, 2001 @ 3:58pm


Re: Developer Thread

Postby Dan East » Mar 10, 2001 @ 10:11am

I'm trying to get a fixed point conversion working properly. If I don't have any luck by later today I'll send you what I've got without that improvement.<br><br>Dan East
User avatar
Dan East
Site Admin
 
Posts: 5264
Joined: Jan 25, 2001 @ 5:19pm
Location: Virginia, USA


Re: Developer Thread

Postby CARPEDIEM » Mar 10, 2001 @ 12:32pm

Great Dan.<br><br>BTW, the old source you sent me was configured to be optimized for maximum speed, but also inline function expansion was set to: "Any suitable"<br><br>You might want to change that to "__only inline" for an extra 2 frames per second.<br><br>
CARPEDIEM
pm Insider
 
Posts: 514
Joined: Feb 24, 2001 @ 3:58pm


Re: Developer Thread

Postby Dan East » Mar 10, 2001 @ 12:44pm

Thanks, but I already had the iPaq optimization settings at "any suitable" for automatic function inlining. The other targets will have default settings in some cases. I try to make changes to all configurations, but I don't always succeed. :)<br><br>Dan East
User avatar
Dan East
Site Admin
 
Posts: 5264
Joined: Jan 25, 2001 @ 5:19pm
Location: Virginia, USA


Re: Developer Thread

Postby CARPEDIEM » Mar 10, 2001 @ 1:21pm

No no... I don't think i expressed myself properly.<br>What i mean is that i DO know that you have it set to: "Any suitable", i didn't have it set to that, and when i did my framerate decreased more than 2 frames per second.<br>What i would like you to try is to set it to:<br>"Disable*"<br>or:<br>"Only__inline"<br><br>The "Any suitable" option decreases performance on mips devices, i'd like to see what happens on ARM devices.<br>
CARPEDIEM
pm Insider
 
Posts: 514
Joined: Feb 24, 2001 @ 3:58pm


Re: Developer Thread

Postby CARPEDIEM » Mar 10, 2001 @ 2:22pm

Nevermind, 999 tried an ipaq build and he didn't notice a speed increase.<br>I wonder why it gets so slow on casios when you use the "any suitable" option.<br>
CARPEDIEM
pm Insider
 
Posts: 514
Joined: Feb 24, 2001 @ 3:58pm


Re: Developer Thread

Postby Dan East » Mar 10, 2001 @ 2:43pm

Okay, I reread your last post. So it runs slower with function inlining enabled on MIPS devices? One disadvantage of the MIPS devices is that they require very strict 4 (or is it 8?) byte data alignments, otherwise the processor is severely handicapped (like 5-10 times slower processing unaligned data). I don't know if inlining functions could hurt data alignment or not.<br><br>Dan East<br>Last modification: Dan East - 03/10/01 at 11:43:38
User avatar
Dan East
Site Admin
 
Posts: 5264
Joined: Jan 25, 2001 @ 5:19pm
Location: Virginia, USA


Re: Developer Thread

Postby randall » Mar 10, 2001 @ 2:56pm

Mips devices use 32-bit data aligning, otherwise they slow to a crawl. So yeah, that would be 4 bytes as you stated.<br><br>OOPS, sorry, didn't realize this was the developer thread.<br><br>Last modification: randall - 03/10/01 at 11:56:16
User avatar
randall
pm Insider
 
Posts: 3426
Joined: Feb 23, 2001 @ 4:02pm
Location: Schnoogie


Re: Developer Thread

Postby CARPEDIEM » Mar 10, 2001 @ 4:18pm

Ok here's the deal with the configuration directives of eVC++.<br>I've been going through the different configurations options and got results ranging from 4.5 fps to 7.0 fps on the demo1 test.<br><br>If you select: "Any suitable" and at the same time you choose the DEFAULT processor on code generation, you get a huge fps drop.<br><br>In contrast, if you choose procesor 4100 AND "Any suitable" you get 0.3 more fps.<br><br>so i guess this is the best config for mips devices:<br><br>Optimization: "maximize speed"<br>Processor: "4100"<br>Inline function expasion: "Any suitable"<br>
CARPEDIEM
pm Insider
 
Posts: 514
Joined: Feb 24, 2001 @ 3:58pm


PreviousNext

Return to Pocket Quake 1 and 2


Sort


Forum Description

Discuss Pocket Quake 1 and 2 by Dan East

Moderators:

Dan East, sponge, James S

Forum permissions

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

cron