» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

[业评] 详细说一下STEAMOS为什么兼容性这么好。以及PROTON,WINE,DXVK

https://www.bilibili.com/video/B ... ge.video_card.click

这个视频基本上解释很清楚了。

从时间线来说:

第一个项目是WINE,把WINDOWS里的各个DLL(不包括第三方的),都“翻译”一遍,让EXE文件可以在LINUX里也调用WINDOWS的API,只不过是WINE在LINUX里代替WINDOWS响应的。
WINE,全称Wine Is Not an Emulator,这个项目已经很成熟了。

WINE项目中,对D3D的支持,原本是通过OpenGL支持的,但OpenGl式微,开源社区对D3D的连蒙带猜,效果极差。
所以,遇到需要3D的游戏,通过WINE转译就很捉急了,速度慢,效果差。

然后,2017年,微软对D3D的SHADER:DXIL文件开源了。

第二个项目,DXVK就诞生了,把微软D3D 的DXIL,直接翻译成VULKAN的SHADER文件SPIR-V。
DXVK这个项目的成果好到什么地步呢,就是INTEL搞AB系列的独立显卡时候,用DXVK来运行老游戏,比INTEL自家的DX11驱动更快。
当然,这其中也有G胖对社区的(财务和其他)支持。

这个时候,用DXVK项目提供的D3D DLL,替换WINE项目里的(老)D3D DLL,就已经可以开始在LINUX里基本全速、无出错跑WINDOWS游戏了。

所以,第三个项目,Proton,基本上可以认为 Proton=Wine + DXVK + 一些其他的工作/项目。
有了Proton,你基本上可以在各种Linux(发行)版本下,直接运行Windows游戏了。

第四个项目,SteamOS=(定制的)ArchLinux + Proton。包括开机直接进STEAM平台等。

而SteamOS,甚至可以做到有些游戏比(相同硬件水平的)Windows更快。
主要有2点原因:
1. DXVK的高效率,现代游戏基本上就吃显卡,DXVK效率高了,WINE的效率高或者不高,都拖不了DXVK的后腿。
2. 定制的ArchLinux,砍了许多对游戏无用的功能,所以在OS这个层面,比Windows开销小。

[ 本帖最后由 refo 于 2025-11-26 22:13 编辑 ]


TOP

posted by wap, platform: Android
引用:
原帖由 @can1234  于 2025-11-25 22:26 发表
其实ps5和sxsx不也是一个深度定制的x86机器吗
xss/xsx应该是微软开发的一个非常精简的windows,用的是d3d12。

本帖最后由 refo 于 2025-11-26 06:43 通过手机版编辑



TOP

posted by wap, platform: Android
引用:
原帖由 @ginaamix  于 2025-11-26 01:59 发表
ps4的图形api叫gnm,有一个高层封装叫gnmx
ps5的图形api叫agc,有个高层封装叫gnmp
这两个api都比vulkan/dx12要底层的多,vulkan的前身mantle本身就是农企为了把主机开发经验作为优势带到pc搞出来的东西
但还是老黄技术更nb,吊打amd


TOP

posted by wap, platform: Android
引用:
原帖由 @playboy23  于 2025-11-26 08:13 发表
所以这事成了还是靠微软的开源,自己的掘墓人。。
微软开源路线是目前印度ceo搞的,说句实话,这个印度人很厉害,很成功

TOP

引用:
原帖由 devliet 于 2025-11-26 20:29 发表
posted by wap, platform: Android
和微软开源没有一毛钱关系。
这些都是对公开的api的自行实现,和微软开源没关系。

DXVK什么的,这些库是开源的,所以steam可以拿来用,但是这和微软没有一毛钱关系,这些库不是 ...
DXVK是社区开源项目。

但微软把DX12的SHADER文件开源了:https://github.com/microsoft/DirectXShaderCompiler

这个大大加速了社区把DX12转译到VULKAN的进程

TOP

引用:
原帖由 ginaamix 于 2025-11-26 21:51 发表
posted by wap, platform: Chrome
有关系的,光靠dxil spec根本做不到从dxil到spirv的翻译,dxil本身实现就是坨屎山,大量细节都藏在编译器源码里
任何历史累积多了,都很难避免屎山,尤其是GPU这种极度追求效率,很多代码都说不定是汇编写的

所以,就连INTEL都搞不定这坨屎山,最后直接用了VXDK

[ 本帖最后由 refo 于 2025-11-26 22:16 编辑 ]

TOP

引用:
原帖由 devliet 于 2025-11-26 22:28 发表
posted by wap, platform: Android
就是说靠源语言hlsl的行为去反推确定目标语言dxil的行为么?
相当于靠c语言的规范反推确定汇编指令的功能了。
一般是靠低级语言的实现推导出高级语言的功能吧,反着来比较困难吧 ...
反正INTEL做独立显卡(就是那个A和B系列)的时候,驱动没搞定,后来驱动用了DXVK的成果,对DX11以及更老的游戏,提升了许多效率。

TOP

引用:
原帖由 odioanatre 于 2025-11-27 18:11 发表
记得以前看过一篇类似的,说是转译这玩意最终就是要去动摇微软direct的根基。
开源社区做这些,技术人员还真不一定有太多想法

TOP

发新话题
     
官方公众号及微博