I posted this in drivers (https://forums.geforce.com/default/topic/984429/geforce-drivers/d3d12-samples-low-framerate-on-nvidia/), since I suspect this to be a driver issue. However, I was told there I should post it here so, here you go:
I am playing around with some d3d12 development and most of it has been going pretty smooth.
My program runs fine on my intel GPU (HD 4600), but that GPU is lacking the power for the things I want to do.
So naturally I switched to my more powerful GTX 860m in my laptop (Lenovo Y50). However, I noticed that everything ran far slower running my Nvidia card, which makes no sense since it’s supposed to be a lot faster.
To rule out that it was not my code that was causing this, I ran the D3D12 sample programs (https://github.com/Microsoft/DirectX-Graphics-Samples/tree/master/Samples). The issue also happens when I run these. I added frame time measuring using QueryPerformanceCounter, and what I found is that every frame it will run slower. Even for the HelloWindow program which just clears the screen. Right away the delta time between frames is over 1 ms, while on intel this is about 0.5 ms. After 30 seconds the delta time goes up to 5 ms and after 1 minute it hits 8 ms. I once let it run for about 10 minutes, the frame time goes to values between 20 and 25 ms.
Another thing I have also noted is that every frame I get a message in my output window in Visual Studio that ‘the thread <some_hex_code> has exited with code 0 (0x0)’. That does not seem like a good thing, since spawning a thread is a fairly expensive operation.
When I profile the applications it shows a big hotspot on the Present function.
Does anyone else have this issue, or know what is causing this?
I tried it with the following drivers: 376.33, 376.19, 372.90