2012-11-30 336 views
1

我目前正在OpenGL中編寫3D模型渲染器。不幸的是,它會導致圖形驅動程序崩潰,當我告訴它渲染超過幾個VBO s。NVIDIA OpenGL驅動程序丟失連接

以下是錯誤消息:

The NVIDIA OpenGL driver lost connection with the display driver 
due to exceeding the Windows Time-Out limit and is unable to 
continue. 
The application must close. 


Error code: 7 
Would you like to visit 
http://nvidia.custhelp.com/cgi-bin/nvidia.cfg/php/enduser/std_adp.ph 
p?p_faqiq=3007 for help? 

我有一個單一的VBO,大約500KB的,我只能使一小部分(只有模型的幾個網格)。但是,超過20個(71個),它會死亡。我的電腦只有一年 - 聯想Y570與NVidia 555M與所有驅動程序最新等

我使用glDrawElementsBaseVertex(即可編程管道),雖然這個問題只發生,如果我不使用着色器程序。一旦我添加着色器,問題就會消失。然而,我仍然想知道爲什麼我的程序運行時,如果它的工作量非常小,但會導致GPU在出現更高要求時出錯(「更多」甚至不是250KB)。這似乎與程序崩潰並給我一個錯誤非常不同。

編輯:代碼在glDrawElementsBaseVertex上崩潰,但不會在我的嵌入式英特爾圖形上運行,因爲它對OpenGL的支持不包括我的程序的其他方面。我的NVidia驅動程序是9.18.13.697。

+1

我不是100%確定,但超時限制可能是Windows允許任何程序渲染單個幀的3秒。但是,您的500KB VBO可能會在幾毫秒內呈現,不是嗎? – Calvin1602

+0

是的,我讀的是2或3秒。我只是不知道背景中發生了什麼,使它變得如此緩慢。 – GraphicsMuncher

+0

問NSight:https://developer.nvidia.com/nvidia-nsight-visual-studio-edition – Calvin1602

回答

0

看起來你的渲染比Windows默認設置需要更多的時間。沒有你的VBO和着色器的進一步細節,很難說什麼延長了渲染的時間。但是,您至少可以增加默認延遲時間並查看您的渲染代碼是否正確完成。要在Windows中執行此操作,您應該調整看門狗定時器,默認情況下,該定時器會導致需要超過2秒的着色器程序返回。

您可以更改計時器參數以滿足您的需求。當計算花費的時間比渲染時長時,我們通常採用激烈的GPU計算(如CUDA)。這些參數由註冊表關鍵字設置。您正在尋找的註冊表項是TdrDelay。然而,你應該設置以下兩個註冊表項來正確地做到這一點(TdrDdiDelay必須等於或大於TdrDelay以上):

TdrDelay

KeyPath : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers 
KeyValue : TdrDelay 
ValueType : REG_DWORD 
ValueData : Number of seconds to delay. 2 seconds is the default value. 

TdrDdiDelay

KeyPath : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers 
KeyValue : TdrDdiDelay 
ValueType : REG_DWORD 
ValueData : Number of seconds to leave the driver. 5 seconds is the default value. 

閱讀以下鏈接可獲得來自Microsoft的更多詳細信息,並且在執行此操作時請注意: TDR Registry Keys (Windows Drivers)

0

我在使用NVS 5200M Nvidia顯卡+最新驅動程序的Latitude e6530筆記本電腦上遇到類似問題。爲了解決這個問題,我必須進入BIOS並將視頻的「Optimus」複選框設置爲ON。

0

當我的Nvidia顯示卡的加載超過閾值時,使用Bluestack時出現同樣的問題。

我已經嘗試了從更新驅動程序,設置TdrLevel,TdrDelay,將任務管理器中的程序優先級設置爲Realtime,使用Nvidia控件調整高性能,線程優化關閉,更改視頻ControlSets註冊表,超頻和增加電壓,他們都沒有工作。

最終的解決方案傾向於使用像EVGA Precision X這樣的調整工具來降低顯示卡的電壓,例如我的GTX550 Ti是1050mV,我將它降低到962mV,顯示器非常穩定,沒有錯誤7 。

發生這種情況可能是因爲Nvidia爲某些GTX顯卡系列的出廠值設置了過高的電壓,這會在負載很高時導致顯示不穩定。