DisplayLists Size:Speed

hi all,

I know there has been allot of talk about displaylists and vertex arrays but I’ve just got the one more thing to say about it!

You may remember that I had been using one display list to draw 250’000 polys per frame on a GeForce256 and had been getting a frame rate of about 4-6 FPS and had a RAM footprint at runtime of about 132 Meg!

Well now I’ve split my orginal display list into 8 display lists each drawing an 1/8 of the origrinal lists and now I’m getting a frame draw so fast that my timer function cannot measure it as its dropping below 1 Frame per milisecond and a footprint in RAM of just 32Meg! What gives Nvidia?

I’m only drawing coloured polygons at the moment but its still a pretty amazing change in speed. Can anyone give me any answers of theories on this? Is it something to do with the size of the display list and the speed at which the system can pump the lists into the card? I’ll put a new faster demo on my site soon once I iron out a couple of bugs!

Cheers,

Convict@Large
www.TheRealityDysfunction.com

good work! oh and i told ya so

oh and the reason for the speedup is probably because now it [the driver] is able to store your dlists in video memory. a 250k model in one dlist was probably too much for the GF to handle, so it stored it in sysmem.

Fresh, I actually think the display lists are always kept only in system memory…

But I believe that each time a glCallList is used, the DL is uploaded to the graphics card.

Before the splitting, the card could not have the whole of the list uploaded: I believe the driver detects the list is too big to fit into memory and then sends it command per command.

Now, after the splitting, each display list can be uploaded at once to the graphics card memory and executed straight away (no command per command or byte per byte sending)…

Unfortunately, we can never know if I am correct (i.e. NV people won’t tell us anything about their DL implementation, which is understandable…)

Regards.

Eric

What makes you say dlists are stored in sysmem? I would imagine that much like textures, dlists could be stored locally on the card. Or at least the vertices could be stored on hw.

But I guess that’s for the driver writers to know

You can use QueryPerformanceCounter() to
time something that’s faster than the
low-resolution timers will let you time.

Of course, if you’re running on a pre-Pentium
system, QueryPerformanceCounter() may not
be implemented. But I stopped testing for
that a LOONG time ago.

> I had been using one display list to draw 250’000 polys per frame
and
> I’m getting a frame draw so fast that my timer function cannot measure it as its dropping below 1 Frame per milisecond

Heum Are you trying to tell us that you’re drawing more than 250’000’000 triangles per second ? Are you sure your timer function and FPS calculation are correct ? I know Nvidia cards are fast, and you’re not texturing but…

250 M triangles ?

If it’s correct i’m… impressed…

Y.

its not 250’000’000 polys but only 250’000 polysthe GeForce256 is only rated to a max of 10’000’000 polys anyway, although 250’000’000 polys per frame on a GeFORCE256 would be nice, it would save me having to upgrade to a faster card next year!

Convict@large

DUH! Sorry about that last gash reply! I need to learn to read or they need to put the message you are replying to on the same screen so I can see what I’m replying to! Ignore that last reply, its still too early for my sleep-deprived brain :slight_smile:

But a even a GeForce256 is rated at 10 million polys per frame max so that would be at 30 fps 10’000’000 x 30 x60 = 18’000’000’000a heck of allot of triangles! So the amount I’m drawing is still pretty small in comparison. I’ll put the fast demo up on my site when I get back so you can see although its a bit of maesh right now :frowning:

Cheers,

Convict@Large www.TheRealityDysfunction.com

> But a even a GeForce256 is rated at 10 million polys per frame max so that would be at 30 fps 10’000’000 x 30 x60 = 18’000’000’000

Re-hum? The GeForce is rated at around 10 million triangles per second, not per frame (unless you have one frame per second :p). Thus i don’t see why you multiply per 30 and then 60?!.

Y.

oh well some much for that theory…

I’ll just keep digging then… :slight_smile:

Convict@Large

>>or they need to put the message you are replying to on the same screen so I can see what I’m replying to!

For the record: They do!!
I can see the thread below while typing in IE 5.