Proton: 【功能请求】:镓九补丁

创建于 2018-08-22  ·  123评论  ·  资料来源: ValveSoftware/Proton

许多(较旧的)游戏仍在使用 dx9。 为 AMD 和 Intel GPU 用户使用 Proton 的 Gallium Nine 补丁在 Linux 下获得接近本机的性能是否可行? 与使用 Proton 进行 Steam 游戏相比,我发现使用带有 Gallium 9 补丁的普通葡萄酒玩刺客信条 1 等老游戏时的性能要好得多。

Feature Request

最有用的评论

这是应该考虑的问题,我们应该能够仅通过环境变量启用 gallium 9,而无需求助于 hacks(例如 protontricks)。

它很容易修复(你们已经有很多分支和解决方法来解决这个问题),Gallium Nine 现在有更好的 GPU 支持(现在可以与 Intel 最新的驱动程序一起使用),并且比 DXVK 和 wined3d 提供 1.5-2 倍的性能提升。

并且您已经收到了大量关于通过使用九号镓提高兼容性的游戏报告。

https://github.com/ValveSoftware/Proton/issues/173#issuecomment -499869941
https://github.com/ValveSoftware/Proton/issues/255#issuecomment -415997284
https://github.com/ValveSoftware/Proton/issues/355#issuecomment -415972910
https://github.com/ValveSoftware/Proton/issues/554#issue -354016973
https://github.com/ValveSoftware/Proton/issues/770#issue -354455950
https://github.com/ValveSoftware/Proton/issues/1073#issuecomment -473703760
https://github.com/ValveSoftware/Proton/issues/2704#issuecomment -518029014

我知道这对您来说可能不是优先事项,因为这仅适用于旧游戏,但是拜托,有大量优秀游戏将受益于九号镓。

所有123条评论

是一个更好的选择。 我听说它会合并到 DXVK(最终),所以我们将涵盖从 9 到 12 的所有 D3D 版本。无论如何,旧版本不需要 Vulkan 的功能,我相信 D3D 8 游戏甚至可以在软件渲染器上运行在现代硬件上 60 FPS。

很有意思! 你在哪里发现它会被合并到 DXVK?

找不到任何关于它的信息,所以我可能会误会。 它可能不会直接合并到 DXVK 中,而是与其一起支持或合并到 Wine 中。 我依稀记得这两个项目在同一上下文中提到(这并不奇怪)替换 D3D=>OGL 翻译或类似的东西。 无论如何,我认为 Vulkan 的开销与 Gallium Nine 直接方法相比可以忽略不计,但好处是显而易见的——所有玩家都可以使用它,而不仅仅是那些有 FOSS 驱动程序的玩家。 并且它可以进一步推到 Windows 本身,以便 Windows 用户可以运行具有更好性能的游戏,因为 CPU 利用率更高,或者根本运行它们,因为一些较旧的游戏不再在现代 Windows 上运行,而是在 Wine 上运行。

我同意 VK9 或类似的东西将是最好的解决方案/实现。 然而,据我所知,当前版本的 VK9 仍然是一个概念证明,并且支持的游戏很少,如果有的话。 它只能渲染一些简单的 directx9 测试。

Gallium Nine 补丁已经准备就绪,经过许多玩家的充分测试,并提供(接近)原生性能。 实现这一点相当简单,因为补丁已经存在。 在 VK9 成熟之前,对于所有 AMD/Intel 游戏玩家来说,这将是一个非常受欢迎的补充。

VK9 距离完成还有很多年,我认为即使是 d3d-pba 的开销也可以被认为是“可以忽略不计的”。
如果有的话,我希望质子(但即使是上游葡萄酒)有一些优先事项。
说,首先是原生 (gallium) 或 vulkan (dxvk),然后是另一个,最后但并非最不重要的 wined3d(因为不是每个 gpu 都支持 vulkan)

ps 九不适用于英特尔用户

由于 Steam 上仍有数百款 Direct3D 9 游戏在玩,而且 Gallium Nine 已被证明比传统的 d3d9 Wine 更高效,因此至少通过 user_setting.py,它应该是一个可选功能。

我宁愿将 VK9 与 DXVK 合并。 所以他们有一个统一的 vulkan 覆盖范围。

当然,在理想的世界里。 但到目前为止,VK9 还没有运行任何一款游戏,并且仅处于概念验证阶段。 它可以运行一些简单的 dx9 测试,仅此而已。 此外,从事它的人认为这是一个业余爱好项目,并没有像开发 DXVK 的人那样投入那么多的工作。 VK9 准备好投入使用可能需要数年时间。 同时,为什么不为 AMD 用户使用经过充分测试和完全完成的补丁呢?

我同意 AMD mesa 用户应该可以使用 Gallium 9 补丁。 它是 mesa 的一部分,我们只需要 wine 版本就可以使用它。

同意。 谁知道呢? 也许在不久的将来,受益的不仅仅是 radeonsi 和 nuveau?
https://www.phoronix.com/scan.php?page=news_item&px=Intel-Iris-Gallium

我自己在这方面取得了很多成功,补丁维护得很好。 Mesa 软件包建立在 openSUSE 之上,并且所有这些都可以协同工作。 通常从可玩的大量口吃变为丝般流畅,而其他游戏只是黑屏。 必须是可切换的或两个版本的 wine 或类似为支持的游戏提供的默认设置。

以我的经验来看,九号镓简直是太棒了。 很高兴看到它包含在 Proton 中。

我个人投票支持所有 Vulkan 方法。

@ shoober420我最终也希望如此。 但是一个 dx9 到 vulkan 翻译层的工作即使有的话也需要一年的时间才能完成。 为什么不让 AMD 用户通过经过充分测试并完全完成的九号镓补丁享受原生 dx9 性能呢? AMD 用户只需将它们合并即可立即享受本机性能。

