迅维网

标题: Windows 10 给 Linux 子系统写显卡驱动的是一个人吗,是谁呢? [打印本页]

作者: spiegesq    时间: 2018-5-15 08:13
标题: Windows 10 给 Linux 子系统写显卡驱动的是一个人吗,是谁呢?
Windows 10 给 Linux 子系统写显卡驱动的是一个人吗,是谁呢?
作者: 给我闪    时间: 2018-5-15 08:13
要撕是吧,谁怕谁啊。

首先,你得搞清楚,驱动是干什么的。连这个都不懂敢开炮,丢大人了吧。驱动上连系统,下连硬件。跟硬件和系统都相关。Linux上的驱动,到Windows上没法用,反之亦然。所以,即便parallel有驱动、Linux有驱动,到了Linux子系统里,也照样挂。因为Linux子系统并不是个完整的Linux,尤其是和硬件打交道部分,是通过直接调用Windows Kernel做的,接口和Linux自己的完全不同。

这就否定了用现有驱动的可能。

其次,你得搞清楚,Linux子系统的来源。Linux子系统用的是picoprocess,这是公开资料就能查到的,再进一步查出处,就能找到Drawbridge - Microsoft Research。这是个轻量级虚拟化的解决方案,在Windows上虚拟Windows。如果你看了他的paper https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/asplos2011-drawbridge.pdf,就会知道里面有提到的该方案的限制,不能接触硬件。后来在2012年,我就负责给Drawbridge做GPU加速的部分。我一个人完成了Drawbridge的D3D9和D3D11驱动(为什么没有D3D10?因为我懒)。前后两套完全不同的方案,对KMD和UMD有不同的取舍。分别适用于不同的情况。对,我一个人完成的。

再接下来,Techfest上演示了这个demo,很多人表示感兴趣,也有人问了能不能跑CUDA。我现场分析了跑CUDA的可行性和难点。但没有继续往下做。几天后,有个保密项目的人跟我有些接触,问我能不能支持OpenGLES,我说给我一两个月。3月份的Techfest,4月中旬我就第一次让OpenGLES驱动跑起来一些游戏了。印象深刻的是5月中旬的一天,从早上7点开始,一直写到晚上9点,完成了Android驱动的最后一块拼图,终于能完整地运行Android桌面,并在里面做所有的操作。之后那个项目就叫Project Astoria,大家基本都知道是怎么回事了。用的也是我的驱动。甚至,到了Redmond之后,我还对那个驱动做了一次完全的改动,基本没有一行跟以前一样了。为的是在超低端平台上(WP,说的就是你)也能跑的流畅。仍然是我一个人完成的。(有个有意思的小故事。他们之前在WP上跑的时候都是黑屏的。因为保密需要没告诉还在MSRA的我。而我到Redmond第一天,下午3点多入职培训完正式上班才知道这事,下班前已经定位原因,第二天中午就修好了。老板的老板跟我老板说,where didi you find him? you got the right guy!)

之后Project Astoria被暂停,原班人马和原版代码调去加强Linux的部分,成了现在的Linux子系统。

少年,你对力量一无所知。
作者: philon    时间: 2018-5-15 08:13
曾老师不是离开知乎了么…这是勃学家客串?
作者: shichg123    时间: 2018-5-15 08:13
凑个热闹,有些项目,一个人能写出来的,一百个人还真未必可以。
因为有技术门槛。

假设满分100分,那么按照正态分布,普通程序员就是在40-60之间,高手在60-70之间,能够给写大型驱动的高端团队,平均分也许可以到75分逼近80分。

然后,如果来了一个85分的项目,你说是平均分75-80分的百人团队写得好呢,还是一个水平在90-95分的人适合呢?

对了,也许有人会说,难道不可以让一个85-90的人带领这个团队,自然可以碾压那个90-95分的人了。

