#exult@irc.freenode.net logs for 13 Oct 2003 (GMT)

Archive Today Yesterday Tomorrow
Exult homepage


[00:53:48] <-- Jammet has left IRC ("Leopard[Cub]")
[01:31:52] <-- Kirben has left IRC ("System Meltdown")
[01:31:57] --> Kirben has joined #exult
[01:31:57] --- ChanServ gives channel operator status to Kirben
[02:34:54] <-- Kirben has left IRC (Read error: 104 (Connection reset by peer))
[02:40:32] --> Coren_ has joined #exult
[02:54:10] --> Kirben has joined #exult
[02:54:10] --- ChanServ gives channel operator status to Kirben
[02:54:35] <Coren_> Hoy Kirben
[02:55:43] <Kirben> Hi
[02:57:56] <Coren_> Haven't done so much q2 map editing in a loooong tome. :-)
[02:58:28] <Coren_> I got all of the castle and sewer complex in a single map, now. I'll do the same to all the other worlds.
[03:03:58] <Coren_> Key, Kirben, what video card do you have?
[03:06:21] <Kirben> Asus AGP-V7100 (GeForce 2 MX chipset) video card.
[03:07:00] <Coren_> Do you have a simple method of checking what GL extensions it supports?
[03:07:20] <Coren_> Specifically, I want to see how many people can do HP_occlusion_test
[03:07:56] <Coren_> I'd expect NV_occlusion_query is hoplessly NV specific.
[03:24:35] <Kirben> No, I know very little about OpenGL programming.
[03:26:08] <Coren_> If you have Quake2, you can type "/gl_strings" on the console and see if you see "GL_HP_occlusion_test" in the list it then display. If not, don't bother and thanks anyways. :-)
[03:44:41] <Kirben> I don't have full game and doesn't work in demo.
[03:46:41] <Coren_> 'sok. Thanks anyways.
[08:44:37] <-- Cahaan has left IRC ()
[09:10:22] --> Cashman has joined #exult
[09:13:34] <Cashman> hey
[09:16:56] <-- Cashman has left #exult ()
[10:24:05] --> Jammet has joined #exult
[10:24:14] <Jammet> Mew =^_^=
[10:47:55] --> SB-X has joined #exult
[12:58:07] --> Fingolfin has joined #exult
[12:58:07] --- ChanServ gives channel operator status to Fingolfin
[12:58:29] <Fingolfin> yo
[13:04:22] --> armav has joined #exult
[13:25:22] <-- Kirben has left IRC ("Sleep")
[13:29:24] <-- DarkeZzz has left IRC (gibson.freenode.net irc.freenode.net)
[13:29:25] <-- armav has left IRC (gibson.freenode.net irc.freenode.net)
[13:29:25] <-- Coren_ has left IRC (gibson.freenode.net irc.freenode.net)
[13:29:25] <-- Jammet has left IRC (gibson.freenode.net irc.freenode.net)
[13:29:25] <-- SB-X has left IRC (gibson.freenode.net irc.freenode.net)
[13:29:25] <-- matto has left IRC (gibson.freenode.net irc.freenode.net)
[13:29:25] <-- Fingolfin has left IRC (gibson.freenode.net irc.freenode.net)
[13:29:25] <-- servus has left IRC (gibson.freenode.net irc.freenode.net)
[13:33:29] --> Fingolfin has joined #exult
[13:33:29] --> SB-X has joined #exult
[13:33:29] --> matto has joined #exult
[13:33:29] --> servus has joined #exult
[13:36:45] --> Jammet has joined #exult
[13:36:45] --> Coren_ has joined #exult
[13:36:45] --> DarkeZzz has joined #exult
[13:40:34] <-- Jammet has left IRC (gibson.freenode.net irc.freenode.net)
[13:40:34] <-- Coren_ has left IRC (gibson.freenode.net irc.freenode.net)
[13:41:16] --> Jammet has joined #exult
[13:41:16] --> Coren_ has joined #exult
[13:41:29] <-- DarkeZzz has left IRC (gibson.freenode.net irc.freenode.net)
[13:41:39] --> DarkeZzz has joined #exult
[13:45:57] <-- Fingolfin has left IRC (gibson.freenode.net irc.freenode.net)
[13:45:57] <-- servus has left IRC (gibson.freenode.net irc.freenode.net)
[13:45:58] <-- SB-X has left IRC (gibson.freenode.net irc.freenode.net)
[13:45:58] <-- matto has left IRC (gibson.freenode.net irc.freenode.net)
[13:46:09] --> Fingolfin has joined #exult
[13:46:09] --> servus has joined #exult
[13:46:09] --> matto has joined #exult
[13:46:09] --> SB-X has joined #exult
[13:48:42] <-- Fingolfin has left IRC (gibson.freenode.net irc.freenode.net)
[13:48:42] <-- servus has left IRC (gibson.freenode.net irc.freenode.net)
[13:48:42] <-- SB-X has left IRC (gibson.freenode.net irc.freenode.net)
[13:48:43] <-- matto has left IRC (gibson.freenode.net irc.freenode.net)
[13:48:43] <-- DarkeZzz has left IRC (gibson.freenode.net irc.freenode.net)
[13:48:43] <-- Jammet has left IRC (gibson.freenode.net irc.freenode.net)
[13:48:43] <-- Coren_ has left IRC (gibson.freenode.net irc.freenode.net)
[13:48:51] --> Fingolfin has joined #exult
[13:48:51] --> Jammet has joined #exult
[13:48:51] --> Coren_ has joined #exult
[13:48:51] --> DarkeZzz has joined #exult
[13:48:51] --> servus has joined #exult
[13:48:51] --> SB-X has joined #exult
[13:48:51] --> matto has joined #exult
[15:39:24] --> sbx has joined #exult
[16:10:20] <-- SB-X has left IRC (Read error: 113 (No route to host))
[16:24:31] --- sbx is now known as SB-X
[16:53:38] --> wjp has joined #exult
[16:54:06] --- ChanServ gives channel operator status to wjp
[16:54:07] <wjp> hi
[17:26:27] <Fingolfin> yo
[21:47:34] <wjp> hmm... interesting "advice" on the SDL mailing list... *sigh*
[21:47:47] <wjp> somebody wants to scale a scanline by a factor four by just quadrupling all pixels
[21:47:52] <Coren_> How "interresting"?
[21:48:26] <wjp> and wants to do it faster than a simple *target++ = (source shiften and or-ed four times)
[21:48:47] <Fingolfin> so...
[21:48:59] <wjp> and somebody suggests using a lookup table with lut[0]=0, lut[1]=0x01010101, lut[2]=0x02020202...
[21:49:18] <Fingolfin> lol
[21:49:34] <Fingolfin> all these wonderful cache misses, and pipeline stalls....
[21:49:35] <wjp> and this actually spawned a thread of 7 messages, none of which mentioned the obvious
[21:50:48] <Coren_> Heh. That technique is old as dirt, and actually /was/ useful in the days before caches. And it was damn near indispensible in the Apple II days with the amazingly odd planar representation of high res graphics on that box. :-)
[21:51:08] <wjp> sure, back then it was :-)
[21:54:27] <Coren_> Whoever gace that advice must be fairly old; lookup tables are almost never worth it nowadays.
[21:54:34] <Coren_> s/gace/gave/
[21:56:22] <Coren_> It's a wonder that he/she didn't suggest using invariant iterations and plugging the data in the operands at runtime just before the loop is entered. :-)
[21:57:00] <wjp> hm, would be fairly interesting to experiment with :-)
[21:57:39] <wjp> (interesting, not fast :-) )
[21:57:48] <Coren_> Heh. You'd invalidate your instruction cache *and* flush the pipeline. Self-modifying code is long dead. :-)
[21:58:11] <wjp> well, you just need to make sure to only modify code that's sufficiently far ahead :-)
[21:58:15] <wjp> ;-)
[21:58:49] * Coren_ chuckles.
[22:00:33] <Coren_> Actually, sane OSes would also try to prevent you from writing to your program text. :-) You think debugging a rogue pointer is bad? Try debugging self-modifying code that has gone wrong. :-)
[22:00:54] <wjp> no thanks :-)
[22:02:55] <Coren_> I used to be an expert at manual tuning of assembly to squeeze out "one more cycle" out of loops. I thank the gods that particular skill has been superceeded with unfathomable (to humans) pipelining and instruction scheduling and taken over by the compiler.
[22:03:53] <Coren_> Writing self-modifying code was amusing. *Maintaining* it was about as much fun as poking needles in one's eyes while submerged in vinegar.
[22:04:14] <wjp> but that doesn't sound like fun at all! *cough* :-)
[22:04:34] <wjp> I can try it once if you really recommend it, though
[22:05:13] * Coren_ smirks.
[22:05:30] <Fingolfin> Coren_: that extreme form is dead, yeah. but squishing out "one more cycle" isn't quite dead...
[22:06:06] * wjp seems to remember some scaler-optimizing sessions in which we tried something of the sort :-)
[22:06:12] <Fingolfin> Jamieson630 and me recently worked over some ym2612 emulation code. w/o using any assembly we got a speed up of 3x and more... instruction-level profiling & optimization still cane be useful
[22:06:16] <Fingolfin> oh yeah
[22:06:32] <wjp> 3x speed-up? nice
[22:06:51] <Fingolfin> I also optimized the hq2x/hq3x C++ code to be 40% faster (over here at least); with altivec it's some more :-)
[22:07:15] <Fingolfin> well, the 3x speed up was only possible because we also did some high level changes, fixed the way the emu worked... before that it was just 2x or so =)
[22:07:21] <Coren_> Ah, yes, but in the end what you did was nudge the compiler in the right direction because you had a better idea of the execution profile than it did... the code generation was up to the compiler itself.
[22:07:57] <Fingolfin> indeed
[22:08:05] <Fingolfin> we did so because we need to stay portable
[22:08:28] <Fingolfin> however, for hq3x, real performance improvements still need MMX/AltiVec assembly
[22:08:45] <Coren_> Fingolfin: I would expect any hand tuning of assembly would, at best, give mediocre improvements and are in fact more likely to /slow/ down than increase speed.
[22:08:49] <Fingolfin> and it makes a big difference if your scaler takes up 70%, 30%, or 5% of your processor :-)
[22:09:22] <Fingolfin> GCC and MSVC are really bad at vectorizing code, though. in fact even the best vectorizing compilers I know rely on programmer hints
[22:10:12] <Fingolfin> and you can write more efficient code thatn compilers. but you have to be careful with the interleaving etc.. and make sure to compare with different processors, etc. etc. All in all, you doN't want to do it bare handed, but there are special tools which aid you
[22:10:15] <Coren_> That's not a problem with GCC, that's a problem with C. You can do wonders when you choose a language that understands the idioms you are trying to use.
[22:10:49] <Fingolfin> e.g. I code on Apple/PowerPC. I use Shark which tells me on the asm level whether an instruction will stall, etc.
[22:10:56] <Fingolfin> yup
[22:11:08] <Fingolfin> which is why Fortran beats the crap out of regular C when it comes to vectorized operations :-)
[22:11:10] <Coren_> C doesn't grok vectors. Period.
[22:11:37] <Fingolfin> Fortran allows for really nice optimizations. not that I like coding Fortran. but there actually is a reason why it still is being used :-)
[22:12:27] <Coren_> Actually, fortran has one very nice virtue that is unmatched in most other languages (and cannot be, by design): *no aliasing*
[22:13:06] <Fingolfin> yeah. and no dynamic memory :-)
[22:13:13] <Fingolfin> (yeah yeah I know Fortran 90 adds that)
[22:14:11] <Coren_> Hm. Well, I should get back to Quavatar now. :-)
[22:15:10] <Coren_> Fun facts: Castle British and the entire sewer complex fit well within the capabilities of a single Q2 bsp. :-)
[22:22:13] <-- Fingolfin has left IRC ("42")
[22:23:19] --> Kirben has joined #exult
[22:23:19] --- ChanServ gives channel operator status to Kirben
[22:36:14] <-- wjp has left IRC ("Zzzz...")
[22:41:15] <Coren_> Anyone here has a relatively slow box capable of running Q2?
[23:27:17] --> armav has joined #exult
[23:27:30] <armav> i have a slow box, and i have q2
[23:29:03] --> Zxcvb has joined #exult