Browse files

Add a diagram to SW stack, farm out intro into separate chapter

  • Loading branch information...
1 parent b1f1afc commit a025776c8200131ff4c3fcc16b705c86bc4e7605 @rygorous committed Nov 7, 2011
Showing with 40 additions and 9 deletions.
  1. +3 −0 intro.tex
  2. +5 −6 main.tex
  3. +32 −3 sw_stack.tex
@@ -0,0 +1,3 @@
+I'll write this later.
@@ -3,8 +3,8 @@
@@ -20,6 +20,7 @@
@@ -34,10 +35,8 @@
-% Include sections here
-I'll write this later.
+% Include the chapters
@@ -6,7 +6,31 @@ \chapter{The Software Stack}
which use the WDDM~\citep{wddm} driver model. Older driver models (and other
platforms) are somewhat different, but that's outside the scope of this
text---I just picked WDDM because it's probably the most relevant model on
-PCs right now.
+PCs right now. The basic structure looks like this:
+ every node/.style={
+ rectangle,
+ minimum size=.25in,
+ thick,draw=black
+ },
+ edge/.style={stealth-stealth,thick}]
+ \node (app) {Application};
+ \node (api) [below=of app] {D3D runtime}
+ edge [edge] (app);
+ \node (umd) [right=of api] {User-Mode Driver (UMD)}
+ edge [edge] (api);
+ \node (gkrnl) [below=of api] {Graphics kernel subsystem}
+ edge [edge] (api);
+ \node (kmd) [below=of gkrnl] {Kernel-Mode Driver (KMD)}
+ edge [edge] (gkrnl);
+\caption{The software stack (D3D on WDDM).}
\section{Application and API}
@@ -164,7 +188,10 @@ \section{The User-Mode Driver (UMD)}
need something that acts as the gatekeeper for access to the GPU. In the case
of WDDM, that something is the DirectX graphics kernel subsystem (aka
\code{Dxgkrnl.sys}), an OS component which contains---among other things---the
-GPU scheduler and the video memory manager.
+GPU scheduler and the video memory manager. In WDDM, the UMD doesn't talk to the
+kernel layer directly, but has to go through the D3D runtime again; however,
+the runtime basically just forwards the calls to the right kernel-mode entry
\section{GPU scheduler and Video Memory Manager}
@@ -299,7 +326,9 @@ \section{Aside: OpenGL and other platforms}
Open Source implementations of GL tend to use either Mesa or Gallium3D, both of
which have a single shared GLSL frontend that generates a device-independent IR
and supports multiple pluggable backends for actual hardware. In other words,
-that space is fairly similar to the D3D model.
+that space is fairly similar to the D3D model of sharing the front-end for
+different implementations and only specializing the low-level codegen that's
+actually different for every piece of hardware.
\section{Further Reading}

0 comments on commit a025776

Please sign in to comment.