嗯,如果是比如给新出的nVidia显卡写win10驱动,可以这么做。然而目前遇到的情况是在win10的linux子系统写显卡驱动,这是从未有过的技术模式。
这种情况下,那个85-90的人是会写的,可以直接下手,那个90-95的大牛是已经有了成体系的思路,可以直接写出beta版,测试一轮就上线的。
而那群75-80的,则是只看到了门槛,对门槛里面有什么都一无所知的。
这样的团队,即使让85-90的人带领,依然得从头开始技术攻关。

冒昧问一句,题主也许连windows的驱动体系和linux差距有多大都不知道吧?连子系统和虚拟机的差距有多大都不知道吧?大概连win32和posix都是子系统都不知道吧?大概不会浅薄到以为那个驱动就是类似虚拟机的调用转发吧?

——————————————

补充说明

答主对驱动编程方面是个外行,也是个对力量一无所知并瑟瑟发抖的少年。但我知道如何尊重强者。

答主现在做的工作中,开发人员根据业务领域不同被划分成了几个小组,每个小组人员根据业务压力,从个位数到十数人不等。但不变的是,小组的领导,工作能力基本可以等同于所有组员的总和。
本人不才,是其中一个小组的组长。目前并行开展3个内容相似的项目,开发完毕待测试的一个,测试完毕待甲方使用反馈并进行修改的两个,甲方试用完毕并回归完毕然后验收完毕正处于维护阶段的一个。
目前我的组员投入在那三个并行开展的项目中,其他项目则由我全部负责,包括除测试外的所有文档工作,同时我在那三个项目中仍然作为主力参与开发。
我的组员里,有一半人工作年限和我仿佛。
这还只是国内一家普通的软件企业。
我能做的事,在我的组员眼里是可以触及的仰望,我和我的组员的差距,也就一个职位。
而龚大,是在微软研究院任职的强者。他和我的差距,比我和我的组员大了不知道多少倍。他能做的事,在我看来仿若天方夜谭。

所以,请学会尊重。你可以对力量一无所知,但这不代表你就有资格质疑。初生牛犊不畏虎,并不是褒奖。
作者: qinger0912    时间: 2018-5-15 08:13
还是原来的味道
作者: LThhVopG    时间: 2018-5-15 08:13
总有那么些人,不愿意承认别人一个人的工作效率等于他们一群人。
作者: 小詠。    时间: 2018-5-15 08:13
无数弱逼以为写的程序越底层,越“直接调用“硬件越显得的牛逼。殊不知一个系统,从外层到内层,能一起工作需要各种掌握各种领域知识的人一起协同工作。
还有很多渣渣认为牛逼的人需要再任何时候任何人面前都要表现的卑谦。殊不知对真正牛逼的人来说,过分的humble和modest就是虚伪。
码农领域,的确有可能一个人顶许多人,因为一群乌合之众里往往有几个祸害是其反面作用的。
作者: dsadsadsasd    时间: 2018-5-15 08:13
看到标题我就猜到是谁的提问。题主能干点正经事儿吗?方舟子好歹也真正地打假和科普过啊
作者: CCouQPvx    时间: 2018-5-15 08:13
我不是撕。我是对微软公司驱动界一个人写驱动这件事表示惊叹。写DirectX给200款显卡适配驱动,一个人写完这也是屌。当然可能这个directX“驱动”并不是我们理解的驱动。

整个微软竟然真的依靠一个人写显卡驱动,在这之前都是黑屏。这家公司,很有情操。。

Parallels的虚拟机都不需要专门写驱动,都可以玩PC游戏了,而微软的虚拟机制却不支持gpu加速,手机上也不行。。。
作者: 爱上阿南    时间: 2018-5-15 08:13
怎么这个问题也能火呢?实在可笑了。

是不是驱动取决于你对驱动的定义,你说不直接操纵硬件就不是驱动,那就不是,你说提供驱动接口就是驱动,那就是,这有什么好争论的?虚拟光驱是光驱吗?vpn 是局域网吗?你后妈是你妈吗?

