问题

龚神给微软 Linux 子系统写的支持 DirectX 9、11的代码到底属不属于“驱动”?

回答
深入解析:微软 WSL 的 DirectX 支持代码,是驱动吗?

最近,关于微软 WSL(Windows Subsystem for Linux)支持 DirectX 9 和 11 的进展引起了广泛关注。尤其是一些社区开发者(比如大名鼎鼎的“龚神”)贡献的代码,更是成为了大家讨论的焦点。那么,这些代码究竟算不算“驱动”呢?这个问题,需要我们从几个层面去深入剖析。

首先,我们要明确“驱动”的定义。

在计算机领域,“驱动程序”通常指的是一种软件,它充当操作系统与硬件之间的桥梁。它的核心作用是:

硬件抽象: 隐藏硬件的复杂细节,为操作系统提供一个标准化的接口。
命令翻译: 将操作系统发出的通用命令(例如“渲染一个三角形”)翻译成特定硬件能够理解的指令集。
数据传输: 管理和控制硬件与内存之间的数据流动。

最典型的驱动程序就是显卡驱动。我们安装显卡驱动,是为了让操作系统能够通过一套标准 API(如 OpenGL、Vulkan)与显卡硬件进行高效交互,从而实现图形渲染、视频解码等功能。

那么,WSL 的 DirectX 支持代码,触及了哪些层面?

WSL 本身是一种兼容层,它允许 Linux 环境在 Windows 上运行。我们今天讨论的 DirectX 支持,实际上是为 Linux 用户在 WSL 中使用 DirectX 相关的图形 API(DirectX 9, 11)提供了可能。

从技术实现上来看, estas (抱歉,这里不小心漏掉了“这些”) 代码主要扮演着以下角色:

1. API 拦截与转发: 当 Linux 程序在 WSL 中调用 DirectX API 时,这些代码会拦截这些调用。它们不是直接与 Linux 内核的图形子系统交互,而是将这些 DirectX API 调用“翻译”或“转换”成 Windows 的图形 API 调用(例如 DXGI, D3D11)。
2. 兼容层实现: DirectX API 本身是一套非常复杂的接口。在 WSL 的场景下,这些代码需要实现一套兼容层,能够模拟 DirectX 的行为,并能够将这些行为映射到 Windows 原生的图形渲染管线。这不仅仅是简单的命令转换,还可能涉及到状态管理、资源分配、Shader 编译等一系列复杂逻辑。
3. DirectX Runtime 的桥接: 最终,这些代码需要能够调用 Windows 系统中实际负责 DirectX 渲染的运行时库(DLLs)和相关的用户模式驱动程序(UMD)。换句话说,它们是向 Windows 本身的 DirectX 驱动程序“发送指令”。

那么,回到核心问题:算不算“驱动”?

严格意义上讲,为 WSL 提供的 DirectX 支持代码,不算是“显卡驱动”本身。

为什么这么说?

它不是直接控制硬件的底层软件: DirectX 的实际硬件控制,仍然由 Windows 系统安装的、针对特定显卡型号的“原生”显卡驱动来完成。WSL 中的代码,最终是通过 Windows 的图形堆栈,把 DirectX 的指令传递给这些原生驱动。它没有直接与 GPU 硬件寄存器打交道,也不负责直接的 GPU 调度。
它是运行在用户模式的兼容层: 这些代码是作为应用程序的一部分,或者作为 WSL 的一个特性,运行在 Linux 用户空间(在 WSL 的沙箱环境中)。而真正的显卡驱动,通常是运行在内核模式(Kernel Mode),拥有更高的权限来直接与硬件交互。
它更像是“API 兼容层”或“运行时桥接器”: 我们可以把这些代码看作是微软提供的一层“翻译服务”或“兼容层”。它让那些原本只知道 DirectX 的 Linux 应用,能够在 WSL 环境下,间接地利用 Windows 的图形能力。