@shoober420我想我们都更喜欢质子的路线。 这是合乎逻辑的一步。 我们并没有要求 Valve 放弃 d3d9 的 vulkan 实现。 我们要求他们允许基于开放镓的驱动程序的人们使用他们已有的驱动程序。 Gallium 9 已经是我们驱动程序堆栈的一部分。 wine 的“Gallium 九补丁”只是跳过默认的 d3d9 api 转换为 opengl,而是将 api 调用直接提供给 gpu。 避免因 api 转换而导致的性能损失。

@Mushoz @Xalphenos

我明白你的意思,你们都是对的。 我不知道 VK9 离得那么远。 然后我支持选择更多选项。 有一天我可能会使用 AMD 或 Intel。

我完成了为 openSUSE 构建 Wine、staging 和 9 个变体的所有工作。 基本上,只需要应用来自https://github.com/sarnex/wine-d3d9-patches的相关补丁集并像往常一样构建。 所以我们需要编译wine 两次并为特定的二进制文件提供一个选项。

作为参考, openSUSE/wine包构建了所有四种类型的酒。

  • 葡萄酒
  • 酒九
  • 葡萄酒分期
  • 九级酒

不确定与葡萄酒分期相关的质子情况如何。 如果没有其他人得到它并且 Valve 不反对,我可能会认为这是刺伤,但 Steam 需要一个 UI 选项来真正添加润色。

你在想什么是#22。 可能有某种机制可以添加自己的运行时,但暂时未知。

但对我来说,葡萄酒和质子应该有一个优雅的回退机制。 从 vulkan 到 gallium,再到 opengl .. 取决于您可以在系统上使用的最有效的回退。

肯定相关,但是这个请求总是必须是可选的,因为 wine 上游不会合并它......它不适用于所有平台,并且只能使用可以使用相关 Mesa 驱动程序的卡子集。 这与此 repo 中对 wine 所做的其他更改有很大不同(除了排除旧卡)。 #22 将允许拥有 wine-9 的人将其切换出来,但这个问题是关于让它成为官方构建的一部分。

是的..而且我不知道检查正在使用哪个驱动程序,在哪个硬件上并称之为一天有什么困难(无论如何对于 vulkan 或 opengl 都是一样的)

我也没有,从来没有说过不是。 只是回应#22,它专门关于选择质子之外的自定义构建,这不是我提议的内容,也不是这个问题。

鉴于ValveSoftware/wine (3.7) 与 wine/wine (3.7) 之间差异的广泛性质以及 Valve 采取的方法,将其直接合并到他们的酒叉中可能是最有意义的。 然后它要么 a) 必须在运行时切换(可能自动)或构建两次(相信补丁已经包含编译时切换)。

3.7 标签补丁不适用于 ValveSoftware/wine。

error: patch failed: configure.ac:1261
error: configure.ac: patch does not apply
wine-d3d9.patch:5385: new blank line at EOF.
+

这可能很简单,但我想这将是一个持续存在的问题,可能是直接合并到那里的另一个原因。

他们在处理“启动问题”后立即对其进行更新

...此外,如果您首先在分期中获得它,也许会更有成效

当我为 3.7 应用补丁时,更新 wine 版本不是我所要求或需要的。 至于暂存,这是一个长期的要求,wine 上游不感兴趣,主要是因为它不适用于 Mac 和并非所有 Linux 硬件。 因此,质子正在整合各种限制硬件范围的性能改进……所以这可能是他们感兴趣的。

在葡萄酒分期或适当的葡萄酒中使用它会很棒,但是您会发现很多先前的问题表明这在我们有生之年不会发生。

Mac 不是问题,硬件兼容性也不是问题(尤其是在上次英特尔传闻之后)。
您可以查看我的链接,了解为什么最.. 至少目前关于实际问题的原因只是首先缺乏确认。
(至于谁知道,也许他们已经就 IRC 达成了共识)

即使 VK9 已经为 Proton 做好了准备,我还是更喜欢最有效的解决方案。 在 Proton 提供这一点之前,我一直坚持使用我的老牌和值得信赖的九补丁酒来玩取决于 d3d9 的游戏。

我完全意识到九号镓不会(也可能永远不会)对每个人来说选择会很棒! :)

这是解决方案:
https://www.phoronix.com/scan.php?page=news_item&px=Zink-Gallium3D-OpenGL-Vulkan
https://gitlab.freedesktop.org/kusma/mesa/tree/zink/src/gallium/drivers/zink

基本上,Gallium3D 始终是各种状态跟踪器和驱动程序之间的薄抽象,因此只需在 Vulkan 中作为驱动程序和 bam 鞋拔,您就可以获得所有状态跟踪器的支持,包括 Gallium 9 和 Mesa 的 OpenGL。 着色器字节码生命周期将是来自游戏->TGSI->NIR->SPIRV 的 DX9 HLSL 字节码,哇,如果有效,它就有效....:)

我唯一能看到这是一个“解决方案”,这是在 VK9 准备好之前为 Nvidia 卡提供的临时权宜之计。 这在 AMD 上肯定不会更快。

@jerbear64 九号镓已经通过了实战测试,但从我看来,至少在 amdgpu 驱动程序上是这样。 我经常认为这可以从一开始就完成,即使在 DXVK 的情况下,它也可以只是 Mesa 内部的状态跟踪器,然后在最后为封闭的驱动程序编写类似 ZINK 的东西或直接使用本机硬件在可能的情况。 虽然没有抱怨... :)

不是每个人都使用台面。

2018 年 9 月 26 日,星期三,20:35,Alex Fuller, notifications@ github.com 写道:

@jerbear64 https://github.com/jerbear64镓九已经相当
尽管从我所见,至少在 amdgpu 驱动程序上经过了实战测试。 我曾是
经常认为即使使用 DXVK 也可以从一开始就完成
如果它也可能只是 Mesa 内部的状态跟踪器,然后
只需在末尾为封闭的驱动程序写一些类似 ZINK 的东西,或者使用
在可能的情况下直接使用本机硬件。 虽然没有抱怨... :)


