Random framedrops (in very simple file) and tearing issues

Hey all,

while using aero will guarantee a tearing free operation, it will randomly drop some frames (even if your toe file is outputing 60fps +). But with Aero off, i have a couple of other problems:

  • random framedrops in touch itself (timeslicestep > 2 in perform CHOP)
  • tearing. there seems to be some different behavior depending on if your window COMP is set to “always on top”, if you escape perform mode and get back into it, …

So i did a couple of tests on a single screen system (gtx560ti, win7 64bit, xeon w3530) using driver 285.62 (vsync force on, tripplebuffer off, threated optimization auto, max performance, aero off). Here are the results (0 == no, 1 == yes):

  • Hog means file uses a hog chop (w default settings to simulate some workload)
  • AOT means window COMP was set to open always on top
  • For the tearing and timeslice spike columns, the “startup” sub-column shows the behavior after the file automatically went into perform mode after loading, the “esc/F1 combo” subcolumn shows that things behave differently after escaping and reentering perform mode

chart2.png * sometimes takes a while before it happens, sometimes the tearing is only lasting for a few frames

The above table shows the results for 59.94 hz and 60 hz, but i tried all other values around 60 hz and the issues are still there. Basically there are always random framedrops, and if not, there is tearing

As things behave differently after escaping and reentering perform mode, this whole thing looks more like a touchdesigner bug and not like a driver issue.

If any of you wants to test these files as well, there’s an excel sheet attached to collect your results. Also makes sure that you let each testcase run for ~ a minute , as sometimes it takes a while till a timeslice step spike happens (a counter on the screen will increase) or till tearing starts to happen…
results.xls (8 KB)
testcases2.zip (42.2 KB)

I’ll check this out for sure. Maybe you saw my post in the bugs forum but I’ve been experiencing similar problems. Right now I’m running Aero because the framedrops don’t look as bad as the tearing.

I’ll post my results.

cheers
Keith

Hey Achim,

My first round of tests (I’m not done with this though). Some interesting results

Quadro 6000 using 276.42 drivers. All other settings the same, except using the Video Editing Preset. I need to use Quadros because I know Geforces will tear in many cases, but Nvidia will not tell me why or how to avoid it.

All the 59.94 files had no tears and no drops after running for 6000 frames

All the 60 files had no tears but dropped a frame every 1277-1284 frames, consistently.

What’s interesting with that is that is means that we have a cumulative error that reaches > 1 every 1277-1284 frames.
1 / 1280 = 0.00078125, which is the error per frame.
0.00078125 * 60 = 0.04685, which is the error per second.

This tells me my monitor is running at ~59.95315 hz.

It’s impressive how consistent it is. If I try to run at 59.98, I get frame drops very close to the expected every 2233 frames, although the variance seems a little higher. It’s very regular though.

I also did a test at 60hz where I grabbed the CPU timer value at $AF of 1000 and $AF of 10000. This counter is accurate to nanoseconds. Both times I ran the test I get values of 149999.xx or so, or within 1ms of the expected elapsed time.
Running at 59.94hz I get values (both times of 150137.xx ms) which is a little worse than the expected 150,150 ms, but still less than a frame.
Another test going from $AF = 1000 to $AF = 100,000 at 59.94 gives 1651644.xx which is again within 7ms of the expected 1651651 ms, less than a frame still.
So this tells me we are advancing our clock at the rate that is requested without any errors.

Other notes is that while the Nvidia control panel reports the monitor refresh rate at 60hz, windows reports it at 59hz.
I’m going to start a dialog with Nvidia about refresh rates and see what kind of solution we can come up with. I agree that it’s impossible for a user to figure out the correct monitor FPS. Maybe it’s not the monitor but instead the GPU that had this variance…

Here some of my results. I didn’t disconnect any monitors or remove the second card for the tests. I’m getting another machine next week so I’ll do some more tests then with a single monitor and card.

All the tests were done on a 4.5 ghz quad core i7 machine with 2 Quadro 5000’s installed (driver 276.42) connecting to 6 monitors. 1920by1080 and 1680by1050 GPU0 and 4 1280by1024 on GPU1. Also I was running in Windows basic mode with 3d-Video Editing mode in the Nvidia control panel.

The tearing wasn’t the same as last week before I did a clean reinstall of Nvidia driver and uninstalled the Matrox Dualhead drivers. This week the tearing only occurred on two of the 1280’s connected to a MatroxDualhead connected to the second displayport connector on GPU1. Last week the tearing spanned all 3 or 4 monitors (both ports on GPU1). Also the tearing was different last week, it took a while to start and then moved from the top of the screen to the bottom while on these tests it stayed in the same spot (about a quarter of the way down the screen) and started immediately.

