|
|
|
1.1 Nvidia's NV10---First Integrated PC GPU (September 1999) |
|
|
2 | (12) |
|
1.1.1 Nvidia's Non GPU GPU |
|
|
9 | (1) |
|
1.1.2 The S3 Nvidia Patent Suit and Silicon Valley Gossip |
|
|
10 | (1) |
|
1.1.2.1 Meanwhile, Back in Reality? |
|
|
11 | (1) |
|
1.1.2.2 Nvidia and S3 Enter into a Cross-Licensing Agreement |
|
|
12 | (2) |
|
1.2 Summary and Conclusion |
|
|
14 | (1) |
|
1.3 Epilog---All the Others |
|
|
15 | (1) |
|
|
16 | (3) |
|
|
19 | (44) |
|
|
20 | (11) |
|
2.1.1 The Meaning of Real Time |
|
|
21 | (1) |
|
2.1.2 Binning and Branding |
|
|
22 | (1) |
|
|
23 | (2) |
|
|
25 | (1) |
|
2.1.3.2 Resizable Base Address Register (2010) |
|
|
26 | (1) |
|
2.1.4 Object-Level Clipping |
|
|
27 | (1) |
|
2.1.4.1 Looking Back at the Geometry Processor's Origins |
|
|
27 | (3) |
|
2.1.4.2 Digital Signal Processors Used for Geometry |
|
|
30 | (1) |
|
2.2 The Rendering Equation |
|
|
31 | (1) |
|
2.3 The Geometry Creation |
|
|
32 | (4) |
|
2.4 The Software Story: The All-Important APIs |
|
|
36 | (5) |
|
|
37 | (1) |
|
2.4.2 Drawing and Shading |
|
|
37 | (1) |
|
|
37 | (1) |
|
|
38 | (3) |
|
2.4.4.1 3D Texture Filtering |
|
|
41 | (1) |
|
2.5 Fill Rate, Rendering Pipelines, and Triangle Size |
|
|
41 | (15) |
|
2.5.1 Rendering Techniques |
|
|
43 | (2) |
|
2.5.1.1 Polygon Rendering |
|
|
45 | (1) |
|
2.5.1.2 Scan-Line Rendering |
|
|
45 | (1) |
|
2.5.1.3 Immediate Mode Rendering |
|
|
45 | (1) |
|
|
46 | (1) |
|
2.5.1.4.1 Tile-Based Deferred Rendering |
|
|
46 | (2) |
|
2.5.1.4.2 Immediate Mode Tile Rendering |
|
|
48 | (1) |
|
2.5.1.5 Ray-Traced Rendering |
|
|
49 | (1) |
|
|
50 | (1) |
|
|
50 | (3) |
|
|
53 | (2) |
|
2.5.5 Environment Mapping |
|
|
55 | (1) |
|
2.6 Generating the Image: Hardware Issues |
|
|
56 | (2) |
|
2.6.1 VPU---Visual Processing Unit |
|
|
57 | (1) |
|
|
57 | (1) |
|
|
58 | (1) |
|
2.8 Audio, In, Out, In Again |
|
|
58 | (1) |
|
|
59 | (1) |
|
|
60 | (3) |
|
|
63 | (42) |
|
3.1 The First Era---Transform and Lighting---DirectX 7 (1999) |
|
|
66 | (6) |
|
3.1.1 Shading and Shaders |
|
|
66 | (2) |
|
|
68 | (2) |
|
3.1.2 Geometry Processing |
|
|
70 | (2) |
|
3.2 The Second Era---Programmable Shaders---DirectX 8 and 9 (2001--2006) |
|
|
72 | (3) |
|
3.2.1 Pixel (Fragment) Shader Stage |
|
|
73 | (1) |
|
3.2.2 How Many Shaders? Is There a Limit? |
|
|
74 | (1) |
|
3.3 The Third Era---The Unified Shader---DirectX 10 and 11 (2006--2009) |
|
|
75 | (4) |
|
3.3.1 Geometry Shader (2006) |
|
|
78 | (1) |
|
3.4 The Fourth Era---Compute Shaders---DirectX 11 (2009--2015) |
|
|
79 | (4) |
|
3.4.1 Tessellation Shader (October 2009) |
|
|
80 | (3) |
|
|
83 | (1) |
|
3.5 The Fifth Era---Ray Tracing and AI---DirectX 12 (2015--2020) |
|
|
83 | (8) |
|
3.5.1 Ray Tracing Shaders |
|
|
84 | (3) |
|
3.5.2 Real-Time Ray Tracing with AI |
|
|
87 | (2) |
|
3.5.3 Variable Rate Shading---2019 |
|
|
89 | (2) |
|
3.6 The Sixth Era---Mesh Shaders---DirectX 12 Ultimate (2020) |
|
|
91 | (2) |
|
3.6.1 Primitive and Mesh Shaders---2017--2020 |
|
|
92 | (1) |
|
|
93 | (1) |
|
|
93 | (3) |
|
|
93 | (1) |
|
3.7.1.1 GPU Sources for Mobile Devices |
|
|
94 | (2) |
|
|
96 | (1) |
|
3.8 FLOPS Versus Fraps: Cars and GPUs |
|
|
96 | (4) |
|
3.8.1 Why Good Enough is Not |
|
|
98 | (2) |
|
|
100 | (1) |
|
|
101 | (4) |
|
|
105 | (46) |
|
4.1 The Golden Age---Transform, and Lighting Changes the Industry (1999--2001) |
|
|
107 | (1) |
|
|
108 | (1) |
|
4.2 First Era Discrete PC-Based GPUs |
|
|
108 | (27) |
|
4.2.1 Glaze3D Bitboys 2.0 (1999--2001) |
|
|
109 | (3) |
|
|
112 | (2) |
|
4.2.1.2 Bitboys Gets the Axe |
|
|
114 | (1) |
|
4.2.1.3 Bitboys Gets Hammered |
|
|
115 | (1) |
|
|
116 | (1) |
|
4.2.2 S3 Savage 2000 (November 1999) |
|
|
116 | (3) |
|
|
119 | (1) |
|
4.2.2.2 Epilogue: The Curious Trail to Zhaoxin |
|
|
120 | (1) |
|
4.2.3 ATI and Nvidia: First Era GPUs (1999--2002) |
|
|
121 | (1) |
|
4.2.4 ATI Radeon R100---256 (April 2000) |
|
|
121 | (4) |
|
4.2.4 Pixel Tapestry Architecture |
|
|
125 | (3) |
|
4.2.5 Nvidia's NV15---GeForce 2 GTS (April 2000) |
|
|
128 | (1) |
|
4.2.6 STMicroelectronics---Imagination Technologies Kyro II (2001--2002) |
|
|
128 | (4) |
|
4.2.6.1 PowerVR3 STG4000 Kyro---2001 |
|
|
132 | (1) |
|
4.2.6.2 PowerVR3 STG4500 Kyro II---2001 |
|
|
132 | (2) |
|
|
134 | (1) |
|
|
134 | (1) |
|
4.3 The Development and History of the Integrated GPU (1999--) |
|
|
135 | (11) |
|
|
136 | (1) |
|
4.3.1.1 ArtX: First Company to Announce a PC-Based iGPU |
|
|
137 | (3) |
|
4.3.1.2 ATI Acquires ArtX (February 2000) |
|
|
140 | (1) |
|
4.3.2 ATI's First IGP (March 2000) |
|
|
141 | (1) |
|
4.3.3 SiS' First PC-Based IGP (December 2000) |
|
|
142 | (3) |
|
4.3.4 Nvidia's nForce 220 IGP (June 2001) |
|
|
145 | (1) |
|
4.3.5 ATI's IGP 320 (2002) |
|
|
146 | (1) |
|
|
146 | (1) |
|
4.5 The Expansion Years (2001-2016) |
|
|
147 | (2) |
|
4.5.1 The Collapse and the Rise of Graphics Chip Companies |
|
|
148 | (1) |
|
|
149 | (1) |
|
|
149 | (2) |
|
5 The GPU Environment---Hardware |
|
|
151 | (50) |
|
5.1 It Takes a Village to Build a GPU |
|
|
151 | (1) |
|
5.2 Semiconductor Technology |
|
|
152 | (13) |
|
5.2.1 Intel Introduces Angstroms |
|
|
153 | (2) |
|
|
155 | (1) |
|
|
156 | (2) |
|
5.2.1.2.1 Shared Versus Private Memory |
|
|
158 | (1) |
|
5.2.1.3 Memory Type and GPU |
|
|
159 | (1) |
|
|
160 | (5) |
|
|
165 | (12) |
|
5.3.1 Industry Standard Architecture: 1981 |
|
|
167 | (1) |
|
5.3.2 Micro Channel Architecture: 1987 |
|
|
168 | (1) |
|
5.3.3 Extended ISA: 1988 T |
|
|
168 | (1) |
|
5.3.4 VESA Local Bus: 1992 |
|
|
169 | (1) |
|
5.3.5 Peripheral Component Interconnect: 1992 |
|
|
169 | (3) |
|
5.3.6 Accelerated Graphics Port: 1997 |
|
|
172 | (1) |
|
5.3.7 Peripheral Component Interconnect Express: 2003 |
|
|
172 | (4) |
|
|
176 | (1) |
|
|
177 | (17) |
|
|
179 | (1) |
|
|
179 | (1) |
|
|
179 | (2) |
|
5.4.4 High Dynamic Range (2015) |
|
|
181 | (1) |
|
|
182 | (1) |
|
|
183 | (1) |
|
5.4.7 Virtual Reality Headsets |
|
|
183 | (1) |
|
5.4.8 Augmented Reality Glasses |
|
|
184 | (1) |
|
5.4.9 Mixed Reality Headsets |
|
|
185 | (1) |
|
5.4.10 Monitor Synchronization: 2013-2015 |
|
|
186 | (6) |
|
5.4.10.1 Those Damn Scalers |
|
|
192 | (1) |
|
|
193 | (1) |
|
5.4.10.3 Adaptive Sync, FreeSync, and G-Sync |
|
|
194 | (1) |
|
5.5 Multiple AIBs in a System |
|
|
194 | (5) |
|
|
196 | (3) |
|
|
199 | (1) |
|
|
199 | (2) |
|
6 Application Program Interface (API) |
|
|
201 | (50) |
|
6.1 Application Program Interface |
|
|
202 | (45) |
|
|
203 | (4) |
|
6.1.1.1 Chaos in the Mobile Market |
|
|
207 | (1) |
|
|
207 | (2) |
|
6.1.1.3 Comparison of Vertex Shaders |
|
|
209 | (1) |
|
|
209 | (5) |
|
6.1.2.1 Hardware Feature Levels |
|
|
214 | (1) |
|
6.1.2.2 Microsoft's Japanese Bigotry |
|
|
214 | (1) |
|
6.1.3 The History of OpenGL |
|
|
215 | (1) |
|
6.1.4 The Fahrenheit Project |
|
|
215 | (2) |
|
|
217 | (1) |
|
|
218 | (1) |
|
|
219 | (1) |
|
|
220 | (1) |
|
6.1.5.3.1 Cross-Platform Support |
|
|
220 | (2) |
|
|
222 | (1) |
|
|
223 | (1) |
|
|
223 | (1) |
|
|
224 | (1) |
|
6.1.7.1.2 Variable Rate Shading |
|
|
225 | (1) |
|
6.1.7.1.3 Getting to Mesh Shaders |
|
|
226 | (1) |
|
6.1.7.1.4 HW T&L Engines, 1981 to 1996: IRIS GL to Direct X 7.0 |
|
|
226 | (1) |
|
6.1.7.1.5 Vertex and Pixel Shaders, 1997 to 2008: Direct3D 10 |
|
|
227 | (2) |
|
|
229 | (1) |
|
6.1.7.1.7 The Pipeline Expands |
|
|
230 | (2) |
|
6.1.7.1.8 Unified Shader, 2006--2010: DirectX 9.0 and OpenGL 3.3 |
|
|
232 | (1) |
|
6.1.7.1.9 Getting to Compute: Task Shaders 2016--2017 (DirectX 12, Vulkan 2) |
|
|
233 | (1) |
|
6.1.8 Microsoft DirectX Shader Model 4.0: Enhancements |
|
|
234 | (1) |
|
|
234 | (1) |
|
6.1.8.1.1 Mesh Shaders, 2018--2020: DirectX 12 Ultimate, Vulkan Extension |
|
|
235 | (2) |
|
|
237 | (5) |
|
|
242 | (1) |
|
6.1.8.1.4 Interactive Mode |
|
|
242 | (1) |
|
|
243 | (4) |
|
|
247 | (1) |
|
|
248 | (3) |
|
7 The GPU Environment---Software Extensions and Custom Features |
|
|
251 | (32) |
|
7.1 Software Libraries and Tools |
|
|
251 | (10) |
|
|
252 | (1) |
|
7.1.2 Nvidia's DLSS (February 2019) |
|
|
253 | (4) |
|
7.1.3 AMD's Fidelity FX Super Resolution (May 2021) |
|
|
257 | (2) |
|
7.1.4 Intel's XeSS (March 2022) |
|
|
259 | (2) |
|
|
261 | (5) |
|
|
261 | (1) |
|
|
262 | (1) |
|
|
262 | (1) |
|
|
263 | (1) |
|
|
263 | (3) |
|
|
266 | (1) |
|
7.4 Software Development Kits for Developers |
|
|
266 | (13) |
|
7.4.1 Nvidia's GameWorks (2014--) |
|
|
267 | (3) |
|
7.4.2 AMD's FX Library (2014) |
|
|
270 | (1) |
|
7.4.3 AMD's GPUOpen (2015-) Tr.u |
|
|
271 | (2) |
|
7.4.4 Application Enhancement Software |
|
|
273 | (1) |
|
7.4.5 AMD's Gaming Evolved |
|
|
274 | (2) |
|
7.4.6 Nvidia's GeForce Experience |
|
|
276 | (3) |
|
|
279 | (1) |
|
|
279 | (1) |
|
|
280 | (3) |
Appendix A Acronyms |
|
283 | (4) |
Appendix B Definitions |
|
287 | (40) |
Index |
|
327 | |