This is an oddly specific question; I wasn’t sure which forum to post it in.
I have a Radeon 9600 that has been running a VGA monitor forever. I recently added a second VGA monitor to the DVI port on the card (using a DVI/VGA adapter). When I run Panda using the pandadx8 pipe outside fullscreen mode (but with the Panda window constrained to a single monitor), my framerate crashes through the floor—10FPS at any window size near the size of one screen, growing faster as the window size decreases. Using the pandagl pipe I do not see this performance drop; things hum merrily along around 60FPS.
This is all on Windows XP (sp2) using the 1.2.3 engine. My questions are twofold:
Is this a known / expected behavior with Panda? My hunch is that it isn’t a Panda issue so much as a performance issue with this card / driver /dual-monitor combination.
Do we have any technophiles in the forum community that could help me understand what it is about the Radeon 9600 that could be causing this issue? I’m very new to the differences between OpenGL and DirectX; I’m a bit stumped as to why there would be such a massive performance difference upon attaching a second monitor to this video card.
This is a Windows thing. Try dragging the window to the other monitor; I predict your framerate will return.
What’s happening is that when Windows thinks you are rendering to the “wrong” monitor–that is, to a monitor that it thinks the card is incapable of rendering to directly–it will actually render offscreen, and then blit the resulting image into the window each frame. Thus, the frame rate plummets, in proportion to the number of pixels in your window.
This only seems to happen in DirectX mode. For some reason, OpenGL behaves differently, and may be able to render with the hardware on either monitor.
It might be that we are using the wrong DirectX commands to open a window; but I don’t know enough about DirectX to be able to say this for sure.
I’ll take a look into comparing the DirectX init methodology to the OpenGL init methodology sometime soon and see if I can find anything that catches my eye. It’s probably a good place to start wrapping my brain around DirectX in any case.
In this particular configuration, I seem to lose framerate in DirectX regardless of which monitor the window initially spawns on or which monitor I drag it to; perhaps DirectX is having to give us a lowest-common-denominator graphics configuration so that it doesn’t get confused when the window is dragged around? I’ll see if I can put some more research into this. In any case, running under OpenGL fixes my immediate problem; hooray for the ‘PA’ in Panda!