识别崩溃的图形驱动程序
Recognize crashed graphics driver
在我的笔记本电脑(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扩展总是加载得很好。但是,如果这些检查未能向用户提供有意义的错误消息,则必须执行这些检查。
- Mongodb c++驱动程序:如何查询元素的数组
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 使用mongocxx驱动程序时包含头文件问题
- void*到驱动程序中的UnicodeString
- C++驱动程序看不到头文件
- 用于创建/注册虚拟存储设备的 IOKit 驱动程序
- 员工测试驱动程序数据结构
- 获取 OID(类型::b_oid)作为 MongoDB C++驱动程序中的字符串
- 如何在 c++ 中映射驱动程序?
- 如何在 cuda 中将 kd 树从主机复制到驱动程序
- Visual Studio 如何在内核模式驱动程序项目中使用C++标准库?
- 为什么我的驱动程序只读取部分字符串?
- 使用 SetupAPI 找出活动图形驱动程序
- 图形驱动程序如何通过程序从CPU到GPU进行通信
- 识别崩溃的图形驱动程序
- AntTweakBar导致图形驱动程序崩溃
- 图形驱动程序会导致我的应用程序内存泄漏吗
- 设备驱动程序和图形的类设计
- 使用IBM 3514 Borland图形接口驱动程序在高分辨率模式下Turbo c++在Windows 7 64位操作系
- 我如何确定为什么OpenGL入口点丢失后更新我的图形驱动程序