根据Windows:
图形硬件供应商必须为其编写用户模式显示驱动程序 他们的显示适配器用户模式显示驱动程序是动态链接 由Microsoft Direct3D运行时加载的库(DLL)。用户模式显示驱动程序必须至少支持Direct3D版本9 DDI。
e.g。 nvd3dum.dll 是与Nvidia一起运行的DirectX11的UMD。因此,在进入Kernal模式驱动程序之前,从API调用的DirectX代码中进行着色器编译。
UMD也将代码置于中间表示中吗? (例如,你能说司机是中级语言吗?)
答案 0 :(得分:1)
OpenGL在Windows上基本上总是有一种用户模式组件,可以追溯到Windows 95 OSR2。在架构中分离客户端/服务器使得这非常容易。这意味着许多客户端API可以执行基本命令排队,验证,资源创建等,而无需切换到内核模式。
从历史上看,这意味着绘图调用在OpenGL中比Direct3D便宜。在Windows Vista(WDDM)中,情况发生了变化,WDDM要求D3D的用户模式驱动程序(这包括Vista上的D3D9),它与OpenGL的客户端前端具有类似的作用。好处有两方面:
如果驱动程序在用户模式下执行操作时崩溃,则问题通常不会传播到导致问题的应用程序之外(而不是完整的内核崩溃)。
无需在用户模式和内核模式之间切换即可完成更多实际工作,这意味着API本身在渲染时不会成为瓶颈。
D3D10非常注重降低API的总体开销,而引入WDDM的用户模式驱动程序实际上也有益于D3D9应用程序。 WDDM在较新版本的Windows中对OpenGL架构操作的方式几乎没有什么变化,尽管它确实添加了一些新功能,使D3D / GL之间的互操作性更简单(例如表面共享)。
另外,回答你的问题 - 是的,着色器编译只是OpenGL ICD在Windows上用户模式下可以做的很多事情之一。