您收到此消息是因为您发表了评论。
直接回复本邮件,在GitHub上查看
https://github.com/ValveSoftware/Proton/issues/66#issuecomment-424824077
或静音线程
https://github.com/notifications/unsubscribe-auth/AAipRw-R-g3DJOiWzHdR5SOHBu2X-xCxks5ue8jigaJpZM4WHXpZ
.

@cjwijtmans很好,每个人都可以拥有一个现有的 vulkan 驱动程序,它只是一个链接到 DXVK 的库...

这是另一种方法:

https://github.com/GabrielMajeri/d3d9-to-11

dgVoodoo 已经实现了 direct3d 1 到 7 以及 8.1 到 11,因此该项目在 direct3d 11 中重新实现 direct3d9 将允许所有旧的 direct3d 版本仅通过 DXVK 运行。

@jerbear64听起来倒退了。 九只在 nVidia 专有上没用。 对于 AMD,您主要使用 Mesa。 Intel 还在构建一个新的 Gallium3D 驱动程序,因此在未来的某个时候这将是 Intel+nouveau+AMD 解决方案。

似乎 dgVoodoo 正在致力于 D3D9 支持:

https://www.vogons.org/viewtopic.php?f=59&t=34931&start=3780#p705374

它仅限于着色器模型 1.x。 这意味着使用 D3D9 和着色器模型 1.x 的游戏可以在下一个版本的 DXVK 上运行。 这样做的缺点是 dgVoodoo 不是开源的。

值得一提的是,由于其他 Flatpak 应用程序的需求,我们现在在 Steam Flatpak 中获得了对九号镓的 Mesa 部分的支持

@jerbear64听起来倒退了。 九只在 nVidia 专有上没用。 对于 AMD,您主要使用 Mesa。 Intel 还在构建一个新的 Gallium3D 驱动程序,因此在未来的某个时候这将是 Intel+nouveau+AMD 解决方案。

好吧,它对 Nvidia 用户没用,但它不会破坏与它的兼容性。 如果可以的话,向开源图形用户而不是 Nvidia 提供一些东西是可以的

等等,不是吗? 我认为 Wine 部分(在这里讨论)做到了。 无论如何,即使默认情况下不使用它,也可能会很好地构建和交付它。

等等,不是吗? 我认为 Wine 部分(在这里讨论)做到了。 无论如何,即使默认情况下不使用它,也可能会很好地构建和交付它。

它在启动游戏时检测是否存在镓,并在需要时重定向到其他实现

@shanefagan非镓九启用 GPU 可能是未来的少数。
英特尔表示有兴趣在所有未来 GPU 上支持 Gallium 3d。

@hungrymonkey我不认为@shanefagan 有任何相反的主张。 此外,带有专有驱动程序的 nVidia GPU 仍然占据 Linux 桌面使用的大量份额。

@nanonyme gallium 9 根本不影响 nvidia 专有驱动程序或使用。 它检查正在使用的驱动程序是否支持 g9,如果不支持,则不使用。 具体来说,它会检查 mesa 是否启用了 g9,然后检查正在使用的 mesa 驱动程序。 如果没有使用 mesa 驱动程序,它实际上无法使用 g9 功能并被完全忽略。

@GloriousEggroll看来我们说的不是同一种语言。 这只是解释了几个帖子。

该补丁的一个很好的说明是它的开发人员一直在保持最新的 WINE 补丁,直到 3 天前。 我会说最好至少构建它并选择作为某些系统出现 dx3d9 性能问题的设置(就像我使用 SC2 之类的游戏而没有进行大量修改)。

无论如何,链接补丁很好,因为我没有看到任何链接https://github.com/sarnex/wine-d3d9-patches

@Mushoz它现在正在运行 Unreal Tournament。 在 2019 年_可能_功能齐全。 你有路线图在这里

跳过已经在使用并准备好支持正在大量开发的过渡层的本地驱动程序和工具看起来并不明智。 如果有的话,已经准备好的九号镓应该作为 AMD 用户的一个选择; 一旦/如果 VK9 到货,它仍然可以作为一种选择。

我认为主要的缺点是多个代码路径可能会使支持游戏变得更加困难。 再说一次,即使现在测试结果也不适用于 GPU 供应商之间

VK9 不适用于非 amdgpu 设备/pre-GCN-GPU。 另一方面,九号镓可能会在旧的 r300g 东西上运行,甚至可以运行到像我的 VEGA10 这样的 GPU。 但是,是的,我的一些朋友仍然依赖的这些旧的 r600g 驱动的 VLIW GPU 被认为已经过时了。

就像 D3D9 本身一样。

我认为主要的缺点是多个代码路径可能会使支持游戏变得更加困难。 再说一次,即使现在测试结果也不适用于 GPU 供应商之间

好吧,如果它有效,那是一个好处,如果无效,则可以忽略不计。 就像您可以使默认仍然是 WINE 的实现,但允许用户将其设置为环境变量,如果他们想尝试的话。 如果您从 WINE 本身而不是 DXVK 获得更好的性能,他们已经这样做了,所以这不是他们的配置问题。 他们只需要把它工作到位。 他们甚至可以聘请制作补丁的人来占用最后 10% 的资源。

这里的区别在于 WineHQ 不向您出售游戏,并且可能需要退款

我想这就是为什么我们有一个白名单...

如果您有复杂的操作模式分支,白名单肯定不起作用

“复杂的”

如果您有复杂的操作模式分支,白名单肯定不起作用

好吧,如果游戏性能不是很好,那么它可能是一个只有用户自己启用的选项,如果他们想尝试一下

如果您有复杂的操作模式分支,白名单肯定不起作用

好吧,如果游戏性能不是很好,那么它可能是一个只有用户自己启用的选项,如果他们想尝试一下

对我来说听起来很公平。

我认为您需要先将 libd3dadapter9-mesa 加入 Steam 运行时。

我认为您需要先将 libd3dadapter9-mesa 加入 Steam 运行时。

libd3daapter9 如何工作? 我知道 GalliumNine 就在 Mesa 中,而 WINE 的补丁也指出了这一点。 我看到它在 18.10 的 Ubuntu 中,但我从来没有真正使用过那个库。