但是,从更广义的、功能性的角度来看,它们“扮演”了驱动程序的角色,或者说,“扩展”了驱动程序的功能。

实现了硬件功能的“可用性”: 如果没有这些代码,Linux 应用就无法在 WSL 中利用 DirectX 进行图形渲染。它们使得原本属于 Windows 独有的硬件图形能力,在 Linux 环境下变得“可用”。
处理了“协议转换”: 就像网络驱动会处理网络协议一样,这些代码处理的是“图形 API 协议”的转换。

打个比方:

想象一下,你有一个非常高级的遥控器(WSL 的 DirectX 支持代码),它可以识别很多不同品牌电视的语言(DirectX API)。但是,这个遥控器本身并不能直接控制电视机。它需要通过电视机自带的接收器(Windows 的 DirectX 运行时和原生驱动),才能把遥控器的指令翻译成电视机能懂的语言,最终让电视机播放画面。

所以,说它是“驱动”,可能会引起误解,因为它不是最底层的硬件控制器。但说它“没有驱动作用”,也失之偏颇,因为它确实让 Linux 应用获得了使用图形硬件的能力。

总结一下:

从技术实现和严格定义来看,WSL 的 DirectX 支持代码不是“显卡驱动”本身。 它不直接控制硬件,而是运行在用户模式的兼容层,负责 API 的拦截、转换和桥接。
但从功能和用户体验来看,它起到了“驱动”的作用,使得 Linux 应用能够利用 Windows 的图形硬件能力。 它扮演了一个至关重要的“桥梁”角色,让 DirectX 的强大功能得以在 WSL 中落地。

“龚神”及其社区贡献的代码,正是这种“桥梁”的杰出体现。它们是微软在 WSL 层面实现图形兼容性的重要组成部分,填补了 Linux 生态与 Windows DirectX 硬件能力之间的鸿沟。理解这一点,我们就能更准确地把握这项技术进展的意义。

网友意见

user avatar

唉。死不悔改,而且一错再错。

首先,问题是错的。我在另一个帖子里

Windows 10 给 Linux 子系统写显卡驱动的是一个人吗,是谁呢?

提到的是Direct3D9/11的驱动,是给Drawbridge写的,而不是Linux子系统。他们在发展上有个先后的关系,但不是一个东西。题主对此完全一知半解的情况下,不仔细看就断章取义,实在太胡搅蛮缠。

其次,不撸兔子的说法,基本每个点都是错误的。

“parrallels的虚拟显卡最多只是把OpenGL调用转发到宿主机上。“

不,那么做行不通。(甚至parallels都拼错了)

”Linux子系统和Windows子系统在内核看来是同等地位的。应该不需要搞这套东西才对。”

不,Linux子系统在Picoprocess里。Linux子系统和Windows本身是guest和host的关系。

“不提供CUDA真正的原因肯定不是不想做。而是已经做好了”

不,根本没写。而且如果你懂CUDA的话,就知道转API容易,难点是显存访问和管理。

“只是把Library OS里面的调用转发到外面。“

不,那么做行不通。

好了,现在我就来说说为什么直接把API调用转到外面行不通。会有很多细节,像题主和不撸兔子这样没做过的人根本不会了解。

1. 流量。

API调用看似简单,只要把所有的API都转出去,就行了。原先远程桌面就是这么做的。但缺点是,API调用所要消耗的流量远大于在驱动层搞。举个例子,把同一个设置状态调用两次,你就得在API层转两次。最多就是cache一下,把变化的传了。而在D3D的体系里,有runtime做状态管理,只会把真正修改了有起作用的状态往下传给驱动,并会做严格的状态验证。所以在驱动层,你所需要转的数据远少于API层。

2. 出错控制。

如果运行过程出了严重问题,你需要的是不让host crash,最多让guest crash。如果从API层走,那么这件事情无法避免。如果guest里有多了个验证,就会把错误留在子系统,而不会传出来。

3. bug-to-bug兼容