Further information I’ve gotten:

Consumer-level monitors are not required to be perfectly at 60hz, there is a ±0.6hz allowable error (possibly this was a typo in the email I got and the tolerance is 0.06hz). At the very least that means a monitor can run at 59.94hz - 60.06hz and be considered running correctly at ‘60hz’.
So this means we do in fact need to adjust our timeline’s FPS depending on the real refresh rate of the monitor, which is different for every monitor/projector (I expect high end projector to be more accurate though).

In the 290 series of drivers there is a way for me to query the real refresh rate of the monitor but I don’t think we can add a feature that requires such a new driver yet. You can see it yourself in Quadros in the 295 drivers under the ‘View Topology’ section of the Nvidia Driver Control Panel.
The long term solution is to give access to these values (and somehow make it easy to drive the timeline by a certain monitor’s refresh rate).

Do you guys see your frame drops at a regular interval like I do?

I did in some cases.

Does that mean if I reinstall the new 295.73 driver that I’ll be able to see my monitors real refresh rate and then be able to manually set TD’s framerate to the same? I’m just wondering to see if it’s worth installing the driver again today.

Today I noticed some chugging again with Aero on, so I tried Windows basic and classic again and found the video output to be chugging even worse but no tearing (across 3 monitors). I then output a non full screen window and noticed that it was playing better. After that I restarted my machine and ran Aero again (full screen across 3 monitors) and the chugging wasn’t as bad.

Relating though to the not consistent refresh of monitors or projectors I’m considering getting the Datapath X4 because I’ll be able to make a custom EDID for it at my TD processing resolution (1920,480) and output my entire video output out of 1 connector on one card and then use the X4 to scale and split the signal to 3 1024by 768 projectors. Also this might be better for TD locking to the monitor’s (X4) refresh rate because it will only see one monitor also I imagine the X4 will actually run at 60 hz. If I’m using two cards though is it possible for Touch to run on a card without a monitor connected to it using GPU affinity?

@ keith
yes 295 will show you this, but I think this driver has issues with video editing profile in premium mosaic (you might just get a black screen when opening touch). but once you know your refresh rate, you can roll back.

@malcolm
so that’s a quadro only solution, right? Any other way to figure out the refresh rate on a geforce? Cause i couldn’t find a refresh rate / timeline setting on the geforce equipped pc that worked without dopped frames. Could this also be 59.952 (i.e. 3 decimal digits)?

And what about the fact that i get different results after escape and re-enter perform mode?
Can you see any reason why touch behaves differently in these cases?

Also, besides the refresh rate issue, it seems that geforce cards either tear(due to no video editing profile) or they stutter (due to aero), which basically render them useless. Any experience with these issues on ATI hardware?

is that error static or dynamic? I just ran a tool called moninfom which has a realtime edid extraction. Hitting refresh for a few times, these are the results i got
Current frequency… 73,90kHz, 59,80Hz
Current frequency… 73,90kHz, 60,00Hz
Current frequency… 74,10kHz, 59,80Hz
Current frequency… 74,10kHz, 60,00Hz

now i wonder how these changing values affect the problem

All in all i still cannot get a 0 framedrop performance on this monitor using a geforce 560.
I’ll try again n a quadro next week

additional note: if I change the file “testcase__rate_59_94__AOT_1__hog_1.toe” to not open on start, then save/close/reopen the toe file, then i get zero dropped frames (instead it starts tearing after a while). Doing the same with the 60hz files, I still get those dropped files …

I’m wondering why this didn’t happen before and what has changed since it before it happened?

Also what about Windows XP? Is worth installing the next machine with XP will it solve the problems?

The tearing issues are a Win7 issue entirely, but the drops due to monitor rate mismatch must have always been there.

Achim, the fact you see no drops but tearing makes sense, since the drop is caused by a vsync mismatch, so if the window tears it avoids that mismatch and doesn’t drop the frame.

As to why you get different behavior depending on how you open your windows, that’s unfortunately a mystery I can’t get an answer from Nvidia about.

Hi Guys,

Yesterday Nvidia released GeForce 301.24 beta drivers featuring NVIDIA Adaptive VSync and NVIDIA Frame Rate Target options. Short explanation here, geforce.com/whats-new/articl … -released/

NVIDIA Adaptive VSync “disables VSync when frame rates fall below the locked rate, and re-enables it when they return to the locked rate, significantly reducing stuttering whilst still preventing tearing”.