libd3daadapter9 是如何工作的? 我知道 GalliumNine 就在 Mesa 中,而 WINE 的补丁也指出了这一点。 我看到它在 18.10 的 Ubuntu 中,但我从来没有真正使用过那个库。

它只是处理 Mesa 的 D3D9 状态跟踪器,就像 Wine 的 opengl32.dll.so 处理常见的 OpenGL 状态跟踪器一样¹。
编辑:抱歉,我将 libd3dadapter9 与为 Wine 构建的 DLL 混淆了。 那天没有喝足够的咖啡。 有问题的库为 Mesa 实现了 D3D9 状态跟踪器。 简化:它提供原生 D3D9 支持,无需像 WineD3D 或 VK9 这样的额外翻译层。 如果您有兴趣,请查看此演示文稿


¹:警告:答案可能不准确。

我能够使用 9 个补丁构建质子,作为使用 --no-steam-runtime 的本地 arch linux 构建。 到目前为止,我测试的唯一游戏是 Valkyria Chronicles 1,它在这个本地版本中表现得很奇怪,例如 RX 480 在设置中被检测为 R9 290,有时无法正常工作的控件和通过 Valkyria Chronicles 配置工具设置的设置没有得到完全保存。

尽管这些问题可能与使用 --no-steam-runtime 而不是九个补丁构建的质子有关。

来自https://github.com/sarnex/wine-d3d9-patches/blob/wine-d3d9-3.16/wine-d3d9.patch的原始补丁只需要对 configure.ac 中的上下文进行修复,请参见https://gist .github.com/raetiacorvus/8bf19a733ac131d744030788030941c4仅第 72 行和第 73 行从原始补丁中删除。

您仍然需要先申请https://github.com/sarnex/wine-d3d9-patches/blob/wine-d3d9-3.16/d3d9-helper.patch并在同时应用后在 wine 文件夹中运行autoreconf补丁。

此外,我必须将-with-d3d9-nine-module=/usr/lib32/d3d/d3dadapter9.so到以下文件中的 wine32 配置中,但这可能是未正确设置构建环境的结果? https://github.com/ValveSoftware/Proton/blob/83871c7bf93b785b23b987956b7cc3608d6998b3/build/makefile_base.mak#L713 -L726

另外不要忘记,您需要为每个 pfx 启用 gallium 9 槽 winecfg。

https://github.com/ValveSoftware/Proton/issues/66#issuecomment -447569917

这是个好消息! 尽管最初遇到挫折,但拥有一些功能性的构建是一个重大进步。 由于我不精通编码,能否请您详细说明,您为什么使用--no-steam-runtime参数构建? 你构建的 Proton 不能和 Steam 客户端一起使用吗? 因为,Proton 的重点是运行 Steam 游戏,这些游戏需要使用 Steam DRM 原生 Steam 客户端而不是 Windows 版本。

@raetiacorvus

我在 Steam 上有相当大的游戏收藏。 如果您需要测试更多游戏,请告诉我,以便我尝试安排。

到目前为止,我测试的唯一游戏是 Valkyria Chronicles 1,它在本地版本中表现得很奇怪,例如 RX 480 在设置中被检测为 R9 290

这是九号镓的正常行为,我的 RX 580 在我的葡萄酒分级九版本上做同样的事情。

似乎我遇到的所有问题都与镓九有关,但要么是由--no-steam-runtime引起的,要么是由游戏本身引起的。

@rea987 --no-steam-runtime表示质子是针对本地库构建的,而不是针对 Steam 运行时 docker 容器中的补丁库构建的。 它仍然是一种有效的蒸汽兼容性工具,可用作阀门提供的质子释放的替代品。 到目前为止的一个问题是它缺少来自运行时的修补控制器映射,这导致了我在使用 Valkyria Chronicles 时遇到的问题。 您可能可以通过使用一些可用于 wine 的工具来正确映射控制器来解决这个问题。

@raetiacorvus如果您为质子编译指南提供一步一步的九号镓,那就太好了。 另外,如何发出拉取请求,以便@ValveSoftware将其与其中一个分支合并。 如果结果证明这是功能性构建,我会认真考虑切换到 AMD。 @raetiacorvus我提出的提供更多测试游戏的提议仍然有效。

我用补丁制作了自己的 Proton 分支:

https://github.com/popsUlfr/Proton (查看分支proton_3.16_gallium_nine_extras并按照自述文件进行操作)

git clone https://github.com/popsUlfr/Proton.git
cd Proton
git checkout proton_3.16_gallium_nine_extras
git submodule update --init

它也适用于蒸汽运行时,我不得不添加这个稍微丑陋的台面块: https :

我添加了一个环境变量PROTON_USE_GALLIUM_NINE=1 ,如果您的卡支持,您可以使用它轻松启用九号镓(也可以通过 winecfg 中的暂存选项卡启用)

特征 :

  • 镓九明显
  • 流放之路 dx11 补丁: https ://bugs.winehq.org/show_bug.cgi = 42695
  • 如果没有 Vulkan 支持,则强制 wined3d11:#1749
  • 默认启用 ffmpeg 并使用它构建 FAudio :#2082
  • GLSL 切换以禁用 GLSL 着色器并使用 ARB 着色器来减少使用 wined3d 的卡顿

这是一个要测试的构建:
~ Proton_3.16-5_Gallium_Nine_Extras.tar.xz ~
~质子 3.16-5 镓九附加 0.1.0 ~
~质子 3.16-5 镓九附加 0.1.1 ~
~质子 3.16-6 镓九附加 0.1.1 ~
~质子 3.16-6 镓九附加 0.1.2 ~
质子 3.16-6 镓九附加 0.1.3

$ mkdir -p ~/.steam/root/compatibilitytools.d
$ tar xf Proton_3.16-6_Gallium_Nine_Extras_0.1.3.tar.xz -C ~/.steam/root/compatibilitytools.d