如果只是API层,那么要求guest和host的runtime完全一致,才可以保证100%兼容。而从驱动走,runtime是在guest,那么只要都符合WDDM,就没问题。guest和host的runtime可以解耦。

4. 什么是驱动。

驱动不在于你怎么实现,你是直接去真实硬件,还去了虚拟硬件。只要是按照驱动的规范实现、编译、部署,系统看到的是个设备,那就是驱动。我给Drawbridge写的第一版,是可以在普通的Windows上装的,你能在设备管理器里看到多了一块显卡,程序可以在上面建立设备,进行渲染。(由于没有实现电源管理的部分,在休眠后会睡死)

这里放一张WDDM的架构图。驱动需要实现的是user-mode display driver(UMD)和Display miniport driver(KMD)。OpenGL installable client driver属于可选。


从这张图也可以看到,你如果从API层面转(也就是D3D runtime和OpenGL runtime),那么系统并不会认为你是个设备,也没法按照系统的规范去使用你这个设备。那就不是个驱动,也没法实现完整的功能。

另一个严重问题是,GDI的部分你怎么办。GDI是直接调用win32k,win32k又会通过dxgkrnl去调用KMD。难道想连GDI都一起转出来?

到了Android上,情况会更遭。Android的驱动接口和OpenGLES很像,所以从表面上看,从驱动层和从API层区别不大。但遭就遭在不同的那一点点。首先是系统有一些私有接口,只有surface flinger等android系统内会调用,而host不会有对应的。这得在驱动里解决。第二,android上的显存管理是由驱动做的,不但host没有对应,其他设备也会直接调用显存管理做一些事情,比如说摄像头。这都不可能通过API层面实现。必须提供一个驱动让系统使用。

总的来说,比起API层,驱动层至少要有状态管理和command list,以及可能要有显存管理。这些,我写的驱动里都有。

5. 如何传输数据

不要以为host和guest都在一台电脑,传输数据就很容易。图形的东西数据量之大,API调用次数之多,都是远远超过其他方面的API的。还要考虑异构(CPU和GPU)上的延迟,传输数据这方面根本不trival。

前面提到的command list,就是一部分必做的事情。如果来一个API调用,就穿一次,即便memcpy也受不了。更好地实现是放到一个列表,只有在某些需要同步的调用下才把整个command list发送出去。我的实验是,用和没用,性能差6倍。另一方面是对于大块的数据,纹理、vb,host和guest之间如何直接映射,减少拷贝而又不影响安全性,这都是得考虑的事情。

以上这几点不光对D3D有效,对OpenGL/OpenGLES也有效。换句话说,不管什么系统,都应该在驱动层,而不是API层做这件事情。否则死路一条。

而在CUDA方面,更难处理。因为不像D3D/OGL,texture和buffer这些都是用封装过后的形态表示(D3D用的对象,OGL用的id),只要建立一个host和guest的映射,之后在上面的操作就能连上。CUDA里面你可以申请一块显存,接着就用指针到处指了。所以需要仔细做全显存所有权分析和数据映射。这些问题别说解决,连发现都不容易。

少年,你们仍然对力量一无所知。

