哪种用户模式图形驱动程序(UMD)在图形管道中进行了openGL调用



根据Windows:

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

例如。 nvd3dum.dll 是使用NVIDIA运行的DirectX11的UMD。因此,着色器编译在此处是从API调用的DirectX代码到达内核模式驱动程序的DirectX代码。


umd是否也将代码放在中间表示中?(例如,您可以说驱动程序是一种中间语言)?

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

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

  1. 如果驱动程序在用户模式中执行某些操作时崩溃了,通常不会超越引起问题的应用程序(而不是成熟的内核恐慌)。

  2. 可以在不在用户模式和内核模式之间切换的情况下完成更多的实际工作,这意味着API本身将在渲染时间时不再是瓶颈。

D3D10非常关注减少API的整体开销,而引入WDDM的用户模式驱动程序实际上也使D3D9应用程序受益。WDDM对OpenGL的架构在较新版本的Windows中的运行方式变化很小,尽管它确实添加了一些新功能,这些功能使D3D/GL之间的互操作性更简单(例如Surface Shareing)。

另外,要回答您的问题 - 是的,着色器汇编只是OpenGL ICD在Windows上可以做的许多事情之一。

最新更新