在您的 Steamplay 选项卡中,它应该显示为Proton 3.16-6 Gallium Nine Extras

顺便说一下,我把这个添加到自述文件中,在配置步骤之后,你需要运行make all dist而不是make dist否则你最终会得到 win64 wine 而没有别的。 所以这似乎是官方质子自述文件中的错误,或者只是在我自己的系统上表现得如此,我不确定。

干得好@popsUlfr!

您的 fork 的 GitHub 页面中是否有通用的 32 位、64 位和/或多架构版本?

感谢您的努力和分叉!

@rea987喜欢这个吗? https://github.com/popsUlfr/Proton/releases/tag/proton-3.16-5-gne-0.1.0

告诉我它是否适合您,我无法使用 amd 卡进行彻底测试:/

嗯,我按照说明操作,但看起来 Steam 没有获取创建的目录中的任何内容。 兼容性工具下拉列表仅显示“常规” Steam 版本。

任何想法我可能做错了什么? 我在 KDE NEON 18.04(基本上是 Ubuntu)上,如果这有什么改变?

@popsUlfr正是! 这是分发它的更清晰和解释性的方式。 是的,我还需要一张 AMD 卡来正确测试它。 :-/

@AndrewLoom您的 Steam 安装位于~/.local/share/Steam~/.steam目录中吗? 因为我需要使用后者来使它工作。

谢谢rea987! 哦,现在这么明显了,但还是没有想到。 :-)

@AndersDala没问题,这是一个最近让很多人感到困惑的问题。 也许, @popsUlfr也可以编辑安装指南以指出~/.steam目录?

我拥有一台 AMD Radeon Vega 56。我已经成功安装了它并选择将它用于所有 Windows 游戏,但是如果我使用 PROTON_USE_GALLIUM_NINE 启用九号镓,似乎像《时光之帽》或《龙腾世纪:起源》这样的游戏将无法运行=1(带有干净的前缀),一个窗口甚至不会出现。 使用 PROTON_USE_GALLIUM_NINE=0 它们运行良好。

我拥有一台 AMD Radeon Vega 56。我已经成功安装了它并选择将它用于所有 Windows 游戏,但是如果我使用 PROTON_USE_GALLIUM_NINE 启用九号镓,似乎像《时光之帽》或《龙腾世纪:起源》这样的游戏将无法运行=1(带有干净的前缀),一个窗口甚至不会出现。 使用 PROTON_USE_GALLIUM_NINE=0 它们运行良好。

对我来说相同的 GPU 和相同的结果。 游戏(耻辱,死亡空间)不会以镓开始。

@Mastergatto , @archfan您是否安装了启用 Gallium Nine 的 Mesa 驱动程序?

https://launchpad.net/~oibaf/+archive/ubuntu/graphics-drivers

是的,我在 Arch 上并且我已经从 AUR 安装了 mesa-git。 它启用了九号镓。

@archfan好的,明天,我将在我的旧 AMD 笔记本电脑上试用它,希望它支持九号镓。

是的,因为默认情况下使用 mesa 包启用了 Gallium Nine,至少对于 ArchLinux 上的 AMD 卡是这样。 我还有 wine-staging-gallium,其中镓九按预期工作。

当它在九号镓上运行时,你能看一下输出吗?
所以在游戏的启动选项中添加:

PROTON_DUMP_DEBUG_COMMANDS=1 PROTON_USE_GALLIUM_NINE=1 %command%

运行游戏。
这会将一些质子脚本放入/tmp/proton_<username>
启动./run以查看输出。

也只是为了确保,切换到另一个质子,重新启动蒸汽。 现在切换到镓九质子。

编辑:为了不污染这个线程,我认为最好在这里讨论它: https :

如果这让您抱有希望并且无法立即使用,也很抱歉。 我在本地维护了这个,镓九部分更像是一个“假设”,以防我可以在 amd 上进行测试。 无论如何,我决定分享它,因为这个讨论越来越突出,并且在质子中获得有关镓九支持的一些信息可能很有用:)
其他功能也可能有用,所以......

镓九在质子中与https://github.com/dhewg/nine 一起工作

不出所料,这会破坏 Steam 覆盖,但其他方面效果很好。

镓九在质子中与https://github.com/dhewg/nine 一起工作

不出所料,这会破坏 Steam 覆盖,但其他方面效果很好。

嘿,不错!

你能提供一个你做了什么的指南吗? 我有点失落。

显然我们应该使用 protontricks 来获得所有这些好东西?

有人知道吗?

显然我们应该使用 protontricks 来获取所有这些 googdies?

有人知道吗?

好决定。 老实说,我更喜欢没有protontricks 的解决方案

我这样做了:

wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
chmod +x winetricks
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks.bash-completion
sudo mv winetricks /usr/bin
sudo mv winetricks.bash-completion /usr/share/bash-completion/completions/winetricks
python3 -m pip install --user pipx
~/.local/bin/pipx ensurepath
eval "$(cat .bashrc | tail -n +10)"
pipx install protontricks
pipx upgrade protontricks
protontricks 9420 galliumnine

但是现在游戏(正在运行)给了我和错误框说:“无法创建 direct3d 设备”

@tatsujb我认为这不是正确的页面,但它在这里。 您使用的是 Ubuntu 18.04 还是 Mint 19? 因为自 12 月 / 1 月以来,用于 Ubuntu/Mint 版本的 oibaf 的 Mesa 驱动程序在 Gallium Nine 上已损坏。 我遇到了同样的问题,切换到 Ubuntu Mate 19.04 现在它可以工作了。

@rea987我正在使用 ubuntu 19.04,我会再试一次。 编辑不,它没有帮助。 你还干了什么? 你有什么运行参数,什么游戏适合你?

@tatsujb老实说不多。

  • 我避免使用第三方 Mesa PPA,因为Oibaf的 Mesa 驱动程序的九号镓兼容性自 12 月以来就被破坏了,我不确定它是否已修复。
  • 我确保安装了libd3dadapter9-mesamesa:i386
  • 手动更换的/ usr / bin中/ winetricks与最新版本: https://wiki.winehq.org/Winetricks
  • 清除 ~/.cache/winetricks
  • 通过 Protontricks 重新安装了 Gallium Nine Standalone(最新)。

