什么用户模式图形驱动程序(UMD)在图形管道中进行OpenGL调用?

时间:2014-02-05 23:25:01

标签: opengl graphics driver

根据Windows

  

图形硬件供应商必须为其编写用户模式显示驱动程序   他们的显示适配器用户模式显示驱动程序是动态链接   由Microsoft Direct3D运行时加载的库(DLL)。用户模式显示驱动程序必须至少支持Direct3D版本9 DDI。

e.g。 nvd3dum.dll 是与Nvidia一起运行的DirectX11的UMD。因此,在进入Kernal模式驱动程序之前,从API调用的DirectX代码中进行着色器编译。


UMD也将代码置于中间表示中吗? (例如,你能说司机是中级语言吗?)

1 个答案:

答案 0 :(得分:1)

OpenGL在Windows上基本上总是有一种用户模式组件,可以追溯到Windows 95 OSR2。在架构中分离客户端/服务器使得这非常容易。这意味着许多客户端API可以执行基本命令排队,验证,资源创建等,而无需切换到内核模式。

从历史上看,这意味着绘图调用在OpenGL中比Direct3D便宜。在Windows Vista(WDDM)中,情况发生了变化,WDDM要求D3D的用户模式驱动程序(这包括Vista上的D3D9),它与OpenGL的客户端前端具有类似的作用。好处有两方面:

  1. 如果驱动程序在用户模式下执行操作时崩溃,则问题通常不会传播到导致问题的应用程序之外(而不是完整的内核崩溃)。

  2. 无需在用户模式和内核模式之间切换即可完成更多实际工作,这意味着API本身在渲染时不会成为瓶颈。

  3. D3D10非常注重降低API的总体开销,而引入WDDM的用户模式驱动程序实际上也有益于D3D9应用程序。 WDDM在较新版本的Windows中对OpenGL架构操作的方式几乎没有什么变化,尽管它确实添加了一些新功能,使D3D / GL之间的互操作性更简单(例如表面共享)。

    另外,回答你的问题 - 是的,着色器编译只是OpenGL ICD在Windows上用户模式下可以做的很多事情之一。