Heavy PixelBender calculations crash nvidia video driver
Felix Dames Nov 2, 2010 12:59 AMWhen ever I do heavy calculations with Pixelbender mostly when doing long for loops the video driver crashes with the following error message:
Error message is in german because of my german operation system
Der Anzeigetreiber wurde nach einem Fehler wieder hergestellt
Der Anzeigetreiber "NVIDIA Kernel Mode Driver, Version 258.69" reagiert nicht mehr und wurde wiederhergestellt.
English translation of the error:
The display driver has been restored after a failure
The display driver "NVIDIA Kernel Mode Driver, Version 258.69" stops responding and has recovered.
For testing and confirming this problem I created a simple Pixelbender Blur Filter with a for loop.
With higher setting (BlurAmount) of this filter my video driver crashes!
My system specs:
Windows7 64bit
Intel Core 2 Extreme CPU Q9300 @ 2.5ghz
8GB Ram
nVidia Quadro FX 2700M 512MB Driver Version 258.69
On my older system (Windows Vista but same hardware) the error didn't show up! But I can not test this anymore because that system does not exist anymore...
Maybe someone else could test this filter on there systems if this error is hardware, Windows7, nVidia driver or pixelbender related?
The error only comes up in pixelbender all other software with heavy GPU usage (3ds Max, Games .... ) works fine on my system.
When using the filter in After Effects it also crashes AE.
I am working on some really nice filters but have not released them yet because of this instability problem.
Any help or answer would be nice!
Felix
Here is the filter for testing:
<languageVersion : 1.0;>
kernel SimpleBlur
< namespace : "Felix Dames";
vendor : "Felix Dames";
version : 1;
description : "Simple Blur";
>
{
input image4 src;
output pixel4 dst;
parameter float bluramount
<
minValue: float(0.0);
maxValue: float(1000.0);
defaultValue: float(0.0);
description: "Blur Amount";
>;
void evaluatePixel()
{
float2 pos = outCoord();
pixel4 pixel;
float pcounter = 0.0;
for (float iy = -bluramount ; iy <= bluramount; iy += 1.0)
{
for (float ix = -bluramount; ix <= bluramount; ix += 1.0)
{
pixel = pixel + sampleNearest(src, pos + float2(ix,iy));
pcounter += 1.0;
}
}
pixel = pixel / pcounter;
dst = pixel;
}
}