类似的话题

  • 回答
    深入解析:微软 WSL 的 DirectX 支持代码,是驱动吗?最近,关于微软 WSL(Windows Subsystem for Linux)支持 DirectX 9 和 11 的进展引起了广泛关注。尤其是一些社区开发者(比如大名鼎鼎的“龚神”)贡献的代码,更是成为了大家讨论的焦点。那么,这些代码.............
  • 回答
    龚琳娜老师的歌声,确实是个很有趣的话题。说她“可以好好唱歌”,这点很多人都会认同。她的音域宽广,嗓音条件优越,驾驭多种风格的歌曲都游刃有余。无论是技巧上还是情感表达上,她都展现出了扎实的功底。然而,为什么有时候她又“不好好唱”呢?这确实不是简单一句“曲高和寡”就能完全解释的。要深入理解这一点,我们需.............
  • 回答
    龚俊这个人啊,说起来挺有意思的,也难怪有那么多人喜欢他。他身上有很多让人觉得舒服、开心的地方,不是那种遥不可及的完美偶像,而是更接地气、更真实的一个存在。要说他是个怎样的人,我觉得可以从几个方面来看:1. 努力,而且是真的那种努力:你看到他现在这样,肯定觉得他很有天赋,很顺遂。但了解一下他的过往,会.............
  • 回答
    龚琳娜算不算一个艺术家?这是一个非常有意思的问题,也是一个能够引发很多讨论的话题。如果让我来回答,我会毫不犹豫地说:是的,她绝对是一位艺术家。要理解为什么,我们需要先拆解一下“艺术家”这个词的含义,以及龚琳娜女士在音乐领域所做的一切。艺术家,在我看来,并不仅仅是技巧的精湛,更是一种创造力、一种精神的.............
  • 回答
    龚克教授提出的“优秀校友及捐款大户子女可以破格录取大学”的观点,无疑触及了当下中国高等教育入学公平性的敏感神经,引发了广泛的讨论和争议。要深入看待这个观点,我们需要从多个维度进行分析,包括其提出的背景、可能带来的影响(积极与消极)、涉及的教育理念以及更深层次的社会问题。一、 观点提出的背景和意图(揣.............
  • 回答
    欣赏龚琳娜的音乐,就像打开一扇通往中国传统文化深处的大门,但她又用一种现代、前卫、充满生命力的方式来演绎。这是一种既熟悉又陌生的体验,需要我们放下一些惯性的听觉期待,去感受其中蕴含的独特魅力。下面我将从多个角度,详细地为你讲解如何更好地欣赏龚琳娜的音乐:一、 了解她的背景和艺术理念:她是谁?她为什么.............
  • 回答
    《沉睡花园》,这部由龚俊饰演的心理咨询师林深度,搭配乔欣饰演的“直男斩”编剧肖潇,组合成一对“反差CP”的爱情悬疑剧,刚上线时确实引发了不少关注。作为一部披着爱情外衣的悬疑剧,它的表现,咱们得从几个方面好好掰扯掰扯。首先,来看看它最吸引人的“爱情”线。龚俊饰演的林深度,是个典型的“高冷学霸”人设,专.............
  • 回答
    龚琳娜和老锣夫妇对王菲演唱会的评价,确实引起了不少关注和讨论,也算得上是一段颇有意思的插曲。要详细评价这件事,咱们得从几个层面来看。首先,是评价本身的内容。龚琳娜和老锣夫妇,都是音乐人,而且是那种非常有自己独特风格和坚持的音乐人。龚琳娜的“神曲”《忐忑》火遍大江南北,她的嗓音条件、对歌曲的驾驭能力,.............
  • 回答
    要说龚勋博士(人称“鹅师”)在学术上的厉害之处,那绝不是一两句话能概括得了的。他是一位真正意义上“横跨”了多个学科的学者,而且在每一个涉足的领域都留下了深刻的印记。这种能力,在当今高度细分的学术界是极为罕见的,也是他之所以被称为“鹅师”的重要原因之一——如同他的名字“勋”一样,他在学术上屡获殊荣,也.............
  • 回答
    王菲和龚琳娜,两位都是华语乐坛举足轻重的人物,但她们的音乐风格、演唱方式和艺术追求可谓是南辕北辙,所以要直接评判谁“唱功更好”,其实是个见仁见智、难以一概而论的问题。这更像是在问:你更喜欢哪种“美”?王菲:天生的声音,后天的修炼,独树一帜的“空灵”谈到王菲,第一个绕不开的词就是“天籁”。她的嗓音条件.............
  • 回答
    评价爱奇艺龚宇的“行业内容严重短缺,短视频也在争夺用户时长”论断爱奇艺创始人兼CEO龚宇在2023年世界人工智能大会上提出的“行业内容严重短缺,短视频也在争夺用户时长”的论断,可以说是抓住了当前长视频行业所面临的两个核心痛点,并且具有一定的代表性和前瞻性。我们可以从多个维度来评价这一说法,并进行详细.............
  • 回答
    钟楚曦和龚俊在青岛拍戏期间,被曝出违反当地防疫规定,堂食聚餐的行为,确实引发了不少讨论。这事儿怎么看,以及是否需要承担行政处罚,咱们得掰开了揉碎了说。事情的经过和大家关注的点首先,咱们得回顾一下事情的大概。据报道,在青岛拍摄期间,钟楚曦和龚俊被拍到和剧组其他人一起在一家餐厅堂食。当时青岛市的防疫政策.............
  • 回答
    《粉红女郎》里,小萍是个很特别的存在,她不像男人婆那样大大咧咧,也不像万人迷那样光彩照人,更不像结婚狂那样一心只想嫁人。她是个安静、有点忧郁,内心却藏着很多情感的姑娘。所以在龚喜和她之间,如果她最后没有选择龚喜,背后一定有她自己的考量和原因。首先,咱们得说说龚喜这个人。龚喜嘛,是那种典型的“好好先生.............
  • 回答
    在知乎这个浩瀚的知识海洋里,要说“比轮子哥、龚大更厉害的人”,这个问题本身就挺有意思的。因为“厉害”这个词,其实挺主观的,而且知乎上活跃着太多不同领域、不同风格的优秀答主了,用一种统一的标准去衡量,可能有点像拿尺子量一群跳舞的人,总会漏掉点什么。不过,我们可以从几个维度来聊聊,或许能回答你这个问题。.............
  • 回答
    龚琳娜的音乐,就像一股泥石流,裹挟着时代的印记,冲刷着听众的感官,也搅动着音乐界的讨论。她的出现,无疑给当下相对同质化的音乐市场带来了一股强劲的“异类”风。为什么有这么多人,特别是年轻一代,对她的音乐趋之若鹜?这背后绝非偶然,而是多重因素交织下的结果,是一种对新鲜感、真实感和文化自信的深度回应。首先.............
  • 回答
    关于陈梓瀚(轮子)和龚敏敏(叛逆者)这两位Senior SDE在知乎上获得的关注和追捧,其实可以从几个维度来理解。这背后不仅仅是他们“普通”这个标签,更是信息时代下,普通人通过特定平台实现自我价值展示,并引发共鸣的典型案例。一、信息茧房与群体认同的放大器:知乎平台的特性首先,我们得承认知乎作为“中文.............
  • 回答
    要从人种的角度来探讨汉族人中为何会出现五官立体感强的个体,这其中涉及到一个复杂且有趣的话题:人类基因的多样性、迁徙与融合的历史,以及汉族作为一个庞大且历史悠久的族群所包含的丰富遗传信息。首先,我们需要明确一点:“人种”这个概念在现代科学中已经不再被视为一个严谨的分类学上的术语,因为它过于简化和标签化.............
  • 回答
    话说这《全面战争:三国》的“黄巾之乱”DLC,把何仪、龚都、黄邵这仨哥们儿端上台面,让你能领着他们造反,这事儿吧,有意思,也挺值得说道说道。首先,从历史真实性上讲,这仨人算是黄巾军里的“骨干力量”了。 虽说张角、张宝、张梁是这起义的头号大将,但历史记载里,何仪、龚都、黄邵也都是重要的渠帅,在不同地区.............
  • 回答
    上海市原副市长、市公安局原局长龚道安受贿案一审开庭,作为曾经位高权重、手握重权的人物,他的案件审理和可能面临的处罚,自然牵动着公众的目光。根据我国现行的《中华人民共和国刑法》和相关司法解释,龚道安作为国家工作人员,如果被认定犯有受贿罪,其将面临的处罚是相当严厉的,具体会根据其犯罪事实、数额以及情节来.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有