views:

192

answers:

2

I have a simple fade in animation on a large Rectangle inside a ScrollViewer and I notice a significant drop in performance when I increase my windows size past a certain size.

  1. resolution: 1650x1256 - still feels snappy and fluent (framerate between 50 and 60)
  2. resolution: 1820x1256 - stutters and is pretty much unusable (framerate between 7 and 15)

What surprises me is that there doesn't seem to be a linear decline in performance but a rather sudden drop.

Also using Wpf Performance Tool does NOT show any software rendering and indeed my CPU doesn't seem to be doing much when the animation runs.

I would like to understand the cause of this, any hints would be appreciated.

+1  A: 

My guess is that you are running out of GPU memory at that point, so DirectX is dropping back to software rendering.

When you say a "viewport", do you mean a ViewPort3D, or do you mean a Viewbox? If it is a Viewport3D, is the animation really needing the 3D processing? If not, you could use 2D and use a transform to simulate 3D the way Flash applications have to do.

Ray Burns
sorry, I meant a ScrollViewer - I am not using any 3D features; is there a way I can see if it drops to software rendering?
Patrick Klug
will try to use perforator and see if I can find anything.
Patrick Klug
as far as I can see in the Wpf Performance Tool it does NOT fall back to software rendering.
Patrick Klug
+2  A: 

Another possibility is that you are running out of dedicated video memory at that resolution, so DirectX is transferring a lot of data back and forth between video memory and main system memory on every frame.

Is there any way you can try a different graphics card, or one with more RAM, to see if the problem changes?

Also, does your GPU have a way to configure how much system RAM is reserved as video memory? Some do.

Ray Burns
After further testing, this seems to be the case. I don't think there is any solution other than updating the video memory.
Patrick Klug