【问题标题】:How do you test an OpenGL application on older GPUs?如何在较旧的 GPU 上测试 OpenGL 应用程序?
【发布时间】:2017-08-08 08:49:20
【问题描述】:

我的所有开发工作都是在一台相当先进的机器上完成的,但我的一些用户使用的是石器时代的机器。虚拟化较旧的操作系统和不同的 CPU 架构很容易,但我还没有找到任何方法来虚拟化较旧的 GPU。

当您开发针对旧版本 OpenGL 的程序时,您如何知道它是否可以在具有旧 GPU(较低 OpenGL 版本和较少可用扩展)的机器上运行?

有 GPU 模拟器吗?关闭 GPU 上某些功能的方法?

跟进:

如何使用为特定版本的 API 生成的扩展加载器?例如,如果我为 OpenGL 版本 2.1 生成 glad 文件,即使我的驱动程序支持更高版本,这是否会限制我的上下文版本?

【问题讨论】:

  • 在着色器顶部附近是 OpenGL 版本的指示器...只需使这些匹配所需的容量...例如 330 核
  • 您在使用它们之前检查哪个版本/扩展“花哨的东西”来自它们,您可能会在您周围的旧机器上尝试它,并且您阅读用户的崩溃报告,而不是工作。如果它不是非常重要的话。对于真正好的测试,您可能需要使用带有实际旧显卡的实际机器。

标签: opengl testing gpu


【解决方案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 就是 nvidiaDirectX 实现中存在错误以进行更改(可用但包含内部泄漏导致随着时间的推移速度变慢和崩溃,因此您需要不时重新启动应用程序,您知道在玩某些游戏 2 小时后会出现深色纹理错误...)

PS。一些 gfx 错误与 gfx 无关,例如 AMD 驱动程序极易受到应用程序中任何地方的内存泄漏的影响(即使它们与 gfx 无关)造成不相关的破坏并且非常难以调试。

相关:

【讨论】:

    【解决方案3】:

    据我所知,不可能涵盖所有可能性。

    开发应用程序时,您最好了解必要条件,包括最低操作系统版本、最低 OpenGL 版本、RAM、VRAM。
    处理核心功能通常不能很好地在硬件中实现......扩展可能是一场噩梦。

    【讨论】:

      猜你喜欢
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多