2012-11-30 7 views
1

현재 OpenGL에서 3D 모델 렌더러를 코딩 중입니다. 불행히도, 그래픽 드라이버가 약간 VBO 이상을 렌더링하라고 말하면 충돌이 발생합니다. 여기 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? 

내가 500킬로바이트 주위의 단일 VBO를 가지고 있고, 나는 단지 그것의 작은 부분 (모델의 몇 메쉬)를 렌더링 할 수 있습니다. 그러나 약 20 명 (71 명 중) 이상이 사망합니다. 내 컴퓨터는 1 년 전인 NVIDIA 555M이 장착 된 Lenovo Y570과 최신 드라이버가 모두 포함되어 있습니다.

glDrawElementsBaseVertex (프로그래밍 가능한 파이프 라인)을 사용하고 있습니다. 사용하지 않으면이 문제가 발생합니다. 셰이더 프로그램. 셰이더를 추가하면 문제가 사라집니다. 그러나, 나는 여전히 내 프로그램이 매우 작은 워크로드를 가지고있는 이유를 알고 싶지만 GPU가 더 까다로워 질 때 (더 많은 것은 250KB가 아닌) 오류가 발생하게 만든다. 이것은 프로그램과 충돌하여 오류가 발생하는 것 같습니다.

편집 :이 코드는 glDrawElementsBaseVertex에서 충돌하지만 OpenGL에 대한 지원이 내 프로그램의 다른 측면을 다루지 않기 때문에 내장 된 Intel 그래픽에서 실행되지 않습니다. 내 NVidia 드라이버는 9.18.13.697입니다.

+1

100 % 확신 할 수는 없지만 Windows에서 모든 프로그램이 단일 프레임을 렌더링하도록 허용하는 시간 제한은 아마 3 초입니다. 하지만 귀하의 500KB VBO는 아마 몇 밀리 초 이내에 렌더링됩니다, 안 그래? – Calvin1602

+0

그래, 내가 읽은 것보다 2 ~ 3 초. 나는 천천히 진행하기 위해 백그라운드에서 진행되는 일을 단지 모릅니다. – GraphicsMuncher

+0

Ask 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 사용과 동일한 문제가 있습니다.

나는 비디오 ControlSets, 오버 클러킹 및 증가 전압의 레지스트리를 변경, 높은 성능을 조정할 엔비디아 컨트롤을 사용하여, 실시간으로 작업 관리자에서 프로그램의 우선 순위를 설정, TdrLevel, TdrDelay 설정, 드라이버를 갱신에서 모든 방법을 시도 최적화를 스레드했다 , 그들 중 누구도 일하고 ​​있지 않습니다.

최종 용액 내 GTX550는 TI는 1050mV이다 예컨대 EVGA 정밀 X 같은 트윅 도구를 사용하여 디스플레이 카드의 전압이 낮은 경향 I는 962mV로 감소 및 디스플레이가 매우 안정하였고, 오류 없음 7 그후 .

Nvidia는 부하가 높을 때 불안정한 렌더링을 제공하는 GTX 카드 계열의 전압을 너무 높게 설정했기 때문에 이러한 현상이 발생할 수 있습니다.

관련 문제