NVIDIA Frame Rate Target allows applications to “to limit application frame rates to a specific, pre-defined frame rate”.

Sounds great on paper, now let’s do some testing :wink:

Jeffers

FYI -

I just ran tests on my ATI card for 20min, zero dropped frames, zero tearing, using ‘testcase__rate_60_AOT_1__hog_0’.

Aero: Windows 7 Basic
Catalyst Driver: 12.1
Wait for Vertical Refresh: Always On
Triple Buffering: On
Win 7 64 Home Premium
Asus G73 w/ Mobility Radeon 5800
Screen Resolution: 1600_900 (60hz)

I think this is Mr. Huang’s not so subtle way to get everyone to buy Quadro :wink:

Contact me if you want additional info. Otherwise save some $$ and give the ATI cards a look.

Jeffers

This might just be your monitor running at 60hz exactly …

I would use ati, but the render picking is not working . And there is no affinity support for ati in touchdesigner? What’s your experience with aero turned on on ati cards? Does aero also randomly drop frames like on nvidia ( not the framedrops we discuss here, i mean the ones where time slice steps don’t spike, you just see the stuttering the rendered output).?

Also, for dual monitor stuff, does touch perform any different with eyefinity vs extended desktop?

Malcolm, I understand why it doesn’t produce a framedrop when it’s tearing, but I don’t understand why it would tear at all. I mean, the touch app itself is also a single window just like a perform window … I thought its only hard to get a tearing free operation if using dual monitors.

Also, do the changing moninfo refresh rates posted earlier make any sense to you?

So I guess we are officially at the point where GeForce cards cannot be used with touch reliably, even if it’s just a single monitor app … Sounds like a good reason to implement renderpick and blobtrack support for ati cards …

huh, actually Aero on or off doesn’t make a bit of difference… no reported frame drops, still no tearing and visually super smooth…

I’ll take a look at moninfo and see if that reveals anything. perhaps laptops have a bit more luck being perfectly synced to 60Hz?

I didn’t do any testing for tearing/stuttering, although from some brief(super preliminary and informal testing) testing this summer the Eyefinity performed very well spanning two and three monitors… and can go up to six, asus.com/Graphics_Cards/AMD_ … 70DC23GD5/

I know you’ve mentioned the render picking before, but it fell through the cracks sorry. I’ll send that to ATI to fix ASAP. As for affinity, as ATI support gets better I expect that will come in also. However if you need affinity then you are already using Quadros anyways, which avoids these issues (or if you do have them, I can get Nvidia to fix them).

That situation will also cause tearing, but for a different reason. There are many things that can cause tearing. I can’t get a straight answer as to why a single monitor, single window tears. Even with Quadros Nvidia won’t tell me why it tears unless you use the Video Editing Preset. It seems like tear-free output should be the default driver behavior.

I’m not sure what to make of that, but it wouldn’t surprise me. A tiny 15 inch broadcast quality LCD monitor costs thousands of dollars. Perfection is super expensive (a broadcast SD (not even HD) video player can go for $13,000!)

Geforces are ‘you get what you get’ purchase. They are super cheap and because of that you are forced to ride the coat-tails of the software that really drives Geforce sales, games. I’ve heard of users putting 3 Geforces into a machine and using them as if they had GPU affinity and getting great results. However that doesn’t mean on the next driver release this behavior totally breaks due to a change the gives certain games better performance.
If you are looking for tear-free, never drop a frame, perfection, you are forced to use Quadros. That is unless ATI ends up being an alternative for that, which I am hopeful for.

But even with a quadro there are tearing issues. Keith seems to have some, and I just ran a file much like the test cases posted here (Basically a 3840x1200 image of a bar moving up down). Using a quadro 6000’ with 276 drivers and the video editing profile, aero off, opening a single window using the bounds mode.

2 identical monitors, but one is connected via a display port to dvi adapter and the other one directly via display port. Will test tomorrow with both monitors using dp to dvi adapters…

With extended desktop, I get tearing on the second monitor. Besides the tearing, the ramp moves smoothly on both screens.

With a 2x1 mosaic, I get tearing and stuttering on the second monitor. The first monitor is smooth.

If I just open the window on the second monitor, it’s tear free but stutters heavily

With Quadros I can put you in touch and help you discuss the issues directly with Nvidia.
I would first try your tests with identical connectors to rule that out. If you get the same results then lets get on email with Nvidia and sort this out.

I would like to get in on the discussion with Nvidia also. I imagine this (real tech support) is one of the reasons we are paying a premium for the Quadro’s.

Keith, can you send me an email with the current state of your issues? I think last I heard you found a solution you were happy with.