Reputation: 4581
According to Windows:
Graphics hardware vendors must write user-mode display drivers for their display adapters. The user-mode display driver is a dynamic-link library (DLL) that is loaded by the Microsoft Direct3D runtime. A user-mode display driver must at least support the Direct3D version 9 DDI.
e.g. nvd3dum.dll is the UMD for DirectX11 running with Nvidia. So shader compilation happens here from DirectX code called from the API, before it goes to the Kernal Mode Driver.
Also does a UMD put code in a intermediate representation? (e.g. can you say the driver is a Intermediate Language)?
Upvotes: 3
Views: 3962
Reputation: 43359
OpenGL has basically always had a user-mode component of some sort on Windows beginning as far back as Windows 95 OSR2. The separation of client/server in the architecture made this extremely easy to do. What this means is that a lot of the client-side API can do basic command queuing, validation, resource creation, etc. without having to switch to kernel-mode.
Historically, this meant that draw calls, for instance, were cheaper in OpenGL than Direct3D. In Windows Vista (WDDM) the situation changed, WDDM mandates a User Mode Driver for D3D (this includes D3D9 on Vista) that serves a similar role to OpenGL's client-side front-end. The benefits are two-fold:
If the driver crashes while doing something in user-mode the issue often will not propagate beyond the application that caused the issue (rather than a full-blown kernel panic).
More actual work can be done without switching between user-mode and kernel-mode, which means that the API itself will be less of a bottleneck at render-time.
D3D10 focused a lot on reducing the overall overhead of the API, and the User Mode Driver introduced to WDDM actually benefits D3D9 applications as well. WDDM changes very little about how OpenGL architecturally operates in newer versions of Windows, although it does add a few new features that make interoperability between D3D/GL simpler (e.g. surface sharing).
Also, to answer your question - yes, shader compilation is just one of many things that OpenGL ICDs can do in user-mode on Windows.
Upvotes: 3