@rea987

是的,这就是诀窍。 从那以后我就想通了,谢谢!

顺便说一句,同时拥有galliumnine和d9vk会很好。 我今天及时在帽子上对它们进行了比较,镓胺运行得更好(20% 或更高的 fps)并且在您第一次访问新区域时不会口吃。 同时拥有两者将导致更高的机会以良好的性能运行给定的 Directx9 游戏,因为某些游戏可能会与其中一个或另一个中断。

在理想的世界中,渲染器会优雅地从原生回退到 vulkan 到 opengl(或者如果 d9vk 最终应该具有一些内在优势,则切换前两个的优先级,但仍然如此)。
相反,Valve(甚至代码编织者都对九号嗤之以鼻)似乎只专注于为最新的卡片创建一个“足够好”的花园,而不是让所有东西和厨房水槽都能正常工作。 他们甚至根本不会为缺少 vulkan 的卡片添加自动检查

这是我的 20 美分:

现在我们拥有独立的九号镓,它非常易于使用,因为您不再需要任何葡萄酒补丁。 您需要做的就是:(1)从发行版的包管理器安装 mesa-libd3d9 (2)使用 winetricks 或安装程序脚本将九安装到您的 wine 前缀。

关于哪个是“更好”的选择:我不打算在这里开始一场火焰战争,所以我只会分享我到目前为止的发现: https : 编辑:我意识到 9 目前不是 NVidia 用户的选择,但它与 AMD (radeonsi) 和 Intel (iris) 配合得相当好,一旦 zink 变得足够成熟,它将在 NVidia 上得到改进。

九个独立是绝对使用的小菜一碟。
但不知何故,*每次* 你向开发人员指出这一点似乎置若罔闻。
我不知道讨论是否不可能在门后/IRC 发生,我也不想发火——但我不知道还能说什么才能让他们承认*目前*的事态该死的代码,而不是他们脑海中关于五年前项目是什么的漫画形象。

我意识到 9 目前不是 NVidia 用户的选择,但它与 AMD (radeonsi) 和 Intel (iris) 配合得相当好,一旦 zink 变得足够成熟,它将在 NVidia 上得到改进。

它在 r600g 上也运行良好。 r600g 支持的 GPU 缺乏 Vulkan 支持 btw。

现在在 nvidia 上,我在安装了 418 的 ubuntu 和安装了 Nouveau 的 ubuntu 之间切换,以便我可以启用台面和镓九。 可以在 nouveau 下运行的原生 linux 游戏的性能是可以接受的,而 wine-gallium-9 游戏运行得非常好。

但显然我也等不及 mesa 来支持 Nvidia 了。

我认为这现在由 D9VK 解决了。 我用 SC2 和其他一些游戏对其进行了测试,效果很好。 希望将来能够将其集成到 DXVK 中,并将补丁推送到 Proton。

d9vk 的性能仍然比 gallium 9 差很多,但是是的,即使只是内置的 d9vk 支持也会很棒,因为这已经比 gallium 9 更难集成到现有的质子安装中

运输 d9vk 的另一个棘手部分是它需要最新的台面。 不仅仅是最新版本,它基于 mesa-git。 因此,为了使其可用于各种发行版,您甚至可能需要将 mesa-git 与它一起发布或指导用户弄清楚如何为他们的发行版获取 mesa-git

@shanefagan不,d9vk 比 9 慢得多,请参阅我在上一篇文章中的发现。

有一个易于安装的独立版本。 也许它们可以随 Proton 一起提供并通过参数启用。 D9VK 很棒,但正如其他人所说,它速度较慢,并且经常使用前沿驱动程序。 通过 winetricks 安装 Gallium 是可行的,但有一个集成选项会非常好。

独立: https :

你好!~ 有没有其他人在 4.11-6 启动安装了 Gallium Nine Standalone 的游戏时遇到无声的崩溃?

@Bryophyllum同样,通过protontricks 安装galliumnine 后游戏不会启动。
最糟糕的是,首先没有简单的方法可以判断镓胺是否在运行。

实际上经过一些尝试和错误后,这有效:

当它在九号镓上运行时,你能看一下输出吗?
所以在游戏的启动选项中添加:

PROTON_DUMP_DEBUG_COMMANDS=1 PROTON_USE_GALLIUM_NINE=1 %command%

运行游戏。
这会将一些质子脚本放入/tmp/proton_<username>
启动./run以查看输出。

也只是为了确保,切换到另一个质子,重新启动蒸汽。 现在切换到镓九质子。

编辑:为了不污染这个线程,我认为最好在这里讨论它: popsUlfr#2

如果这让您抱有希望并且无法立即使用,也很抱歉。 我在本地维护了这个,镓九部分更像是一个“假设”,以防我可以在 amd 上进行测试。 无论如何,我决定分享它,因为这个讨论越来越突出,并且在质子中获得有关镓九支持的一些信息可能很有用:)
其他功能也可能有用,所以......

如果我从 Steam 启动它会弹出“安装驱动程序”或类似的东西,并在启动游戏之前禁用镓。
然而,通过转储脚本启动游戏并不会禁用galliumnine,游戏也随之启动。

@tuxutku我在 Proton 4.11 上尝试过 Gallium Nine Standalone 的一些游戏要么默默崩溃,要么不管这个问题,照常启动,但使用 Wine 的 DX9-to-OpenGL 转换层。 它们在安装了 Gallium Nine Standalone 的 4.2-9 上都可以正常工作。

最糟糕的是,首先没有简单的方法可以判断镓胺是否在运行。

不完全的。 如果您从 CLI 运行 Steam 客户端,您将在游戏开始时看到来自 Gallium Nine 的绿色或红色消息; 但是,在这种情况下,不输出任何内容。

