国产化自己绊自己?

271 天前
 seanwhy
今天闲来无事,详细说说适配国产化过程中的一些事。
话说自从用上 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 考虑,硬件的缺陷不应该通过软件方式修复,不然谷歌为何一直不修复这个看似很简单的问题。
联想一下,得出结论,国产自己绊自己脚?或者说是变相的保护主义?
8581 次点击
所在节点    程序员
47 条回复
zizon
271 天前
首先你得确定这个 gl 函数有规范明确的返回值类型和情况,才能说是不是 bug 吧.

公开市场的 bug 不是说是别人的就得等别人来修.
人不修你难道就不发布或者发布个不能用的东西出去么?

chrome 不修时因为这个显卡不是 nvdia,没有 ROI 去分配对应的测试开发适配人力.
等你真的像龙芯一样自己投入去主线了,自然有人会去争取主线上适配.
JensenQian
271 天前
别说国产卡了
黄老板的卡在 linux 下打游戏问题都很大啊
JensenQian
271 天前
@JensenQian 反正都一样,既然 360 能跑起来,其他的就不用管了
liuguangxuan
271 天前
有幸接触过国产化一段时间,那感觉真的是,一步一个坑啊。
seanwhy
271 天前
@zizon 不过仔细想想 Google 的逻辑也对,既然相应 api 没法获取该拿的信息,我就认为会影响到后面的使用,干脆不让你用,因此在 Google 看来没问题。确实我后面强制让程序运行起来了,画面帧率统计的功能也失效了。这个锅还得显卡厂商来修
seanwhy
271 天前
@DigitaIOcean 甲方是做客户端的,用的 electron 套壳,没法国产浏览器上跑,不然露馅了喂
prosgtsr
271 天前
@uqf0663 这说明问题不重要,如果充值功能有 bug 第一时间就反应过来了。。
想开点。这样让开发的精力和时间能投入到带来更多流水和利润的地方去,这对各方都是最优解。。
HenryDai
271 天前
个人有幸在某 ToG 的软件开发公司待过 1 年半,国产化这个东西挺坑的,比如 Tomcat 的变种 金蝶 东方通( Springboot 为什么不能用因为 jar 里面有 Tomcat ),Linux 上有麒麟 v10,还有统信的 UOS(扫一扫获取 root 权限真的无语)。数据达梦和变种的 PG 。
我感觉代码能力没怎么提高,很多时候都是在做这种吃屎的事情。我为了部署方便使用了 docker ,上面的人提需求,怎么让别人不能进入 docker 容器内部(你都能用 docker 了权限不是随便拿),还有给开源软件上自己的 license 宣城自己研发(偷偷违背开源协议)
其实都是的蛋糕问题,使用国产软件是控标项之一。比如我有个二舅魔改了一个 linux 系统,为了推动国产化 必须要用二舅国产系统,不买二舅的系统就不配围标,说你资质不够。
我对这个国产化是一个十分悲观的态度,我现在已经逃离。。。。。
uqf0663
271 天前
@prosgtsr 不是的,什么问题不闹大都难以反馈,客服都是两三千月薪的年轻中专小姑娘,脑子不清楚的,遇到问题第一选择都是随便应付,培训都培训不懂,不会举一反三,同样的问题换个说法她们都不会反应过来是同一个事情,所以刚入职就会一直问,但是都是些不是问题的问题,然后就会被人责怪,因为培训手册有答案的,反反复复一个事情的,时间长了几天后他们就自己点亮了随便应付的技能,无论什么问题都是随便应付,得有一个闹大了或者一段时间突然大量问一个问题才有可能向上反馈。
nzynzynzy
271 天前
都加班加成这个 b 样了,哪怕这个优化只花 1 分钟肯定还是内心想着早点回家,能不做就不做。
Donaldo
271 天前
我觉得你想多了,可能人家根本就没意识到这个 bug ,或者是没排到期
runliuv
271 天前
@murmur 优秀的总结。
saturn7
271 天前
摩尔线程这几年在驱动层开发还是进步不少的,虽然是授权买 PowerVR 架构。
Ritter
271 天前
国产显卡除了摩尔线程还有其他的吗
0x663
271 天前
短期看确实自己绊自己。
0x663
271 天前
从长远看利大于弊。
shellname
271 天前
@murmur #1 真相了
StephenHe
271 天前
你修了这个 bug ,测试要不要回归,更何况如果是别人写的代码,更难搞了。引起新的问题,甲方投诉大领导你还混不混了,随便一个小问题在甲方、领导看来以为天要塌了。
orafy
271 天前
长期看危害更甚。
目前的趋势是与国内公司合作提供特供版,主线版本加墙屏蔽国内访问,甚至移除简体中文支持。
coolair
271 天前
国产化就是这样的,当年用人大金仓,问他们要个 Python3.10 的接口驱动,死活不给,最后拿 psycopg2 的源码改了一下……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1107005

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX