We're using native C++ & DirectX 9 and I'm looking for a way to reduce our
the shader load times.
We have a relatively large number of shader permutations in our engine and
we probably load upwards of 10,000 small permutations to the card at
startup. IO is not a problem -- it's only a 2 or 4 MB and the data is
streamed in asynchronously -- the real hitch seems to be D3D.
The hitch is surprisingly bad on my modern workstation with a Radeon
X1800 -- it can take upwards of 18 seconds spread over a few frames to shunt
that mess up to the card. In comparison, on one of the consoles we're
targetting we can push the same shaders to the card in less than 1ms (the
other has UMA, so shaders are registered in place instantly).
I'm running very recent Radeon drivers, most recent DirectX SDK developer
runtime but using retail D3D9, no validation or anything. I'm reasonably
confident our artists who aren't using the developer runtime also experience
this problem.
18 seconds.
The stall seems to happen in CreatePixelShader & CreateVertexShader -- does
anyone know any tricks to lube up the driver so it'll accept a that much
love all at once?
peace
|