使用PROTON_LOG=1尝试运行 GTA SA 时出现此错误:

10264.098:0031:0032:err:module:import_dll Library d3d9.dll (which is needed by L"Z:\\var\\home\\user\\.local\\share\\Steam\\steamapps\\common\\Grand Theft Auto San Andreas\\gta-sa.exe") not found

我不知道是什么原因造成的,也不知道如何解决它,但是,希望有人可以通过将所有线索拼凑在一起来找出这个问题的根源。

我将打开一个关于 Steam 客户端在游戏启动前禁用镓的新问题,我在另一款游戏上遇到了这个问题

你好@tuxutku ,这个功能请求是讨论新行为的正确地方。 听起来变化发生在 d9vk 被添加到 Proton 的同时,这可能是 Proton 管理它的副作用。

最糟糕的是,首先没有简单的方法可以判断镓胺是否在运行。

不完全的。 如果您从 CLI 运行 Steam 客户端,您将在游戏开始时看到来自 Gallium Nine 的绿色或红色消息; 但是,在这种情况下,不输出任何内容。

使用PROTON_LOG=1尝试运行 GTA SA 时出现此错误:

10264.098:0031:0032:err:module:import_dll Library d3d9.dll (which is needed by L"Z:\\var\\home\\user\\.local\\share\\Steam\\steamapps\\common\\Grand Theft Auto San Andreas\\gta-sa.exe") not found

@Bryophyllum不像查看Native Direct3D 9 v0.5.0.356-release is active. For more information visit https://github.com/iXit/wine-nine-standalone是否发布那么容易。
例如,当从 dumped ./run命令启动 2013 古墓丽影游戏时,它会发布该行,因为启动器使用 Directx9,而不是游戏。 我不得不regedit调整一个寄存器才能玩galliumnine的游戏

带有 VAC 的游戏曾经与 wine afaik 一起使用。 但现在他们不知道出于某种原因。 CSGO 抱怨文件签名不匹配。 TF2 没有给出任何具体原因。

出于某种原因, PROTON_DUMP_DEBUG_COMMANDS=1在军团要塞 2 上不起作用,我不得不从另一个游戏中复制和修改脚本。

#!/bin/bash
#Run game or given command in environment

cd "/home/utku/took/happytosharemysteamapps/steamapps/common/Team Fortress 2"
DEF_CMD=("/home/utku/took/happytosharemysteamapps/steamapps/common/Team Fortress 2/hl2.exe" "-steam" "-dev" "-secure" "-game" "tf" "-w" "1366" "-h" "768")
PATH="/home/utku2/.local/share/Steam/compatibilitytools.d/Proton-4.15-GE-4/dist/bin/:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/bin:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/bin:/home/utku3/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/utku3/.local/bin" \
    TERM="xterm" \
    WINEDEBUG="-all" \
    WINEDLLPATH="/home/utku2/.local/share/Steam/compatibilitytools.d/Proton-4.15-GE-4/dist/lib64//wine:/home/utku2/.local/share/Steam/compatibilitytools.d/Proton-4.15-GE-4/dist/lib//wine" \
    LD_LIBRARY_PATH="/home/utku2/.local/share/Steam/compatibilitytools.d/Proton-4.15-GE-4/dist/lib64/:/home/utku2/.local/share/Steam/compatibilitytools.d/Proton-4.15-GE-4/dist/lib/:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/pinned_libs_32:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/pinned_libs_64:/usr/lib/x86_64-linux-gnu/libfakeroot:/lib/i386-linux-gnu:/usr/local/lib:/usr/local/lib/libstrangle/lib32:/usr/local/lib/libstrangle/lib64:/lib/x86_64-linux-gnu:/lib32:/libx32:/lib:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/lib:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib:" \
    WINEPREFIX="/home/utku/took/happytosharemysteamapps/steamapps/compatdata/440/pfx/" \
    WINEESYNC="1" \
    SteamGameId="440" \
    SteamAppId="440" \
    WINEDLLOVERRIDES="steam.exe=b;mfplay=n;d3d11=n;d3d10=n;d3d10core=n;d3d10_1=n;dxgi=n;d3d9=n" \
    STEAM_COMPAT_CLIENT_INSTALL_PATH="/home/utku2/.local/share/Steam" \
    "/home/utku2/.local/share/Steam/compatibilitytools.d/Proton-4.15-GE-4/dist/bin/wine" steam.exe "${@:-${DEF_CMD[@]}}"

2019-10-29_19:24:52:660867031
TF2输出

2019-10-29_19:31:59:209339350
csgo输出

还有PROTON_DUMP_DEBUG_COMMANDS=1自动生成的脚本:

#!/bin/bash
#Run game or given command in environment

cd "/mnt/WD-green/common/Counter-Strike Global Offensive"
DEF_CMD=("/mnt/WD-green/common/Counter-Strike Global Offensive/csgo.exe" "-steam")
PATH="/home/utku2/.local/share/Steam/compatibilitytools.d/Proton-4.15-GE-4/dist/bin/:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/bin:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/bin:/home/utku3/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/utku3/.local/bin" \
    TERM="xterm" \
    WINEDEBUG="-all" \
    WINEDLLPATH="/home/utku2/.local/share/Steam/compatibilitytools.d/Proton-4.15-GE-4/dist/lib64//wine:/home/utku2/.local/share/Steam/compatibilitytools.d/Proton-4.15-GE-4/dist/lib//wine" \
    LD_LIBRARY_PATH="/home/utku2/.local/share/Steam/compatibilitytools.d/Proton-4.15-GE-4/dist/lib64/:/home/utku2/.local/share/Steam/compatibilitytools.d/Proton-4.15-GE-4/dist/lib/:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/pinned_libs_32:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/pinned_libs_64:/usr/lib/x86_64-linux-gnu/libfakeroot:/lib/i386-linux-gnu:/usr/local/lib:/usr/local/lib/libstrangle/lib32:/usr/local/lib/libstrangle/lib64:/lib/x86_64-linux-gnu:/lib32:/libx32:/lib:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/lib:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu:/home/utku2/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib:" \
    WINEPREFIX="/home/utku/took/happytosharemysteamapps/steamapps/compatdata/730/pfx/" \
    WINEESYNC="1" \
    SteamGameId="730" \
    SteamAppId="730" \
    WINEDLLOVERRIDES="steam.exe=b;mfplay=n;d3d11=n;d3d10=n;d3d10core=n;d3d10_1=n;dxgi=n;d3d9=n" \
    STEAM_COMPAT_CLIENT_INSTALL_PATH="/home/utku2/.local/share/Steam" \
    "/home/utku2/.local/share/Steam/compatibilitytools.d/Proton-4.15-GE-4/dist/bin/wine" steam.exe "${@:-${DEF_CMD[@]}}"

