Display lists: GF2mx vs. Radeon 9000 Pro

I just upgraded my graphics card from a 32mb geForce 2 MX to a 64mb Radeon 9000 Pro. My processor is a 566mhz P3 512k. I’m working on a vehicle combat game in OpenGL that uses display lists to display the cars, tires, etc. On the gf2mx, my engine ran at a cool 120fps. On this new Radeon 9000 Pro(with the newest drivers), the speed dropped down to 24fps.

Now, my cpu usage has gone from 50-60% to 100% while the game is running. I narrowed the whole problem down to the display lists. If I turn off display lists, the engine flies along at 160+fps. If I turn on one single 1000 polygon display list, the frame rate drops and the cpu usage skyrockets.

The engine renders between 20,000 and 60,000 polygons per frame. Display lists only account for 4,000 of those polygons.

So, here are my questions. Are the Radeon drivers not optimised for display list usage?
Should I go ahead and make the jump to vertex arrays? Even single program I’ve used has been 2x-4x faster on the 9000 pro, except for my 3d engine.

Okay, I’ve got the problem narrowed down even further. Basically, the engine slows to a crawl when I try to render the same display list more than one time.

Here’s what I’m doing:

Call the display list for the car
enable blending
set GL_DEPTH_MASK to false and glDepthTest to GL_EQUAL
bind an environment map texture
call the display list for the car
bind a 2nd environment map texture
call the display list for the car
set glDepthTest to GL_LESS
set GL_DEPTH_MASK to true
disable blending

So,if I only draw the car one time(without the other 2 environmental map textures), the engine tops out at over 160fps. Add in 1 extra pass, and the engine slows down to 24fps. Add the 2nd pass, and it stays at 24fps. I’ve tried disabling blending, to see if it was a weird blending problem, and the same thing happens. I’ve tried using polygon offset instead of disabling the depth mask and the problem is still there. Has anyone ever come across this problem before?

Sounds like a driver bug, try talking with ATI developer relations.

I had dimiliar problem with my skybox list In list 15FPS, with immediate mode 70FPS on GF2GTS. But I think that was true for TNT2 too. I guess depth mask isn’t the best thing for lists