Original Post
Hi all, I'm trying to get a game to work on my laptop (Guild Wars). I've installed it all fine, and it runs - but it runs at 2 FPS with the lowest graphics settings, using PIX to measure FPS. I've checked through PIX, and the game isn't doing anything that odd - it creates and destroys 3 vertex buffers per frame, but I've written a proxy d3d9.dll which recycles those three buffers, and it doesn't affect the frame rate at all. The game itself uses VS 1.1 and PS 1.1, and my laptop's graphics chipset (A crappy Intel express 965M) claims it can do VS 3.0 and PS 3.0 (Although no hardware vertex processing available). It does make around 30 VB locks, around 40 SetPixelShader calls and around 160 SetTexture calls per frame, but that seems perfectly reasonable to me. I've used my proxy DLL to try a few things; none of which make any difference to the frame rate: Replacing all SetTexture() calls to set a 2x2 texture (So it's not texture-bound) Forcing everything to fail the Z-test (ZFUNC=NEVER) Using a 1x1 scissor rect The only thing I've tried so far that seems to make a difference is not making any DrawPrimitive/DrawIndexedPrimitive calls - that makes the FPS go up to around 80 FPS. I've checked, and the MinIndex and NumVertices parameters passed to DP/DIP are sane, so it's not as if D3D is transforming unnecessary vertices. My laptop is usually pretty capable, it's able to run Red Alert 3 quite happily, and my girlfriend's laptop is very similar to mine, and it gets around 30 FPS in Guild Wars quite happily. I've run Process Monitor to see if the game is doing anything odd, and it's not, and there's very little hard drive access, so I don't think it's swapping textures in and out. So, does all this imply that I'm vertex shader bound? Does anyone have any ideas for things I could try to narrow down the cause of the slowdown and find a possible solution? I know this is technically a tech support question, but it's sort of programming related [smile]