如何在较旧的 GPU 上测试 OpenGL 应用程序?
Posted
技术标签:
【中文标题】如何在较旧的 GPU 上测试 OpenGL 应用程序?【英文标题】:How do you test an OpenGL application on older GPUs? 【发布时间】:2017-08-08 08:49:20 【问题描述】:我的所有开发工作都是在一台相当先进的机器上完成的,但我的一些用户使用的是石器时代的机器。虚拟化较旧的操作系统和不同的 CPU 架构很容易,但我还没有找到任何方法来虚拟化较旧的 GPU。
当您开发针对旧版本 OpenGL 的程序时,您如何知道它是否可以在具有旧 GPU(较低 OpenGL 版本和较少可用扩展)的机器上运行?
有 GPU 模拟器吗?关闭 GPU 上某些功能的方法?
跟进:
如何使用为特定版本的 API 生成的扩展加载器?例如,如果我为 OpenGL 版本 2.1 生成 glad 文件,即使我的驱动程序支持更高版本,这是否会限制我的上下文版本?
【问题讨论】:
在着色器顶部附近是 OpenGL 版本的指示器...只需使这些匹配所需的容量...例如 330 核 您在使用它们之前检查哪个版本/扩展“花哨的东西”来自它们,您可能会在您周围的旧机器上尝试它,并且您阅读用户的崩溃报告,而不是工作。如果它不是非常重要的话。对于真正好的测试,您可能需要使用带有实际旧显卡的实际机器。 【参考方案1】:ubuntu
sudo add-apt-repository ppa:paulo-miguel-dias/mesa
sudo apt update
sudo apt upgrade
如果发生冲突,请使用 dpkg -r ...
。
说“mesa-vulkan 需要 mesa9,所以没有安装任何东西”
sudo dpkg -r mesa-vulkan
退出。
export LIBGL_ALWAYS_SOFTWARE=1
.....
在终端中
【讨论】:
这与 OP 问题有什么关系?【参考方案2】:尝试来自 nvidia 的 NVEmulate 我很久以前就开始使用它来模拟我没有可用的较新的 GPU,但它也可以反过来使用(降级你的 GPU) .它只模拟 nvidia GPU 的每个版本的 exe 支持不同的芯片。
您的问题是在旧 gfx 卡上只有旧版本的 gfx 驱动程序,而这些通常是主要问题而不是 gfx 卡本身。除非使用适当的模拟器,否则您根本无法测试...因为旧驱动程序与新卡不兼容,反之亦然。
我正在解决这个问题,方法是关闭诸如 Intel HD 或 GLSL 等“坏”卡的多上下文以及旧 ATI 的一些扩展等高级功能 因为您在 Windows 上拥有所有古怪的 OpenGL 实现......每个品牌都有自己的怪癖,如果您使用的是 OpenGL,我建议以 nvidia 为目标GPU 的。公平地说,AMD 真的挺身而出,让他们的(以前的 ATI)卡可用,而 ATI 多年来一直未能做到)。如果您的目标是 DirecX,那么 AMD 就是 nvidia 在 DirectX 实现中存在错误以进行更改(可用但包含内部泄漏导致随着时间的推移速度变慢和崩溃,因此您需要不时重新启动应用程序,您知道在玩某些游戏 2 小时后会出现深色纹理错误...)
PS。一些 gfx 错误与 gfx 无关,例如 AMD 驱动程序极易受到应用程序中任何地方的内存泄漏的影响(即使它们与 gfx 无关)造成不相关的破坏并且非常难以调试。
相关:
What is the proper OpenGL initialisation on Intel HD 3000? Determine Intel HD Graphics Card Version Via WinAPI bds 2006 C hidden memory manager conflicts【讨论】:
【参考方案3】:据我所知,不可能涵盖所有可能性。
开发应用程序时,您最好了解必要条件,包括最低操作系统版本、最低 OpenGL 版本、RAM、VRAM。 处理核心功能通常不能很好地在硬件中实现......扩展可能是一场噩梦。
【讨论】:
以上是关于如何在较旧的 GPU 上测试 OpenGL 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
如何在较旧的IOS /旧浏览器上使用Graphql Vue Apollo?
在较旧的 Postgres (9.4) 上使用 Django 3+
为啥在较新的 Android 设备上预检失败,但在较旧的设备和台式机上却没有?