我没有尝试过 csgo,但是 tf2 可以运行并且在 Wine Steam 下没有 vac 问题

@tuxutku为什么要使用具有本机 linux 端口的游戏进行测试?

@tuxutku
这与镓9有什么关系?

我问是因为我真的很好奇。 退出投票

@tuxutku为什么要使用具有本机 linux 端口的游戏进行测试?

因为源 1 游戏在 linux 上运行得不够好?
他们在镓方面做得更糟,但这并不意味着本地港口表现良好。 与 Windows 同行相比,它们的表现非常糟糕。
CS:GO 的新危险区域地图在 amd a10-9620p + rx 540 上直接无法播放 (~15fps)。
到目前为止,当我测试过的所有源 1 游戏(核黎明、cs:go、tf2、半条命 2、半条命 2 团队死亡竞赛)中,风景帧速率中的几何图形严重下降。
left4dead2 是一个例外,它实际上充分利用了 GPU

假设是“代码不好”而不是“调用是通过 GL 而不是 vulkan 解释的”,对吗?

如果你有一个功能强大的 vulkan 原生游戏,结果会不会在 100% 的时候在原生中更好?

鉴于这可以从带有 protontricks 的质子外部获得,我想说这个功能请求已经被取代了。

如果可以手动修复,那么我们可以在这里解决一半的问题。

鉴于这可以从带有 protontricks 的质子外部获得,我想说这个功能请求已经被取代了。

Steam 本身在启动游戏或确认缓存时总是禁用镓,而且没有启用它的质子标志,它需要手动更新。

我发现galliumnine通常不仅比默认的wined3d翻译(在r600上)更快,而且它似乎解决了许多游戏的全屏问题(例如最高指挥官FA),将它添加到质子似乎很容易鉴于独立版本,我不会说它应该是“受支持”的选项,但是将它内置作为解决方法/增强功能会很好。

我相信这是从质子 5 开始支持的

编辑:nvm 我在想 d9vk

我相信这是从质子 5 开始支持的

编辑:nvm 我在想 d9vk

是的...不幸的是,d9vk 不适用于 r600。 :/

这是应该考虑的问题,我们应该能够仅通过环境变量启用 gallium 9,而无需求助于 hacks(例如 protontricks)。

它很容易修复(你们已经有很多分支和解决方法来解决这个问题),Gallium Nine 现在有更好的 GPU 支持(现在可以与 Intel 最新的驱动程序一起使用),并且比 DXVK 和 wined3d 提供 1.5-2 倍的性能提升。

并且您已经收到了大量关于通过使用九号镓提高兼容性的游戏报告。

https://github.com/ValveSoftware/Proton/issues/173#issuecomment -499869941
https://github.com/ValveSoftware/Proton/issues/255#issuecomment -415997284
https://github.com/ValveSoftware/Proton/issues/355#issuecomment -415972910
https://github.com/ValveSoftware/Proton/issues/554#issue -354016973
https://github.com/ValveSoftware/Proton/issues/770#issue -354455950
https://github.com/ValveSoftware/Proton/issues/1073#issuecomment -473703760
https://github.com/ValveSoftware/Proton/issues/2704#issuecomment -518029014

我知道这对您来说可能不是优先事项,因为这仅适用于旧游戏,但是拜托,有大量优秀游戏将受益于九号镓。

有关此主题的任何更新? 不幸的是, @popsUlfr在一年多前停止提供具有原生 D3D9 支持的全新 Proton 构建。

有关此主题的任何更新? 不幸的是, @popsUlfr在一年多前停止提供具有原生 D3D9 支持的全新 Proton 构建。

我一直在使用普通的质子 + 镓九独立。 我一直在用 winetricks 安装它并禁用 DXVK

我一直在使用普通的质子 + 镓九独立。 我一直在用 winetricks 安装它并禁用 DXVK

很高兴知道! 您使用的是哪个 Proton 版本以及您是如何禁用 DXVK 的? WineD3D 干扰了我最后一次尝试。

@crt0mega galliumnine(“d3d9”)将始终被 dxvk 或 wined3d 取代

Proton-5.9-GE-8-ST/proton:
            if "wined3d" in g_session.compat_config:
                dxvkfiles = ["dxvk_config"]
                wined3dfiles = ["d3d11", "d3d10", "d3d10core", "d3d10_1", "d3d9"]
            else:
                dxvkfiles = ["dxvk_config", "d3d11", "d3d10", "d3d10core", "d3d10_1", "d3d9"]
                wined3dfiles = []

它必须修复...

或者我们可以使用 Proton-5.9-GE-8-ST/dist/bin/wine 而没有质子(并且没有 Steam 的游戏)
ps:设置镓:
WINE="./Proton-5.9-GE-8-ST/dist/bin/wine" WINEPREFIX=~/.steam/steam/steamapps/compatdata/372​​000/pfx/./Proton-5.9-GE-8-ST/ protonfixes/winetricks --force galliumnine

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

ArekPiekarz picture ArekPiekarz  ·  3评论

AwesamLinux picture AwesamLinux  ·  3评论

ghost picture ghost  ·  3评论

AwesamLinux picture AwesamLinux  ·  3评论

shanefagan picture shanefagan  ·  3评论