国产化自己绊自己?

seanwhy · 2025-1-22 10:58:12 · 2796 次点击
今天闲来无事,详细说说适配国产化过程中的一些事。
话说自从用上 webassembly 技术后,我们原来的老 C++开发的引擎又焕发第二春了,在各类平台上运行的都还好。后面就有客户提出在银河麒麟 V10 上使用我们的产品,当时显卡还是用的英伟达,一切也相安无事。
后来不知道哪位领导提的,要试试某国产显卡,就叫他 M 好了,高端的性能据说能玩黑悟空,企业用的是中低端,个人体感打个 1030-1050 差不多。
这时候幺蛾子就来了。该显卡宣称支持 opengl4.x ,opengles3 ,理论上咱也能跑是吧。可现实就是,麒麟自带的 360 安全浏览器、奇虎浏览器,均能正常运行我们的程序,可是在 chromium 上,或者 electron 上,就提示图形环境缺失,用检测网站测试也显示 webgl2 不支持。
第一感觉就是 360 做了手脚,其次国产显卡厂商驱动适配的也不好。正常逻辑其实就是反馈给厂家,让厂家适配 chromium 系。结果厂家挺强硬:目前没资源,其次我们仅支持国产化,也就是 360 等国内厂商浏览器支持就行了,chromium 是国外软件,也不用支持,巴拉巴拉。
后面没办法,心想 360 能跑,咱改一下 chromium 源码,应该大差不差。于是哼哧哼哧折腾,调试后就发现了好玩的事情。
主要原因就是 M 显卡驱动的一个 gl 查询函数返回了异常的时间戳,这个在 chromium 端会直接因为这个问题导致 GPU 环境初始化失败,然后 chromium 会使用自己的 EGL 环境去替代。这也导致了上面的问题。
这个函数看起来也不是很难实现的函数,M 显卡出于什么考量不去做兼容适配,这是其一。
360 为何默认强制启用了 opengl 渲染模式,而不是按照 chromium 正常逻辑走 egl ,且修改了这个初始化异常的 bug ,也就是模拟给予时间戳,这是其二。
从显卡厂商考虑,提高其兼容性应是其首要目标,但为何不去做这个看起来很简单的适配;从 360 考虑,硬件的缺陷不应该通过软件方式修复,不然谷歌为何一直不修复这个看似很简单的问题。
联想一下,得出结论,国产自己绊自己脚?或者说是变相的保护主义?
举报· 2796 次点击
登录 注册 站外分享
26 条回复  
seanwhy 楼主 小成 2025-1-22 13:46:36
@DigitaIOcean 甲方是做客户端的,用的 electron 套壳,没法国产浏览器上跑,不然露馅了喂
seanwhy 楼主 小成 2025-1-22 13:45:45
@zizon 不过仔细想想 Google 的逻辑也对,既然相应 api 没法获取该拿的信息,我就认为会影响到后面的使用,干脆不让你用,因此在 Google 看来没问题。确实我后面强制让程序运行起来了,画面帧率统计的功能也失效了。这个锅还得显卡厂商来修
liuguangxuan 初学 2025-1-22 13:06:29
有幸接触过国产化一段时间,那感觉真的是,一步一个坑啊。https://i.imgur.com/agAJ0Rd.png
JensenQian 小成 2025-1-22 12:55:01
@JensenQian 反正都一样,既然 360 能跑起来,其他的就不用管了
JensenQian 小成 2025-1-22 12:54:09
别说国产卡了 黄老板的卡在 linux 下打游戏问题都很大啊
zizon 小成 2025-1-22 12:48:00
首先你得确定这个 gl 函数有规范明确的返回值类型和情况,才能说是不是 bug 吧. 公开市场的 bug 不是说是别人的就得等别人来修. 人不修你难道就不发布或者发布个不能用的东西出去么? chrome 不修时因为这个显卡不是 nvdia,没有 ROI 去分配对应的测试开发适配人力. 等你真的像龙芯一样自己投入去主线了,自然有人会去争取主线上适配.
billlee 小成 2025-1-22 12:46:43
> 从显卡厂商考虑,提高其兼容性应是其首要目标 To B 产品故意设置壁垒搞托拉斯才是常态
zizon 小成 2025-1-22 12:43:47
首先你得
loading 小成 2025-1-22 12:31:36
国产系统是 Linux ,你这个涉及显卡,你不知道 Linus 的 F*k nvidia 吗? 国产变种就更搞不定了。
123下一页
返回顶部