I our software (used to create multimedia presentations) we currently have a problem wich probably triggers a driver bug or something like that.
We use DirectShow for playing videos and we have a custom made DirectShow renderer that takes the video frames from the decoded video stream and puts it into our DirectX9 rendering engine.
The problem is that after playing video for some time (from just right away to 10 to 15 minutes) the computer either totally freezes (hard reset needed) and/or IDirect3DDevice9::Present() fails with error codes. The first Present() that fails gets the error code: 0xC0262111 (ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION) and after that all other Present()-calls return 0x80004005 (E_FAIL).
It looks like the problem occurres when we try to lock the texture to update its contents. Example:
hr = D3DXLoadSurfaceFromMemory(surface, NULL, NULL, pBuffer, TextureFormat, BitInfo.biWidth*4, NULL, &srcrect, D3DX_FILTER_NONE, 0);
We have tried this on five computers with the same hardware configuration and on two other computers with different but similar hardware. The current hardware configuration is: Radeon HD4670 1GB, Asus P6T motherboard, Core i7 920, 3 GB RAM, Windows 7 32 bit. The other hardware tested was: Radeon HD5670 1GB, Asus Rampage III Gene motherboard, Core i7 950, GB RAM, Windows 7 32 bit.
When i put a similar performing nVidia card in the computers the problem goes away.
The driver versions currently in use are: 8.801-101125-109686E
although we had the same result with older versions and the latest version available.
I have not yet been able to reproduce the problem in a smaller test application.
Any ideas what we could do to find the real cause of this problem?