这种撕人的问题在其他话题下炒作一下也就罢了,文人相轻,小撕怡情。一群写程序的也学着人家文科生玩人家玩剩下的,丢不丢人啊?
作者: ZmAXxoJF    时间: 2018-5-15 08:13
OS的图形系统通常包含两部分,一个是DDK,也就是驱动程序的开发接口,另一个是具体硬件的驱动实现,后者通常是硬件厂商自己开发,比如nv/amd/intel,前者是OS厂商开发,比如MS/Linux.
吵架的根源其实无非就是对驱动层次的理解不同而已。
DDK的设计开发主要是集中在软件层次上,和具体OS关系紧密,所谓的架构师需要懂一点硬件, 但不需要太深入,懂些皮毛也一样能设计,这类工作一个小team就差不多了,某些嵌入式系统上的graphics设计一个人也能搞定。
真正的GPU驱动实现和具体硬件关系紧密,通常情况下,无论工作量还是复杂程度都远超前者的开发,我猜这也是为什么有人对所谓“一个人完成驱动开发”说法的不满。确实这种GPU硬件驱动的开发,涉及大量软件和硬件知识,几乎不可能是一个人能完成的,而是一个庞大的软件和硬件团队完成,GPU驱动的复杂程度也是秒杀网卡这种驱动的。
对于不涉及具体硬件的驱动,比如虚拟环境下的镜像驱动,相对来所是比较容易开发的。最简单的是API redirect,复杂点的如vmware下的那种,这些驱动一两个人搞绝对是没问题的。但真正硬件上的东西,随便一个hang就能折磨你几天甚至一个月,一个人搞是不现实的
作者: inmyhome    时间: 2018-5-15 08:13
驱动真心可以一个人完成。连最初版本的Linux内核都是一己之力完成的。

你身边没人能做到一个人写一个驱动甚至多个驱动,不代表没人能。

世界很大的,眼界放宽点。
作者: 5674152    时间: 2018-5-15 08:13
随手翻一翻,发现题主截图中的那个问题,是我提的……
不过真没想到一个“我”字都能撕起来。
好吧,有种非常奇怪的成就感。

不过题主这问题问的也真是够冷汗……你们难道见过谁在Virtualbox、VMware Workstation或者Parallels虚拟机上跑CUDA的么?
作者: akmpswv    时间: 2018-5-15 08:13
这是勃勃回归知乎的前奏?
作者: darny    时间: 2018-5-15 08:13
显卡驱动比网卡难很多吗?不然一个人应该可以完成吧,我看intel10g那个系列的网卡都是那么1,2个人写的,源码大概2-3千行,这个驱动都是套路,熟悉datasheet就行,反而之前linux为了支持多队列网卡加的那套东西就要讨论了一段时间,不过看问题描述做的不仅是显卡驱动这么简单吧
作者: YiHYcCgb    时间: 2018-5-15 08:13
提示: 作者被禁止或删除 内容自动屏蔽
作者: YiHYcCgb    时间: 2018-5-15 08:13
提示: 作者被禁止或删除 内容自动屏蔽
作者: jansie1314    时间: 2018-5-15 08:13
我在以前公司的师傅,是公司的顾问,某大学的老师。
因为公司搬迁等等屁事,新产品没赶上开发,研发部大多离职。
他花了一个月的时间,从Windows端到嵌入式设备端,包圆了,只是找了个小伙帮他焊硬件。
不妨碍他带课。

就我的认知来说,一个人,是可以的。
另一个例子是阿里的多隆。
作者: nshukwrd    时间: 2018-5-15 08:13
远离贴吧就是想少一分撕逼。

无奈又看见这种为撕而撕的提问。

关键是还多次进出知乎。
作者: zhoujingli    时间: 2018-5-15 08:13
纯技术驱动的项目,人多反而降低生产率
楼主是没做过累死项目才会有这种疑问吧
作者: 传奇私服cdegeq    时间: 2018-5-15 08:13
一个要考一百分的需求,你找一万个刚及格的人也考不出来~




欢迎光临 迅维网 (https://www.chinafix.com/) Powered by Discuz! X3.4