识别崩溃的图形驱动程序

Recognize crashed graphics driver

本文关键字:驱动程序 图形 崩溃 识别      更新时间:2023-10-16

在我的笔记本电脑(dell xps 15,win8.1 x64,nvidia/intel gpu)上,我最多可以同时使用三个显示器,但如果我的笔记本计算机因为节能而禁用显示器并重新打开,如果你移动鼠标,有时图形驱动程序会崩溃并恢复。

一点也不神奇,但有时图形驱动程序无法完全恢复-除非我创建OpenGL上下文,否则它会正常工作-上下文将成功创建,一切正常-但这是标准的OpenGL 1.1 GDI上下文,并且在OpenGL 1.1之后设计的所有未被GDI覆盖的函数指针都只是空指针,因此应用程序在加载资源时会立即崩溃。

我是否有可能检测到一个崩溃的驱动程序,并告诉用户重新启动她/他的机器(这已经是我针对这个问题采用的解决方案了),或者我应该简单地告诉他/她,可能出了问题,或者他们的OpenGL驱动程序版本不受支持?

哦,英特尔和NVIDIA gpu都无法创建更新的OpenGL上下文。。确实有奇怪的行为。。

驱动程序崩溃在WDDM(Windows Vista/7/8)中"无缝"处理。通常,当显示器驱动程序重置时,屏幕会变黑一段时间,然后系统托盘中会弹出一条小消息,告诉您发生了这种情况。NV和AMD驱动程序都是这样做的。也就是说,您所描述的行为也经常发生在NV驱动程序中——在完全重置之前,无法创建ICD OpenGL上下文的这种状态似乎是NV独有的。最好的解决方案是在软件启动时检查GL版本/扩展支持,如果实现不充分,则打印错误。

通常,假设您的应用程序不是驱动程序重置的原因,那么在OpenGL中,驱动程序重置后,您的应用软件将继续运行。上下文重置在GL中的后台处理,驱动程序将为您重新加载所有资源。如果使用健壮的上下文(新的WGL扩展),您可能能够检测到这种情况,但这听起来更像是软件未运行时发生的问题。

但它是一个标准的OpenGL 1.1 GDI上下文,并且在OpenGL 1.1之后发明的所有未被GDI覆盖的函数指针都只是空指针,因此应用程序在加载资源时会立即崩溃。

是否未测试所需扩展/OpenGL版本的可用性?你不测试实际获得的函数指针是否有效吗?

对我来说,听起来你只是盲目地假设OpenGL扩展总是加载得很好。但是,如果这些检查未能向用户提供有意义的错误消息,则必须执行这些检查。