<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://nvwiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Starfrost</id>
	<title>NvWiki - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://nvwiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Starfrost"/>
	<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php/Special:Contributions/Starfrost"/>
	<updated>2026-09-26T23:46:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://nvwiki.org/index.php?title=NV5&amp;diff=1770</id>
		<title>NV5</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NV5&amp;diff=1770"/>
		<updated>2026-09-14T10:38:51Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Infobox GPU&lt;br /&gt;
|title=&#039;&#039;&#039;NV5&#039;&#039;&#039;&lt;br /&gt;
|architecture=NV5&lt;br /&gt;
|branding=RIVA TNT2 (early name: RIVA TNT+), later &amp;quot;NVIDIA TNT2&amp;quot;&lt;br /&gt;
|announcement_date=Late 1998&lt;br /&gt;
|release_date=April 21, 1999&amp;lt;ref&amp;gt;RivaZone; https://web.archive.org/web/19990427111308/http://www.rivazone.com/news.html#6. Archived April 27, 1999; retrieved September 14, 2026&amp;lt;/ref&amp;gt;&lt;br /&gt;
|end_of_production=Late 2002&lt;br /&gt;
|pci_vendor_id=&amp;lt;code&amp;gt;10de&amp;lt;/code&amp;gt; (Nvidia)&lt;br /&gt;
|pci_device_id=many, but first was &amp;lt;code&amp;gt;0028&amp;lt;/code&amp;gt;&lt;br /&gt;
|buses_supported=PCI, AGP 4X &lt;br /&gt;
|directx_version=6.0&lt;br /&gt;
|opengl_version=1.2 (hardware) 1.5 (software)&lt;br /&gt;
|nvclk=125MHz (TNT2); 143MHz (Pro); 150MHz (Ultra) (configurable by OEM)&lt;br /&gt;
|mclk=150MHz (TNT2); 166MHz (Pro); 183MHz (Ultra) (configurable by OEM)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NV5&#039;&#039;&#039; is an improved version of [[NV4]]. Initially conceived as a mere die shrink and clockspeed increase of NV4 in response to the delays and clockspeed downgrades that beleaguered the NV4 project, as development continued more features were added to the chip; additional features include support for 32 MB of VRAM and AGP 4X. NV5 survived for several years as an increasingly low-end option and was the first NVIDIA GPU to have multiple SKUs, with the straps, [[VBIOS]], installed VRAM and value of &amp;lt;code&amp;gt;NV_PMC_BOOT_0&amp;lt;/code&amp;gt; being used to configure the branding and configuration of the chip. Initially branded as RIVA TNT2 (after RIVA TNT+ was considered), the &amp;quot;RIVA&amp;quot; was dropped when NVIDIA repositioned it as a low-end option. Production most likely ended in 2002. Typically, a TNT2 card was packaged with either 16 or 32 MB of VRAM.&lt;br /&gt;
&lt;br /&gt;
Production of the high-end SKUs likely ended around the time [[NV10]] was released in late 1999, but the Vanta was produced until at least 2001 and TNT2 M64 chips were manufactured at least as late as September 2002. &lt;br /&gt;
&lt;br /&gt;
=== SKUs ===&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; graphics cards vendors could and often did configure the card outside of the stated specifications. For example, there was a &#039;&#039;Falcon Northwest Special Edition Maxi Gamer Xentor 32 SE&#039;&#039; produced by Falcon Northwest and Gullemot which had specialised high-speed (for the time) VRAM chips and only used very highly binned GPUs; the core clock on these cards was 195MHz and the VRAM clock 235MHz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA LT&#039;&#039;&#039;: Extremely low-end variation of TNT2 M64. Identical to VANTA-16, but VRAM is limited to a mere 8 megabytes and AGP 4X support is disabled - only AGP 2X can be used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA-16&#039;&#039;&#039;: Very low-end variation of TNT2 M64, with a core clock of 100MHz and a memory clock of 125Mhz.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 M64:&#039;&#039;&#039; Low-end variation of NV5 (known as &#039;&#039;&#039;NV6&#039;&#039;&#039;) with a 64-bit bus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2:&#039;&#039;&#039; Mainstream option with a core clock of 125MHz and a memory clock of 150Mhz, released in 1999.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Pro:&#039;&#039;&#039; High-end option with a core clock of 143MHz and a memory clock of 166Mhz,  released on October 22, 1999. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Ultra:&#039;&#039;&#039; Enthusiast option, with a core clock of 150MHz and a memory clock of 183Mhz, released in March of 1999.&lt;br /&gt;
&lt;br /&gt;
=== References ===&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
{{GPUs}}&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=NV5&amp;diff=1769</id>
		<title>NV5</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NV5&amp;diff=1769"/>
		<updated>2026-09-14T10:38:30Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Infobox GPU&lt;br /&gt;
|title=&#039;&#039;&#039;NV5&#039;&#039;&#039;&lt;br /&gt;
|architecture=NV5&lt;br /&gt;
|branding=RIVA TNT2 (early name: RIVA TNT+), later &amp;quot;NVIDIA TNT2&amp;quot;&lt;br /&gt;
|announcement_date=Late 1998&lt;br /&gt;
|release_date=April 21, 1999&amp;lt;ref&amp;gt;RivaZone; https://web.archive.org/web/19990427111308/http://www.rivazone.com/news.html#6; retrieved September 14, 2026&amp;lt;/ref&amp;gt;&lt;br /&gt;
|end_of_production=Late 2002&lt;br /&gt;
|pci_vendor_id=&amp;lt;code&amp;gt;10de&amp;lt;/code&amp;gt; (Nvidia)&lt;br /&gt;
|pci_device_id=many, but first was &amp;lt;code&amp;gt;0028&amp;lt;/code&amp;gt;&lt;br /&gt;
|buses_supported=PCI, AGP 4X &lt;br /&gt;
|directx_version=6.0&lt;br /&gt;
|opengl_version=1.2 (hardware) 1.5 (software)&lt;br /&gt;
|nvclk=125MHz (TNT2); 143MHz (Pro); 150MHz (Ultra) (configurable by OEM)&lt;br /&gt;
|mclk=150MHz (TNT2); 166MHz (Pro); 183MHz (Ultra) (configurable by OEM)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NV5&#039;&#039;&#039; is an improved version of [[NV4]]. Initially conceived as a mere die shrink and clockspeed increase of NV4 in response to the delays and clockspeed downgrades that beleaguered the NV4 project, as development continued more features were added to the chip; additional features include support for 32 MB of VRAM and AGP 4X. NV5 survived for several years as an increasingly low-end option and was the first NVIDIA GPU to have multiple SKUs, with the straps, [[VBIOS]], installed VRAM and value of &amp;lt;code&amp;gt;NV_PMC_BOOT_0&amp;lt;/code&amp;gt; being used to configure the branding and configuration of the chip. Initially branded as RIVA TNT2 (after RIVA TNT+ was considered), the &amp;quot;RIVA&amp;quot; was dropped when NVIDIA repositioned it as a low-end option. Production most likely ended in 2002. Typically, a TNT2 card was packaged with either 16 or 32 MB of VRAM.&lt;br /&gt;
&lt;br /&gt;
Production of the high-end SKUs likely ended around the time [[NV10]] was released in late 1999, but the Vanta was produced until at least 2001 and TNT2 M64 chips were manufactured at least as late as September 2002. &lt;br /&gt;
&lt;br /&gt;
=== SKUs ===&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; graphics cards vendors could and often did configure the card outside of the stated specifications. For example, there was a &#039;&#039;Falcon Northwest Special Edition Maxi Gamer Xentor 32 SE&#039;&#039; produced by Falcon Northwest and Gullemot which had specialised high-speed (for the time) VRAM chips and only used very highly binned GPUs; the core clock on these cards was 195MHz and the VRAM clock 235MHz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA LT&#039;&#039;&#039;: Extremely low-end variation of TNT2 M64. Identical to VANTA-16, but VRAM is limited to a mere 8 megabytes and AGP 4X support is disabled - only AGP 2X can be used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA-16&#039;&#039;&#039;: Very low-end variation of TNT2 M64, with a core clock of 100MHz and a memory clock of 125Mhz.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 M64:&#039;&#039;&#039; Low-end variation of NV5 (known as &#039;&#039;&#039;NV6&#039;&#039;&#039;) with a 64-bit bus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2:&#039;&#039;&#039; Mainstream option with a core clock of 125MHz and a memory clock of 150Mhz, released in 1999.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Pro:&#039;&#039;&#039; High-end option with a core clock of 143MHz and a memory clock of 166Mhz,  released on October 22, 1999. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Ultra:&#039;&#039;&#039; Enthusiast option, with a core clock of 150MHz and a memory clock of 183Mhz,  released in March of 1999.&lt;br /&gt;
&lt;br /&gt;
=== References ===&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
{{GPUs}}&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=NV5&amp;diff=1768</id>
		<title>NV5</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NV5&amp;diff=1768"/>
		<updated>2026-09-14T10:38:13Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Infobox GPU&lt;br /&gt;
|title=&#039;&#039;&#039;NV5&#039;&#039;&#039;&lt;br /&gt;
|architecture=NV5&lt;br /&gt;
|branding=RIVA TNT2 (early name: RIVA TNT+), later &amp;quot;NVIDIA TNT2&amp;quot;&lt;br /&gt;
|announcement_date=Late 1998&lt;br /&gt;
|release_date=April 21, 1999&amp;lt;ref&amp;gt;RivaZone; https://web.archive.org/web/19990427111308/http://www.rivazone.com/news.html#6; retrieved September 14, 2026&amp;lt;/ref&amp;gt;&lt;br /&gt;
|end_of_production=Late 2002&lt;br /&gt;
|pci_vendor_id=&amp;lt;code&amp;gt;10de&amp;lt;/code&amp;gt; (Nvidia)&lt;br /&gt;
|pci_device_id=many, but first was &amp;lt;code&amp;gt;0028&amp;lt;/code&amp;gt;&lt;br /&gt;
|buses_supported=PCI, AGP 4X &lt;br /&gt;
|directx_version=6.0&lt;br /&gt;
|opengl_version=1.2 (hardware) 1.5 (software)&lt;br /&gt;
|nvclk=125MHz (TNT2); 143MHz (Pro); 150MHz (Ultra) (configurable by OEM)&lt;br /&gt;
|mclk=150MHz (TNT2); 166MHz (Pro); 183MHz (Ultra) (configurable by OEM)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NV5&#039;&#039;&#039; is an improved version of [[NV4]]. Initially conceived as a mere die shrink and clockspeed increase of NV4 in response to the delays and clockspeed downgrades that beleaguered the NV4 project, as development continued more features were added to the chip; additional features include support for 32 MB of VRAM and AGP 4X. NV5 survived for several years as an increasingly low-end option and was the first NVIDIA GPU to have multiple SKUs, with the straps, [[VBIOS]], installed VRAM and value of &amp;lt;code&amp;gt;NV_PMC_BOOT_0&amp;lt;/code&amp;gt; being used to configure the branding and configuration of the chip. Initially branded as RIVA TNT2 (after RIVA TNT+ was considered), the &amp;quot;RIVA&amp;quot; was dropped when NVIDIA repositioned it as a low-end option. Production most likely ended in 2002. Typically, a TNT2 card was packaged with either 16 or 32 MB of VRAM.&lt;br /&gt;
&lt;br /&gt;
Production of the high-end SKUs likely ended around the time [[NV10]] was released in late 1999, but the Vanta was produced until at least 2001 and TNT2 M64 chips were manufactured at least as late as September 2002. &lt;br /&gt;
&lt;br /&gt;
=== SKUs ===&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; graphics cards vendors could and often did configure the card outside of the stated specifications. For example, there was a &#039;&#039;Falcon Northwest Special Edition Maxi Gamer Xentor 32 SE&#039;&#039; produced by Falcon Northwest and Gullemot which had specialised high-speed (for the time) VRAM chips and only used very highly binned GPUs; the core clock on these cards was 195MHz and the VRAM clock 235MHz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA LT&#039;&#039;&#039;: Extremely low-end variation of TNT2 M64. Identical to VANTA-16, but VRAM is limited to a mere 8 megabytes and AGP 4X support is disabled - only AGP 2X can be used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA-16&#039;&#039;&#039;: Very low-end variation of TNT2 M64, with a core clock of 100MHz and a memory clock of 125Mhz.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 M64:&#039;&#039;&#039; Low-end variation of NV5 (known as &#039;&#039;&#039;NV6&#039;&#039;&#039;) with a 64-bit bus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2:&#039;&#039;&#039; Mainstream option with a core clock of 125MHz and a memory clock of 150Mhz, released in 1999.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Pro:&#039;&#039;&#039; High-end option with a core clock of 143MHz and a memory clock of 166Mhz,  released on October 22, 1999. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Ultra:&#039;&#039;&#039; Enthusiast option, with a core clock of 150MHz and a memory clock of 183Mhz,  released in March of 1999.&lt;br /&gt;
&lt;br /&gt;
{{GPUs}}&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=STB_Systems_Leak&amp;diff=1767</id>
		<title>STB Systems Leak</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=STB_Systems_Leak&amp;diff=1767"/>
		<updated>2026-09-13T01:41:09Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: Created page with &amp;quot;On September 3, 2026, the Internet Archive user &amp;quot;ShivaShaw&amp;quot; uploaded a large lot of random Iomega Jaz disks to the Internet Archive. Two of these, &amp;quot;Vendor SC Backup 1 of 4&amp;quot; and &amp;quot;VSS Backup 1 of 2&amp;quot;, happened to be partial backups of internal workstations at STB Systems. One contained ~71 percent of a VSS repo, and another contained complete vendor source and documents folders.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On September 3, 2026, the Internet Archive user &amp;quot;ShivaShaw&amp;quot; uploaded a large lot of random Iomega Jaz disks to the Internet Archive. Two of these, &amp;quot;Vendor SC Backup 1 of 4&amp;quot; and &amp;quot;VSS Backup 1 of 2&amp;quot;, happened to be partial backups of internal workstations at STB Systems. One contained ~71 percent of a VSS repo, and another contained complete vendor source and documents folders.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=Software&amp;diff=1766</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=Software&amp;diff=1766"/>
		<updated>2026-09-13T01:16:38Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nvidia has produced many pieces of &#039;&#039;&#039;software&#039;&#039;&#039; for users of their graphics cards. The main piece of software required is their drivers: they are required to make the GPU function at all, beyond the very basic common level of 2D-only acceleration and software-rendered 3D (VGA, VESA, or Windows Advanced Rasterisation Platform - WARP in Windows 7 and later) level of compatibility assured for all forms of graphical hardware; any Nvidia-specific features require their drivers to be installed on the system. The first ever variant of the Nvidia driver set was the series of VxDs running under Windows 3.x that allowed the [[NV0]] to be simulated. There have historically been several sets of drivers for Nvidia hardware: initially, the first was Nvidia&#039;s drivers, based on their [[Resource Manager]], which started development in 1994, and the very early versions of the NT miniport driver which programmed the hardware directly rather than through the RM, as a stopgap measure until the real Resource Manager was ported over to NT, starting with the [[NV1]], in roughly 1996. There was also a semi-official, very basic &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; driver set for Linux, which was not judged sufficient for use of the card under Linux, was updated infrequently with few features and Nvidia required to be partially obfuscated (and was generally hard to deal with as a company){{ref|a}}: several driver projects started to provide a more complete emulation, with &amp;lt;code&amp;gt;nouveau&amp;lt;/code&amp;gt;, under the purview of the wider freedesktop project, being the most popular and long-lasting, although Utah GLX (which successfully achieved 3D acceleration on the Riva 128 at least) and RivaTV, aimed at using the TV-out functionality and [[PME|Mediaport]] of these cards, also existed; &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; was also ported to BeOS and several other operating systems to allow Nvidia GPUs to be used on their operating systems. Later on, most of these projects experienced sharp declines in development activity, or were discontinued entirely as Nvidia ported their full Resource Manager drivers to Linux and eventually partially open-sourced them, although parts of it were moved to the firmware running on modern nVidia GPUs&#039; on-die [[Falcon]] and [[RISC-V]] cores prior to this.&lt;br /&gt;
&lt;br /&gt;
Nvidia has also provided both industry-standard APIs (such as [[DirectX]], [[OpenGL]] and [[Vulkan]]) several custom APIs for their products for both graphics and non-graphics related applications, such as Cg (C for graphics) starting on the [[NV20]], and for GPGPU applications, CUDA (Compute Unified Device Architecture) starting on the [[G80]]. However, these are largely implemented as Resource Manager clients or otherwise as parts of their drivers: for example, the game physics API PhysX, the Nintendo Switch graphics API &amp;lt;code&amp;gt;nvn&amp;lt;/code&amp;gt; and its Switch 2 successor &amp;lt;code&amp;gt;nvn2&amp;lt;/code&amp;gt;, the &#039;&#039;extremely&#039;&#039; confusingly named &amp;quot;NVIDIA Riva&amp;quot; AI speech generation API, NeMo for generative AI, RAPIDS for data science, CUDA-X for general AI libraries, and many more are all implemented in a similar fashion.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
While Nvidia has changed their drivers&#039; design over time, at least for early models there are two relatively basic setups for the &amp;quot;full fat&amp;quot; Nvidia Resource Manager-based drivers, one which was used for [[NV1]] through [[NV3]] and a new design which was used starting with [[NV4]] (although there are obviously variations of both). &lt;br /&gt;
&lt;br /&gt;
In all cases, the [[Resource Manager]] implements the actual interaction with the hardware and is intended to abstract away the differences between different generations of Nvidia architecture and to provide a consistent interface for functionality implemented in both hardware and software. The RM initialises, controls and shuts down (if required) the graphics hardware; multiple types of APIs are provided in order to interact with the RM. The first model is the OS-provided IOCTL interface, which can be used for basic functionality (this model is used by Nvidia&#039;s GDI drivers). A second model is calling into APIs exposed by the Resource Manager through the NVAPI interface. In order to achieve this, a single function is exported a la Quake-based game engine, that takes a single parameter, which is a very large C struct with many function pointers for different functions, typically implemented via the mechanism of a stub DLL that forwards each function to the Resource Manager. This implementation makes the application a &amp;quot;client&amp;quot; of the Resource Manager. The implementation varies by driver version and intended operating system. For instance, in the case of NV3 drivers for Windows 9x, the 32-bit API &amp;lt;code&amp;gt;NV3API.DLL&amp;lt;/code&amp;gt; thunks into a 16-bit dll &amp;lt;code&amp;gt;NV3SYS.DLL&amp;lt;/code&amp;gt; by passing a large array of function pointers (which also exports, via traditional DLL exporting, the same API but for 16-bit apps) which then &#039;&#039;calls back into the 32-bit Resource Manager VxD&#039;&#039; to perform API calls. The interface to the GPU is implemented via a pseudo-C++ class system; classes are indicated by object IDs, with a large array of class structures providing &amp;quot;methods&amp;quot; - methods are assigned an ID, corresponding to the offset within a DMA channel that is written to in order to execute the method on hardware. There is no requirement for a method to have a unique offset. Some classes are [[PFIFO#Object submission|implemented in hardware]] using the &amp;lt;code&amp;gt;grHWMthd&amp;lt;/code&amp;gt; function, while others are implemented in software; if a class is implemented in hardware, it is simply stubbed out in software. Software methods are implemented by setting bit 23 of an object&#039;s [[NV3 RAMIN#Object context|context]] to 1 during submission. If this is set, the GPU will raise an interrupt and the graphical operation will be performed by sotware. This approach provided, and presumably continues to provide (since it is still used!) a range of benefits that other companies did not enjoy at the time. It allows rapid iteration (since support for new GPUs can be implemented without breaking software, especially as most Resource Manager clients), allows features that do not work or are not available in hardware to be easily emulated in software at a performance cost, allows easy support of any new graphical APIs that may appear (just write another RM client), and additionally allows hardware resources to be abstracted away from clients: for instance, there are only 8 channels in both NV1 and NV3 hardware, but this is virtualised away by RM to allow opening up to 128 channels. &lt;br /&gt;
&lt;br /&gt;
=== NV1 to NV3 ===&lt;br /&gt;
From [[NV1]] to [[NV3]] the Resource Manager is unique for each graphics card - it is a different branch in Nvidia&#039;s source control system. This is not shared for all parts of the drivers; the GDI drivers definitely are not set up like this, leading to NV3 resource managers with GDI drivers that support NV4 (starting around February 1998, several months before the release of the Riva TNT). It is unclear if this fact was realised at the time; it seems that it may have been discovered by the era of the [[NV15]] architecture.&lt;br /&gt;
&lt;br /&gt;
=== NV4 ===&lt;br /&gt;
&lt;br /&gt;
== Supported platforms ==&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; These are platforms that were supported for any length of time, not platforms that are currently supported, or which GPUs they can be used with.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Supported operating systems&lt;br /&gt;
|-&lt;br /&gt;
! Operating system !! Driver supported&lt;br /&gt;
|-&lt;br /&gt;
| Windows for Workgroups 3.11 || Full drivers{{ref|b}} &lt;br /&gt;
|-&lt;br /&gt;
| Windows 95 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 98/98SE || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows ME || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows NT 3.51 || Miniport driver only&lt;br /&gt;
|-&lt;br /&gt;
| Windows NT 4.0 || Miniport driver, later full Resource Manager-based driver{{ref|c}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows 2000 || Full drivers{{ref|d}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows XP || Full drivers{{ref|e}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows Vista || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 7 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 8 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 8.1 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 10 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 11 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Xbox (original) || Modified full drivers (&amp;quot;minix&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| macOS || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Android || Full drivers, also &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Linux || Initially &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; or open-source project only, later full drivers.&lt;br /&gt;
|-&lt;br /&gt;
| BeOS, Haiku, EOS, AsusWRT (linux-based) || These OSes support the &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; driver only&lt;br /&gt;
|-&lt;br /&gt;
| OS/2 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| PlayStation 3 (CellOS) || Custom&lt;br /&gt;
|-&lt;br /&gt;
| Horizon OS (Switch) || Full drivers (with custom API)&lt;br /&gt;
|-&lt;br /&gt;
| Horizon OS (Switch 2) || Full drivers (with custom API)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Known driver versions ==&lt;br /&gt;
&lt;br /&gt;
Each component of Nvidia&#039;s drivers has an official description (it used to be used in their control panel extension to list each driver file); for example &amp;quot;Resource Manager&amp;quot; or &amp;quot;OpenGL ICD&amp;quot;. Initially, these were simply described as being for &amp;quot;Nvidia&amp;quot; (e.g. &amp;quot;NVidia Resource Manager, Version 2.00 Beta&amp;quot;), later on the file descriptions were changed to be named after the specific GPU supported, e.g. &amp;quot;RIVA 128 Direct Draw/Direct 3D Driver, Version x.xx&amp;quot; or &amp;quot;Riva TNT Display Driver, Version x.xx&amp;quot;, however later when Nvidia refactored their GPU drivers to support multiple models of graphics hardware, they changed the description to simply read &amp;quot;NVIDIA Compatible&amp;quot;. This is still the case as of April 2025. &lt;br /&gt;
&lt;br /&gt;
There were certainly many other versions, if you have any other version, please contact me: you can check by checking the file properties of any file in the driver set.&lt;br /&gt;
&lt;br /&gt;
=== NV1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Known driver versions&lt;br /&gt;
|-&lt;br /&gt;
! Date of driver files !! Version !! Known platforms&lt;br /&gt;
|-&lt;br /&gt;
| 25 October 1995 || 1.20 || MS-DOS, Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 2 February 1996 || 2.00 Beta || Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 11 February 1996 || FCS 2.00 || MS-DOS (CEK 1.22); Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 1996 || 2.20 Beta4 || Referenced in NV3 v1.xx driver source, removed in later versions&lt;br /&gt;
|-&lt;br /&gt;
| 23 September 1996; some files rebuilt 19 March 1997 || 2.30 || Windows 95 &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== NV2 / NV3 QTM ===&lt;br /&gt;
There are no known drivers for [[NV2]] or [[NV3 (QTM)]]. Traditional drivers (although software certainly existed) for the former are not likely as it was intended to be used as part of a game, but driver development may have started for the latter.&lt;br /&gt;
&lt;br /&gt;
=== NV3 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Certain OEM-specific drivers may be missing; they are usually almost identical to reference driver versions, but may have certain minor feature differences. Few of these have notable changes (e.g. Diamond adding their InControl Tools, or the STB TwinView two/four head cards with custom &amp;quot;mp&amp;quot; functions to switch between different chips on the board - it is not clear if STB or Nvidia made these modifications). Additionally, the driver versions included in Windows 98 beta releases are not listed (they take the version of the Windows SDK they were compiled with, for instance &amp;lt;code&amp;gt;4.10.1635&amp;lt;/code&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
Early drivers for Windows 9x, the drivers included with Windows 98 pre-release builds and almost all NT 4.0 and 2000 drivers for NV3-based architectures have COFF or VxD symbols (depending on platform) for the resource manager and display driver, although not for the Direct3D or OpenGL drivers. Nvidia seems to have had issues turning off symbol generation, as at some point they wrote a header file that redefined every function name as &amp;lt;code&amp;gt;__nv_rmsym_\&amp;lt;number\&amp;gt;&amp;lt;/code&amp;gt; as some strange way of attempting to obfuscate their function names.&lt;br /&gt;
&lt;br /&gt;
Some of the &amp;quot;lost&amp;quot; source is partially represented in the 75% complete STB VSS dump. The oldest version attested to a version number seems to have been &amp;quot;Version 0.60 BETA2&amp;quot; (June 6, 1997), although parts of versions from May 1997 are also present.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Known driver versions&lt;br /&gt;
|-&lt;br /&gt;
! Date of driver files !! Version !! Known platforms !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| December 1996 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1997 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| May 1997 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 9 May 1997 || 0.xx (0.5x?) Alpha || Windows 9x, NT 4.0 || Referenced in BIOS changelogs, seems to line up. Base for STB V128 BIOS version 1.0&lt;br /&gt;
|-&lt;br /&gt;
| 21 May 1997 || 0.5x || Windows 9x, NT 4.0 || Partial source in partial VSS backup. May be identical to 0.60 or possibly Beta 1&lt;br /&gt;
|-&lt;br /&gt;
| 28 May 1997 || 0.5x Beta 1 || Windows 9x, NT 4.0 || nvVer.h file was in the 29% of the VSS backup that got lost&lt;br /&gt;
|-&lt;br /&gt;
| 4 June 1997 || 0.60 BETA 2 || Windows 9x, NT 4.0 || Partial source in partial VSS backup. Pre-release&lt;br /&gt;
|-&lt;br /&gt;
| 11 June 1997 || 0.63 BETA 3A || Windows 9x, NT 4.0 || Partial source in partial VSS backup. Pre-release&lt;br /&gt;
|-&lt;br /&gt;
| 17 June 1997 || 0.64 BETA 4 || Windows 9x, NT 4.0 || Partial source in partial VSS backup. Pre-release&lt;br /&gt;
|-&lt;br /&gt;
| 26 June 1997 || 0.65 BETA 5 || Windows 9x, NT 4.0 || Partial source in partial VSS backup. Pre-release&lt;br /&gt;
|-&lt;br /&gt;
| 28 June 1997 || 0.66 BETA 6 || Windows 9x, NT 4.0 || Partial source in partial VSS backup. Pre-release&lt;br /&gt;
|-&lt;br /&gt;
| June 1997 || ??? || ??? || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 5 July 1997 || BETA 7 || Windows 9x, NT 4.0 || Presumably v0.67.&lt;br /&gt;
|-&lt;br /&gt;
| 9 July 1997 || BETA 8 || Windows 9x, NT 4.0 || Base for STB Velocity 128 BIOS version 1.2. Presumably v0.68.&lt;br /&gt;
|-&lt;br /&gt;
| 12 July 1997 || BETA 9 || Windows 9x, NT 4.0 || Base for STB Velocity 128 BIOS version 1.3. &amp;quot;Partial source in partial VSS backup. Pre-release (unclear how fcs1 can be so close?). Presumably v0.69.&lt;br /&gt;
|-&lt;br /&gt;
| 14 July 1997 || 0.70 (FCS2) || Windows 9x, NT 4.0 || &amp;quot;Final Code Shipment / First Customer Shipment&amp;quot; #2. Possibly final quality software (or a release candidate). Unknown if it was ever released because it was replaced very quickly before the release date.&lt;br /&gt;
|-&lt;br /&gt;
| 17 July 1997 || Unnumbered pre-release || Windows NT 4.0 || Accidentally released by STB Systems in September 1997 (the 9x drivers provided were much later). Has NV1 support in display driver (even though NT was never officially supported on NV1), and only supports revision A of NV3. Possibly 0.70 FCS2.&lt;br /&gt;
|-&lt;br /&gt;
| 21 July 1997 || 0.71 (FCS3) || Windows 9x, NT 4.0 || &amp;quot;Final Code Shipment / First Customer Shipment&amp;quot; #3. Possibly final quality software (or a release candidate). Unknown if it was ever released because it was replaced very quickly before the release date.&lt;br /&gt;
|-&lt;br /&gt;
| 21 July 1997 || 0.72 (FCS4) || Windows 9x, NT 4.0 || Base for STB Velocity 128 BIOS version 1.4 (NVIDIA BIOS version 1.43). &amp;quot;Final Code Shipment / First Customer Shipment&amp;quot; #4. Possibly final quality software (or a release candidate). Unknown if it was ever released because it was replaced very quickly before the release date.&lt;br /&gt;
|-&lt;br /&gt;
| 8 August 1997 || 0.73b (FCS5) ||  Windows 9x, NT 4.0 || Base for STB Velocity 128 BIOS version 1.5 (NVIDIA BIOS version 1.45). Both 0.73 and 0.73b are known but seem to be dated to the same day. The earliest version known to have been intentionally released (only for Windows NT), possibly with very early Velocity 128 units.&lt;br /&gt;
|- &lt;br /&gt;
| 11 August 1997 || 0.74 (FCS6) || Windows 9x, NT 4.0 || &amp;quot;Final Code Shipment / First Customer Shipment&amp;quot; #6. Possibly final quality software (or a release candidate). Unknown if it was ever released because it was replaced very quickly before the release date.&lt;br /&gt;
|- &lt;br /&gt;
| 15 August 1997 || 0.75 (FCS7) || Windows NT 4.0 || Possible launch drivers&lt;br /&gt;
|- &lt;br /&gt;
| 20 August 1997 (drivers compiled by STB? 27 August 1997) || 0.75 (FCS7) || Windows NT 3.51 || No resource manager&lt;br /&gt;
|- &lt;br /&gt;
| 25 August 1997 || 0.76 (FCS8) || Windows 9x, NT 4.0 || &amp;quot;Final Code Shipment / First Customer Shipment&amp;quot; #8. Possibly final quality software (or a release candidate). Unknown if it was ever released because it was replaced very quickly before the release date.&lt;br /&gt;
|-&lt;br /&gt;
| August 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 30 August 1997 || 0.77 || Windows 9x, NT 4.0 || Possible launch drivers for Windows 9x. The first version not labelled as FCS. (also called build 77). Seemingly the only Windows 9x version compiled with symbols on, for the Resource Manager only&lt;br /&gt;
|-&lt;br /&gt;
| 5 September 1997 || 1.00 || Windows 9x, NT 4.0 || Possibly the first drivers NVIDIA considered finished, due to the 1.00 version number (also called Build 100)&lt;br /&gt;
|-&lt;br /&gt;
| 19 September 1997 || 1.01 || Windows 9x, NT 4.0 || Also called Build 101&lt;br /&gt;
|-&lt;br /&gt;
| 24 September 1997 || 1.02 || Windows 9x, NT 4.0 || Also called Build 102&lt;br /&gt;
|-&lt;br /&gt;
| 23 September 1997 (STB Systems) || 1.16 || Windows 9x || D3D drivers compiled with debug messages left on. PDB file names refer to STB products proving STB Systems had driver source code access. Later on after the [[STB Systems Leak]] this version was discovered to be a modified NVIDIA release (which one?)&lt;br /&gt;
|-&lt;br /&gt;
| 29 September 1997 || 1.04 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1997 || 1.05 || Windows 3.1 ||&lt;br /&gt;
|-&lt;br /&gt;
| 22 October 1997 || 1.06 || Windows 9x || &lt;br /&gt;
|-&lt;br /&gt;
| October 1997 || ??? || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 2 November 1997 || 1.07c || Windows NT 4.0 || &lt;br /&gt;
|-&lt;br /&gt;
| 14 November 1997 || 1.21 || Windows 9x || OpenGL Alpha 1 release (&amp;lt;code&amp;gt;nv3quake.zip&amp;lt;/code&amp;gt;). Also the Alpha 2 release with an updated OpenGL ICD from 2 December 1997; the first version where the Windows 9x miniVDD and Resource Manager were merged.&lt;br /&gt;
|-&lt;br /&gt;
| November 1997 || ??? || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 9 December 1997 || 1.23 || Windows 9x || Internal version given to STB to fix some bug.&lt;br /&gt;
|-&lt;br /&gt;
| 10 December 1997 || 1.11 || Windows 9x || Yes, later than 1.21. The 1.21 was from a development branch for OpenGL support and the Mini VDD to RM merger.&lt;br /&gt;
|-&lt;br /&gt;
| 15 January 1998 || 1.26 || Windows 9x || STB source drop (available; Resource Manager + Win9x GDI + D3D + OpenGL + NT4 GDI + NT4 MCD)&lt;br /&gt;
|-&lt;br /&gt;
| 26 January 1998 || 1.27 || Windows 9x || Partially lost STB source drop, only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 31 January 1998 || 1.28 || Windows 9x || OpenGL Beta 1 release. &lt;br /&gt;
|- &lt;br /&gt;
| 1 February 1998 || 1.29 || Windows NT 4.0 || First driver with NV4-related functions in display driver (very basic support, simply initialisation and shutdown, to start with)&lt;br /&gt;
|-&lt;br /&gt;
| 12 February 1998 || 1.30 || Windows 9x, NT 4.0 || Partially lost STB source drop, only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|- &lt;br /&gt;
| 22 February 1998 || 1.34 || Windows 9x, NT 4.0 || Partially lost STB source drop, only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|- &lt;br /&gt;
| 26 February 1998 || 1.36 || Windows 9x || STB source drop (available; only Resource Manager and Win9x GDI drivers updated)&lt;br /&gt;
|-&lt;br /&gt;
| 5 March 1998 || 1.37 || Windows 9x || Partially lost STB source drop, only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 19 March 1998 || 1.38 || Windows 9x || Partially lost STB source drop, only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 3 April 1998 || 1.40 || Windows 9x || Partially lost STB source drop, only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.41 || Windows 9x || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.42 || Windows 9x || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 7 April 1998 || 1.43 || Windows 9x || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 9 April 1998 || 1.44 || Windows 9x ||&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.45 || Windows 9x || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46 || Windows 9x || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46a || Windows 9x || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46b || Windows 9x || Partially lost STB source drop(s), only folder name, partial Resource Manager&lt;br /&gt;
|-&lt;br /&gt;
| 17 April 1998 || 1.50 || Windows 9x || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 22 April 1998 || 1.50b || Windows 9x, NT 4.0 || Source code available (updated OpenGL + Win9x GDI)&lt;br /&gt;
|-&lt;br /&gt;
| 25 April 1998 || 1.50c || Windows 9x, NT 4.0 || Source code available (updated OpenGL + Win9x GDI)&lt;br /&gt;
|-&lt;br /&gt;
| 26 April 1998 || 1.50d || Windows 9x, NT 4.0 || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 29 April 1998 || 1.50e || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 5 May 1998 || 1.50h || Windows 9x, Windows NT 4.0 || Updated Win9x GDI + Direct3D from 1.50e - nvidia readme: &amp;quot;remove int 3&#039;s UGGHHHHH(the person that did this has been fired)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 5 May 1998 || 1.50k || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 4 August 1998 || 1.62 || Windows NT 4.0 || &lt;br /&gt;
|-&lt;br /&gt;
| 14 July 1998 || 1.57 || Windows 9x, Windows NT 4.0 || Early multimonitor support for STB MVP&lt;br /&gt;
|-&lt;br /&gt;
| 23 July 1998 || 1.59 || Windows 9x, Windows NT 4.0 || Early multimonitor support for STB MVP&lt;br /&gt;
|-&lt;br /&gt;
| 5 August 1998 || 1.72a || Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 23 August 1998 || 1.74 || Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D) &lt;br /&gt;
|-&lt;br /&gt;
| 27 August 1998 || 1.27 || Windows 3.1 || Final Win3.1 drivers; probably different branch; some files call themselves &amp;quot;RIVA TNT Resource Manager, Version 0.11&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| 28 August 1998 || 1.75 || Windows 9x || nVIDIA SDK 0.81 &lt;br /&gt;
|- &lt;br /&gt;
| 14 September 1998 || 2.77 || Windows 9x, Windows NT 4.0 || NT: Display driver output name changed from &amp;lt;code&amp;gt;nv_disp&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;nv3_disp&amp;lt;/code&amp;gt; (probably due to NV4 driver development), also source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + VBIOS) &lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1998 || 2.79 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + NV3Tweak) &lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1998 || 2.80 || Windows 9x, Windows NT 4.0 || nVIDIA SDK 0.83&lt;br /&gt;
|-&lt;br /&gt;
| 22 October 1998 || 2.83 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + NV3Tweak) &lt;br /&gt;
|-&lt;br /&gt;
| 9 November 1998 || 3.03 || Windows 9x ||&lt;br /&gt;
|- &lt;br /&gt;
| 10 December 1998 || 1.30, 2.79 (Diamond branch) || Windows 9x || Most likely a branch maintained by Diamond Multimedia for their &amp;quot;Viper&amp;quot; cards, released 21 January 1999 &lt;br /&gt;
|-&lt;br /&gt;
| 14 December 1998 (source) / 7 January 1999 (binary) || 3.12 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + VBIOS) &lt;br /&gt;
|- &lt;br /&gt;
| 1 February 1999 || 3.22 || Windows 9x ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 February 1999 || 3.23 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 9 February 1999 || 3.25 || Windows 9x || &lt;br /&gt;
|-&lt;br /&gt;
| 18 February 1999 || 3.27 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3 March 1999 || Unknown version || OS/2 (Warp 3 Fixpak35+ &amp;amp; 4 Fixpak5+) || Very sloppily done. Batch file (well, Rexx script) setup. Unclear what GPU is even supported: it was posted on Nvidia&#039;s RIVA 128 download pages, but the readme file calls it &amp;quot;GRADD Driver for Nvidia NV4&amp;quot; (not even using a product name), despite being last modified on 25 February 1999.&lt;br /&gt;
|-&lt;br /&gt;
| 21 March 1999 || 3.37 || Windows 9x, NT 4.0, 2000 (beta) || Final driver for Windows 9x, only Win2000 driver with OpenGL support. Even though the driver was compiled against Windows 2000 build 1996, it works fine on the final Windows 2000, including Service Pack 4&lt;br /&gt;
|- &lt;br /&gt;
| 11 May 1999 || 3.41b || Windows NT 4.0 || Final NT 4.0 driver&lt;br /&gt;
|- &lt;br /&gt;
| 28 October 1999 || 3.43 || Windows 2000 || 2D-only driver bundled with Windows 2000. Still has OpenGL hooks; untested&lt;br /&gt;
|- &lt;br /&gt;
| 31 July 2001 || 3.43 || Windows XP || 2D-only driver bundled with Windows XP. Still has OpenGL hooks; tested, does not work on default, crashes late in OpenGL initialisation process (may be patchable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== NV4 and later shared drivers ===&lt;br /&gt;
&lt;br /&gt;
0.32 first released version, 0.12 first sent to STB (Source archive is dated June 27, 1998)&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
:{{note|a|}}These issues in the relationship eventually led to the infamous &amp;quot;Fuck you, Nvidia!&amp;quot; comment and middle finger by Linus Torvalds at a 2012 event.&lt;br /&gt;
:{{note|b|}}They are officially marked as being for 3.11, but unless they depend on the 32-bit File Access feature backported from Windows 95, or any other feature that was exclusively added in WfW 3.11, there should be no reason why they cannot work on any other version of Windows 3.1, such as the original 1992 release, standalone Windows 3.11, or Windows for Workgroups 3.1: however, the drivers have not been tested with these older versions, so the compatibility, or lack thereof, is unknown.&lt;br /&gt;
:{{note|c|}}Initially 2D only, then OpenGL only: no D3D.&lt;br /&gt;
:{{note|d|}}Initially OpenGL only, later Direct3D support was added. Beta only for NV3.&lt;br /&gt;
:{{note|e|}}2D only officially for NV3, although hooks to load the OpenGL drivers still exist; they do not load using the Windows 2000 drivers, but they can likely be patched to work.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=Software&amp;diff=1765</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=Software&amp;diff=1765"/>
		<updated>2026-09-13T00:27:34Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nvidia has produced many pieces of &#039;&#039;&#039;software&#039;&#039;&#039; for users of their graphics cards. The main piece of software required is their drivers: they are required to make the GPU function at all, beyond the very basic common level of 2D-only acceleration and software-rendered 3D (VGA, VESA, or Windows Advanced Rasterisation Platform - WARP in Windows 7 and later) level of compatibility assured for all forms of graphical hardware; any Nvidia-specific features require their drivers to be installed on the system. The first ever variant of the Nvidia driver set was the series of VxDs running under Windows 3.x that allowed the [[NV0]] to be simulated. There have historically been several sets of drivers for Nvidia hardware: initially, the first was Nvidia&#039;s drivers, based on their [[Resource Manager]], which started development in 1994, and the very early versions of the NT miniport driver which programmed the hardware directly rather than through the RM, as a stopgap measure until the real Resource Manager was ported over to NT, starting with the [[NV1]], in roughly 1996. There was also a semi-official, very basic &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; driver set for Linux, which was not judged sufficient for use of the card under Linux, was updated infrequently with few features and Nvidia required to be partially obfuscated (and was generally hard to deal with as a company){{ref|a}}: several driver projects started to provide a more complete emulation, with &amp;lt;code&amp;gt;nouveau&amp;lt;/code&amp;gt;, under the purview of the wider freedesktop project, being the most popular and long-lasting, although Utah GLX (which successfully achieved 3D acceleration on the Riva 128 at least) and RivaTV, aimed at using the TV-out functionality and [[PME|Mediaport]] of these cards, also existed; &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; was also ported to BeOS and several other operating systems to allow Nvidia GPUs to be used on their operating systems. Later on, most of these projects experienced sharp declines in development activity, or were discontinued entirely as Nvidia ported their full Resource Manager drivers to Linux and eventually partially open-sourced them, although parts of it were moved to the firmware running on modern nVidia GPUs&#039; on-die [[Falcon]] and [[RISC-V]] cores prior to this.&lt;br /&gt;
&lt;br /&gt;
Nvidia has also provided both industry-standard APIs (such as [[DirectX]], [[OpenGL]] and [[Vulkan]]) several custom APIs for their products for both graphics and non-graphics related applications, such as Cg (C for graphics) starting on the [[NV20]], and for GPGPU applications, CUDA (Compute Unified Device Architecture) starting on the [[G80]]. However, these are largely implemented as Resource Manager clients or otherwise as parts of their drivers: for example, the game physics API PhysX, the Nintendo Switch graphics API &amp;lt;code&amp;gt;nvn&amp;lt;/code&amp;gt; and its Switch 2 successor &amp;lt;code&amp;gt;nvn2&amp;lt;/code&amp;gt;, the &#039;&#039;extremely&#039;&#039; confusingly named &amp;quot;NVIDIA Riva&amp;quot; AI speech generation API, NeMo for generative AI, RAPIDS for data science, CUDA-X for general AI libraries, and many more are all implemented in a similar fashion.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
While Nvidia has changed their drivers&#039; design over time, at least for early models there are two relatively basic setups for the &amp;quot;full fat&amp;quot; Nvidia Resource Manager-based drivers, one which was used for [[NV1]] through [[NV3]] and a new design which was used starting with [[NV4]] (although there are obviously variations of both). &lt;br /&gt;
&lt;br /&gt;
In all cases, the [[Resource Manager]] implements the actual interaction with the hardware and is intended to abstract away the differences between different generations of Nvidia architecture and to provide a consistent interface for functionality implemented in both hardware and software. The RM initialises, controls and shuts down (if required) the graphics hardware; multiple types of APIs are provided in order to interact with the RM. The first model is the OS-provided IOCTL interface, which can be used for basic functionality (this model is used by Nvidia&#039;s GDI drivers). A second model is calling into APIs exposed by the Resource Manager through the NVAPI interface. In order to achieve this, a single function is exported a la Quake-based game engine, that takes a single parameter, which is a very large C struct with many function pointers for different functions, typically implemented via the mechanism of a stub DLL that forwards each function to the Resource Manager. This implementation makes the application a &amp;quot;client&amp;quot; of the Resource Manager. The implementation varies by driver version and intended operating system. For instance, in the case of NV3 drivers for Windows 9x, the 32-bit API &amp;lt;code&amp;gt;NV3API.DLL&amp;lt;/code&amp;gt; thunks into a 16-bit dll &amp;lt;code&amp;gt;NV3SYS.DLL&amp;lt;/code&amp;gt; by passing a large array of function pointers (which also exports, via traditional DLL exporting, the same API but for 16-bit apps) which then &#039;&#039;calls back into the 32-bit Resource Manager VxD&#039;&#039; to perform API calls. The interface to the GPU is implemented via a pseudo-C++ class system; classes are indicated by object IDs, with a large array of class structures providing &amp;quot;methods&amp;quot; - methods are assigned an ID, corresponding to the offset within a DMA channel that is written to in order to execute the method on hardware. There is no requirement for a method to have a unique offset. Some classes are [[PFIFO#Object submission|implemented in hardware]] using the &amp;lt;code&amp;gt;grHWMthd&amp;lt;/code&amp;gt; function, while others are implemented in software; if a class is implemented in hardware, it is simply stubbed out in software. Software methods are implemented by setting bit 23 of an object&#039;s [[NV3 RAMIN#Object context|context]] to 1 during submission. If this is set, the GPU will raise an interrupt and the graphical operation will be performed by sotware. This approach provided, and presumably continues to provide (since it is still used!) a range of benefits that other companies did not enjoy at the time. It allows rapid iteration (since support for new GPUs can be implemented without breaking software, especially as most Resource Manager clients), allows features that do not work or are not available in hardware to be easily emulated in software at a performance cost, allows easy support of any new graphical APIs that may appear (just write another RM client), and additionally allows hardware resources to be abstracted away from clients: for instance, there are only 8 channels in both NV1 and NV3 hardware, but this is virtualised away by RM to allow opening up to 128 channels. &lt;br /&gt;
&lt;br /&gt;
=== NV1 to NV3 ===&lt;br /&gt;
From [[NV1]] to [[NV3]] the Resource Manager is unique for each graphics card - it is a different branch in Nvidia&#039;s source control system. This is not shared for all parts of the drivers; the GDI drivers definitely are not set up like this, leading to NV3 resource managers with GDI drivers that support NV4 (starting around February 1998, several months before the release of the Riva TNT). It is unclear if this fact was realised at the time; it seems that it may have been discovered by the era of the [[NV15]] architecture.&lt;br /&gt;
&lt;br /&gt;
=== NV4 ===&lt;br /&gt;
&lt;br /&gt;
== Supported platforms ==&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; These are platforms that were supported for any length of time, not platforms that are currently supported, or which GPUs they can be used with.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Supported operating systems&lt;br /&gt;
|-&lt;br /&gt;
! Operating system !! Driver supported&lt;br /&gt;
|-&lt;br /&gt;
| Windows for Workgroups 3.11 || Full drivers{{ref|b}} &lt;br /&gt;
|-&lt;br /&gt;
| Windows 95 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 98/98SE || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows ME || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows NT 3.51 || Miniport driver only&lt;br /&gt;
|-&lt;br /&gt;
| Windows NT 4.0 || Miniport driver, later full Resource Manager-based driver{{ref|c}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows 2000 || Full drivers{{ref|d}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows XP || Full drivers{{ref|e}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows Vista || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 7 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 8 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 8.1 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 10 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 11 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Xbox (original) || Modified full drivers (&amp;quot;minix&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| macOS || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Android || Full drivers, also &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Linux || Initially &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; or open-source project only, later full drivers.&lt;br /&gt;
|-&lt;br /&gt;
| BeOS, Haiku, EOS, AsusWRT (linux-based) || These OSes support the &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; driver only&lt;br /&gt;
|-&lt;br /&gt;
| OS/2 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| PlayStation 3 (CellOS) || Custom&lt;br /&gt;
|-&lt;br /&gt;
| Horizon OS (Switch) || Full drivers (with custom API)&lt;br /&gt;
|-&lt;br /&gt;
| Horizon OS (Switch 2) || Full drivers (with custom API)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Known driver versions ==&lt;br /&gt;
&lt;br /&gt;
Each component of Nvidia&#039;s drivers has an official description (it used to be used in their control panel extension to list each driver file); for example &amp;quot;Resource Manager&amp;quot; or &amp;quot;OpenGL ICD&amp;quot;. Initially, these were simply described as being for &amp;quot;Nvidia&amp;quot; (e.g. &amp;quot;NVidia Resource Manager, Version 2.00 Beta&amp;quot;), later on the file descriptions were changed to be named after the specific GPU supported, e.g. &amp;quot;RIVA 128 Direct Draw/Direct 3D Driver, Version x.xx&amp;quot; or &amp;quot;Riva TNT Display Driver, Version x.xx&amp;quot;, however later when Nvidia refactored their GPU drivers to support multiple models of graphics hardware, they changed the description to simply read &amp;quot;NVIDIA Compatible&amp;quot;. This is still the case as of April 2025. &lt;br /&gt;
&lt;br /&gt;
There were certainly many other versions, if you have any other version, please contact me: you can check by checking the file properties of any file in the driver set.&lt;br /&gt;
&lt;br /&gt;
=== NV1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Known driver versions&lt;br /&gt;
|-&lt;br /&gt;
! Date of driver files !! Version !! Known platforms&lt;br /&gt;
|-&lt;br /&gt;
| 25 October 1995 || 1.20 || MS-DOS, Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 2 February 1996 || 2.00 Beta || Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 11 February 1996 || FCS 2.00 || MS-DOS (CEK 1.22); Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 1996 || 2.20 Beta4 || Referenced in NV3 v1.xx driver source, removed in later versions&lt;br /&gt;
|-&lt;br /&gt;
| 23 September 1996; some files rebuilt 19 March 1997 || 2.30 || Windows 95 &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== NV2 / NV3 QTM ===&lt;br /&gt;
There are no known drivers for [[NV2]] or [[NV3 (QTM)]]. Traditional drivers (although software certainly existed) for the former are not likely as it was intended to be used as part of a game, but driver development may have started for the latter.&lt;br /&gt;
&lt;br /&gt;
=== NV3 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Certain OEM-specific drivers may be missing; they are usually almost identical to reference driver versions, but may have certain minor feature differences. Few of these have notable changes (e.g. Diamond adding their InControl Tools, or the STB TwinView two/four head cards with custom &amp;quot;mp&amp;quot; functions to switch between different chips on the board - it is not clear if STB or Nvidia made these modifications). Additionally, the driver versions included in Windows 98 beta releases are not listed (they take the version of the Windows SDK they were compiled with, for instance &amp;lt;code&amp;gt;4.10.1635&amp;lt;/code&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
Early drivers for Windows 9x, the drivers included with Windows 98 pre-release builds and almost all NT 4.0 and 2000 drivers for NV3-based architectures have COFF or VxD symbols (depending on platform) for the resource manager and display driver, although not for the Direct3D or OpenGL drivers. Nvidia seems to have had issues turning off symbol generation, as at some point they wrote a header file that redefined every function name as &amp;lt;code&amp;gt;__nv_rmsym_\&amp;lt;number\&amp;gt;&amp;lt;/code&amp;gt; as some strange way of attempting to obfuscate their function names.&lt;br /&gt;
&lt;br /&gt;
Some of the &amp;quot;lost&amp;quot; source is partially represented in the 75% complete STB VSS dump. The oldest version attested to a version number seems to have been &amp;quot;Version 0.60 BETA2&amp;quot; (June 6, 1997), although parts of versions from May 1997 are also present.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Known driver versions&lt;br /&gt;
|-&lt;br /&gt;
! Date of driver files !! Version !! Known platforms !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| December 1996 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1997 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| May 1997 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 9 May 1997 || 0.xx (0.5x?) Alpha || Windows 9x, NT 4.0 || Referenced in BIOS changelogs, seems to line up. Base for STB V128 BIOS version 1.0&lt;br /&gt;
|-&lt;br /&gt;
| 21 May 1997 || 0.5x || Windows 9x, NT 4.0 || Partial source in partial VSS backup. May be identical to 0.60 or possibly Beta 1&lt;br /&gt;
|-&lt;br /&gt;
| 4 June 1997 || 0.60 BETA 2 || Windows 9x, NT 4.0 || Partial source in partial VSS backup. Pre-release&lt;br /&gt;
|-&lt;br /&gt;
| 11 June 1997 || 0.63 BETA 3A || Windows 9x, NT 4.0 || Partial source in partial VSS backup. Pre-release&lt;br /&gt;
|-&lt;br /&gt;
| 17 June 1997 || 0.64 BETA 4 || Windows 9x, NT 4.0 || Partial source in partial VSS backup. Pre-release&lt;br /&gt;
|-&lt;br /&gt;
| 26 June 1997 || 0.65 BETA 5 || Windows 9x, NT 4.0 || Partial source in partial VSS backup. Pre-release&lt;br /&gt;
|-&lt;br /&gt;
| 28 June 1997 || 0.66 BETA 6 || Windows 9x, NT 4.0 || Partial source in partial VSS backup. Pre-release&lt;br /&gt;
|-&lt;br /&gt;
| June 1997 || ??? || ??? || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 5 July 1997 || BETA 7 || Windows 9x, NT 4.0 || Presumably v0.67.&lt;br /&gt;
|-&lt;br /&gt;
| 9 July 1997 || BETA 8 || Windows 9x, NT 4.0 || Base for STB Velocity 128 BIOS version 1.2. Presumably v0.68.&lt;br /&gt;
|-&lt;br /&gt;
| 12 July 1997 || BETA 9 || Windows 9x, NT 4.0 || Base for STB Velocity 128 BIOS version 1.3. &amp;quot;Partial source in partial VSS backup. Pre-release (unclear how fcs1 can be so close?). Presumably v0.69.&lt;br /&gt;
|-&lt;br /&gt;
| 14 July 1997 || 0.70 (FCS2) || Windows 9x, NT 4.0 || &amp;quot;Final Code Shipment / First Customer Shipment&amp;quot; #2. Possibly final quality software (or a release candidate). Unknown if it was ever released because it was replaced very quickly before the release date.&lt;br /&gt;
|-&lt;br /&gt;
| 17 July 1997 || Unnumbered pre-release || Windows NT 4.0 || Accidentally released by STB Systems in September 1997 (the 9x drivers provided were much later). Has NV1 support in display driver (even though NT was never officially supported on NV1), and only supports revision A of NV3. Possibly 0.70 FCS2.&lt;br /&gt;
|-&lt;br /&gt;
| 21 July 1997 || 0.71 (FCS3) || Windows 9x, NT 4.0 || &amp;quot;Final Code Shipment / First Customer Shipment&amp;quot; #3. Possibly final quality software (or a release candidate). Unknown if it was ever released because it was replaced very quickly before the release date.&lt;br /&gt;
|-&lt;br /&gt;
| 21 July 1997 || 0.72 (FCS4) || Windows 9x, NT 4.0 || Base for STB Velocity 128 BIOS version 1.4 (NVIDIA BIOS version 1.43). &amp;quot;Final Code Shipment / First Customer Shipment&amp;quot; #4. Possibly final quality software (or a release candidate). Unknown if it was ever released because it was replaced very quickly before the release date.&lt;br /&gt;
|-&lt;br /&gt;
| 8 August 1997 || 0.73b (FCS5) ||  Windows 9x, NT 4.0 || Base for STB Velocity 128 BIOS version 1.5 (NVIDIA BIOS version 1.45). Both 0.73 and 0.73b are known but seem to be dated to the same day. The earliest version known to have been intentionally released (only for Windows NT), possibly with very early Velocity 128 units.&lt;br /&gt;
|- &lt;br /&gt;
| 11 August 1997 || 0.74 (FCS6) || Windows 9x, NT 4.0 || &amp;quot;Final Code Shipment / First Customer Shipment&amp;quot; #6. Possibly final quality software (or a release candidate). Unknown if it was ever released because it was replaced very quickly before the release date.&lt;br /&gt;
|- &lt;br /&gt;
| 15 August 1997 || 0.75 (FCS7) || Windows NT 4.0 || Possible launch drivers&lt;br /&gt;
|- &lt;br /&gt;
| 20 August 1997 (drivers compiled by STB? 27 August 1997) || 0.75 (FCS7) || Windows NT 3.51 || No resource manager&lt;br /&gt;
|- &lt;br /&gt;
| 25 August 1997 || 0.76 (FCS8) || Windows 9x, NT 4.0 || &amp;quot;Final Code Shipment / First Customer Shipment&amp;quot; #8. Possibly final quality software (or a release candidate). Unknown if it was ever released because it was replaced very quickly before the release date.&lt;br /&gt;
|-&lt;br /&gt;
| August 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 30 August 1997 || 0.77 || Windows 9x, NT 4.0 || Possible launch drivers for Windows 9x. The first version not labelled as FCS. (also called build 77). Seemingly the only Windows 9x version compiled with symbols on, for the Resource Manager only&lt;br /&gt;
|-&lt;br /&gt;
| 5 September 1997 || 1.00 || Windows 9x, NT 4.0 || Possibly the first drivers NVIDIA considered finished, due to the 1.00 version number (also called Build 100)&lt;br /&gt;
|-&lt;br /&gt;
| 19 September 1997 || 1.01 || Windows 9x, NT 4.0 || Also called Build 101&lt;br /&gt;
|-&lt;br /&gt;
| 24 September 1997 || 1.02 || Windows 9x, NT 4.0 || Also called Build 102&lt;br /&gt;
|-&lt;br /&gt;
| 23 September 1997 (STB Systems) || 1.16 || Windows 9x || D3D drivers compiled with debug messages left on. PDB file names refer to STB products proving STB Systems had driver source code access. Later on after the [[STB Systems Leak]] this version was discovered to be a modified NVIDIA release (which one?)&lt;br /&gt;
|-&lt;br /&gt;
| 29 September 1997 || 1.04 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1997 || 1.05 || Windows 3.1 ||&lt;br /&gt;
|-&lt;br /&gt;
| 22 October 1997 || 1.06 || Windows 9x || &lt;br /&gt;
|-&lt;br /&gt;
| October 1997 || ??? || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 2 November 1997 || 1.07c || Windows NT 4.0 || &lt;br /&gt;
|-&lt;br /&gt;
| 14 November 1997 || 1.21 || Windows 9x || OpenGL Alpha 1 release (&amp;lt;code&amp;gt;nv3quake.zip&amp;lt;/code&amp;gt;). Also the Alpha 2 release with an updated OpenGL ICD from 2 December 1997; the first version where the Windows 9x miniVDD and Resource Manager were merged.&lt;br /&gt;
|-&lt;br /&gt;
| November 1997 || ??? || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 9 December 1997 || 1.23 || Windows 9x || Internal version given to STB to fix some bug.&lt;br /&gt;
|-&lt;br /&gt;
| 10 December 1997 || 1.11 || Windows 9x || Yes, later than 1.21. The 1.21 was from a development branch for OpenGL support and the Mini VDD to RM merger.&lt;br /&gt;
|-&lt;br /&gt;
| 15 January 1998 || 1.26 || Windows 9x || STB source drop (available; Resource Manager + Win9x GDI + D3D + OpenGL + NT4 GDI + NT4 MCD)&lt;br /&gt;
|-&lt;br /&gt;
| 26 January 1998 || 1.27 || Windows 9x || Partially lost STB source drop, only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 31 January 1998 || 1.28 || Windows 9x || OpenGL Beta 1 release. &lt;br /&gt;
|- &lt;br /&gt;
| 1 February 1998 || 1.29 || Windows NT 4.0 || First driver with NV4-related functions in display driver (very basic support, simply initialisation and shutdown, to start with)&lt;br /&gt;
|-&lt;br /&gt;
| 12 February 1998 || 1.30 || Windows 9x, NT 4.0 || Partially lost STB source drop, only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|- &lt;br /&gt;
| 22 February 1998 || 1.34 || Windows 9x, NT 4.0 || Partially lost STB source drop, only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|- &lt;br /&gt;
| 26 February 1998 || 1.36 || Windows 9x || STB source drop (available; only Resource Manager and Win9x GDI drivers updated)&lt;br /&gt;
|-&lt;br /&gt;
| 5 March 1998 || 1.37 || Windows 9x || Partially lost STB source drop, only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 19 March 1998 || 1.38 || Windows 9x || Partially lost STB source drop, only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 3 April 1998 || 1.40 || Windows 9x || Partially lost STB source drop, only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.41 || Windows 9x || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.42 || Windows 9x || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 7 April 1998 || 1.43 || Windows 9x || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 9 April 1998 || 1.44 || Windows 9x ||&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.45 || Windows 9x || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46 || Windows 9x || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46a || Windows 9x || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46b || Windows 9x || Partially lost STB source drop(s), only folder name, partial Resource Manager&lt;br /&gt;
|-&lt;br /&gt;
| 17 April 1998 || 1.50 || Windows 9x || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 22 April 1998 || 1.50b || Windows 9x, NT 4.0 || Source code available (updated OpenGL + Win9x GDI)&lt;br /&gt;
|-&lt;br /&gt;
| 25 April 1998 || 1.50c || Windows 9x, NT 4.0 || Source code available (updated OpenGL + Win9x GDI)&lt;br /&gt;
|-&lt;br /&gt;
| 26 April 1998 || 1.50d || Windows 9x, NT 4.0 || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 29 April 1998 || 1.50e || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 5 May 1998 || 1.50h || Windows 9x, Windows NT 4.0 || Updated Win9x GDI + Direct3D from 1.50e - nvidia readme: &amp;quot;remove int 3&#039;s UGGHHHHH(the person that did this has been fired)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 5 May 1998 || 1.50k || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 4 August 1998 || 1.62 || Windows NT 4.0 || &lt;br /&gt;
|-&lt;br /&gt;
| 14 July 1998 || 1.57 || Windows 9x, Windows NT 4.0 || Early multimonitor support for STB MVP&lt;br /&gt;
|-&lt;br /&gt;
| 23 July 1998 || 1.59 || Windows 9x, Windows NT 4.0 || Early multimonitor support for STB MVP&lt;br /&gt;
|-&lt;br /&gt;
| 5 August 1998 || 1.72a || Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 23 August 1998 || 1.74 || Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D) &lt;br /&gt;
|-&lt;br /&gt;
| 27 August 1998 || 1.27 || Windows 3.1 || Final Win3.1 drivers; probably different branch; some files call themselves &amp;quot;RIVA TNT Resource Manager, Version 0.11&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| 28 August 1998 || 1.75 || Windows 9x || nVIDIA SDK 0.81 &lt;br /&gt;
|- &lt;br /&gt;
| 14 September 1998 || 2.77 || Windows 9x, Windows NT 4.0 || NT: Display driver output name changed from &amp;lt;code&amp;gt;nv_disp&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;nv3_disp&amp;lt;/code&amp;gt; (probably due to NV4 driver development), also source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + VBIOS) &lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1998 || 2.79 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + NV3Tweak) &lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1998 || 2.80 || Windows 9x, Windows NT 4.0 || nVIDIA SDK 0.83&lt;br /&gt;
|-&lt;br /&gt;
| 22 October 1998 || 2.83 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + NV3Tweak) &lt;br /&gt;
|-&lt;br /&gt;
| 9 November 1998 || 3.03 || Windows 9x ||&lt;br /&gt;
|- &lt;br /&gt;
| 10 December 1998 || 1.30, 2.79 (Diamond branch) || Windows 9x || Most likely a branch maintained by Diamond Multimedia for their &amp;quot;Viper&amp;quot; cards, released 21 January 1999 &lt;br /&gt;
|-&lt;br /&gt;
| 14 December 1998 (source) / 7 January 1999 (binary) || 3.12 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + VBIOS) &lt;br /&gt;
|- &lt;br /&gt;
| 1 February 1999 || 3.22 || Windows 9x ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 February 1999 || 3.23 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 9 February 1999 || 3.25 || Windows 9x || &lt;br /&gt;
|-&lt;br /&gt;
| 18 February 1999 || 3.27 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3 March 1999 || Unknown version || OS/2 (Warp 3 Fixpak35+ &amp;amp; 4 Fixpak5+) || Very sloppily done. Batch file (well, Rexx script) setup. Unclear what GPU is even supported: it was posted on Nvidia&#039;s RIVA 128 download pages, but the readme file calls it &amp;quot;GRADD Driver for Nvidia NV4&amp;quot; (not even using a product name), despite being last modified on 25 February 1999.&lt;br /&gt;
|-&lt;br /&gt;
| 21 March 1999 || 3.37 || Windows 9x, NT 4.0, 2000 (beta) || Final driver for Windows 9x, only Win2000 driver with OpenGL support. Even though the driver was compiled against Windows 2000 build 1996, it works fine on the final Windows 2000, including Service Pack 4&lt;br /&gt;
|- &lt;br /&gt;
| 11 May 1999 || 3.41b || Windows NT 4.0 || Final NT 4.0 driver&lt;br /&gt;
|- &lt;br /&gt;
| 28 October 1999 || 3.43 || Windows 2000 || 2D-only driver bundled with Windows 2000. Still has OpenGL hooks; untested&lt;br /&gt;
|- &lt;br /&gt;
| 31 July 2001 || 3.43 || Windows XP || 2D-only driver bundled with Windows XP. Still has OpenGL hooks; tested, does not work on default, crashes late in OpenGL initialisation process (may be patchable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== NV4 and later shared drivers ===&lt;br /&gt;
&lt;br /&gt;
0.32 first released version, 0.12 first sent to STB (Source archive is dated June 27, 1998)&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
:{{note|a|}}These issues in the relationship eventually led to the infamous &amp;quot;Fuck you, Nvidia!&amp;quot; comment and middle finger by Linus Torvalds at a 2012 event.&lt;br /&gt;
:{{note|b|}}They are officially marked as being for 3.11, but unless they depend on the 32-bit File Access feature backported from Windows 95, or any other feature that was exclusively added in WfW 3.11, there should be no reason why they cannot work on any other version of Windows 3.1, such as the original 1992 release, standalone Windows 3.11, or Windows for Workgroups 3.1: however, the drivers have not been tested with these older versions, so the compatibility, or lack thereof, is unknown.&lt;br /&gt;
:{{note|c|}}Initially 2D only, then OpenGL only: no D3D.&lt;br /&gt;
:{{note|d|}}Initially OpenGL only, later Direct3D support was added. Beta only for NV3.&lt;br /&gt;
:{{note|e|}}2D only officially for NV3, although hooks to load the OpenGL drivers still exist; they do not load using the Windows 2000 drivers, but they can likely be patched to work.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=Software&amp;diff=1764</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=Software&amp;diff=1764"/>
		<updated>2026-09-13T00:25:48Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nvidia has produced many pieces of &#039;&#039;&#039;software&#039;&#039;&#039; for users of their graphics cards. The main piece of software required is their drivers: they are required to make the GPU function at all, beyond the very basic common level of 2D-only acceleration and software-rendered 3D (VGA, VESA, or Windows Advanced Rasterisation Platform - WARP in Windows 7 and later) level of compatibility assured for all forms of graphical hardware; any Nvidia-specific features require their drivers to be installed on the system. The first ever variant of the Nvidia driver set was the series of VxDs running under Windows 3.x that allowed the [[NV0]] to be simulated. There have historically been several sets of drivers for Nvidia hardware: initially, the first was Nvidia&#039;s drivers, based on their [[Resource Manager]], which started development in 1994, and the very early versions of the NT miniport driver which programmed the hardware directly rather than through the RM, as a stopgap measure until the real Resource Manager was ported over to NT, starting with the [[NV1]], in roughly 1996. There was also a semi-official, very basic &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; driver set for Linux, which was not judged sufficient for use of the card under Linux, was updated infrequently with few features and Nvidia required to be partially obfuscated (and was generally hard to deal with as a company){{ref|a}}: several driver projects started to provide a more complete emulation, with &amp;lt;code&amp;gt;nouveau&amp;lt;/code&amp;gt;, under the purview of the wider freedesktop project, being the most popular and long-lasting, although Utah GLX (which successfully achieved 3D acceleration on the Riva 128 at least) and RivaTV, aimed at using the TV-out functionality and [[PME|Mediaport]] of these cards, also existed; &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; was also ported to BeOS and several other operating systems to allow Nvidia GPUs to be used on their operating systems. Later on, most of these projects experienced sharp declines in development activity, or were discontinued entirely as Nvidia ported their full Resource Manager drivers to Linux and eventually partially open-sourced them, although parts of it were moved to the firmware running on modern nVidia GPUs&#039; on-die [[Falcon]] and [[RISC-V]] cores prior to this.&lt;br /&gt;
&lt;br /&gt;
Nvidia has also provided both industry-standard APIs (such as [[DirectX]], [[OpenGL]] and [[Vulkan]]) several custom APIs for their products for both graphics and non-graphics related applications, such as Cg (C for graphics) starting on the [[NV20]], and for GPGPU applications, CUDA (Compute Unified Device Architecture) starting on the [[G80]]. However, these are largely implemented as Resource Manager clients or otherwise as parts of their drivers: for example, the game physics API PhysX, the Nintendo Switch graphics API &amp;lt;code&amp;gt;nvn&amp;lt;/code&amp;gt; and its Switch 2 successor &amp;lt;code&amp;gt;nvn2&amp;lt;/code&amp;gt;, the &#039;&#039;extremely&#039;&#039; confusingly named &amp;quot;NVIDIA Riva&amp;quot; AI speech generation API, NeMo for generative AI, RAPIDS for data science, CUDA-X for general AI libraries, and many more are all implemented in a similar fashion.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
While Nvidia has changed their drivers&#039; design over time, at least for early models there are two relatively basic setups for the &amp;quot;full fat&amp;quot; Nvidia Resource Manager-based drivers, one which was used for [[NV1]] through [[NV3]] and a new design which was used starting with [[NV4]] (although there are obviously variations of both). &lt;br /&gt;
&lt;br /&gt;
In all cases, the [[Resource Manager]] implements the actual interaction with the hardware and is intended to abstract away the differences between different generations of Nvidia architecture and to provide a consistent interface for functionality implemented in both hardware and software. The RM initialises, controls and shuts down (if required) the graphics hardware; multiple types of APIs are provided in order to interact with the RM. The first model is the OS-provided IOCTL interface, which can be used for basic functionality (this model is used by Nvidia&#039;s GDI drivers). A second model is calling into APIs exposed by the Resource Manager through the NVAPI interface. In order to achieve this, a single function is exported a la Quake-based game engine, that takes a single parameter, which is a very large C struct with many function pointers for different functions, typically implemented via the mechanism of a stub DLL that forwards each function to the Resource Manager. This implementation makes the application a &amp;quot;client&amp;quot; of the Resource Manager. The implementation varies by driver version and intended operating system. For instance, in the case of NV3 drivers for Windows 9x, the 32-bit API &amp;lt;code&amp;gt;NV3API.DLL&amp;lt;/code&amp;gt; thunks into a 16-bit dll &amp;lt;code&amp;gt;NV3SYS.DLL&amp;lt;/code&amp;gt; by passing a large array of function pointers (which also exports, via traditional DLL exporting, the same API but for 16-bit apps) which then &#039;&#039;calls back into the 32-bit Resource Manager VxD&#039;&#039; to perform API calls. The interface to the GPU is implemented via a pseudo-C++ class system; classes are indicated by object IDs, with a large array of class structures providing &amp;quot;methods&amp;quot; - methods are assigned an ID, corresponding to the offset within a DMA channel that is written to in order to execute the method on hardware. There is no requirement for a method to have a unique offset. Some classes are [[PFIFO#Object submission|implemented in hardware]] using the &amp;lt;code&amp;gt;grHWMthd&amp;lt;/code&amp;gt; function, while others are implemented in software; if a class is implemented in hardware, it is simply stubbed out in software. Software methods are implemented by setting bit 23 of an object&#039;s [[NV3 RAMIN#Object context|context]] to 1 during submission. If this is set, the GPU will raise an interrupt and the graphical operation will be performed by sotware. This approach provided, and presumably continues to provide (since it is still used!) a range of benefits that other companies did not enjoy at the time. It allows rapid iteration (since support for new GPUs can be implemented without breaking software, especially as most Resource Manager clients), allows features that do not work or are not available in hardware to be easily emulated in software at a performance cost, allows easy support of any new graphical APIs that may appear (just write another RM client), and additionally allows hardware resources to be abstracted away from clients: for instance, there are only 8 channels in both NV1 and NV3 hardware, but this is virtualised away by RM to allow opening up to 128 channels. &lt;br /&gt;
&lt;br /&gt;
=== NV1 to NV3 ===&lt;br /&gt;
From [[NV1]] to [[NV3]] the Resource Manager is unique for each graphics card - it is a different branch in Nvidia&#039;s source control system. This is not shared for all parts of the drivers; the GDI drivers definitely are not set up like this, leading to NV3 resource managers with GDI drivers that support NV4 (starting around February 1998, several months before the release of the Riva TNT). It is unclear if this fact was realised at the time; it seems that it may have been discovered by the era of the [[NV15]] architecture.&lt;br /&gt;
&lt;br /&gt;
=== NV4 ===&lt;br /&gt;
&lt;br /&gt;
== Supported platforms ==&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; These are platforms that were supported for any length of time, not platforms that are currently supported, or which GPUs they can be used with.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Supported operating systems&lt;br /&gt;
|-&lt;br /&gt;
! Operating system !! Driver supported&lt;br /&gt;
|-&lt;br /&gt;
| Windows for Workgroups 3.11 || Full drivers{{ref|b}} &lt;br /&gt;
|-&lt;br /&gt;
| Windows 95 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 98/98SE || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows ME || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows NT 3.51 || Miniport driver only&lt;br /&gt;
|-&lt;br /&gt;
| Windows NT 4.0 || Miniport driver, later full Resource Manager-based driver{{ref|c}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows 2000 || Full drivers{{ref|d}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows XP || Full drivers{{ref|e}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows Vista || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 7 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 8 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 8.1 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 10 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 11 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Xbox (original) || Modified full drivers (&amp;quot;minix&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| macOS || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Android || Full drivers, also &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Linux || Initially &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; or open-source project only, later full drivers.&lt;br /&gt;
|-&lt;br /&gt;
| BeOS, Haiku, EOS, AsusWRT (linux-based) || These OSes support the &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; driver only&lt;br /&gt;
|-&lt;br /&gt;
| OS/2 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| PlayStation 3 (CellOS) || Custom&lt;br /&gt;
|-&lt;br /&gt;
| Horizon OS (Switch) || Full drivers (with custom API)&lt;br /&gt;
|-&lt;br /&gt;
| Horizon OS (Switch 2) || Full drivers (with custom API)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Known driver versions ==&lt;br /&gt;
&lt;br /&gt;
Each component of Nvidia&#039;s drivers has an official description (it used to be used in their control panel extension to list each driver file); for example &amp;quot;Resource Manager&amp;quot; or &amp;quot;OpenGL ICD&amp;quot;. Initially, these were simply described as being for &amp;quot;Nvidia&amp;quot; (e.g. &amp;quot;NVidia Resource Manager, Version 2.00 Beta&amp;quot;), later on the file descriptions were changed to be named after the specific GPU supported, e.g. &amp;quot;RIVA 128 Direct Draw/Direct 3D Driver, Version x.xx&amp;quot; or &amp;quot;Riva TNT Display Driver, Version x.xx&amp;quot;, however later when Nvidia refactored their GPU drivers to support multiple models of graphics hardware, they changed the description to simply read &amp;quot;NVIDIA Compatible&amp;quot;. This is still the case as of April 2025. &lt;br /&gt;
&lt;br /&gt;
There were certainly many other versions, if you have any other version, please contact me: you can check by checking the file properties of any file in the driver set.&lt;br /&gt;
&lt;br /&gt;
=== NV1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Known driver versions&lt;br /&gt;
|-&lt;br /&gt;
! Date of driver files !! Version !! Known platforms&lt;br /&gt;
|-&lt;br /&gt;
| 25 October 1995 || 1.20 || MS-DOS, Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 2 February 1996 || 2.00 Beta || Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 11 February 1996 || FCS 2.00 || MS-DOS (CEK 1.22); Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 1996 || 2.20 Beta4 || Referenced in NV3 v1.xx driver source, removed in later versions&lt;br /&gt;
|-&lt;br /&gt;
| 23 September 1996; some files rebuilt 19 March 1997 || 2.30 || Windows 95 &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== NV2 / NV3 QTM ===&lt;br /&gt;
There are no known drivers for [[NV2]] or [[NV3 (QTM)]]. Traditional drivers (although software certainly existed) for the former are not likely as it was intended to be used as part of a game, but driver development may have started for the latter.&lt;br /&gt;
&lt;br /&gt;
=== NV3 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Certain OEM-specific drivers may be missing; they are usually almost identical to reference driver versions, but may have certain minor feature differences. Few of these have notable changes (e.g. Diamond adding their InControl Tools, or the STB TwinView two/four head cards with custom &amp;quot;mp&amp;quot; functions to switch between different chips on the board - it is not clear if STB or Nvidia made these modifications). Additionally, the driver versions included in Windows 98 beta releases are not listed (they take the version of the Windows SDK they were compiled with, for instance &amp;lt;code&amp;gt;4.10.1635&amp;lt;/code&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
Early drivers for Windows 9x, the drivers included with Windows 98 pre-release builds and almost all NT 4.0 and 2000 drivers for NV3-based architectures have COFF or VxD symbols (depending on platform) for the resource manager and display driver, although not for the Direct3D or OpenGL drivers. Nvidia seems to have had issues turning off symbol generation, as at some point they wrote a header file that redefined every function name as &amp;lt;code&amp;gt;__nv_rmsym_\&amp;lt;number\&amp;gt;&amp;lt;/code&amp;gt; as some strange way of attempting to obfuscate their function names.&lt;br /&gt;
&lt;br /&gt;
Some of the &amp;quot;lost&amp;quot; source is partially represented in the 75% complete STB VSS dump. The oldest version attested to a version number seems to have been &amp;quot;Version 0.60 BETA2&amp;quot; (June 6, 1997), although parts of versions from May 1997 are also present.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Known driver versions&lt;br /&gt;
|-&lt;br /&gt;
! Date of driver files !! Version !! Known platforms !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| December 1996 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1997 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| May 1997 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 9 May 1997 || 0.xx (0.5x?) Alpha || Windows 9x, NT 4.0 || Referenced in BIOS changelogs, seems to line up. Base for STB V128 BIOS version 1.0&lt;br /&gt;
|-&lt;br /&gt;
| 21 May 1997 || 0.5x || Windows 9x, NT 4.0 || Partial source in partial VSS backup. May be identical to 0.60 or possibly Beta 1&lt;br /&gt;
|-&lt;br /&gt;
| 4 June 1997 || 0.60 BETA 2 || Windows 9x, NT 4.0 || Partial source in partial VSS backup. Pre-release&lt;br /&gt;
|-&lt;br /&gt;
| 11 June 1997 || 0.63 BETA 3A || Windows 9x, NT 4.0 || Partial source in partial VSS backup. Pre-release&lt;br /&gt;
|-&lt;br /&gt;
| 17 June 1997 || 0.64 BETA 4 || Windows 9x, NT 4.0 || Partial source in partial VSS backup. Pre-release&lt;br /&gt;
|-&lt;br /&gt;
| 26 June 1997 || 0.65 BETA 5 || Windows 9x, NT 4.0 || Partial source in partial VSS backup. Pre-release&lt;br /&gt;
|-&lt;br /&gt;
| 28 June 1997 || 0.66 BETA 6 || Windows 9x, NT 4.0 || Partial source in partial VSS backup. Pre-release&lt;br /&gt;
|-&lt;br /&gt;
| June 1997 || ??? || ??? || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 5 July 1997 || BETA 7 || Windows 9x, NT 4.0 || Presumably v0.67.&lt;br /&gt;
|-&lt;br /&gt;
| 9 July 1997 || BETA 8 || Windows 9x, NT 4.0 || Base for STB Velocity 128 BIOS version 1.2. Presumably v0.68.&lt;br /&gt;
|-&lt;br /&gt;
| 12 July 1997 || BETA 9 || Windows 9x, NT 4.0 || Base for STB Velocity 128 BIOS version 1.3. &amp;quot;Partial source in partial VSS backup. Pre-release (unclear how fcs1 can be so close?). Presumably v0.69.&lt;br /&gt;
|-&lt;br /&gt;
| 14 July 1997 || Version 0.70 (FCS2) || Windows 9x, NT 4.0 || &amp;quot;Final Code Shipment / First Customer Shipment&amp;quot; #2. Possibly final quality software (or a release candidate). Unknown if it was ever released because it was replaced very quickly before the release date.&lt;br /&gt;
|-&lt;br /&gt;
| 17 July 1997 || Unnumbered pre-release || Windows NT 4.0 || Accidentally released by STB Systems in September 1997 (the 9x drivers provided were much later). Has NV1 support in display driver (even though NT was never officially supported on NV1), and only supports revision A of NV3. Possibly 0.70 FCS2.&lt;br /&gt;
|-&lt;br /&gt;
| 21 July 1997 || Version 0.71 (FCS3) || Windows 9x, NT 4.0 || &amp;quot;Final Code Shipment / First Customer Shipment&amp;quot; #3. Possibly final quality software (or a release candidate). Unknown if it was ever released because it was replaced very quickly before the release date.&lt;br /&gt;
|-&lt;br /&gt;
| 21 July 1997 || Version 0.72 (FCS4) || Windows 9x, NT 4.0 || Base for STB Velocity 128 BIOS version 1.4 (NVIDIA BIOS version 1.43). &amp;quot;Final Code Shipment / First Customer Shipment&amp;quot; #4. Possibly final quality software (or a release candidate). Unknown if it was ever released because it was replaced very quickly before the release date.&lt;br /&gt;
|-&lt;br /&gt;
| 8 August 1997 || 0.73b (FCS5) ||  Windows 9x, NT 4.0 || Base for STB Velocity 128 BIOS version 1.5 (NVIDIA BIOS version 1.45). Both 0.73 and 0.73b are known but seem to be dated to the same day. The earliest version known to have been intentionally released (only for Windows NT), possibly with very early Velocity 128 units.&lt;br /&gt;
|- &lt;br /&gt;
| 11 August 1997 || 0.74 (FCS6) || Windows 9x, NT 4.0 || &amp;quot;Final Code Shipment / First Customer Shipment&amp;quot; #6. Possibly final quality software (or a release candidate). Unknown if it was ever released because it was replaced very quickly before the release date.&lt;br /&gt;
|- &lt;br /&gt;
| 15 August 1997 || 0.75 (FCS7) || Windows NT 4.0 || Possible launch drivers&lt;br /&gt;
|- &lt;br /&gt;
| 20 August 1997 (drivers compiled by STB? 27 August 1997) || 0.75 (FCS7) || Windows NT 3.51 || No resource manager&lt;br /&gt;
|- &lt;br /&gt;
| 25 August 1997 || 0.76 (FCS8) || Windows 9x, NT 4.0 || &amp;quot;Final Code Shipment / First Customer Shipment&amp;quot; #8. Possibly final quality software (or a release candidate). Unknown if it was ever released because it was replaced very quickly before the release date.&lt;br /&gt;
|-&lt;br /&gt;
| August 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 30 August 1997 || 0.77 || Windows 9x, NT 4.0 || Possible launch drivers for Windows 9x. The first version not labelled as FCS. (also called build 77). Seemingly the only Windows 9x version compiled with symbols on, for the Resource Manager only&lt;br /&gt;
|-&lt;br /&gt;
| 5 September 1997 || 1.00 || Windows 9x, NT 4.0 || Possibly the first drivers NVIDIA considered finished, due to the 1.00 version number (also called Build 100)&lt;br /&gt;
|-&lt;br /&gt;
| 19 September 1997 || 1.01 || Windows 9x, NT 4.0 || Also called Build 101&lt;br /&gt;
|-&lt;br /&gt;
| 24 September 1997 || 1.02 || Windows 9x, NT 4.0 || Also called Build 102&lt;br /&gt;
|-&lt;br /&gt;
| 23 September 1997 (STB Systems) || 1.16 || Windows 9x || D3D drivers compiled with debug messages left on. PDB file names refer to STB products proving STB Systems had driver source code access. Later on after the [[STB Systems Leak]] this version was discovered to be a modified NVIDIA release (which one?)&lt;br /&gt;
|-&lt;br /&gt;
| 29 September 1997 || 1.04 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1997 || 1.05 || Windows 3.1 ||&lt;br /&gt;
|-&lt;br /&gt;
| 22 October 1997 || 1.06 || Windows 9x || &lt;br /&gt;
|-&lt;br /&gt;
| October 1997 || ??? || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 2 November 1997 || 1.07c || Windows NT 4.0 || &lt;br /&gt;
|-&lt;br /&gt;
| 14 November 1997 || 1.21 || Windows 9x || OpenGL Alpha 1 release (&amp;lt;code&amp;gt;nv3quake.zip&amp;lt;/code&amp;gt;). Also the Alpha 2 release with an updated OpenGL ICD from 2 December 1997; the first version where the Windows 9x miniVDD and Resource Manager were merged.&lt;br /&gt;
|-&lt;br /&gt;
| November 1997 || ??? || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 9 December 1997 || 1.23 || Windows 9x || Internal version given to STB to fix some bug.&lt;br /&gt;
|-&lt;br /&gt;
| 10 December 1997 || 1.11 || Windows 9x || Yes, later than 1.21. The 1.21 was from a development branch for OpenGL support and the Mini VDD to RM merger.&lt;br /&gt;
|-&lt;br /&gt;
| 15 January 1998 || 1.26 || Windows 9x || STB source drop (available; Resource Manager + Win9x GDI + D3D + OpenGL + NT4 GDI + NT4 MCD)&lt;br /&gt;
|-&lt;br /&gt;
| 26 January 1998 || 1.27 || Windows 9x || Partially lost STB source drop, only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 31 January 1998 || 1.28 || Windows 9x || OpenGL Beta 1 release. &lt;br /&gt;
|- &lt;br /&gt;
| 1 February 1998 || 1.29 || Windows NT 4.0 || First driver with NV4-related functions in display driver (very basic support, simply initialisation and shutdown, to start with)&lt;br /&gt;
|-&lt;br /&gt;
| 12 February 1998 || 1.30 || Windows 9x, NT 4.0 || Partially lost STB source drop, only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|- &lt;br /&gt;
| 22 February 1998 || 1.34 || Windows 9x, NT 4.0 || Partially lost STB source drop, only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|- &lt;br /&gt;
| 26 February 1998 || 1.36 || Windows 9x || STB source drop (available; only Resource Manager and Win9x GDI drivers updated)&lt;br /&gt;
|-&lt;br /&gt;
| 5 March 1998 || 1.37 || Windows 9x || Partially lost STB source drop, only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 19 March 1998 || 1.38 || Windows 9x || Partially lost STB source drop, only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 3 April 1998 || 1.40 || Windows 9x || Partially lost STB source drop, only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.41 || Windows 9x || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.42 || Windows 9x || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 7 April 1998 || 1.43 || Windows 9x || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 9 April 1998 || 1.44 || Windows 9x ||&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.45 || Windows 9x || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46 || Windows 9x || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46a || Windows 9x || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46b || Windows 9x || Partially lost STB source drop(s), only folder name, partial Resource Manager&lt;br /&gt;
|-&lt;br /&gt;
| 17 April 1998 || 1.50 || Windows 9x || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 22 April 1998 || 1.50b || Windows 9x, NT 4.0 || Source code available (updated OpenGL + Win9x GDI)&lt;br /&gt;
|-&lt;br /&gt;
| 25 April 1998 || 1.50c || Windows 9x, NT 4.0 || Source code available (updated OpenGL + Win9x GDI)&lt;br /&gt;
|-&lt;br /&gt;
| 26 April 1998 || 1.50d || Windows 9x, NT 4.0 || Partially lost STB source drop(s), only folder name &amp;amp; stuff in VSS remains&lt;br /&gt;
|-&lt;br /&gt;
| 29 April 1998 || 1.50e || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 5 May 1998 || 1.50h || Windows 9x, Windows NT 4.0 || Updated Win9x GDI + Direct3D from 1.50e - nvidia readme: &amp;quot;remove int 3&#039;s UGGHHHHH(the person that did this has been fired)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 5 May 1998 || 1.50k || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 4 August 1998 || 1.62 || Windows NT 4.0 || &lt;br /&gt;
|-&lt;br /&gt;
| 14 July 1998 || 1.57 || Windows 9x, Windows NT 4.0 || Early multimonitor support for STB MVP&lt;br /&gt;
|-&lt;br /&gt;
| 23 July 1998 || 1.59 || Windows 9x, Windows NT 4.0 || Early multimonitor support for STB MVP&lt;br /&gt;
|-&lt;br /&gt;
| 5 August 1998 || 1.72a || Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 23 August 1998 || 1.74 || Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D) &lt;br /&gt;
|-&lt;br /&gt;
| 27 August 1998 || 1.27 || Windows 3.1 || Final Win3.1 drivers; probably different branch; some files call themselves &amp;quot;RIVA TNT Resource Manager, Version 0.11&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| 28 August 1998 || 1.75 || Windows 9x || nVIDIA SDK 0.81 &lt;br /&gt;
|- &lt;br /&gt;
| 14 September 1998 || 2.77 || Windows 9x, Windows NT 4.0 || NT: Display driver output name changed from &amp;lt;code&amp;gt;nv_disp&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;nv3_disp&amp;lt;/code&amp;gt; (probably due to NV4 driver development), also source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + VBIOS) &lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1998 || 2.79 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + NV3Tweak) &lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1998 || 2.80 || Windows 9x, Windows NT 4.0 || nVIDIA SDK 0.83&lt;br /&gt;
|-&lt;br /&gt;
| 22 October 1998 || 2.83 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + NV3Tweak) &lt;br /&gt;
|-&lt;br /&gt;
| 9 November 1998 || 3.03 || Windows 9x ||&lt;br /&gt;
|- &lt;br /&gt;
| 10 December 1998 || 1.30, 2.79 (Diamond branch) || Windows 9x || Most likely a branch maintained by Diamond Multimedia for their &amp;quot;Viper&amp;quot; cards, released 21 January 1999 &lt;br /&gt;
|-&lt;br /&gt;
| 14 December 1998 (source) / 7 January 1999 (binary) || 3.12 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + VBIOS) &lt;br /&gt;
|- &lt;br /&gt;
| 1 February 1999 || 3.22 || Windows 9x ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 February 1999 || 3.23 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 9 February 1999 || 3.25 || Windows 9x || &lt;br /&gt;
|-&lt;br /&gt;
| 18 February 1999 || 3.27 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3 March 1999 || Unknown version || OS/2 (Warp 3 Fixpak35+ &amp;amp; 4 Fixpak5+) || Very sloppily done. Batch file (well, Rexx script) setup. Unclear what GPU is even supported: it was posted on Nvidia&#039;s RIVA 128 download pages, but the readme file calls it &amp;quot;GRADD Driver for Nvidia NV4&amp;quot; (not even using a product name), despite being last modified on 25 February 1999.&lt;br /&gt;
|-&lt;br /&gt;
| 21 March 1999 || 3.37 || Windows 9x, NT 4.0, 2000 (beta) || Final driver for Windows 9x, only Win2000 driver with OpenGL support. Even though the driver was compiled against Windows 2000 build 1996, it works fine on the final Windows 2000, including Service Pack 4&lt;br /&gt;
|- &lt;br /&gt;
| 11 May 1999 || 3.41b || Windows NT 4.0 || Final NT 4.0 driver&lt;br /&gt;
|- &lt;br /&gt;
| 28 October 1999 || 3.43 || Windows 2000 || 2D-only driver bundled with Windows 2000. Still has OpenGL hooks; untested&lt;br /&gt;
|- &lt;br /&gt;
| 31 July 2001 || 3.43 || Windows XP || 2D-only driver bundled with Windows XP. Still has OpenGL hooks; tested, does not work on default, crashes late in OpenGL initialisation process (may be patchable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== NV4 and later shared drivers ===&lt;br /&gt;
&lt;br /&gt;
0.32 first released version, 0.12 first sent to STB (Source archive is dated June 27, 1998)&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
:{{note|a|}}These issues in the relationship eventually led to the infamous &amp;quot;Fuck you, Nvidia!&amp;quot; comment and middle finger by Linus Torvalds at a 2012 event.&lt;br /&gt;
:{{note|b|}}They are officially marked as being for 3.11, but unless they depend on the 32-bit File Access feature backported from Windows 95, or any other feature that was exclusively added in WfW 3.11, there should be no reason why they cannot work on any other version of Windows 3.1, such as the original 1992 release, standalone Windows 3.11, or Windows for Workgroups 3.1: however, the drivers have not been tested with these older versions, so the compatibility, or lack thereof, is unknown.&lt;br /&gt;
:{{note|c|}}Initially 2D only, then OpenGL only: no D3D.&lt;br /&gt;
:{{note|d|}}Initially OpenGL only, later Direct3D support was added. Beta only for NV3.&lt;br /&gt;
:{{note|e|}}2D only officially for NV3, although hooks to load the OpenGL drivers still exist; they do not load using the Windows 2000 drivers, but they can likely be patched to work.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=Software&amp;diff=1763</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=Software&amp;diff=1763"/>
		<updated>2026-09-12T16:24:18Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nvidia has produced many pieces of &#039;&#039;&#039;software&#039;&#039;&#039; for users of their graphics cards. The main piece of software required is their drivers: they are required to make the GPU function at all, beyond the very basic common level of 2D-only acceleration and software-rendered 3D (VGA, VESA, or Windows Advanced Rasterisation Platform - WARP in Windows 7 and later) level of compatibility assured for all forms of graphical hardware; any Nvidia-specific features require their drivers to be installed on the system. The first ever variant of the Nvidia driver set was the series of VxDs running under Windows 3.x that allowed the [[NV0]] to be simulated. There have historically been several sets of drivers for Nvidia hardware: initially, the first was Nvidia&#039;s drivers, based on their [[Resource Manager]], which started development in 1994, and the very early versions of the NT miniport driver which programmed the hardware directly rather than through the RM, as a stopgap measure until the real Resource Manager was ported over to NT, starting with the [[NV1]], in roughly 1996. There was also a semi-official, very basic &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; driver set for Linux, which was not judged sufficient for use of the card under Linux, was updated infrequently with few features and Nvidia required to be partially obfuscated (and was generally hard to deal with as a company){{ref|a}}: several driver projects started to provide a more complete emulation, with &amp;lt;code&amp;gt;nouveau&amp;lt;/code&amp;gt;, under the purview of the wider freedesktop project, being the most popular and long-lasting, although Utah GLX (which successfully achieved 3D acceleration on the Riva 128 at least) and RivaTV, aimed at using the TV-out functionality and [[PME|Mediaport]] of these cards, also existed; &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; was also ported to BeOS and several other operating systems to allow Nvidia GPUs to be used on their operating systems. Later on, most of these projects experienced sharp declines in development activity, or were discontinued entirely as Nvidia ported their full Resource Manager drivers to Linux and eventually partially open-sourced them, although parts of it were moved to the firmware running on modern nVidia GPUs&#039; on-die [[Falcon]] and [[RISC-V]] cores prior to this.&lt;br /&gt;
&lt;br /&gt;
Nvidia has also provided both industry-standard APIs (such as [[DirectX]], [[OpenGL]] and [[Vulkan]]) several custom APIs for their products for both graphics and non-graphics related applications, such as Cg (C for graphics) starting on the [[NV20]], and for GPGPU applications, CUDA (Compute Unified Device Architecture) starting on the [[G80]]. However, these are largely implemented as Resource Manager clients or otherwise as parts of their drivers: for example, the game physics API PhysX, the Nintendo Switch graphics API &amp;lt;code&amp;gt;nvn&amp;lt;/code&amp;gt; and its Switch 2 successor &amp;lt;code&amp;gt;nvn2&amp;lt;/code&amp;gt;, the &#039;&#039;extremely&#039;&#039; confusingly named &amp;quot;NVIDIA Riva&amp;quot; AI speech generation API, NeMo for generative AI, RAPIDS for data science, CUDA-X for general AI libraries, and many more are all implemented in a similar fashion.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
While Nvidia has changed their drivers&#039; design over time, at least for early models there are two pretty basic setups for the &amp;quot;full fat&amp;quot; Nvidia Resource Manager-based drivers, one which was used for [[NV1]] through [[NV3]] and a new design which was used starting with [[NV4]] (although there are obviously variations of both). &lt;br /&gt;
&lt;br /&gt;
In all cases, the [[Resource Manager]] implements the actual interaction with the hardware and is intended to abstract away the differences between different generations of Nvidia architecture and to provide a consistent interface for functionality implemented in both hardware and software. The RM initialises, controls and shuts down (if required) the graphics hardware; multiple types of APIs are provided in order to interact with the RM. The first model is the OS-provided IOCTL interface, which can be used for basic functionality (this model is used by Nvidia&#039;s GDI drivers). A second model is calling into APIs exposed by the Resource Manager through the NVAPI interface. In order to achieve this, a single function is exported a la Quake-based game engine, that takes a single parameter, which is a very large C struct with many function pointers for different functions, typically implemented via the mechanism of a stub DLL that forwards each function to the Resource Manager. This implementation makes the application a &amp;quot;client&amp;quot; of the Resource Manager. The implementation varies by driver version and intended operating system. For instance, in the case of NV3 drivers for Windows 9x, the 32-bit API &amp;lt;code&amp;gt;NV3API.DLL&amp;lt;/code&amp;gt; thunks into a 16-bit dll &amp;lt;code&amp;gt;NV3SYS.DLL&amp;lt;/code&amp;gt; by passing a large array of function pointers (which also exports, via traditional DLL exporting, the same API but for 16-bit apps) which then &#039;&#039;calls back into the 32-bit Resource Manager VxD&#039;&#039; to perform API calls. The interface to the GPU is implemented via a pseudo-C++ class system; classes are indicated by object IDs, with a large array of class structures providing &amp;quot;methods&amp;quot; - methods are assigned an ID, corresponding to the offset within a DMA channel that is written to in order to execute the method on hardware. There is no requirement for a method to have a unique offset. Some classes are [[PFIFO#Object submission|implemented in hardware]] using the &amp;lt;code&amp;gt;grHWMthd&amp;lt;/code&amp;gt; function, while others are implemented in software; if a class is implemented in hardware, it is simply stubbed out in software. Software methods are implemented by setting bit 23 of an object&#039;s [[NV3 RAMIN#Object context|context]] to 1 during submission. If this is set, the GPU will raise an interrupt and the graphical operation will be performed by sotware. This approach provided, and presumably continues to provide (since it is still used!) a range of benefits that other companies did not enjoy at the time. It allows rapid iteration (since support for new GPUs can be implemented without breaking software, especially as most Resource Manager clients), allows features that do not work or are not available in hardware to be easily emulated in software at a performance cost, allows easy support of any new graphical APIs that may appear (just write another RM client), and additionally allows hardware resources to be abstracted away from clients: for instance, there are only 8 channels in both NV1 and NV3 hardware, but this is virtualised away by RM to allow opening up to 128 channels. &lt;br /&gt;
&lt;br /&gt;
=== NV1 to NV3 ===&lt;br /&gt;
From [[NV1]] to [[NV3]] the Resource Manager is unique for each graphics card - it is a different branch in Nvidia&#039;s source control system. This is not shared for all parts of the drivers; the GDI drivers definitely are not set up like this, leading to NV3 resource managers with GDI drivers that support NV4 (starting around February 1998, several months before the release of the Riva TNT). It is unclear if this fact was realised at the time; it seems that it may have been discovered by the era of the [[NV15]] architecture.&lt;br /&gt;
&lt;br /&gt;
=== NV4 ===&lt;br /&gt;
&lt;br /&gt;
== Supported platforms ==&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; These are platforms that were supported for any length of time, not platforms that are currently supported, or which GPUs they can be used with.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Supported operating systems&lt;br /&gt;
|-&lt;br /&gt;
! Operating system !! Driver supported&lt;br /&gt;
|-&lt;br /&gt;
| Windows for Workgroups 3.11 || Full drivers{{ref|b}} &lt;br /&gt;
|-&lt;br /&gt;
| Windows 95 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 98/98SE || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows ME || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows NT 3.51 || Miniport driver only&lt;br /&gt;
|-&lt;br /&gt;
| Windows NT 4.0 || Miniport driver, later full Resource Manager-based driver{{ref|c}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows 2000 || Full drivers{{ref|d}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows XP || Full drivers{{ref|e}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows Vista || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 7 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 8 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 8.1 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 10 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 11 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Xbox (original) || Modified full drivers (&amp;quot;minix&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| macOS || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Android || Full drivers, also &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Linux || Initially &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; or open-source project only, later full drivers.&lt;br /&gt;
|-&lt;br /&gt;
| BeOS, Haiku, EOS, AsusWRT (linux-based) || These OSes support the &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; driver only&lt;br /&gt;
|-&lt;br /&gt;
| OS/2 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| PlayStation 3 (CellOS) || Custom&lt;br /&gt;
|-&lt;br /&gt;
| Horizon OS (Switch) || Full drivers (with custom API)&lt;br /&gt;
|-&lt;br /&gt;
| Horizon OS (Switch 2) || Full drivers (with custom API)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Known driver versions ==&lt;br /&gt;
&lt;br /&gt;
Each component of Nvidia&#039;s drivers has an official description (it used to be used in their control panel extension to list each driver file); for example &amp;quot;Resource Manager&amp;quot; or &amp;quot;OpenGL ICD&amp;quot;. Initially, these were simply described as being for &amp;quot;Nvidia&amp;quot; (e.g. &amp;quot;NVidia Resource Manager, Version 2.00 Beta&amp;quot;), later on the file descriptions were changed to be named after the specific GPU supported, e.g. &amp;quot;RIVA 128 Direct Draw/Direct 3D Driver, Version x.xx&amp;quot; or &amp;quot;Riva TNT Display Driver, Version x.xx&amp;quot;, however later when Nvidia refactored their GPU drivers to support multiple models of graphics hardware, they changed the description to simply read &amp;quot;NVIDIA Compatible&amp;quot;. This is still the case as of April 2025. &lt;br /&gt;
&lt;br /&gt;
There were certainly many other versions, if you have any other version, please contact me: you can check by checking the file properties of any file in the driver set.&lt;br /&gt;
&lt;br /&gt;
=== NV1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Known driver versions&lt;br /&gt;
|-&lt;br /&gt;
! Date of driver files !! Version !! Known platforms&lt;br /&gt;
|-&lt;br /&gt;
| 25 October 1995 || 1.20 || MS-DOS, Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 2 February 1996 || 2.00 Beta || Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 11 February 1996 || FCS 2.00 || MS-DOS (CEK 1.22); Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 23 September 1996; some files rebuilt 19 March 1997 || 2.30 || Windows 95 &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== NV2 / NV3 QTM ===&lt;br /&gt;
There are no known drivers for [[NV2]] or [[NV3 (QTM)]]. Traditional drivers (although software certainly existed) for the former are not likely as it was intended to be used as part of a game, but driver development may have started for the latter.&lt;br /&gt;
&lt;br /&gt;
=== NV3 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Certain OEM-specific drivers may be missing; they are usually almost identical to reference driver versions, but may have certain minor feature differences. Few of these have notable changes (e.g. Diamond adding their InControl Tools, or the STB TwinView two/four head cards with custom &amp;quot;mp&amp;quot; functions to switch between different chips on the board - it is not clear if STB or Nvidia made these modifications). Additionally, the driver versions included in Windows 98 beta releases are not listed (they take the version of the Windows SDK they were compiled with, for instance &amp;lt;code&amp;gt;4.10.1635&amp;lt;/code&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
Early drivers for Windows 9x, the drivers included with Windows 98 pre-release builds and almost all NT 4.0 and 2000 drivers for NV3-based architectures have COFF or VxD symbols (depending on platform) for the resource manager and display driver, although not for the Direct3D or OpenGL drivers. Nvidia seems to have had issues turning off symbol generation, as at some point they wrote a header file that redefined every function name as &amp;lt;code&amp;gt;__nv_rmsym_\&amp;lt;number\&amp;gt;&amp;lt;/code&amp;gt; as some strange way of attempting to obfuscate their function names.&lt;br /&gt;
&lt;br /&gt;
Some of the &amp;quot;lost&amp;quot; source is partially represented in the 75% complete STB VSS dump. The oldest version attested to a version number seems to have been &amp;quot;Version 0.60 BETA2&amp;quot; (June 6, 1997), although parts of versions from May 1997 are also present.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Known driver versions&lt;br /&gt;
|-&lt;br /&gt;
! Date of driver files !! Version !! Known platforms !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| December 1996 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1997 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| May 1997 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| June 1997 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| July 1997 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 17 July 1997 || Unnumbered pre-release || Windows NT 4.0 || Accidentally released by STB Systems. Has NV1 support in display driver (even though NT was never officially supported on NV1), and only supports revision A of NV3.&lt;br /&gt;
|-&lt;br /&gt;
| 8 August 1997 || 0.73b || Windows NT 3.51, 4.0 || Pre-release&lt;br /&gt;
|-&lt;br /&gt;
| 15 August 1997 || 0.75 || Windows NT 4.0 || Possible launch drivers&lt;br /&gt;
|- &lt;br /&gt;
| 27 August 1997 || 0.75 || Windows NT 3.51 || No resource manager&lt;br /&gt;
|- &lt;br /&gt;
| August 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 1 September 1997 || 0.77 || Windows 9x || Possible launch drivers&lt;br /&gt;
|-&lt;br /&gt;
| 23 September 1997 (STB Systems) || 1.16 || Windows 9x || D3D drivers compiled with debug messages left on. PDB file names refer to STB products proving STB Systems had driver source code access (they were the first to license the Riva 128) and most likely from Nvidia&#039;s unstable branch. STB was later bought by 3dfx in 1998, so they may have been able to obtain access to Nvidia&#039;s driver sources?&lt;br /&gt;
|-&lt;br /&gt;
| 29 September 1997 || 1.04 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1997 || 1.05 || Windows 3.1 ||&lt;br /&gt;
|-&lt;br /&gt;
| 22 October 1997 || 1.06 || Windows 9x || &lt;br /&gt;
|-&lt;br /&gt;
| October 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 2 November 1997 || 1.07c || Windows NT 4.0 || &lt;br /&gt;
|-&lt;br /&gt;
| 14 November 1997 || 1.21 || Windows 9x || OpenGL Alpha 1 release (&amp;lt;code&amp;gt;nv3quake.zip&amp;lt;/code&amp;gt;). Also the Alpha 2 release with an updated OpenGL ICD from 2 December 1997&lt;br /&gt;
|-&lt;br /&gt;
| November 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 10 December 1997 || 1.11 || Windows 9x || Yes, later than 1.21. The 1.21 was from a development branch for OpenGL support.&lt;br /&gt;
|-&lt;br /&gt;
| 15 January 1998 || 1.27 || Windows 9x || STB source drop (available; Resource Manager + Win9x GDI + D3D + OpenGL + NT4 GDI + NT4 MCD)&lt;br /&gt;
|-&lt;br /&gt;
| 31 January 1998 || 1.28 || Windows 9x || OpenGL Beta 1 release. &lt;br /&gt;
|- &lt;br /&gt;
| 1 February 1998 || 1.29 || Windows NT 4.0 || First driver with NV4-related functions in display driver (very basic support, simply initialisation and shutdown, to start with)&lt;br /&gt;
|-&lt;br /&gt;
| 26 February 1998 || 1.36 || Windows 9x || STB source drop (available; only Resource Manager and Win9x GDI drivers updated)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.41 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.42 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.43 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.45 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46a || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46b || Windows 9x || STB source drop (mostly lost, partial Resman)&lt;br /&gt;
|-&lt;br /&gt;
| 9 April 1998 || 1.44 || Windows 9x ||&lt;br /&gt;
|-&lt;br /&gt;
| 17 April 1998 || 1.50 || Windows 9x || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 22 April 1998 || 1.50b || Windows 9x, NT 4.0 || Source code available (updated OpenGL + Win9x GDI)&lt;br /&gt;
|-&lt;br /&gt;
| 25 April 1998 || 1.50c || Windows 9x, NT 4.0 || Source code available (updated OpenGL + Win9x GDI)&lt;br /&gt;
|-&lt;br /&gt;
| 29 April 1998 || 1.50e || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 5 May 1998 || 1.50h || Windows 9x, Windows NT 4.0 || Updated Win9x GDI + Direct3D from 1.50e - nvidia readme: &amp;quot;remove int 3&#039;s UGGHHHHH(the person that did this has been fired)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 5 May 1998 || 1.50k || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 4 August 1998 || 1.62 || Windows NT 4.0 || &lt;br /&gt;
|-&lt;br /&gt;
| 14 July 1998 || 1.57 || Windows 9x, Windows NT 4.0 || Early multimonitor support for STB MVP&lt;br /&gt;
|-&lt;br /&gt;
| 23 July 1998 || 1.59 || Windows 9x, Windows NT 4.0 || Early multimonitor support for STB MVP&lt;br /&gt;
|-&lt;br /&gt;
| 5 August 1998 || 1.72a || Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 23 August 1998 || 1.74 || Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D) &lt;br /&gt;
|-&lt;br /&gt;
| 27 August 1998 || 1.27 || Windows 3.1 || Final Win3.1 drivers; probably different branch; some files call themselves &amp;quot;RIVA TNT Resource Manager, Version 0.11&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| 28 August 1998 || 1.75 || Windows 9x || nVIDIA SDK 0.81 &lt;br /&gt;
|- &lt;br /&gt;
| 14 September 1998 || 2.77 || Windows 9x, Windows NT 4.0 || NT: Display driver output name changed from &amp;lt;code&amp;gt;nv_disp&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;nv3_disp&amp;lt;/code&amp;gt; (probably due to NV4 driver development), also source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + VBIOS) &lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1998 || 2.79 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + NV3Tweak) &lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1998 || 2.80 || Windows 9x, Windows NT 4.0 || nVIDIA SDK 0.83&lt;br /&gt;
|-&lt;br /&gt;
| 22 October 1998 || 2.83 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + NV3Tweak) &lt;br /&gt;
|-&lt;br /&gt;
| 9 November 1998 || 3.03 || Windows 9x ||&lt;br /&gt;
|- &lt;br /&gt;
| 10 December 1998 || 1.30, 2.79 (Diamond branch) || Windows 9x || Most likely a branch maintained by Diamond Multimedia for their &amp;quot;Viper&amp;quot; cards, released 21 January 1999 &lt;br /&gt;
|-&lt;br /&gt;
| 14 December 1998 (source) / 7 January 1999 (binary) || 3.12 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + VBIOS) &lt;br /&gt;
|- &lt;br /&gt;
| 1 February 1999 || 3.22 || Windows 9x ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 February 1999 || 3.23 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 9 February 1999 || 3.25 || Windows 9x || &lt;br /&gt;
|-&lt;br /&gt;
| 18 February 1999 || 3.27 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3 March 1999 || Unknown version || OS/2 (Warp 3 Fixpak35+ &amp;amp; 4 Fixpak5+) || Very sloppily done. Batch file (well, Rexx script) setup. Unclear what GPU is even supported: it was posted on Nvidia&#039;s RIVA 128 download pages, but the readme file calls it &amp;quot;GRADD Driver for Nvidia NV4&amp;quot; (not even using a product name), despite being last modified on 25 February 1999.&lt;br /&gt;
|-&lt;br /&gt;
| 21 March 1999 || 3.37 || Windows 9x, NT 4.0, 2000 (beta) || Final driver for Windows 9x, only Win2000 driver with OpenGL support. Even though the driver was compiled against Windows 2000 build 1996, it works fine on the final Windows 2000, including Service Pack 4&lt;br /&gt;
|- &lt;br /&gt;
| 11 May 1999 || 3.41b || Windows NT 4.0 || Final NT 4.0 driver&lt;br /&gt;
|- &lt;br /&gt;
| 28 October 1999 || 3.43 || Windows 2000 || 2D-only driver bundled with Windows 2000. Still has OpenGL hooks; untested&lt;br /&gt;
|- &lt;br /&gt;
| 31 July 2001 || 3.43 || Windows XP || 2D-only driver bundled with Windows XP. Still has OpenGL hooks; tested, does not work on default, crashes late in OpenGL initialisation process (may be patchable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== NV4 and later shared drivers ===&lt;br /&gt;
&lt;br /&gt;
0.32 first released version, 0.12 first sent to STB (Source archive is dated July 14, 1998)&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
:{{note|a|}}These issues in the relationship eventually led to the infamous &amp;quot;Fuck you, Nvidia!&amp;quot; comment and middle finger by Linus Torvalds at a 2012 event.&lt;br /&gt;
:{{note|b|}}They are officially marked as being for 3.11, but unless they depend on the 32-bit File Access feature backported from Windows 95, or any other feature that was exclusively added in WfW 3.11, there should be no reason why they cannot work on any other version of Windows 3.1, such as the original 1992 release, standalone Windows 3.11, or Windows for Workgroups 3.1: however, the drivers have not been tested with these older versions, so the compatibility, or lack thereof, is unknown.&lt;br /&gt;
:{{note|c|}}Initially 2D only, then OpenGL only: no D3D.&lt;br /&gt;
:{{note|d|}}Initially OpenGL only, later Direct3D support was added. Beta only for NV3.&lt;br /&gt;
:{{note|e|}}2D only officially for NV3, although hooks to load the OpenGL drivers still exist; they do not load using the Windows 2000 drivers, but they can likely be patched to work.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=Weitek&amp;diff=1762</id>
		<title>Weitek</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=Weitek&amp;diff=1762"/>
		<updated>2026-09-12T16:06:44Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Weitek Corporation&#039;&#039;&#039; was an American manufacturer of math coprocessors and, later, (S)VGA-compatible display drivers, founded in 1981. [[Nvidia]] licensed the company&#039;s SVGA core and incorporated it into the [[NV3|Riva 128]], where it sat, effectively unmodified, until at least [[NV25|GeForce 4]]. The core was widely praised for its extremely high DOS performance, with Doom in Mode X running at over 70 fps (twice its actual frame-limited speed).&lt;br /&gt;
&lt;br /&gt;
The core licensed to Nvidia was never actually used in any Weitek cards (the last GPUs released by Weitek were the Power 9000 and 9100, based on the W5186 and W5286 VGA cores - themselves licensed from Unisys - respectively); while their 2D accelerated performance was quite good, these cards could not be easily extended for better VGA designs (Weitek lacked the capital to invest in a new 3D design), so they hired a team to design a new VGA core. According to the designer of the core&amp;lt;ref&amp;gt;https://news.ycombinator.com/item?id=43198379 (&amp;quot;stery956&amp;quot;, &amp;lt;i&amp;gt;Nvidia emulation journey, part 1: RIVA 128/NV3 architecture history and overview&amp;lt;/i&amp;gt;, 1 March 2025)&amp;lt;/ref&amp;gt;, the design was successfully completed but due to the aforementioned financial problems, the VGA core could not be used in any new cards. Weitek&#039;s last profitable quarter, prior to selling to Rockwell on the brink of bankruptcy, was when they licensed their VGA core to Nvidia. Based on the [[STB Systems Leak]], the code was licensed to NVIDIA around May of 1996.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=NV5&amp;diff=1761</id>
		<title>NV5</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NV5&amp;diff=1761"/>
		<updated>2026-09-12T16:04:51Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Infobox GPU&lt;br /&gt;
|title=&#039;&#039;&#039;NV5&#039;&#039;&#039;&lt;br /&gt;
|architecture=NV5&lt;br /&gt;
|branding=RIVA TNT2 (early name: RIVA TNT+), later &amp;quot;NVIDIA TNT2&amp;quot;&lt;br /&gt;
|announcement_date=Late 1998&lt;br /&gt;
|release_date=March 1999&lt;br /&gt;
|end_of_production=Late 2002&lt;br /&gt;
|pci_vendor_id=&amp;lt;code&amp;gt;10de&amp;lt;/code&amp;gt; (Nvidia)&lt;br /&gt;
|pci_device_id=many, but first was &amp;lt;code&amp;gt;0028&amp;lt;/code&amp;gt;&lt;br /&gt;
|buses_supported=PCI, AGP 4X &lt;br /&gt;
|directx_version=6.0&lt;br /&gt;
|opengl_version=1.2 (hardware) 1.5 (software)&lt;br /&gt;
|nvclk=125MHz (TNT2); 143MHz (Pro); 150MHz (Ultra) (configurable by OEM)&lt;br /&gt;
|mclk=150MHz (TNT2); 166MHz (Pro); 183MHz (Ultra) (configurable by OEM)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NV5&#039;&#039;&#039; is an improved version of [[NV4]]. Initially conceived as a mere die shrink and clockspeed increase of NV4 in response to the delays and clockspeed downgrades that beleaguered the NV4 project, as development continued more features were added to the chip; additional features include support for 32 MB of VRAM and AGP 4X. NV5 survived for several years as an increasingly low-end option and was the first NVIDIA GPU to have multiple SKUs, with the straps, [[VBIOS]], installed VRAM and value of &amp;lt;code&amp;gt;NV_PMC_BOOT_0&amp;lt;/code&amp;gt; being used to configure the branding and configuration of the chip. Initially branded as RIVA TNT2 (after RIVA TNT+ was considered), the &amp;quot;RIVA&amp;quot; was dropped when NVIDIA repositioned it as a low-end option. Production most likely ended in 2002. Typically, a TNT2 card was packaged with either 16 or 32 MB of VRAM.&lt;br /&gt;
&lt;br /&gt;
Production of the high-end SKUs likely ended around the time [[NV10]] was released in late 1999, but the Vanta was produced until at least 2001 and TNT2 M64 chips were manufactured at least as late as September 2002. &lt;br /&gt;
&lt;br /&gt;
=== SKUs ===&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; graphics cards vendors could and often did configure the card outside of the stated specifications. For example, there was a &#039;&#039;Falcon Northwest Special Edition Maxi Gamer Xentor 32 SE&#039;&#039; produced by Falcon Northwest and Gullemot which had specialised high-speed (for the time) VRAM chips and only used very highly binned GPUs; the core clock on these cards was 195MHz and the VRAM clock 235MHz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA LT&#039;&#039;&#039;: Extremely low-end variation of TNT2 M64. Identical to VANTA-16, but VRAM is limited to a mere 8 megabytes and AGP 4X support is disabled - only AGP 2X can be used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA-16&#039;&#039;&#039;: Very low-end variation of TNT2 M64, with a core clock of 100MHz and a memory clock of 125Mhz.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 M64:&#039;&#039;&#039; Low-end variation of NV5 (known as &#039;&#039;&#039;NV6&#039;&#039;&#039;) with a 64-bit bus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2:&#039;&#039;&#039; Mainstream option with a core clock of 125MHz and a memory clock of 150Mhz, released in 1999.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Pro:&#039;&#039;&#039; High-end option with a core clock of 143MHz and a memory clock of 166Mhz,  released on October 22, 1999. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Ultra:&#039;&#039;&#039; Enthusiast option, with a core clock of 150MHz and a memory clock of 183Mhz,  released in March of 1999.&lt;br /&gt;
&lt;br /&gt;
{{GPUs}}&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=NV4&amp;diff=1760</id>
		<title>NV4</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NV4&amp;diff=1760"/>
		<updated>2026-09-12T16:04:42Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Infobox GPU&lt;br /&gt;
|title=&#039;&#039;&#039;NV4&#039;&#039;&#039;&lt;br /&gt;
|architecture=NV4&lt;br /&gt;
|branding=RIVA TNT (early name: Riva4)&lt;br /&gt;
|announcement_date=23 March 1998&lt;br /&gt;
|release_date=31 August 1998&lt;br /&gt;
|end_of_production=1999(?)&lt;br /&gt;
|pci_vendor_id=&amp;lt;code&amp;gt;10de&amp;lt;/code&amp;gt; (Nvidia)&lt;br /&gt;
|pci_device_id=&amp;lt;code&amp;gt;0020&amp;lt;/code&amp;gt; &lt;br /&gt;
|buses_supported=PCI, AGP 2X (will run at 1X speed if 2X not supported by chipset)&lt;br /&gt;
|directx_version=6.0&lt;br /&gt;
|opengl_version=1.2 (hardware) 1.5 (software)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{GPUs}}&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=NV5&amp;diff=1759</id>
		<title>NV5</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NV5&amp;diff=1759"/>
		<updated>2026-09-12T16:04:16Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Infobox GPU&lt;br /&gt;
|title=&#039;&#039;&#039;NV5&#039;&#039;&#039;&lt;br /&gt;
|architecture=NV5&lt;br /&gt;
|branding=RIVA TNT2 (early name: RIVA TNT+), later &amp;quot;NVIDIA TNT2&amp;quot;&lt;br /&gt;
|announcement_date=Late 1998&lt;br /&gt;
|release_date=March 1999&lt;br /&gt;
|end_of_production=Late 2002&lt;br /&gt;
|pci_vendor_id=&amp;lt;code&amp;gt;10de&amp;lt;/code&amp;gt; (Nvidia)&lt;br /&gt;
|pci_device_id=many, but first was &amp;lt;code&amp;gt;0028&amp;lt;/code&amp;gt;&lt;br /&gt;
|buses_supported=PCI, AGP 4X &lt;br /&gt;
|directx_version=6.0&lt;br /&gt;
|opengl_version=1.2 (hardware) 1.5 (software)&lt;br /&gt;
|nvclk=125MHz (TNT2); 143MHz (Pro); 150MHz (Ultra) (configurable by OEM)&lt;br /&gt;
|mclk=150MHz (TNT2); 166MHz (Pro); 183MHz (Ultra) (configurable by OEM)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NV5&#039;&#039;&#039; is an improved version of [[NV4]]. Initially conceived as a mere die shrink and clockspeed increase of NV4 in response to the delays and clockspeed downgrades that beleaguered the NV4 project, as development continued more features were added to the chip; additional features include support for 32 MB of VRAM and AGP 4X. NV5 survived for several years as an increasingly low-end option and was the first NVIDIA GPU to have multiple SKUs, with the straps, [[VBIOS]], installed VRAM and value of &amp;lt;code&amp;gt;NV_PMC_BOOT_0&amp;lt;/code&amp;gt; being used to configure the branding and configuration of the chip. Initially branded as RIVA TNT2 (after RIVA TNT+ was considered), the &amp;quot;RIVA&amp;quot; was dropped when NVIDIA repositioned it as a low-end option. Production most likely ended in 2002. Typically, a TNT2 card was packaged with either 16 or 32 MB of VRAM.&lt;br /&gt;
&lt;br /&gt;
Production of the high-end SKUs likely ended around the time [[NV10]] was released in late 1999, but the Vanta was produced until at least 2001 and TNT2 M64 chips were manufactured at least as late as September 2002. &lt;br /&gt;
&lt;br /&gt;
=== SKUs ===&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; graphics cards vendors could and often did configure the card outside of the stated specifications. For example, there was a &#039;&#039;Falcon Northwest Special Edition Maxi Gamer Xentor 32 SE&#039;&#039; produced by Falcon Northwest and Gullemot which had specialised high-speed (for the time) VRAM chips and only used very highly binned GPUs; the core clock on these cards was 195MHz and the VRAM clock 235MHz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA LT&#039;&#039;&#039;: Extremely low-end variation of TNT2 M64. Identical to VANTA-16, but VRAM is limited to a mere 8 megabytes and AGP 4X support is disabled - only AGP 2X can be used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA-16&#039;&#039;&#039;: Very low-end variation of TNT2 M64, with a core clock of 100MHz and a memory clock of 125Mhz.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 M64:&#039;&#039;&#039; Low-end variation of NV5 (known as &#039;&#039;&#039;NV6&#039;&#039;&#039;) with a 64-bit bus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2:&#039;&#039;&#039; Mainstream option with a core clock of 125MHz and a memory clock of 150Mhz, released in 1999.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Pro:&#039;&#039;&#039; High-end option with a core clock of 143MHz and a memory clock of 166Mhz,  released on October 22, 1999. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Ultra:&#039;&#039;&#039; Enthusiast option, with a core clock of 150MHz and a memory clock of 183Mhz,  released in March of 1999.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=NV5&amp;diff=1758</id>
		<title>NV5</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NV5&amp;diff=1758"/>
		<updated>2026-09-12T16:04:00Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Infobox GPU&lt;br /&gt;
|title=&#039;&#039;&#039;NV5&#039;&#039;&#039;&lt;br /&gt;
|architecture=NV5&lt;br /&gt;
|branding=RIVA TNT2 (early name: RIVA TNT+), later &amp;quot;NVIDIA TNT2&amp;quot;&lt;br /&gt;
|announcement_date=Late 1998&lt;br /&gt;
|release_date=March 1999&lt;br /&gt;
|end_of_production=Late 2002&lt;br /&gt;
|pci_vendor_id=&amp;lt;code&amp;gt;10de&amp;lt;/code&amp;gt; (Nvidia)&lt;br /&gt;
|pci_device_id=many, but first was &amp;lt;code&amp;gt;0028&amp;lt;/code&amp;gt;&lt;br /&gt;
|buses_supported=PCI, AGP 4X &lt;br /&gt;
|directx_version=6.0&lt;br /&gt;
|opengl_version=1.2 (hardware) 1.5 (software)&lt;br /&gt;
|nvclk=125MHz (TNT2); 143MHz (Pro); 150MHz (Ultra) (configurable by OEM)&lt;br /&gt;
|mclk=150MHz (TNT2); 166MHz (Pro); 183MHz (Ultra) (configurable by OEM)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NV5&#039;&#039;&#039; is an improved version of [[NV4]]. Initially conceived as a mere die shrink and clockspeed increase of NV4 in response to the delays and clockspeed downgrades that beleaguered the NV4 project, as development continued more features were added to the chip; additional features include support for 32 MB VRAM and AGP 4X. NV5 survived for several years as an increasingly low-end option and was the first NVIDIA GPU to have multiple SKUs, with the straps, [[VBIOS]], installed VRAM and value of &amp;lt;code&amp;gt;NV_PMC_BOOT_0&amp;lt;/code&amp;gt; being used to configure the branding and configuration of the chip. Initially branded as RIVA TNT2 (after RIVA TNT+ was considered), the &amp;quot;RIVA&amp;quot; was dropped when NVIDIA repositioned it as a low-end option. Production most likely ended in 2002. Typically, a TNT2 card was packaged with either 16 or 32 MB of VRAM.&lt;br /&gt;
&lt;br /&gt;
Production of the high-end SKUs likely ended around the time [[NV10]] was released in late 1999, but the Vanta was produced until at least 2001 and TNT2 M64 chips were manufactured at least as late as September 2002. &lt;br /&gt;
&lt;br /&gt;
=== SKUs ===&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; graphics cards vendors could and often did configure the card outside of the stated specifications. For example, there was a &#039;&#039;Falcon Northwest Special Edition Maxi Gamer Xentor 32 SE&#039;&#039; produced by Falcon Northwest and Gullemot which had specialised high-speed (for the time) VRAM chips and only used very highly binned GPUs; the core clock on these cards was 195MHz and the VRAM clock 235MHz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA LT&#039;&#039;&#039;: Extremely low-end variation of TNT2 M64. Identical to VANTA-16, but VRAM is limited to a mere 8 megabytes and AGP 4X support is disabled - only AGP 2X can be used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA-16&#039;&#039;&#039;: Very low-end variation of TNT2 M64, with a core clock of 100MHz and a memory clock of 125Mhz.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 M64:&#039;&#039;&#039; Low-end variation of NV5 (known as &#039;&#039;&#039;NV6&#039;&#039;&#039;) with a 64-bit bus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2:&#039;&#039;&#039; Mainstream option with a core clock of 125MHz and a memory clock of 150Mhz, released in 1999.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Pro:&#039;&#039;&#039; High-end option with a core clock of 143MHz and a memory clock of 166Mhz,  released on October 22, 1999. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Ultra:&#039;&#039;&#039; Enthusiast option, with a core clock of 150MHz and a memory clock of 183Mhz,  released in March of 1999.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=NV5&amp;diff=1757</id>
		<title>NV5</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NV5&amp;diff=1757"/>
		<updated>2026-09-12T16:01:55Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Infobox GPU&lt;br /&gt;
|title=&#039;&#039;&#039;NV5&#039;&#039;&#039;&lt;br /&gt;
|architecture=NV5&lt;br /&gt;
|branding=RIVA TNT2 (early name: RIVA TNT+), later &amp;quot;NVIDIA TNT2&amp;quot;&lt;br /&gt;
|announcement_date=Late 1998&lt;br /&gt;
|release_date=March 1999&lt;br /&gt;
|end_of_production=Late 2002&lt;br /&gt;
|pci_vendor_id=&amp;lt;code&amp;gt;10de&amp;lt;/code&amp;gt; (Nvidia)&lt;br /&gt;
|pci_device_id=many, but first was &amp;lt;code&amp;gt;0028&amp;lt;/code&amp;gt;&lt;br /&gt;
|buses_supported=PCI, AGP 4X &lt;br /&gt;
|directx_version=6.0&lt;br /&gt;
|opengl_version=1.2 (hardware) 1.5 (software)&lt;br /&gt;
|nvclk=125MHz (TNT2); 143MHz (Pro); 150MHz (Ultra) (configurable by OEM)&lt;br /&gt;
|mclk=150MHz (TNT2); 166MHz (Pro); 183MHz (Ultra) (configurable by OEM)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NV5&#039;&#039;&#039; is an improved version of [[NV4]] which was initially intended as a die shrink and clockspeed increase, but as development continued more features were added; additional features include support for 32 MB VRAM and AGP 4X. NV5 survived for several years as an increasingly low-end option and was the first NVIDIA GPU to have multiple SKUs, with the straps, [[VBIOS]], installed VRAM and value of &amp;lt;code&amp;gt;NV_PMC_BOOT_0&amp;lt;/code&amp;gt; being used to configure the branding and configuration of the chip. Initially branded as RIVA TNT2 (after RIVA TNT+ was considered), the &amp;quot;RIVA&amp;quot; was dropped when NVIDIA repositioned it as a low-end option. Production most likely ended in 2002. Typically, a TNT2 card was packaged with either 16 or 32 MB of VRAM.&lt;br /&gt;
&lt;br /&gt;
Production of the high-end SKUs likely ended around the time [[NV10]] was released in late 1999, but the Vanta was produced until at least 2001 and TNT2 M64 chips were manufactured at least as late as September 2002. &lt;br /&gt;
&lt;br /&gt;
=== SKUs ===&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; graphics cards vendors could and often did configure the card outside of the stated specifications. For example, there was a &#039;&#039;Falcon Northwest Special Edition Maxi Gamer Xentor 32 SE&#039;&#039; produced by Falcon Northwest and Gullemot which had specialised high-speed (for the time) VRAM chips and only used very highly binned GPUs; the core clock on these cards was 195MHz and the VRAM clock 235MHz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA LT&#039;&#039;&#039;: Extremely low-end variation of TNT2 M64. Identical to VANTA-16, but VRAM is limited to a mere 8 megabytes and AGP 4X support is disabled - only AGP 2X can be used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA-16&#039;&#039;&#039;: Very low-end variation of TNT2 M64, with a core clock of 100MHz and a memory clock of 125Mhz.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 M64:&#039;&#039;&#039; Low-end variation of NV5 (known as &#039;&#039;&#039;NV6&#039;&#039;&#039;) with a 64-bit bus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2:&#039;&#039;&#039; Mainstream option with a core clock of 125MHz and a memory clock of 150Mhz, released in 1999.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Pro:&#039;&#039;&#039; High-end option with a core clock of 143MHz and a memory clock of 166Mhz,  released on October 22, 1999. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Ultra:&#039;&#039;&#039; Enthusiast option, with a core clock of 150MHz and a memory clock of 183Mhz,  released in March of 1999.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=NV5&amp;diff=1756</id>
		<title>NV5</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NV5&amp;diff=1756"/>
		<updated>2026-09-12T16:01:39Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Infobox GPU&lt;br /&gt;
|title=&#039;&#039;&#039;NV5&#039;&#039;&#039;&lt;br /&gt;
|architecture=NV5&lt;br /&gt;
|branding=RIVA TNT2 (early name: RIVA TNT+), later &amp;quot;NVIDIA TNT2&amp;quot;&lt;br /&gt;
|announcement_date=Late 1998&lt;br /&gt;
|release_date=March 1999&lt;br /&gt;
|end_of_production=Late 2002&lt;br /&gt;
|pci_vendor_id=&amp;lt;code&amp;gt;10de&amp;lt;/code&amp;gt; (Nvidia)&lt;br /&gt;
|pci_device_id=many, but first was &amp;lt;code&amp;gt;0028&amp;lt;/code&amp;gt;&lt;br /&gt;
|buses_supported=PCI, AGP 4X &lt;br /&gt;
|directx_version=6.0&lt;br /&gt;
|opengl_version=1.2 (hardware) 1.5 (software)&lt;br /&gt;
|nvclk=125MHz (TNT2); 143MHz (Pro); 150MHz (Ultra) (configurable by OEM)&lt;br /&gt;
|mclk=150MHz (TNT2); 166MHz (Pro); 183MHz (Ultra) (configurable by OEM)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NV5&#039;&#039;&#039; is an improved version of [[NV4]] which was initially intended as a die shrink and clockspeed increase, but as development continued more features were added; additional features include support for 32 MB VRAM and AGP 4X. NV5 survived for several years as an increasingly low-end option and was the first NVIDIA GPU to have multiple SKUs, with the straps, installed VRAM and value of &amp;lt;code&amp;gt;NV_PMC_BOOT_0&amp;lt;/code&amp;gt; being used to configure the branding and configuration of the chip. Initially branded as RIVA TNT2 (after RIVA TNT+ was considered), the &amp;quot;RIVA&amp;quot; was dropped when NVIDIA repositioned it as a low-end option. Production most likely ended in 2002. Typically, a TNT2 card was packaged with either 16 or 32 MB of VRAM.&lt;br /&gt;
&lt;br /&gt;
Production of the high-end SKUs likely ended around the time [[NV10]] was released in late 1999, but the Vanta was produced until at least 2001 and TNT2 M64 chips were manufactured at least as late as September 2002. &lt;br /&gt;
&lt;br /&gt;
=== SKUs ===&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; graphics cards vendors could and often did configure the card outside of the stated specifications. For example, there was a &#039;&#039;Falcon Northwest Special Edition Maxi Gamer Xentor 32 SE&#039;&#039; produced by Falcon Northwest and Gullemot which had specialised high-speed (for the time) VRAM chips and only used very highly binned GPUs; the core clock on these cards was 195MHz and the VRAM clock 235MHz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA LT&#039;&#039;&#039;: Extremely low-end variation of TNT2 M64. Identical to VANTA-16, but VRAM is limited to a mere 8 megabytes and AGP 4X support is disabled - only AGP 2X can be used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA-16&#039;&#039;&#039;: Very low-end variation of TNT2 M64, with a core clock of 100MHz and a memory clock of 125Mhz.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 M64:&#039;&#039;&#039; Low-end variation of NV5 (known as &#039;&#039;&#039;NV6&#039;&#039;&#039;) with a 64-bit bus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2:&#039;&#039;&#039; Mainstream option with a core clock of 125MHz and a memory clock of 150Mhz, released in 1999.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Pro:&#039;&#039;&#039; High-end option with a core clock of 143MHz and a memory clock of 166Mhz,  released on October 22, 1999. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Ultra:&#039;&#039;&#039; Enthusiast option, with a core clock of 150MHz and a memory clock of 183Mhz,  released in March of 1999.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=NV5&amp;diff=1755</id>
		<title>NV5</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NV5&amp;diff=1755"/>
		<updated>2026-09-12T16:01:23Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Infobox GPU&lt;br /&gt;
|title=&#039;&#039;&#039;NV5&#039;&#039;&#039;&lt;br /&gt;
|architecture=NV5&lt;br /&gt;
|branding=RIVA TNT2 (early name: RIVA TNT+), later &amp;quot;NVIDIA TNT2&amp;quot;&lt;br /&gt;
|announcement_date=Late 1998&lt;br /&gt;
|release_date=March 1999&lt;br /&gt;
|end_of_production=Late 2002&lt;br /&gt;
|pci_vendor_id=&amp;lt;code&amp;gt;10de&amp;lt;/code&amp;gt; (Nvidia)&lt;br /&gt;
|pci_device_id=many, but first was &amp;lt;code&amp;gt;0028&amp;lt;/code&amp;gt;&lt;br /&gt;
|buses_supported=PCI, AGP 4X &lt;br /&gt;
|directx_version=6.0&lt;br /&gt;
|opengl_version=1.2 (hardware) 1.5 (software)&lt;br /&gt;
|nvclk=125MHz (TNT2); 143MHz (Pro); 150MHz (Ultra) (configurable by OEM)&lt;br /&gt;
|mclk=150MHz (TNT2); 166MHz (Pro); 183MHz (Ultra) (configurable by OEM)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NV5&#039;&#039;&#039; is an improved version of [[NV4]] which was initially intended as a die shrink and clockspeed increase, but as development continued more features were added; additional features include support for 32 MB VRAM and AGP 4X. NV5 survived for several years as an increasingly low-end option and was the first NVIDIA GPU to have multiple SKUs, with the straps, installed VRAM and value of &amp;lt;code&amp;gt;NV_PMC_BOOT_0&amp;lt;/code&amp;gt; being used to configure the branding and option. Initially branded as RIVA TNT2 (after RIVA TNT+ was considered), the &amp;quot;RIVA&amp;quot; was dropped when NVIDIA repositioned it as a low-end option. Production most likely ended in 2002. Typically, a TNT2 card was packaged with either 16 or 32 MB of VRAM.&lt;br /&gt;
&lt;br /&gt;
Production of the high-end SKUs likely ended around the time [[NV10]] was released in late 1999, but the Vanta was produced until at least 2001 and TNT2 M64 chips were manufactured at least as late as September 2002. &lt;br /&gt;
&lt;br /&gt;
=== SKUs ===&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; graphics cards vendors could and often did configure the card outside of the stated specifications. For example, there was a &#039;&#039;Falcon Northwest Special Edition Maxi Gamer Xentor 32 SE&#039;&#039; produced by Falcon Northwest and Gullemot which had specialised high-speed (for the time) VRAM chips and only used very highly binned GPUs; the core clock on these cards was 195MHz and the VRAM clock 235MHz&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA LT&#039;&#039;&#039;: Extremely low-end variation of TNT2 M64. Identical to VANTA-16, but VRAM is limited to a mere 8 megabytes and AGP 4X support is disabled - only AGP 2X can be used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA-16&#039;&#039;&#039;: Very low-end variation of TNT2 M64, with a core clock of 100MHz and a memory clock of 125Mhz.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 M64:&#039;&#039;&#039; Low-end variation of NV5 (known as &#039;&#039;&#039;NV6&#039;&#039;&#039;) with a 64-bit bus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2:&#039;&#039;&#039; Mainstream option with a core clock of 125MHz and a memory clock of 150Mhz, released in 1999.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Pro:&#039;&#039;&#039; High-end option with a core clock of 143MHz and a memory clock of 166Mhz,  released on October 22, 1999. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Ultra:&#039;&#039;&#039; Enthusiast option, with a core clock of 150MHz and a memory clock of 183Mhz,  released in March of 1999.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=NV5&amp;diff=1754</id>
		<title>NV5</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NV5&amp;diff=1754"/>
		<updated>2026-09-12T16:01:01Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Infobox GPU&lt;br /&gt;
|title=&#039;&#039;&#039;NV5&#039;&#039;&#039;&lt;br /&gt;
|architecture=NV5&lt;br /&gt;
|branding=RIVA TNT2 (early name: RIVA TNT+), later &amp;quot;NVIDIA TNT2&amp;quot;&lt;br /&gt;
|announcement_date=Late 1998&lt;br /&gt;
|release_date=March 1999&lt;br /&gt;
|end_of_production=Late 2002&lt;br /&gt;
|pci_vendor_id=&amp;lt;code&amp;gt;10de&amp;lt;/code&amp;gt; (Nvidia)&lt;br /&gt;
|pci_device_id=many, but first was &amp;lt;code&amp;gt;0028&amp;lt;/code&amp;gt;&lt;br /&gt;
|buses_supported=PCI, AGP 4X &lt;br /&gt;
|directx_version=6.0&lt;br /&gt;
|opengl_version=1.2 (hardware) 1.5 (software)&lt;br /&gt;
|nvclk=125MHz (TNT2); 143MHz (Pro); 150MHz (Ultra) (configurable by OEM)&lt;br /&gt;
|mclk=150MHz (TNT2); 166MHz (Pro); 183MHz (Ultra) (configurable by OEM)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NV5&#039;&#039;&#039; is an improved version of [[NV4]] which was initially intended as a die shrink and clockspeed increase, but as development continued more features were added; additional features include support for 32 MB VRAM and AGP 4X. NV5 survived for several years as an increasingly low-end option and was the first NVIDIA GPU to have multiple SKUs, with the straps, installed VRAM and value of &amp;lt;code&amp;gt;NV_PMC_BOOT_0&amp;lt;/code&amp;gt; being used to configure the branding and option. Initially branded as RIVA TNT2 (after RIVA TNT+ was considered), the &amp;quot;RIVA&amp;quot; was dropped when NVIDIA repositioned it as a low-end option. Production most likely ended in 2002. Typically, a TNT2 card was packaged with either 16 or 32 MB of VRAM.&lt;br /&gt;
&lt;br /&gt;
Production of the high-end SKUs likely ended around the time [[NV10]] was released in late 1999, but the Vanta was produced until at least 2001 and TNT2 M64 chips were manufactured at least as late as September 2002. &lt;br /&gt;
&lt;br /&gt;
=== SKUs ===&lt;br /&gt;
&#039;&#039;Note: graphics cards vendors could and often did configure the card outside of the stated specifications. For example, there was a &amp;quot;Falcon Northwest Special Edition Maxi Gamer Xentor 32 SE&amp;quot; produced by Falcon Northwest and Gullemot, which had specialised high-speed (for the time) VRAM chips and only used very highly binned GPUs; the core clock on these cards was 195MHz and the VRAM clock 235MHz&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA LT&#039;&#039;&#039;: Extremely low-end variation of TNT2 M64. Identical to VANTA-16, but VRAM is limited to a mere 8 megabytes and AGP 4X support is disabled - only AGP 2X can be used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA-16&#039;&#039;&#039;: Very low-end variation of TNT2 M64, with a core clock of 100MHz and a memory clock of 125Mhz.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 M64:&#039;&#039;&#039; Low-end variation of NV5 (known as &#039;&#039;&#039;NV6&#039;&#039;&#039;) with a 64-bit bus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2:&#039;&#039;&#039; Mainstream option with a core clock of 125MHz and a memory clock of 150Mhz, released in 1999.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Pro:&#039;&#039;&#039; High-end option with a core clock of 143MHz and a memory clock of 166Mhz,  released on October 22, 1999. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Ultra:&#039;&#039;&#039; Enthusiast option, with a core clock of 150MHz and a memory clock of 183Mhz,  released in March of 1999.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=NV5&amp;diff=1753</id>
		<title>NV5</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NV5&amp;diff=1753"/>
		<updated>2026-09-12T15:57:14Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Infobox GPU&lt;br /&gt;
|title=&#039;&#039;&#039;NV5&#039;&#039;&#039;&lt;br /&gt;
|architecture=NV5&lt;br /&gt;
|branding=RIVA TNT2 (early name: RIVA TNT+), later &amp;quot;NVIDIA TNT2&amp;quot;&lt;br /&gt;
|announcement_date=Late 1998&lt;br /&gt;
|release_date=March 1999&lt;br /&gt;
|end_of_production=Late 2002&lt;br /&gt;
|pci_vendor_id=&amp;lt;code&amp;gt;10de&amp;lt;/code&amp;gt; (Nvidia)&lt;br /&gt;
|pci_device_id=many, but first was &amp;lt;code&amp;gt;0028&amp;lt;/code&amp;gt;&lt;br /&gt;
|buses_supported=PCI, AGP 4X &lt;br /&gt;
|directx_version=6.0&lt;br /&gt;
|opengl_version=1.2 (hardware) 1.5 (software)&lt;br /&gt;
|nvclk=125MHz (TNT2); 143MHz (Pro); 150MHz (Ultra) (configurable by OEM)&lt;br /&gt;
|mclk=150MHz (TNT2); 166MHz (Pro); 183MHz (Ultra) (configurable by OEM)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NV5&#039;&#039;&#039; is an improved version of [[NV4]] which was initially intended as a die shrink and clockspeed increase, but as development continued more features were added; additional features include support for 32 MB VRAM and AGP 4X. NV5 survived for several years as an increasingly low-end option and was the first NVIDIA GPU to have multiple SKUs, with the straps, installed VRAM and value of &amp;lt;code&amp;gt;NV_PMC_BOOT_0&amp;lt;/code&amp;gt; being used to configure the branding and option. Initially branded as RIVA TNT2 (after RIVA TNT+ was considered), the &amp;quot;RIVA&amp;quot; was dropped when NVIDIA repositioned it as a low-end option. Production most likely ended in 2002. Typically, a TNT2 card was packaged with either 16 or 32 MB of VRAM.&lt;br /&gt;
&lt;br /&gt;
Production of the high-end SKUs likely ended around the time [[NV10]] was released in late 1999, but the Vanta was produced until at least 2001 and TNT2 M64 chips were manufactured at least as late as September 2002. &lt;br /&gt;
&lt;br /&gt;
=== SKUs ===&lt;br /&gt;
&#039;&#039;Note: graphics cards vendors could and often did configure the card outside of the stated specifications. For example, there was a &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA LT&#039;&#039;&#039;: Extremely low-end variation of TNT2 M64. Identical to VANTA-16, but VRAM is limited to a mere 8 megabytes and AGP 4X support is disabled - only AGP 2X can be used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA-16&#039;&#039;&#039;: Very low-end variation of TNT2 M64, with a core clock of 100MHz and a memory clock of 125Mhz.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 M64:&#039;&#039;&#039; Low-end variation of NV5 (known as &#039;&#039;&#039;NV6&#039;&#039;&#039;) with a 64-bit bus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2:&#039;&#039;&#039; Mainstream option with a core clock of 125MHz and a memory clock of 150Mhz, released in 1999.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Pro:&#039;&#039;&#039; High-end option with a core clock of 143MHz and a memory clock of 166Mhz,  released on October 22, 1999. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Ultra:&#039;&#039;&#039; Enthusiast option, with a core clock of 150MHz and a memory clock of 183Mhz,  released in March of 1999.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=NV5&amp;diff=1752</id>
		<title>NV5</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NV5&amp;diff=1752"/>
		<updated>2026-09-12T15:57:02Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Infobox GPU&lt;br /&gt;
|title=&#039;&#039;&#039;NV5&#039;&#039;&#039;&lt;br /&gt;
|architecture=NV5&lt;br /&gt;
|branding=RIVA TNT2 (early name: RIVA TNT+), later &amp;quot;NVIDIA TNT2&amp;quot;&lt;br /&gt;
|announcement_date=Late 1998&lt;br /&gt;
|release_date=March 1999&lt;br /&gt;
|end_of_production=2002&lt;br /&gt;
|pci_vendor_id=&amp;lt;code&amp;gt;10de&amp;lt;/code&amp;gt; (Nvidia)&lt;br /&gt;
|pci_device_id=many, but first was &amp;lt;code&amp;gt;0028&amp;lt;/code&amp;gt;&lt;br /&gt;
|buses_supported=PCI, AGP 4X &lt;br /&gt;
|directx_version=6.0&lt;br /&gt;
|opengl_version=1.2 (hardware) 1.5 (software)&lt;br /&gt;
|nvclk=125MHz (TNT2); 143MHz (Pro); 150MHz (Ultra) (configurable by OEM)&lt;br /&gt;
|mclk=150MHz (TNT2); 166MHz (Pro); 183MHz (Ultra) (configurable by OEM)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NV5&#039;&#039;&#039; is an improved version of [[NV4]] which was initially intended as a die shrink and clockspeed increase, but as development continued more features were added; additional features include support for 32 MB VRAM and AGP 4X. NV5 survived for several years as an increasingly low-end option and was the first NVIDIA GPU to have multiple SKUs, with the straps, installed VRAM and value of &amp;lt;code&amp;gt;NV_PMC_BOOT_0&amp;lt;/code&amp;gt; being used to configure the branding and option. Initially branded as RIVA TNT2 (after RIVA TNT+ was considered), the &amp;quot;RIVA&amp;quot; was dropped when NVIDIA repositioned it as a low-end option. Production most likely ended in 2002. Typically, a TNT2 card was packaged with either 16 or 32 MB of VRAM.&lt;br /&gt;
&lt;br /&gt;
Production of the high-end SKUs likely ended around the time [[NV10]] was released in late 1999, but the Vanta was produced until at least 2001 and TNT2 M64 chips were manufactured at least as late as September 2002. &lt;br /&gt;
&lt;br /&gt;
=== SKUs ===&lt;br /&gt;
&#039;&#039;Note: graphics cards vendors could and often did configure the card outside of the stated specifications. For example, there was a &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA LT&#039;&#039;&#039;: Extremely low-end variation of TNT2 M64. Identical to VANTA-16, but VRAM is limited to a mere 8 megabytes and AGP 4X support is disabled - only AGP 2X can be used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA-16&#039;&#039;&#039;: Very low-end variation of TNT2 M64, with a core clock of 100MHz and a memory clock of 125Mhz.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 M64:&#039;&#039;&#039; Low-end variation of NV5 (known as &#039;&#039;&#039;NV6&#039;&#039;&#039;) with a 64-bit bus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2:&#039;&#039;&#039; Mainstream option with a core clock of 125MHz and a memory clock of 150Mhz, released in 1999.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Pro:&#039;&#039;&#039; High-end option with a core clock of 143MHz and a memory clock of 166Mhz,  released on October 22, 1999. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Ultra:&#039;&#039;&#039; Enthusiast option, with a core clock of 150MHz and a memory clock of 183Mhz,  released in March of 1999.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=NV5&amp;diff=1751</id>
		<title>NV5</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NV5&amp;diff=1751"/>
		<updated>2026-09-12T15:56:58Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Infobox GPU&lt;br /&gt;
|title=&#039;&#039;&#039;NV5&#039;&#039;&#039;&lt;br /&gt;
|architecture=NV5&lt;br /&gt;
|branding=RIVA TNT2 (early name: RIVA TNT+), later &amp;quot;NVIDIA TNT2&amp;quot;&lt;br /&gt;
|announcement_date=Late 1998&lt;br /&gt;
|release_date=31 March 1999&lt;br /&gt;
|end_of_production=2002&lt;br /&gt;
|pci_vendor_id=&amp;lt;code&amp;gt;10de&amp;lt;/code&amp;gt; (Nvidia)&lt;br /&gt;
|pci_device_id=many, but first was &amp;lt;code&amp;gt;0028&amp;lt;/code&amp;gt;&lt;br /&gt;
|buses_supported=PCI, AGP 4X &lt;br /&gt;
|directx_version=6.0&lt;br /&gt;
|opengl_version=1.2 (hardware) 1.5 (software)&lt;br /&gt;
|nvclk=125MHz (TNT2); 143MHz (Pro); 150MHz (Ultra) (configurable by OEM)&lt;br /&gt;
|mclk=150MHz (TNT2); 166MHz (Pro); 183MHz (Ultra) (configurable by OEM)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NV5&#039;&#039;&#039; is an improved version of [[NV4]] which was initially intended as a die shrink and clockspeed increase, but as development continued more features were added; additional features include support for 32 MB VRAM and AGP 4X. NV5 survived for several years as an increasingly low-end option and was the first NVIDIA GPU to have multiple SKUs, with the straps, installed VRAM and value of &amp;lt;code&amp;gt;NV_PMC_BOOT_0&amp;lt;/code&amp;gt; being used to configure the branding and option. Initially branded as RIVA TNT2 (after RIVA TNT+ was considered), the &amp;quot;RIVA&amp;quot; was dropped when NVIDIA repositioned it as a low-end option. Production most likely ended in 2002. Typically, a TNT2 card was packaged with either 16 or 32 MB of VRAM.&lt;br /&gt;
&lt;br /&gt;
Production of the high-end SKUs likely ended around the time [[NV10]] was released in late 1999, but the Vanta was produced until at least 2001 and TNT2 M64 chips were manufactured at least as late as September 2002. &lt;br /&gt;
&lt;br /&gt;
=== SKUs ===&lt;br /&gt;
&#039;&#039;Note: graphics cards vendors could and often did configure the card outside of the stated specifications. For example, there was a &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA LT&#039;&#039;&#039;: Extremely low-end variation of TNT2 M64. Identical to VANTA-16, but VRAM is limited to a mere 8 megabytes and AGP 4X support is disabled - only AGP 2X can be used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA-16&#039;&#039;&#039;: Very low-end variation of TNT2 M64, with a core clock of 100MHz and a memory clock of 125Mhz.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 M64:&#039;&#039;&#039; Low-end variation of NV5 (known as &#039;&#039;&#039;NV6&#039;&#039;&#039;) with a 64-bit bus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2:&#039;&#039;&#039; Mainstream option with a core clock of 125MHz and a memory clock of 150Mhz, released in 1999.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Pro:&#039;&#039;&#039; High-end option with a core clock of 143MHz and a memory clock of 166Mhz,  released on October 22, 1999. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Ultra:&#039;&#039;&#039; Enthusiast option, with a core clock of 150MHz and a memory clock of 183Mhz,  released in March of 1999.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=NV5&amp;diff=1750</id>
		<title>NV5</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NV5&amp;diff=1750"/>
		<updated>2026-09-12T15:56:35Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Infobox GPU&lt;br /&gt;
|title=&#039;&#039;&#039;NV5&#039;&#039;&#039;&lt;br /&gt;
|architecture=NV5&lt;br /&gt;
|branding=RIVA TNT2 (early name: RIVA TNT+), later &amp;quot;NVIDIA TNT2&amp;quot;&lt;br /&gt;
|announcement_date=March 1999&lt;br /&gt;
|release_date=31 August 1998&lt;br /&gt;
|end_of_production=2002&lt;br /&gt;
|pci_vendor_id=&amp;lt;code&amp;gt;10de&amp;lt;/code&amp;gt; (Nvidia)&lt;br /&gt;
|pci_device_id=many, but first was &amp;lt;code&amp;gt;0028&amp;lt;/code&amp;gt;&lt;br /&gt;
|buses_supported=PCI, AGP 4X &lt;br /&gt;
|directx_version=6.0&lt;br /&gt;
|opengl_version=1.2 (hardware) 1.5 (software)&lt;br /&gt;
|nvclk=125MHz (TNT2); 143MHz (Pro); 150MHz (Ultra) (configurable by OEM)&lt;br /&gt;
|mclk=150MHz (TNT2); 166MHz (Pro); 183MHz (Ultra) (configurable by OEM)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NV5&#039;&#039;&#039; is an improved version of [[NV4]] which was initially intended as a die shrink and clockspeed increase, but as development continued more features were added; additional features include support for 32 MB VRAM and AGP 4X. NV5 survived for several years as an increasingly low-end option and was the first NVIDIA GPU to have multiple SKUs, with the straps, installed VRAM and value of &amp;lt;code&amp;gt;NV_PMC_BOOT_0&amp;lt;/code&amp;gt; being used to configure the branding and option. Initially branded as RIVA TNT2 (after RIVA TNT+ was considered), the &amp;quot;RIVA&amp;quot; was dropped when NVIDIA repositioned it as a low-end option. Production most likely ended in 2002. Typically, a TNT2 card was packaged with either 16 or 32 MB of VRAM.&lt;br /&gt;
&lt;br /&gt;
Production of the high-end SKUs likely ended around the time [[NV10]] was released in late 1999, but the Vanta was produced until at least 2001 and TNT2 M64 chips were manufactured at least as late as September 2002. &lt;br /&gt;
&lt;br /&gt;
=== SKUs ===&lt;br /&gt;
&#039;&#039;Note: graphics cards vendors could and often did configure the card outside of the stated specifications. For example, there was a &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA LT&#039;&#039;&#039;: Extremely low-end variation of TNT2 M64. Identical to VANTA-16, but VRAM is limited to a mere 8 megabytes and AGP 4X support is disabled - only AGP 2X can be used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA-16&#039;&#039;&#039;: Very low-end variation of TNT2 M64, with a core clock of 100MHz and a memory clock of 125Mhz.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 M64:&#039;&#039;&#039; Low-end variation of NV5 (known as &#039;&#039;&#039;NV6&#039;&#039;&#039;) with a 64-bit bus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2:&#039;&#039;&#039; Mainstream option with a core clock of 125MHz and a memory clock of 150Mhz, released in 1999.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Pro:&#039;&#039;&#039; High-end option with a core clock of 143MHz and a memory clock of 166Mhz,  released on October 22, 1999. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Ultra:&#039;&#039;&#039; Enthusiast option, with a core clock of 150MHz and a memory clock of 183Mhz,  released in March of 1999.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=NV5&amp;diff=1749</id>
		<title>NV5</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NV5&amp;diff=1749"/>
		<updated>2026-09-12T15:56:14Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Infobox GPU&lt;br /&gt;
|title=&#039;&#039;&#039;NV5&#039;&#039;&#039;&lt;br /&gt;
|architecture=NV5&lt;br /&gt;
|branding=RIVA TNT2 (early name: RIVA TNT+), later &amp;quot;NVIDIA TNT2&amp;quot;&lt;br /&gt;
|announcement_date=March 1999&lt;br /&gt;
|release_date=31 August 1998&lt;br /&gt;
|end_of_production=2002&lt;br /&gt;
|pci_vendor_id=&amp;lt;code&amp;gt;10de&amp;lt;/code&amp;gt; (Nvidia)&lt;br /&gt;
|pci_device_id=many, but first was &amp;lt;code&amp;gt;0028&amp;lt;/code&amp;gt;&lt;br /&gt;
|buses_supported=PCI, AGP 4X &lt;br /&gt;
|directx_version=6.0&lt;br /&gt;
|opengl_version=1.2 (hardware) 1.5 (software)&lt;br /&gt;
|nvclk=125MHz (TNT2); 143MHz (Pro); 150MHz (Ultra) (configurable by OEM)&lt;br /&gt;
|mclk=150MHz (TNT2); 166MHz (Pro); 183MHz (Ultra) (configurable by OEM)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NV5&#039;&#039;&#039; is an improved version of [[NV4]] which was initially intended as a die shrink and clockspeed increase, but as development continued more features were added; additional features include support for 32 MB VRAM and AGP 4X. NV5 survived for several years as an increasingly low-end option and was the first NVIDIA GPU to have multiple SKUs, with the straps, installed VRAM and value of &amp;lt;code&amp;gt;NV_PMC_BOOT_0&amp;lt;/code&amp;gt; being used to configure the branding and option. Initially branded as RIVA TNT2 (after RIVA TNT+ was considered), the &amp;quot;RIVA&amp;quot; was dropped when NVIDIA repositioned it as a low-end option. Production most likely ended in 2002. Typically, a TNT2 card was packaged with either 16 or 32 MB of VRAM.&lt;br /&gt;
&lt;br /&gt;
Production of the high-end SKUs likely ended around the time [[NV10]] was released in late 1999, but the Vanta was produced until at least 2001 and TNT2 M64 chips were manufactured at least as late as September 2002. &lt;br /&gt;
&lt;br /&gt;
=== SKUs ===&lt;br /&gt;
&#039;&#039;Note: graphics cards vendors could and often did configure the card outside of the stated specifications. For example, there was a &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA LT&#039;&#039;&#039;: Extremely low-end variation of TNT2 M64. Identical to VANTA-16, but VRAM is limited to a mere 8 megabytes and AGP 4X support is disabled - only AGP 2X can be used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA-16&#039;&#039;&#039;: Very low-end variation of TNT2 M64, with a core clock of 100MHz and a memory clock of 125Mhz.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 M64:&#039;&#039;&#039;: Low-end variation of NV5 (known as &#039;&#039;&#039;NV6&#039;&#039;&#039;) with a 64-bit bus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2:&#039;&#039;&#039; Mainstream option with a core clock of 125MHz and a memory clock of 150Mhz, released in 1999.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Pro:&#039;&#039;&#039;: High-end option with a core clock of 143MHz and a memory clock of 166Mhz,  released on October 22, 1999. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Ultra:&#039;&#039;&#039; Enthusiast option, with a core clock of 150MHz and a memory clock of 183Mhz,  released in March of 1999.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=NV5&amp;diff=1748</id>
		<title>NV5</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NV5&amp;diff=1748"/>
		<updated>2026-09-12T15:52:29Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: Created page with &amp;quot;{{Template:Infobox GPU |title=&amp;#039;&amp;#039;&amp;#039;NV5&amp;#039;&amp;#039;&amp;#039; |architecture=NV5 |branding=RIVA TNT2 (early name: RIVA TNT+), later &amp;quot;NVIDIA TNT2&amp;quot; |announcement_date=March 1999 |release_date=31 August 1998 |end_of_production=2002 |pci_vendor_id=&amp;lt;code&amp;gt;10de&amp;lt;/code&amp;gt; (Nvidia) |pci_device_id=many, but first was &amp;lt;code&amp;gt;0028&amp;lt;/code&amp;gt; |buses_supported=PCI, AGP 4X  |directx_version=6.0 |opengl_version=1.2 (hardware) 1.5 (software) |nvclk=125MHz (TNT2); 143MHz (Pro); 150MHz (Ultra) (configurable by OEM) |mcl...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Infobox GPU&lt;br /&gt;
|title=&#039;&#039;&#039;NV5&#039;&#039;&#039;&lt;br /&gt;
|architecture=NV5&lt;br /&gt;
|branding=RIVA TNT2 (early name: RIVA TNT+), later &amp;quot;NVIDIA TNT2&amp;quot;&lt;br /&gt;
|announcement_date=March 1999&lt;br /&gt;
|release_date=31 August 1998&lt;br /&gt;
|end_of_production=2002&lt;br /&gt;
|pci_vendor_id=&amp;lt;code&amp;gt;10de&amp;lt;/code&amp;gt; (Nvidia)&lt;br /&gt;
|pci_device_id=many, but first was &amp;lt;code&amp;gt;0028&amp;lt;/code&amp;gt;&lt;br /&gt;
|buses_supported=PCI, AGP 4X &lt;br /&gt;
|directx_version=6.0&lt;br /&gt;
|opengl_version=1.2 (hardware) 1.5 (software)&lt;br /&gt;
|nvclk=125MHz (TNT2); 143MHz (Pro); 150MHz (Ultra) (configurable by OEM)&lt;br /&gt;
|mclk=150MHz (TNT2); 166MHz (Pro); 183MHz (Ultra) (configurable by OEM)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NV5&#039;&#039;&#039; is an improved version of [[NV4]] which was initially intended as a die shrink and clockspeed increase, but as development continued many more features were added. It survived for several years as an increasingly low-end option and was the first NVIDIA GPU to have multiple SKUs, with the straps, installed VRAM and value of &amp;lt;code&amp;gt;NV_PMC_BOOT_0&amp;lt;/code&amp;gt; being used to configure the branding and option. Initially branded as RIVA TNT2 (after RIVA TNT+ was considered), the &amp;quot;RIVA&amp;quot; was dropped when NVIDIA repositioned it as a low-end option. Production most likely ended in 2002. Typically, a TNT2 card was packaged with either 16 or 32 MB of VRAM&lt;br /&gt;
&lt;br /&gt;
=== SKUs ===&lt;br /&gt;
&#039;&#039;Note: graphics cards vendors could and often did configure the card outside of the stated specifications. For example, there was a &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VANTA LT&#039;&#039;&#039;: Extremely low-end variation of TNT2 M64. Identical to VANTA-16, but VRAM is limited to a mere 8 megabytes and AGP 4X support is disabled - only AGP 2X can be used.&lt;br /&gt;
&#039;&#039;&#039;VANTA-16&#039;&#039;&#039;: Very low-end variation of TNT2 M64, with a core clock of 100MHz and a memory clock of 125Mhz.&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 M64:&#039;&#039;&#039;: Low-end variation of NV5 (known as &#039;&#039;&#039;NV6&#039;&#039;&#039;) with a 64-bit bus.&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2:&#039;&#039;&#039; Mainstream option with a core clock of 125MHz and a memory clock of 150Mhz, released in 1999.&lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Pro:&#039;&#039;&#039;: High-end option with a core clock of 143MHz and a memory clock of 166Mhz,  released on October 22, 1999. &lt;br /&gt;
&#039;&#039;&#039;RIVA TNT2 Ultra:&#039;&#039;&#039; Enthusiast option, with a core clock of 150MHz and a memory clock of 183Mhz,  released in March of 1999.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=Template:Infobox_GPU&amp;diff=1747</id>
		<title>Template:Infobox GPU</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=Template:Infobox_GPU&amp;diff=1747"/>
		<updated>2026-09-12T15:43:28Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
{{ Infobox&lt;br /&gt;
|autoheaders = y&lt;br /&gt;
&lt;br /&gt;
|title     = {{{title|}}}&lt;br /&gt;
&lt;br /&gt;
|image   = {{#if: {{{image|}}} | [[File:{{{image}}}|{{{screenshot size|290px}}}|alt={{{image alt|{{{image-caption|Screenshot}}}}}}]] }}&lt;br /&gt;
|caption = {{{imagecaption|}}}&lt;br /&gt;
&lt;br /&gt;
|label1 = Branding&lt;br /&gt;
|data1  = {{{branding|}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Codename of the graphics hardware --&amp;gt;&lt;br /&gt;
|label2 = Codename&lt;br /&gt;
|data2 = {{{codename|}}}&lt;br /&gt;
&lt;br /&gt;
|label3 = Architecture&lt;br /&gt;
|data3 = {{{architecture|}}}&lt;br /&gt;
&lt;br /&gt;
|label4 = Era&lt;br /&gt;
|data4 = {{{era|}}}&lt;br /&gt;
&lt;br /&gt;
|label5 = Announcement date&lt;br /&gt;
|data5 = {{{announcement_date|}}}&lt;br /&gt;
&lt;br /&gt;
|label6 = Release date&lt;br /&gt;
|data6 = {{{release_date|}}}&lt;br /&gt;
&lt;br /&gt;
|label7 = End of production&lt;br /&gt;
|data7 = {{{end_of_production|}}}&lt;br /&gt;
&lt;br /&gt;
|label8 = PCI vendor ID&lt;br /&gt;
|data8 = {{{pci_vendor_id|}}}&lt;br /&gt;
&lt;br /&gt;
|label9 = PCI device ID&lt;br /&gt;
|data9 = {{{pci_device_id|}}}&lt;br /&gt;
&lt;br /&gt;
|label10 = &amp;lt;code&amp;gt;NV_PMC_BOOT_0&amp;lt;/code&amp;gt; value&lt;br /&gt;
|data10 = {{{pmc_boot_0|}}}&lt;br /&gt;
&lt;br /&gt;
|label11 = Buses supported&lt;br /&gt;
|data11 = {{{buses|}}}&lt;br /&gt;
&lt;br /&gt;
|label12 = DirectX hardware supported version&lt;br /&gt;
|data12 = {{{directx_version|}}}&lt;br /&gt;
&lt;br /&gt;
|label13 = OpenGL hardware supported version&lt;br /&gt;
|data13 = {{{opengl_version|}}}&lt;br /&gt;
&lt;br /&gt;
|label14 = Max RAMDAC clock&lt;br /&gt;
|data14 = {{{vclk|}}}&lt;br /&gt;
&lt;br /&gt;
|label15 = Max VRAM clock&lt;br /&gt;
|data15 = {{{mclk|}}}&lt;br /&gt;
&lt;br /&gt;
|label16 = Max core clock&lt;br /&gt;
|data16 = {{{nvclk|}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}}&amp;lt;/onlyinclude&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Templates]]&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=Main_Page&amp;diff=1746</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=Main_Page&amp;diff=1746"/>
		<updated>2026-09-11T11:45:36Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;= Welcome to nvwiki: A wiki about Nvidia graphics cards =&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE: &#039;&#039;&#039; This wiki is being heavily updated due to new discoveries from STB Systems.&lt;br /&gt;
&lt;br /&gt;
// Enable all device and interrupts EXCEPT the fucking NMI!&lt;br /&gt;
&lt;br /&gt;
=== References ===&lt;br /&gt;
&lt;br /&gt;
* [[NVPlay]]&lt;br /&gt;
* [[Emulation status]]&lt;br /&gt;
* [[Timeline]]&lt;br /&gt;
* [[List of GPUs]]&lt;br /&gt;
* [[Hardware errata]]&lt;br /&gt;
&lt;br /&gt;
{{GPUs}}&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=Main_Page&amp;diff=1745</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=Main_Page&amp;diff=1745"/>
		<updated>2026-09-11T11:45:15Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;= Welcome to nvwiki: A wiki about Nvidia graphics cards =&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE: &#039;&#039;&#039; This wiki is being heavily updated due to a bunch of new information which has recently come ou&lt;br /&gt;
&lt;br /&gt;
// Enable all device and interrupts EXCEPT the fucking NMI!&lt;br /&gt;
&lt;br /&gt;
=== References ===&lt;br /&gt;
&lt;br /&gt;
* [[NVPlay]]&lt;br /&gt;
* [[Emulation status]]&lt;br /&gt;
* [[Timeline]]&lt;br /&gt;
* [[List of GPUs]]&lt;br /&gt;
* [[Hardware errata]]&lt;br /&gt;
&lt;br /&gt;
{{GPUs}}&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=Software&amp;diff=1744</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=Software&amp;diff=1744"/>
		<updated>2026-09-05T20:56:13Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nvidia has produced many pieces of &#039;&#039;&#039;software&#039;&#039;&#039; for users of their graphics cards. The main piece of software required is their drivers: they are required to make the GPU function at all, beyond the very basic common level of 2D-only acceleration and software-rendered 3D (VGA, VESA, or Windows Advanced Rasterisation Platform - WARP in Windows 7 and later) level of compatibility assured for all forms of graphical hardware; any Nvidia-specific features require their drivers to be installed on the system. The first ever variant of the Nvidia driver set was the series of VxDs running under Windows 3.x that allowed the [[NV0]] to be simulated. There have historically been several sets of drivers for Nvidia hardware: initially, the first was Nvidia&#039;s drivers, based on their [[Resource Manager]], which started development in 1994, and the very early versions of the NT miniport driver which programmed the hardware directly rather than through the RM, as a stopgap measure until the real Resource Manager was ported over to NT, starting with the [[NV1]], in roughly 1996. There was also a semi-official, very basic &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; driver set for Linux, which was not judged sufficient for use of the card under Linux, was updated infrequently with few features and Nvidia required to be partially obfuscated (and was generally hard to deal with as a company){{ref|a}}: several driver projects started to provide a more complete emulation, with &amp;lt;code&amp;gt;nouveau&amp;lt;/code&amp;gt;, under the purview of the wider freedesktop project, being the most popular and long-lasting, although Utah GLX (which successfully achieved 3D acceleration on the Riva 128 at least) and RivaTV, aimed at using the TV-out functionality and [[PME|Mediaport]] of these cards, also existed; &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; was also ported to BeOS and several other operating systems to allow Nvidia GPUs to be used on their operating systems. Later on, most of these projects experienced sharp declines in development activity, or were discontinued entirely as Nvidia ported their full Resource Manager drivers to Linux and eventually partially open-sourced them, although parts of it were moved to the firmware running on modern nVidia GPUs&#039; on-die [[Falcon]] and [[RISC-V]] cores prior to this.&lt;br /&gt;
&lt;br /&gt;
Nvidia has also provided both industry-standard APIs (such as [[DirectX]], [[OpenGL]] and [[Vulkan]]) several custom APIs for their products for both graphics and non-graphics related applications, such as Cg (C for graphics) starting on the [[NV20]], and for GPGPU applications, CUDA (Compute Unified Device Architecture) starting on the [[G80]]. However, these are largely implemented as Resource Manager clients or otherwise as parts of their drivers: for example, the game physics API PhysX, the Nintendo Switch graphics API &amp;lt;code&amp;gt;nvn&amp;lt;/code&amp;gt; and its Switch 2 successor &amp;lt;code&amp;gt;nvn2&amp;lt;/code&amp;gt;, the &#039;&#039;extremely&#039;&#039; confusingly named &amp;quot;NVIDIA Riva&amp;quot; AI speech generation API, NeMo for generative AI, RAPIDS for data science, CUDA-X for general AI libraries, and many more are all implemented in a similar fashion.&lt;br /&gt;
&lt;br /&gt;
Presumably, the [[NV2]] did not use any form of drivers, or used a light vendor-supplied library (similar to the &amp;quot;OS&amp;quot; library for the Nintendo 64, per Goddard) and was intended to be programmed directly by the game developer while running on [[Saturn V08]], as was the style for consoles at that time.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
While Nvidia has changed their drivers&#039; design over time, at least for early models there are two pretty basic setups for the &amp;quot;full fat&amp;quot; Nvidia Resource Manager-based drivers, one which was used for [[NV1]] through [[NV3]] and a new design which was used starting with [[NV4]] (although there are obviously variations of both). &lt;br /&gt;
&lt;br /&gt;
In all cases, the [[Resource Manager]] implements the actual interaction with the hardware and is intended to abstract away the differences between different generations of Nvidia architecture and to provide a consistent interface for functionality implemented in both hardware and software. The RM initialises, controls and shuts down (if required) the graphics hardware; multiple types of APIs are provided in order to interact with the RM. The first model is the OS-provided IOCTL interface, which can be used for basic functionality (this model is used by Nvidia&#039;s GDI drivers). A second model is calling into APIs exposed by the Resource Manager through the NVAPI interface. In order to achieve this, a single function is exported a la Quake-based game engine, that takes a single parameter, which is a very large C struct with many function pointers for different functions, typically implemented via the mechanism of a stub DLL that forwards each function to the Resource Manager. This implementation makes the application a &amp;quot;client&amp;quot; of the Resource Manager. The implementation varies by driver version and intended operating system. For instance, in the case of NV3 drivers for Windows 9x, the 32-bit API &amp;lt;code&amp;gt;NV3API.DLL&amp;lt;/code&amp;gt; thunks into a 16-bit dll &amp;lt;code&amp;gt;NV3SYS.DLL&amp;lt;/code&amp;gt; by passing a large array of function pointers (which also exports, via traditional DLL exporting, the same API but for 16-bit apps) which then &#039;&#039;calls back into the 32-bit Resource Manager VxD&#039;&#039; to perform API calls. The interface to the GPU is implemented via a pseudo-C++ class system; classes are indicated by object IDs, with a large array of class structures providing &amp;quot;methods&amp;quot; - methods are assigned an ID, corresponding to the offset within a DMA channel that is written to in order to execute the method on hardware. There is no requirement for a method to have a unique offset. Some classes are [[PFIFO#Object submission|implemented in hardware]] using the &amp;lt;code&amp;gt;grHWMthd&amp;lt;/code&amp;gt; function, while others are implemented in software; if a class is implemented in hardware, it is simply stubbed out in software. Software methods are implemented by setting bit 23 of an object&#039;s [[NV3 RAMIN#Object context|context]] to 1 during submission. If this is set, the GPU will raise an interrupt and the graphical operation will be performed by sotware. This approach provided, and presumably continues to provide (since it is still used!) a range of benefits that other companies did not enjoy at the time. It allows rapid iteration (since support for new GPUs can be implemented without breaking software, especially as most Resource Manager clients), allows features that do not work or are not available in hardware to be easily emulated in software at a performance cost, allows easy support of any new graphical APIs that may appear (just write another RM client), and additionally allows hardware resources to be abstracted away from clients: for instance, there are only 8 channels in both NV1 and NV3 hardware, but this is virtualised away by RM to allow opening up to 128 channels. &lt;br /&gt;
&lt;br /&gt;
=== NV1 to NV3 ===&lt;br /&gt;
From [[NV1]] to [[NV3]] the Resource Manager is unique for each graphics card - it is a different branch in Nvidia&#039;s source control system. This is not shared for all parts of the drivers; the GDI drivers definitely are not set up like this, leading to NV3 resource managers with GDI drivers that support NV4 (starting around February 1998, several months before the release of the Riva TNT). It is unclear if this fact was realised at the time; it seems that it may have been discovered by the era of the [[NV15]] architecture.&lt;br /&gt;
&lt;br /&gt;
=== NV4 ===&lt;br /&gt;
&lt;br /&gt;
== Supported platforms ==&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; These are platforms that were supported for any length of time, not platforms that are currently supported, or which GPUs they can be used with.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Supported operating systems&lt;br /&gt;
|-&lt;br /&gt;
! Operating system !! Driver supported&lt;br /&gt;
|-&lt;br /&gt;
| Windows for Workgroups 3.11 || Full drivers{{ref|b}} &lt;br /&gt;
|-&lt;br /&gt;
| Windows 95 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 98/98SE || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows ME || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows NT 3.51 || Miniport driver only&lt;br /&gt;
|-&lt;br /&gt;
| Windows NT 4.0 || Miniport driver, later full Resource Manager-based driver{{ref|c}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows 2000 || Full drivers{{ref|d}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows XP || Full drivers{{ref|e}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows Vista || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 7 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 8 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 8.1 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 10 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 11 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Xbox (original) || Modified full drivers (&amp;quot;minix&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| macOS || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Android || Full drivers, also &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Linux || Initially &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; or open-source project only, later full drivers.&lt;br /&gt;
|-&lt;br /&gt;
| BeOS, Haiku, EOS, AsusWRT (linux-based) || These OSes support the &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; driver only&lt;br /&gt;
|-&lt;br /&gt;
| OS/2 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| PlayStation 3 (CellOS) || Custom&lt;br /&gt;
|-&lt;br /&gt;
| Horizon OS (Switch) || Full drivers (with custom API)&lt;br /&gt;
|-&lt;br /&gt;
| Horizon OS (Switch 2) || Full drivers (with custom API)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Known driver versions ==&lt;br /&gt;
&lt;br /&gt;
Each component of Nvidia&#039;s drivers has an official description (it used to be used in their control panel extension to list each driver file); for example &amp;quot;Resource Manager&amp;quot; or &amp;quot;OpenGL ICD&amp;quot;. Initially, these were simply described as being for &amp;quot;Nvidia&amp;quot; (e.g. &amp;quot;NVidia Resource Manager, Version 2.00 Beta&amp;quot;), later on the file descriptions were changed to be named after the specific GPU supported, e.g. &amp;quot;RIVA 128 Direct Draw/Direct 3D Driver, Version x.xx&amp;quot; or &amp;quot;Riva TNT Display Driver, Version x.xx&amp;quot;, however later when Nvidia refactored their GPU drivers to support multiple models of graphics hardware, they changed the description to simply read &amp;quot;NVIDIA Compatible&amp;quot;. This is still the case as of April 2025. &lt;br /&gt;
&lt;br /&gt;
There were certainly many other versions, if you have any other version, please contact me: you can check by checking the file properties of any file in the driver set.&lt;br /&gt;
&lt;br /&gt;
=== NV1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Known driver versions&lt;br /&gt;
|-&lt;br /&gt;
! Date of driver files !! Version !! Known platforms&lt;br /&gt;
|-&lt;br /&gt;
| 25 October 1995 || 1.20 || MS-DOS, Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 2 February 1996 || 2.00 Beta || Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 11 February 1996 || FCS 2.00 || MS-DOS (CEK 1.22); Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 23 September 1996; some files rebuilt 19 March 1997 || 2.30 || Windows 95 &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== NV2 / NV3 QTM ===&lt;br /&gt;
There are no known drivers for [[NV2]] or [[NV3 (QTM)]]. Traditional drivers (although software certainly existed) for the former are not likely as it was intended to be used as part of a game, but driver development may have started for the latter.&lt;br /&gt;
&lt;br /&gt;
=== NV3 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Certain OEM-specific drivers may be missing; they are usually almost identical to reference driver versions, but may have certain minor feature differences. Few of these have notable changes (e.g. Diamond adding their InControl Tools, or the STB TwinView two/four head cards with custom &amp;quot;mp&amp;quot; functions to switch between different chips on the board - it is not clear if STB or Nvidia made these modifications). Additionally, the driver versions included in Windows 98 beta releases are not listed (they take the version of the Windows SDK they were compiled with, for instance &amp;lt;code&amp;gt;4.10.1635&amp;lt;/code&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
Early drivers for Windows 9x, the drivers included with Windows 98 pre-release builds and almost all NT 4.0 and 2000 drivers for NV3-based architectures have COFF or VxD symbols (depending on platform) for the resource manager and display driver, although not for the Direct3D or OpenGL drivers. Nvidia seems to have had issues turning off symbol generation, as at some point they wrote a header file that redefined every function name as &amp;lt;code&amp;gt;__nv_rmsym_\&amp;lt;number\&amp;gt;&amp;lt;/code&amp;gt; as some strange way of attempting to obfuscate their function names.&lt;br /&gt;
&lt;br /&gt;
Some of the &amp;quot;lost&amp;quot; source is partially represented in the 75% complete STB VSS dump. The oldest version attested to a version number seems to have been &amp;quot;Version 0.60 BETA2&amp;quot; (June 6, 1997), although parts of versions from May 1997 are also present.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Known driver versions&lt;br /&gt;
|-&lt;br /&gt;
! Date of driver files !! Version !! Known platforms !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| December 1996 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1997 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| May 1997 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| June 1997 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| July 1997 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 17 July 1997 || Unnumbered pre-release || Windows NT 4.0 || Accidentally released by STB Systems. Has NV1 support in display driver (even though NT was never officially supported on NV1), and only supports revision A of NV3.&lt;br /&gt;
|-&lt;br /&gt;
| 8 August 1997 || 0.73b || Windows NT 3.51, 4.0 || Pre-release&lt;br /&gt;
|-&lt;br /&gt;
| 15 August 1997 || 0.75 || Windows NT 4.0 || Possible launch drivers&lt;br /&gt;
|- &lt;br /&gt;
| 27 August 1997 || 0.75 || Windows NT 3.51 || No resource manager&lt;br /&gt;
|- &lt;br /&gt;
| August 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 1 September 1997 || 0.77 || Windows 9x || Possible launch drivers&lt;br /&gt;
|-&lt;br /&gt;
| 23 September 1997 (STB Systems) || 1.16 || Windows 9x || D3D drivers compiled with debug messages left on. PDB file names refer to STB products proving STB Systems had driver source code access (they were the first to license the Riva 128) and most likely from Nvidia&#039;s unstable branch. STB was later bought by 3dfx in 1998, so they may have been able to obtain access to Nvidia&#039;s driver sources?&lt;br /&gt;
|-&lt;br /&gt;
| 29 September 1997 || 1.04 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1997 || 1.05 || Windows 3.1 ||&lt;br /&gt;
|-&lt;br /&gt;
| 22 October 1997 || 1.06 || Windows 9x || &lt;br /&gt;
|-&lt;br /&gt;
| October 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 2 November 1997 || 1.07c || Windows NT 4.0 || &lt;br /&gt;
|-&lt;br /&gt;
| 14 November 1997 || 1.21 || Windows 9x || OpenGL Alpha 1 release (&amp;lt;code&amp;gt;nv3quake.zip&amp;lt;/code&amp;gt;). Also the Alpha 2 release with an updated OpenGL ICD from 2 December 1997&lt;br /&gt;
|-&lt;br /&gt;
| November 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 10 December 1997 || 1.11 || Windows 9x || Yes, later than 1.21. The 1.21 was from a development branch for OpenGL support.&lt;br /&gt;
|-&lt;br /&gt;
| 15 January 1998 || 1.27 || Windows 9x || STB source drop (available; Resource Manager + Win9x GDI + D3D + OpenGL + NT4 GDI + NT4 MCD)&lt;br /&gt;
|-&lt;br /&gt;
| 31 January 1998 || 1.28 || Windows 9x || OpenGL Beta 1 release. &lt;br /&gt;
|- &lt;br /&gt;
| 1 February 1998 || 1.29 || Windows NT 4.0 || First driver with NV4-related functions in display driver (very basic support, simply initialisation and shutdown, to start with)&lt;br /&gt;
|-&lt;br /&gt;
| 26 February 1998 || 1.36 || Windows 9x || STB source drop (available; only Resource Manager and Win9x GDI drivers updated)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.41 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.42 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.43 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.45 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46a || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46b || Windows 9x || STB source drop (mostly lost, partial Resman)&lt;br /&gt;
|-&lt;br /&gt;
| 9 April 1998 || 1.44 || Windows 9x ||&lt;br /&gt;
|-&lt;br /&gt;
| 17 April 1998 || 1.50 || Windows 9x || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 22 April 1998 || 1.50b || Windows 9x, NT 4.0 || Source code available (updated OpenGL + Win9x GDI)&lt;br /&gt;
|-&lt;br /&gt;
| 25 April 1998 || 1.50c || Windows 9x, NT 4.0 || Source code available (updated OpenGL + Win9x GDI)&lt;br /&gt;
|-&lt;br /&gt;
| 29 April 1998 || 1.50e || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 5 May 1998 || 1.50h || Windows 9x, Windows NT 4.0 || Updated Win9x GDI + Direct3D from 1.50e - nvidia readme: &amp;quot;remove int 3&#039;s UGGHHHHH(the person that did this has been fired)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 5 May 1998 || 1.50k || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 4 August 1998 || 1.62 || Windows NT 4.0 || &lt;br /&gt;
|-&lt;br /&gt;
| 14 July 1998 || 1.57 || Windows 9x, Windows NT 4.0 || Early multimonitor support for STB MVP&lt;br /&gt;
|-&lt;br /&gt;
| 23 July 1998 || 1.59 || Windows 9x, Windows NT 4.0 || Early multimonitor support for STB MVP&lt;br /&gt;
|-&lt;br /&gt;
| 5 August 1998 || 1.72a || Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 23 August 1998 || 1.74 || Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D) &lt;br /&gt;
|-&lt;br /&gt;
| 27 August 1998 || 1.27 || Windows 3.1 || Final Win3.1 drivers; probably different branch; some files call themselves &amp;quot;RIVA TNT Resource Manager, Version 0.11&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| 28 August 1998 || 1.75 || Windows 9x || nVIDIA SDK 0.81 &lt;br /&gt;
|- &lt;br /&gt;
| 14 September 1998 || 2.77 || Windows 9x, Windows NT 4.0 || NT: Display driver output name changed from &amp;lt;code&amp;gt;nv_disp&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;nv3_disp&amp;lt;/code&amp;gt; (probably due to NV4 driver development), also source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + VBIOS) &lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1998 || 2.79 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + NV3Tweak) &lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1998 || 2.80 || Windows 9x, Windows NT 4.0 || nVIDIA SDK 0.83&lt;br /&gt;
|-&lt;br /&gt;
| 22 October 1998 || 2.83 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + NV3Tweak) &lt;br /&gt;
|-&lt;br /&gt;
| 9 November 1998 || 3.03 || Windows 9x ||&lt;br /&gt;
|- &lt;br /&gt;
| 10 December 1998 || 1.30, 2.79 (Diamond branch) || Windows 9x || Most likely a branch maintained by Diamond Multimedia for their &amp;quot;Viper&amp;quot; cards, released 21 January 1999 &lt;br /&gt;
|-&lt;br /&gt;
| 14 December 1998 (source) / 7 January 1999 (binary) || 3.12 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + VBIOS) &lt;br /&gt;
|- &lt;br /&gt;
| 1 February 1999 || 3.22 || Windows 9x ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 February 1999 || 3.23 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 9 February 1999 || 3.25 || Windows 9x || &lt;br /&gt;
|-&lt;br /&gt;
| 18 February 1999 || 3.27 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3 March 1999 || Unknown version || OS/2 (Warp 3 Fixpak35+ &amp;amp; 4 Fixpak5+) || Very sloppily done. Batch file (well, Rexx script) setup. Unclear what GPU is even supported: it was posted on Nvidia&#039;s RIVA 128 download pages, but the readme file calls it &amp;quot;GRADD Driver for Nvidia NV4&amp;quot; (not even using a product name), despite being last modified on 25 February 1999.&lt;br /&gt;
|-&lt;br /&gt;
| 21 March 1999 || 3.37 || Windows 9x, NT 4.0, 2000 (beta) || Final driver for Windows 9x, only Win2000 driver with OpenGL support. Even though the driver was compiled against Windows 2000 build 1996, it works fine on the final Windows 2000, including Service Pack 4&lt;br /&gt;
|- &lt;br /&gt;
| 11 May 1999 || 3.41b || Windows NT 4.0 || Final NT 4.0 driver&lt;br /&gt;
|- &lt;br /&gt;
| 28 October 1999 || 3.43 || Windows 2000 || 2D-only driver bundled with Windows 2000. Still has OpenGL hooks; untested&lt;br /&gt;
|- &lt;br /&gt;
| 31 July 2001 || 3.43 || Windows XP || 2D-only driver bundled with Windows XP. Still has OpenGL hooks; tested, does not work on default, crashes late in OpenGL initialisation process (may be patchable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== NV4 and later shared drivers ===&lt;br /&gt;
&lt;br /&gt;
0.32 first released version, 0.12 first sent to STB (Source archive is dated July 14, 1998)&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
:{{note|a|}}These issues in the relationship eventually led to the infamous &amp;quot;Fuck you, Nvidia!&amp;quot; comment and middle finger by Linus Torvalds at a 2012 event.&lt;br /&gt;
:{{note|b|}}They are officially marked as being for 3.11, but unless they depend on the 32-bit File Access feature backported from Windows 95, or any other feature that was exclusively added in WfW 3.11, there should be no reason why they cannot work on any other version of Windows 3.1, such as the original 1992 release, standalone Windows 3.11, or Windows for Workgroups 3.1: however, the drivers have not been tested with these older versions, so the compatibility, or lack thereof, is unknown.&lt;br /&gt;
:{{note|c|}}Initially 2D only, then OpenGL only: no D3D.&lt;br /&gt;
:{{note|d|}}Initially OpenGL only, later Direct3D support was added. Beta only for NV3.&lt;br /&gt;
:{{note|e|}}2D only officially for NV3, although hooks to load the OpenGL drivers still exist; they do not load using the Windows 2000 drivers, but they can likely be patched to work.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=Software&amp;diff=1743</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=Software&amp;diff=1743"/>
		<updated>2026-09-05T20:16:36Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nvidia has produced many pieces of &#039;&#039;&#039;software&#039;&#039;&#039; for users of their graphics cards. The main piece of software required is their drivers: they are required to make the GPU function at all, beyond the very basic common level of 2D-only acceleration and software-rendered 3D (VGA, VESA, or Windows Advanced Rasterisation Platform - WARP in Windows 7 and later) level of compatibility assured for all forms of graphical hardware; any Nvidia-specific features require their drivers to be installed on the system. The first ever variant of the Nvidia driver set was the series of VxDs running under Windows 3.x that allowed the [[NV0]] to be simulated. There have historically been several sets of drivers for Nvidia hardware: initially, the first was Nvidia&#039;s drivers, based on their [[Resource Manager]], which started development in 1994, and the very early versions of the NT miniport driver which programmed the hardware directly rather than through the RM, as a stopgap measure until the real Resource Manager was ported over to NT, starting with the [[NV1]], in roughly 1996. There was also a semi-official, very basic &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; driver set for Linux, which was not judged sufficient for use of the card under Linux, was updated infrequently with few features and Nvidia required to be partially obfuscated (and was generally hard to deal with as a company){{ref|a}}: several driver projects started to provide a more complete emulation, with &amp;lt;code&amp;gt;nouveau&amp;lt;/code&amp;gt;, under the purview of the wider freedesktop project, being the most popular and long-lasting, although Utah GLX (which successfully achieved 3D acceleration on the Riva 128 at least) and RivaTV, aimed at using the TV-out functionality and [[PME|Mediaport]] of these cards, also existed; &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; was also ported to BeOS and several other operating systems to allow Nvidia GPUs to be used on their operating systems. Later on, most of these projects experienced sharp declines in development activity, or were discontinued entirely as Nvidia ported their full Resource Manager drivers to Linux and eventually partially open-sourced them, although parts of it were moved to the firmware running on modern nVidia GPUs&#039; on-die [[Falcon]] and [[RISC-V]] cores prior to this.&lt;br /&gt;
&lt;br /&gt;
Nvidia has also provided both industry-standard APIs (such as [[DirectX]], [[OpenGL]] and [[Vulkan]]) several custom APIs for their products for both graphics and non-graphics related applications, such as Cg (C for graphics) starting on the [[NV20]], and for GPGPU applications, CUDA (Compute Unified Device Architecture) starting on the [[G80]]. However, these are largely implemented as Resource Manager clients or otherwise as parts of their drivers: for example, the game physics API PhysX, the Nintendo Switch graphics API &amp;lt;code&amp;gt;nvn&amp;lt;/code&amp;gt; and its Switch 2 successor &amp;lt;code&amp;gt;nvn2&amp;lt;/code&amp;gt;, the &#039;&#039;extremely&#039;&#039; confusingly named &amp;quot;NVIDIA Riva&amp;quot; AI speech generation API, NeMo for generative AI, RAPIDS for data science, CUDA-X for general AI libraries, and many more are all implemented in a similar fashion.&lt;br /&gt;
&lt;br /&gt;
Presumably, the [[NV2]] did not use any form of drivers, or used a light vendor-supplied library (similar to the &amp;quot;OS&amp;quot; library for the Nintendo 64, per Goddard) and was intended to be programmed directly by the game developer while running on [[Saturn V08]], as was the style for consoles at that time.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
While Nvidia has changed their drivers&#039; design over time, at least for early models there are two pretty basic setups for the &amp;quot;full fat&amp;quot; Nvidia Resource Manager-based drivers, one which was used for [[NV1]] through [[NV3]] and a new design which was used starting with [[NV4]] (although there are obviously variations of both). &lt;br /&gt;
&lt;br /&gt;
In all cases, the [[Resource Manager]] implements the actual interaction with the hardware and is intended to abstract away the differences between different generations of Nvidia architecture and to provide a consistent interface for functionality implemented in both hardware and software. The RM initialises, controls and shuts down (if required) the graphics hardware; multiple types of APIs are provided in order to interact with the RM. The first model is the OS-provided IOCTL interface, which can be used for basic functionality (this model is used by Nvidia&#039;s GDI drivers). A second model is calling into APIs exposed by the Resource Manager through the NVAPI interface. In order to achieve this, a single function is exported a la Quake-based game engine, that takes a single parameter, which is a very large C struct with many function pointers for different functions, typically implemented via the mechanism of a stub DLL that forwards each function to the Resource Manager. This implementation makes the application a &amp;quot;client&amp;quot; of the Resource Manager. The implementation varies by driver version and intended operating system. For instance, in the case of NV3 drivers for Windows 9x, the 32-bit API &amp;lt;code&amp;gt;NV3API.DLL&amp;lt;/code&amp;gt; thunks into a 16-bit dll &amp;lt;code&amp;gt;NV3SYS.DLL&amp;lt;/code&amp;gt; by passing a large array of function pointers (which also exports, via traditional DLL exporting, the same API but for 16-bit apps) which then &#039;&#039;calls back into the 32-bit Resource Manager VxD&#039;&#039; to perform API calls. The interface to the GPU is implemented via a pseudo-C++ class system; classes are indicated by object IDs, with a large array of class structures providing &amp;quot;methods&amp;quot; - methods are assigned an ID, corresponding to the offset within a DMA channel that is written to in order to execute the method on hardware. There is no requirement for a method to have a unique offset. Some classes are [[PFIFO#Object submission|implemented in hardware]] using the &amp;lt;code&amp;gt;grHWMthd&amp;lt;/code&amp;gt; function, while others are implemented in software; if a class is implemented in hardware, it is simply stubbed out in software. Software methods are implemented by setting bit 23 of an object&#039;s [[NV3 RAMIN#Object context|context]] to 1 during submission. If this is set, the GPU will raise an interrupt and the graphical operation will be performed by sotware. This approach provided, and presumably continues to provide (since it is still used!) a range of benefits that other companies did not enjoy at the time. It allows rapid iteration (since support for new GPUs can be implemented without breaking software, especially as most Resource Manager clients), allows features that do not work or are not available in hardware to be easily emulated in software at a performance cost, allows easy support of any new graphical APIs that may appear (just write another RM client), and additionally allows hardware resources to be abstracted away from clients: for instance, there are only 8 channels in both NV1 and NV3 hardware, but this is virtualised away by RM to allow opening up to 128 channels. &lt;br /&gt;
&lt;br /&gt;
=== NV1 to NV3 ===&lt;br /&gt;
From [[NV1]] to [[NV3]] the Resource Manager is unique for each graphics card - it is a different branch in Nvidia&#039;s source control system. This is not shared for all parts of the drivers; the GDI drivers definitely are not set up like this, leading to NV3 resource managers with GDI drivers that support NV4 (starting around February 1998, several months before the release of the Riva TNT). It is unclear if this fact was realised at the time; it seems that it may have been discovered by the era of the [[NV15]] architecture.&lt;br /&gt;
&lt;br /&gt;
=== NV4 ===&lt;br /&gt;
&lt;br /&gt;
== Supported platforms ==&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; These are platforms that were supported for any length of time, not platforms that are currently supported, or which GPUs they can be used with.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Supported operating systems&lt;br /&gt;
|-&lt;br /&gt;
! Operating system !! Driver supported&lt;br /&gt;
|-&lt;br /&gt;
| Windows for Workgroups 3.11 || Full drivers{{ref|b}} &lt;br /&gt;
|-&lt;br /&gt;
| Windows 95 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 98/98SE || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows ME || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows NT 3.51 || Miniport driver only&lt;br /&gt;
|-&lt;br /&gt;
| Windows NT 4.0 || Miniport driver, later full Resource Manager-based driver{{ref|c}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows 2000 || Full drivers{{ref|d}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows XP || Full drivers{{ref|e}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows Vista || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 7 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 8 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 8.1 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 10 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 11 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Xbox (original) || Modified full drivers (&amp;quot;minix&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| macOS || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Android || Full drivers, also &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Linux || Initially &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; or open-source project only, later full drivers.&lt;br /&gt;
|-&lt;br /&gt;
| BeOS, Haiku, EOS, AsusWRT (linux-based) || These OSes support the &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; driver only&lt;br /&gt;
|-&lt;br /&gt;
| OS/2 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| PlayStation 3 (CellOS) || Custom&lt;br /&gt;
|-&lt;br /&gt;
| Horizon OS (Switch) || Full drivers (with custom API)&lt;br /&gt;
|-&lt;br /&gt;
| Horizon OS (Switch 2) || Full drivers (with custom API)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Known driver versions ==&lt;br /&gt;
&lt;br /&gt;
Each component of Nvidia&#039;s drivers has an official description (it used to be used in their control panel extension to list each driver file); for example &amp;quot;Resource Manager&amp;quot; or &amp;quot;OpenGL ICD&amp;quot;. Initially, these were simply described as being for &amp;quot;Nvidia&amp;quot; (e.g. &amp;quot;NVidia Resource Manager, Version 2.00 Beta&amp;quot;), later on the file descriptions were changed to be named after the specific GPU supported, e.g. &amp;quot;RIVA 128 Direct Draw/Direct 3D Driver, Version x.xx&amp;quot; or &amp;quot;Riva TNT Display Driver, Version x.xx&amp;quot;, however later when Nvidia refactored their GPU drivers to support multiple models of graphics hardware, they changed the description to simply read &amp;quot;NVIDIA Compatible&amp;quot;. This is still the case as of April 2025. &lt;br /&gt;
&lt;br /&gt;
There were certainly many other versions, if you have any other version, please contact me: you can check by checking the file properties of any file in the driver set.&lt;br /&gt;
&lt;br /&gt;
=== NV1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Known driver versions&lt;br /&gt;
|-&lt;br /&gt;
! Date of driver files !! Version !! Known platforms&lt;br /&gt;
|-&lt;br /&gt;
| 25 October 1995 || 1.20 || MS-DOS, Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 2 February 1996 || 2.00 Beta || Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 11 February 1996 || FCS 2.00 || MS-DOS (CEK 1.22); Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 23 September 1996; some files rebuilt 19 March 1997 || 2.30 || Windows 95 &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== NV2 / NV3 QTM ===&lt;br /&gt;
There are no known drivers for [[NV2]] or [[NV3 (QTM)]]. Traditional drivers (although software certainly existed) for the former are not likely as it was intended to be used as part of a game, but driver development may have started for the latter.&lt;br /&gt;
&lt;br /&gt;
=== NV3 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Certain OEM-specific drivers may be missing; they are usually almost identical to reference driver versions, but may have certain minor feature differences. Few of these have notable changes (e.g. Diamond adding their InControl Tools, or the STB TwinView two/four head cards with custom &amp;quot;mp&amp;quot; functions to switch between different chips on the board - it is not clear if STB or Nvidia made these modifications). Additionally, the driver versions included in Windows 98 beta releases are not listed (they take the version of the Windows SDK they were compiled with, for instance &amp;lt;code&amp;gt;4.10.1635&amp;lt;/code&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
Early drivers for Windows 9x, the drivers included with Windows 98 pre-release builds and almost all NT 4.0 and 2000 drivers for NV3-based architectures have COFF or VxD symbols (depending on platform) for the resource manager and display driver, although not for the Direct3D or OpenGL drivers. Nvidia seems to have had issues turning off symbol generation, as at some point they wrote a header file that redefined every function name as &amp;lt;code&amp;gt;__nv_rmsym_\&amp;lt;number\&amp;gt;&amp;lt;/code&amp;gt; as some strange way of attempting to obfuscate their function names.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Known driver versions&lt;br /&gt;
|-&lt;br /&gt;
! Date of driver files !! Version !! Known platforms !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| December 1996 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1997 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| May 1997 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| June 1997 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| July 1997 || ??? || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 17 July 1997 || Unnumbered pre-release || Windows NT 4.0 || Accidentally released by STB Systems. Has NV1 support in display driver (even though NT was never officially supported on NV1), and only supports revision A of NV3.&lt;br /&gt;
|-&lt;br /&gt;
| 8 August 1997 || 0.73b || Windows NT 3.51, 4.0 || Pre-release&lt;br /&gt;
|-&lt;br /&gt;
| 15 August 1997 || 0.75 || Windows NT 4.0 || Possible launch drivers&lt;br /&gt;
|- &lt;br /&gt;
| 27 August 1997 || 0.75 || Windows NT 3.51 || No resource manager&lt;br /&gt;
|- &lt;br /&gt;
| August 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 1 September 1997 || 0.77 || Windows 9x || Possible launch drivers&lt;br /&gt;
|-&lt;br /&gt;
| 23 September 1997 (STB Systems) || 1.16 || Windows 9x || D3D drivers compiled with debug messages left on. PDB file names refer to STB products proving STB Systems had driver source code access (they were the first to license the Riva 128) and most likely from Nvidia&#039;s unstable branch. STB was later bought by 3dfx in 1998, so they may have been able to obtain access to Nvidia&#039;s driver sources?&lt;br /&gt;
|-&lt;br /&gt;
| 29 September 1997 || 1.04 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1997 || 1.05 || Windows 3.1 ||&lt;br /&gt;
|-&lt;br /&gt;
| 22 October 1997 || 1.06 || Windows 9x || &lt;br /&gt;
|-&lt;br /&gt;
| October 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 2 November 1997 || 1.07c || Windows NT 4.0 || &lt;br /&gt;
|-&lt;br /&gt;
| 14 November 1997 || 1.21 || Windows 9x || OpenGL Alpha 1 release (&amp;lt;code&amp;gt;nv3quake.zip&amp;lt;/code&amp;gt;). Also the Alpha 2 release with an updated OpenGL ICD from 2 December 1997&lt;br /&gt;
|-&lt;br /&gt;
| November 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 10 December 1997 || 1.11 || Windows 9x || Yes, later than 1.21. The 1.21 was from a development branch for OpenGL support.&lt;br /&gt;
|-&lt;br /&gt;
| 15 January 1998 || 1.27 || Windows 9x || STB source drop (available; Resource Manager + Win9x GDI + D3D + OpenGL + NT4 GDI + NT4 MCD)&lt;br /&gt;
|-&lt;br /&gt;
| 31 January 1998 || 1.28 || Windows 9x || OpenGL Beta 1 release. &lt;br /&gt;
|- &lt;br /&gt;
| 1 February 1998 || 1.29 || Windows NT 4.0 || First driver with NV4-related functions in display driver (very basic support, simply initialisation and shutdown, to start with)&lt;br /&gt;
|-&lt;br /&gt;
| 26 February 1998 || 1.36 || Windows 9x || STB source drop (available; only Resource Manager and Win9x GDI drivers updated)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.41 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.42 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.43 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.45 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46a || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46b || Windows 9x || STB source drop (mostly lost, partial Resman)&lt;br /&gt;
|-&lt;br /&gt;
| 9 April 1998 || 1.44 || Windows 9x ||&lt;br /&gt;
|-&lt;br /&gt;
| 17 April 1998 || 1.50 || Windows 9x || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 22 April 1998 || 1.50b || Windows 9x, NT 4.0 || Source code available (updated OpenGL + Win9x GDI)&lt;br /&gt;
|-&lt;br /&gt;
| 25 April 1998 || 1.50c || Windows 9x, NT 4.0 || Source code available (updated OpenGL + Win9x GDI)&lt;br /&gt;
|-&lt;br /&gt;
| 29 April 1998 || 1.50e || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 5 May 1998 || 1.50h || Windows 9x, Windows NT 4.0 || Updated Win9x GDI + Direct3D from 1.50e - nvidia readme: &amp;quot;remove int 3&#039;s UGGHHHHH(the person that did this has been fired)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 5 May 1998 || 1.50k || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 4 August 1998 || 1.62 || Windows NT 4.0 || &lt;br /&gt;
|-&lt;br /&gt;
| 14 July 1998 || 1.57 || Windows 9x, Windows NT 4.0 || Early multimonitor support for STB MVP&lt;br /&gt;
|-&lt;br /&gt;
| 23 July 1998 || 1.59 || Windows 9x, Windows NT 4.0 || Early multimonitor support for STB MVP&lt;br /&gt;
|-&lt;br /&gt;
| 5 August 1998 || 1.72a || Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 23 August 1998 || 1.74 || Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D) &lt;br /&gt;
|-&lt;br /&gt;
| 27 August 1998 || 1.27 || Windows 3.1 || Final Win3.1 drivers; probably different branch; some files call themselves &amp;quot;RIVA TNT Resource Manager, Version 0.11&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| 28 August 1998 || 1.75 || Windows 9x || nVIDIA SDK 0.81 &lt;br /&gt;
|- &lt;br /&gt;
| 14 September 1998 || 2.77 || Windows 9x, Windows NT 4.0 || NT: Display driver output name changed from &amp;lt;code&amp;gt;nv_disp&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;nv3_disp&amp;lt;/code&amp;gt; (probably due to NV4 driver development), also source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + VBIOS) &lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1998 || 2.79 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + NV3Tweak) &lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1998 || 2.80 || Windows 9x, Windows NT 4.0 || nVIDIA SDK 0.83&lt;br /&gt;
|-&lt;br /&gt;
| 22 October 1998 || 2.83 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + NV3Tweak) &lt;br /&gt;
|-&lt;br /&gt;
| 9 November 1998 || 3.03 || Windows 9x ||&lt;br /&gt;
|- &lt;br /&gt;
| 10 December 1998 || 1.30, 2.79 (Diamond branch) || Windows 9x || Most likely a branch maintained by Diamond Multimedia for their &amp;quot;Viper&amp;quot; cards, released 21 January 1999 &lt;br /&gt;
|-&lt;br /&gt;
| 14 December 1998 (source) / 7 January 1999 (binary) || 3.12 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + VBIOS) &lt;br /&gt;
|- &lt;br /&gt;
| 1 February 1999 || 3.22 || Windows 9x ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 February 1999 || 3.23 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 9 February 1999 || 3.25 || Windows 9x || &lt;br /&gt;
|-&lt;br /&gt;
| 18 February 1999 || 3.27 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3 March 1999 || Unknown version || OS/2 (Warp 3 Fixpak35+ &amp;amp; 4 Fixpak5+) || Very sloppily done. Batch file (well, Rexx script) setup. Unclear what GPU is even supported: it was posted on Nvidia&#039;s RIVA 128 download pages, but the readme file calls it &amp;quot;GRADD Driver for Nvidia NV4&amp;quot; (not even using a product name), despite being last modified on 25 February 1999.&lt;br /&gt;
|-&lt;br /&gt;
| 21 March 1999 || 3.37 || Windows 9x, NT 4.0, 2000 (beta) || Final driver for Windows 9x, only Win2000 driver with OpenGL support. Even though the driver was compiled against Windows 2000 build 1996, it works fine on the final Windows 2000, including Service Pack 4&lt;br /&gt;
|- &lt;br /&gt;
| 11 May 1999 || 3.41b || Windows NT 4.0 || Final NT 4.0 driver&lt;br /&gt;
|- &lt;br /&gt;
| 28 October 1999 || 3.43 || Windows 2000 || 2D-only driver bundled with Windows 2000. Still has OpenGL hooks; untested&lt;br /&gt;
|- &lt;br /&gt;
| 31 July 2001 || 3.43 || Windows XP || 2D-only driver bundled with Windows XP. Still has OpenGL hooks; tested, does not work on default, crashes late in OpenGL initialisation process (may be patchable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== NV4 and later shared drivers ===&lt;br /&gt;
&lt;br /&gt;
0.32 first released version, 0.20 first sent to STB (Source archive is dated July 14, 1998)&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
:{{note|a|}}These issues in the relationship eventually led to the infamous &amp;quot;Fuck you, Nvidia!&amp;quot; comment and middle finger by Linus Torvalds at a 2012 event.&lt;br /&gt;
:{{note|b|}}They are officially marked as being for 3.11, but unless they depend on the 32-bit File Access feature backported from Windows 95, or any other feature that was exclusively added in WfW 3.11, there should be no reason why they cannot work on any other version of Windows 3.1, such as the original 1992 release, standalone Windows 3.11, or Windows for Workgroups 3.1: however, the drivers have not been tested with these older versions, so the compatibility, or lack thereof, is unknown.&lt;br /&gt;
:{{note|c|}}Initially 2D only, then OpenGL only: no D3D.&lt;br /&gt;
:{{note|d|}}Initially OpenGL only, later Direct3D support was added. Beta only for NV3.&lt;br /&gt;
:{{note|e|}}2D only officially for NV3, although hooks to load the OpenGL drivers still exist; they do not load using the Windows 2000 drivers, but they can likely be patched to work.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=Software&amp;diff=1742</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=Software&amp;diff=1742"/>
		<updated>2026-09-05T20:14:13Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nvidia has produced many pieces of &#039;&#039;&#039;software&#039;&#039;&#039; for users of their graphics cards. The main piece of software required is their drivers: they are required to make the GPU function at all, beyond the very basic common level of 2D-only acceleration and software-rendered 3D (VGA, VESA, or Windows Advanced Rasterisation Platform - WARP in Windows 7 and later) level of compatibility assured for all forms of graphical hardware; any Nvidia-specific features require their drivers to be installed on the system. The first ever variant of the Nvidia driver set was the series of VxDs running under Windows 3.x that allowed the [[NV0]] to be simulated. There have historically been several sets of drivers for Nvidia hardware: initially, the first was Nvidia&#039;s drivers, based on their [[Resource Manager]], which started development in 1994, and the very early versions of the NT miniport driver which programmed the hardware directly rather than through the RM, as a stopgap measure until the real Resource Manager was ported over to NT, starting with the [[NV1]], in roughly 1996. There was also a semi-official, very basic &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; driver set for Linux, which was not judged sufficient for use of the card under Linux, was updated infrequently with few features and Nvidia required to be partially obfuscated (and was generally hard to deal with as a company){{ref|a}}: several driver projects started to provide a more complete emulation, with &amp;lt;code&amp;gt;nouveau&amp;lt;/code&amp;gt;, under the purview of the wider freedesktop project, being the most popular and long-lasting, although Utah GLX (which successfully achieved 3D acceleration on the Riva 128 at least) and RivaTV, aimed at using the TV-out functionality and [[PME|Mediaport]] of these cards, also existed; &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; was also ported to BeOS and several other operating systems to allow Nvidia GPUs to be used on their operating systems. Later on, most of these projects experienced sharp declines in development activity, or were discontinued entirely as Nvidia ported their full Resource Manager drivers to Linux and eventually partially open-sourced them, although parts of it were moved to the firmware running on modern nVidia GPUs&#039; on-die [[Falcon]] and [[RISC-V]] cores prior to this.&lt;br /&gt;
&lt;br /&gt;
Nvidia has also provided both industry-standard APIs (such as [[DirectX]], [[OpenGL]] and [[Vulkan]]) several custom APIs for their products for both graphics and non-graphics related applications, such as Cg (C for graphics) starting on the [[NV20]], and for GPGPU applications, CUDA (Compute Unified Device Architecture) starting on the [[G80]]. However, these are largely implemented as Resource Manager clients or otherwise as parts of their drivers: for example, the game physics API PhysX, the Nintendo Switch graphics API &amp;lt;code&amp;gt;nvn&amp;lt;/code&amp;gt; and its Switch 2 successor &amp;lt;code&amp;gt;nvn2&amp;lt;/code&amp;gt;, the &#039;&#039;extremely&#039;&#039; confusingly named &amp;quot;NVIDIA Riva&amp;quot; AI speech generation API, NeMo for generative AI, RAPIDS for data science, CUDA-X for general AI libraries, and many more are all implemented in a similar fashion.&lt;br /&gt;
&lt;br /&gt;
Presumably, the [[NV2]] did not use any form of drivers, or used a light vendor-supplied library (similar to the &amp;quot;OS&amp;quot; library for the Nintendo 64, per Goddard) and was intended to be programmed directly by the game developer while running on [[Saturn V08]], as was the style for consoles at that time.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
While Nvidia has changed their drivers&#039; design over time, at least for early models there are two pretty basic setups for the &amp;quot;full fat&amp;quot; Nvidia Resource Manager-based drivers, one which was used for [[NV1]] through [[NV3]] and a new design which was used starting with [[NV4]] (although there are obviously variations of both). &lt;br /&gt;
&lt;br /&gt;
In all cases, the [[Resource Manager]] implements the actual interaction with the hardware and is intended to abstract away the differences between different generations of Nvidia architecture and to provide a consistent interface for functionality implemented in both hardware and software. The RM initialises, controls and shuts down (if required) the graphics hardware; multiple types of APIs are provided in order to interact with the RM. The first model is the OS-provided IOCTL interface, which can be used for basic functionality (this model is used by Nvidia&#039;s GDI drivers). A second model is calling into APIs exposed by the Resource Manager through the NVAPI interface. In order to achieve this, a single function is exported a la Quake-based game engine, that takes a single parameter, which is a very large C struct with many function pointers for different functions, typically implemented via the mechanism of a stub DLL that forwards each function to the Resource Manager. This implementation makes the application a &amp;quot;client&amp;quot; of the Resource Manager. The implementation varies by driver version and intended operating system. For instance, in the case of NV3 drivers for Windows 9x, the 32-bit API &amp;lt;code&amp;gt;NV3API.DLL&amp;lt;/code&amp;gt; thunks into a 16-bit dll &amp;lt;code&amp;gt;NV3SYS.DLL&amp;lt;/code&amp;gt; by passing a large array of function pointers (which also exports, via traditional DLL exporting, the same API but for 16-bit apps) which then &#039;&#039;calls back into the 32-bit Resource Manager VxD&#039;&#039; to perform API calls. The interface to the GPU is implemented via a pseudo-C++ class system; classes are indicated by object IDs, with a large array of class structures providing &amp;quot;methods&amp;quot; - methods are assigned an ID, corresponding to the offset within a DMA channel that is written to in order to execute the method on hardware. There is no requirement for a method to have a unique offset. Some classes are [[PFIFO#Object submission|implemented in hardware]] using the &amp;lt;code&amp;gt;grHWMthd&amp;lt;/code&amp;gt; function, while others are implemented in software; if a class is implemented in hardware, it is simply stubbed out in software. Software methods are implemented by setting bit 23 of an object&#039;s [[NV3 RAMIN#Object context|context]] to 1 during submission. If this is set, the GPU will raise an interrupt and the graphical operation will be performed by sotware. This approach provided, and presumably continues to provide (since it is still used!) a range of benefits that other companies did not enjoy at the time. It allows rapid iteration (since support for new GPUs can be implemented without breaking software, especially as most Resource Manager clients), allows features that do not work or are not available in hardware to be easily emulated in software at a performance cost, allows easy support of any new graphical APIs that may appear (just write another RM client), and additionally allows hardware resources to be abstracted away from clients: for instance, there are only 8 channels in both NV1 and NV3 hardware, but this is virtualised away by RM to allow opening up to 128 channels. &lt;br /&gt;
&lt;br /&gt;
=== NV1 to NV3 ===&lt;br /&gt;
From [[NV1]] to [[NV3]] the Resource Manager is unique for each graphics card - it is a different branch in Nvidia&#039;s source control system. This is not shared for all parts of the drivers; the GDI drivers definitely are not set up like this, leading to NV3 resource managers with GDI drivers that support NV4 (starting around February 1998, several months before the release of the Riva TNT). It is unclear if this fact was realised at the time; it seems that it may have been discovered by the era of the [[NV15]] architecture.&lt;br /&gt;
&lt;br /&gt;
=== NV4 ===&lt;br /&gt;
&lt;br /&gt;
== Supported platforms ==&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; These are platforms that were supported for any length of time, not platforms that are currently supported, or which GPUs they can be used with.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Supported operating systems&lt;br /&gt;
|-&lt;br /&gt;
! Operating system !! Driver supported&lt;br /&gt;
|-&lt;br /&gt;
| Windows for Workgroups 3.11 || Full drivers{{ref|b}} &lt;br /&gt;
|-&lt;br /&gt;
| Windows 95 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 98/98SE || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows ME || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows NT 3.51 || Miniport driver only&lt;br /&gt;
|-&lt;br /&gt;
| Windows NT 4.0 || Miniport driver, later full Resource Manager-based driver{{ref|c}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows 2000 || Full drivers{{ref|d}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows XP || Full drivers{{ref|e}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows Vista || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 7 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 8 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 8.1 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 10 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 11 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Xbox (original) || Modified full drivers (&amp;quot;minix&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| macOS || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Android || Full drivers, also &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Linux || Initially &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; or open-source project only, later full drivers.&lt;br /&gt;
|-&lt;br /&gt;
| BeOS, Haiku, EOS, AsusWRT (linux-based) || These OSes support the &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; driver only&lt;br /&gt;
|-&lt;br /&gt;
| OS/2 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| PlayStation 3 (CellOS) || Custom&lt;br /&gt;
|-&lt;br /&gt;
| Horizon OS (Switch) || Full drivers (with custom API)&lt;br /&gt;
|-&lt;br /&gt;
| Horizon OS (Switch 2) || Full drivers (with custom API)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Known driver versions ==&lt;br /&gt;
&lt;br /&gt;
Each component of Nvidia&#039;s drivers has an official description (it used to be used in their control panel extension to list each driver file); for example &amp;quot;Resource Manager&amp;quot; or &amp;quot;OpenGL ICD&amp;quot;. Initially, these were simply described as being for &amp;quot;Nvidia&amp;quot; (e.g. &amp;quot;NVidia Resource Manager, Version 2.00 Beta&amp;quot;), later on the file descriptions were changed to be named after the specific GPU supported, e.g. &amp;quot;RIVA 128 Direct Draw/Direct 3D Driver, Version x.xx&amp;quot; or &amp;quot;Riva TNT Display Driver, Version x.xx&amp;quot;, however later when Nvidia refactored their GPU drivers to support multiple models of graphics hardware, they changed the description to simply read &amp;quot;NVIDIA Compatible&amp;quot;. This is still the case as of April 2025. &lt;br /&gt;
&lt;br /&gt;
There were certainly many other versions, if you have any other version, please contact me: you can check by checking the file properties of any file in the driver set.&lt;br /&gt;
&lt;br /&gt;
=== NV1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Known driver versions&lt;br /&gt;
|-&lt;br /&gt;
! Date of driver files !! Version !! Known platforms&lt;br /&gt;
|-&lt;br /&gt;
| 25 October 1995 || 1.20 || MS-DOS, Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 2 February 1996 || 2.00 Beta || Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 11 February 1996 || FCS 2.00 || MS-DOS (CEK 1.22); Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 23 September 1996; some files rebuilt 19 March 1997 || 2.30 || Windows 95 &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== NV2 / NV3 QTM ===&lt;br /&gt;
There are no known drivers for [[NV2]] or [[NV3 (QTM)]]. Traditional drivers (although software certainly existed) for the former are not likely as it was intended to be used as part of a game, but driver development may have started for the latter.&lt;br /&gt;
&lt;br /&gt;
=== NV3 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Certain OEM-specific drivers may be missing; they are usually almost identical to reference driver versions, but may have certain minor feature differences. Few of these have notable changes (e.g. Diamond adding their InControl Tools, or the STB TwinView two/four head cards with custom &amp;quot;mp&amp;quot; functions to switch between different chips on the board - it is not clear if STB or Nvidia made these modifications). Additionally, the driver versions included in Windows 98 beta releases are not listed (they take the version of the Windows SDK they were compiled with, for instance &amp;lt;code&amp;gt;4.10.1635&amp;lt;/code&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
Early drivers for Windows 9x, the drivers included with Windows 98 pre-release builds and almost all NT 4.0 and 2000 drivers for NV3-based architectures have COFF or VxD symbols (depending on platform) for the resource manager and display driver, although not for the Direct3D or OpenGL drivers. Nvidia seems to have had issues turning off symbol generation, as at some point they wrote a header file that redefined every function name as &amp;lt;code&amp;gt;__nv_rmsym_\&amp;lt;number\&amp;gt;&amp;lt;/code&amp;gt; as some strange way of attempting to obfuscate their function names.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Known driver versions&lt;br /&gt;
|-&lt;br /&gt;
! Date of driver files !! Version !! Known platforms !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| December 1996 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| May 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| June 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| July 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 17 July 1997 || Unnumbered pre-release || Windows NT 4.0 || Accidentally released by STB Systems. Has NV1 support in display driver (even though NT was never officially supported on NV1), and only supports revision A of NV3.&lt;br /&gt;
|-&lt;br /&gt;
| 8 August 1997 || 0.73b || Windows NT 3.51, 4.0 || Pre-release&lt;br /&gt;
|-&lt;br /&gt;
| 15 August 1997 || 0.75 || Windows NT 4.0 || Possible launch drivers&lt;br /&gt;
|- &lt;br /&gt;
| 27 August 1997 || 0.75 || Windows NT 3.51 || No resource manager&lt;br /&gt;
|- &lt;br /&gt;
| August 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 1 September 1997 || 0.77 || Windows 9x || Possible launch drivers&lt;br /&gt;
|-&lt;br /&gt;
| 23 September 1997 (STB Systems) || 1.16 || Windows 9x || D3D drivers compiled with debug messages left on. PDB file names refer to STB products proving STB Systems had driver source code access (they were the first to license the Riva 128) and most likely from Nvidia&#039;s unstable branch. STB was later bought by 3dfx in 1998, so they may have been able to obtain access to Nvidia&#039;s driver sources?&lt;br /&gt;
|-&lt;br /&gt;
| 29 September 1997 || 1.04 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1997 || 1.05 || Windows 3.1 ||&lt;br /&gt;
|-&lt;br /&gt;
| 22 October 1997 || 1.06 || Windows 9x || &lt;br /&gt;
|-&lt;br /&gt;
| October 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 2 November 1997 || 1.07c || Windows NT 4.0 || &lt;br /&gt;
|-&lt;br /&gt;
| 14 November 1997 || 1.21 || Windows 9x || OpenGL Alpha 1 release (&amp;lt;code&amp;gt;nv3quake.zip&amp;lt;/code&amp;gt;). Also the Alpha 2 release with an updated OpenGL ICD from 2 December 1997&lt;br /&gt;
|-&lt;br /&gt;
| November 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 10 December 1997 || 1.11 || Windows 9x || Yes, later than 1.21. The 1.21 was from a development branch for OpenGL support.&lt;br /&gt;
|-&lt;br /&gt;
| 15 January 1998 || 1.27 || Windows 9x || STB source drop (available; Resource Manager + Win9x GDI + D3D + OpenGL + NT4 GDI + NT4 MCD)&lt;br /&gt;
|-&lt;br /&gt;
| 31 January 1998 || 1.28 || Windows 9x || OpenGL Beta 1 release. &lt;br /&gt;
|- &lt;br /&gt;
| 1 February 1998 || 1.29 || Windows NT 4.0 || First driver with NV4-related functions in display driver (very basic support, simply initialisation and shutdown, to start with)&lt;br /&gt;
|-&lt;br /&gt;
| 26 February 1998 || 1.36 || Windows 9x || STB source drop (available; only Resource Manager and Win9x GDI drivers updated)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.41 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.42 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.43 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.45 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46a || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46b || Windows 9x || STB source drop (mostly lost, partial Resman)&lt;br /&gt;
|-&lt;br /&gt;
| 9 April 1998 || 1.44 || Windows 9x ||&lt;br /&gt;
|-&lt;br /&gt;
| 17 April 1998 || 1.50 || Windows 9x || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 22 April 1998 || 1.50b || Windows 9x, NT 4.0 || Source code available (updated OpenGL + Win9x GDI)&lt;br /&gt;
|-&lt;br /&gt;
| 25 April 1998 || 1.50c || Windows 9x, NT 4.0 || Source code available (updated OpenGL + Win9x GDI)&lt;br /&gt;
|-&lt;br /&gt;
| 29 April 1998 || 1.50e || Windows 9x, Windows NT 4.0 || Source code availablee (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 5 May 1998 || 1.50h || Windows 9x, Windows NT 4.0 || Updated Win9x GDI + Direct3D from 1.50e - nvidia readme: &amp;quot;remove int 3&#039;s UGGHHHHH(the person that did this has been fired)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 5 May 1998 || 1.50k || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 4 August 1998 || 1.62 || Windows NT 4.0 || &lt;br /&gt;
|-&lt;br /&gt;
| 29 April 1998 || 1.50e || Windows 9x, Windows NT 4.0 || Source code availabee (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 14 July 1998 || 1.57 || Windows 9x, Windows NT 4.0 || Early multimonitor support for STB MVP&lt;br /&gt;
|-&lt;br /&gt;
| 23 July 1998 || 1.59 || Windows 9x, Windows NT 4.0 || Early multimonitor support for STB MVP&lt;br /&gt;
|-&lt;br /&gt;
| 5 August 1998 || 1.72a || Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 23 August 1998 || 1.74 || Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D) &lt;br /&gt;
|-&lt;br /&gt;
| 27 August 1998 || 1.27 || Windows 3.1 || Final Win3.1 drivers; probably different branch; some files call themselves &amp;quot;RIVA TNT Resource Manager, Version 0.11&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| 28 August 1998 || 1.75 || Windows 9x || nVIDIA SDK 0.81 &lt;br /&gt;
|- &lt;br /&gt;
| 14 September 1998 || 2.77 || Windows 9x, Windows NT 4.0 || NT: Display driver output name changed from &amp;lt;code&amp;gt;nv_disp&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;nv3_disp&amp;lt;/code&amp;gt; (probably due to NV4 driver development), also source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + VBIOS) &lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1998 || 2.79 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + NV3Tweak) &lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1998 || 2.80 || Windows 9x, Windows NT 4.0 || nVIDIA SDK 0.83&lt;br /&gt;
|-&lt;br /&gt;
| 22 October 1998 || 2.83 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + NV3Tweak) &lt;br /&gt;
|-&lt;br /&gt;
| 9 November 1998 || 3.03 || Windows 9x ||&lt;br /&gt;
|- &lt;br /&gt;
| 10 December 1998 || 1.30, 2.79 (Diamond branch) || Windows 9x || Most likely a branch maintained by Diamond Multimedia for their &amp;quot;Viper&amp;quot; cards, released 21 January 1999 &lt;br /&gt;
|-&lt;br /&gt;
| 14 December 1998 (source) / 7 January 1999 (binary) || 3.12 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + VBIOS) &lt;br /&gt;
|- &lt;br /&gt;
| 1 February 1999 || 3.22 || Windows 9x ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 February 1999 || 3.23 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 9 February 1999 || 3.25 || Windows 9x || &lt;br /&gt;
|-&lt;br /&gt;
| 18 February 1999 || 3.27 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3 March 1999 || Unknown version || OS/2 (Warp 3 Fixpak35+ &amp;amp; 4 Fixpak5+) || Very sloppily done. Batch file (well, Rexx script) setup. Unclear what GPU is even supported: it was posted on Nvidia&#039;s RIVA 128 download pages, but the readme file calls it &amp;quot;GRADD Driver for Nvidia NV4&amp;quot; (not even using a product name), despite being last modified on 25 February 1999.&lt;br /&gt;
|-&lt;br /&gt;
| 21 March 1999 || 3.37 || Windows 9x, NT 4.0, 2000 (beta) || Final driver for Windows 9x, only Win2000 driver with OpenGL support. Even though the driver was compiled against Windows 2000 build 1996, it works fine on the final Windows 2000, including Service Pack 4&lt;br /&gt;
|- &lt;br /&gt;
| 11 May 1999 || 3.41b || Windows NT 4.0 || Final NT 4.0 driver&lt;br /&gt;
|- &lt;br /&gt;
| 28 October 1999 || 3.43 || Windows 2000 || 2D-only driver bundled with Windows 2000. Still has OpenGL hooks; untested&lt;br /&gt;
|- &lt;br /&gt;
| 31 July 2001 || 3.43 || Windows XP || 2D-only driver bundled with Windows XP. Still has OpenGL hooks; tested, does not work on default, crashes late in OpenGL initialisation process (may be patchable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== NV4 and later shared drivers ===&lt;br /&gt;
&lt;br /&gt;
0.32 first released version, 0.20 first sent to STB (Source archive is dated July 14, 1998)&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
:{{note|a|}}These issues in the relationship eventually led to the infamous &amp;quot;Fuck you, Nvidia!&amp;quot; comment and middle finger by Linus Torvalds at a 2012 event.&lt;br /&gt;
:{{note|b|}}They are officially marked as being for 3.11, but unless they depend on the 32-bit File Access feature backported from Windows 95, or any other feature that was exclusively added in WfW 3.11, there should be no reason why they cannot work on any other version of Windows 3.1, such as the original 1992 release, standalone Windows 3.11, or Windows for Workgroups 3.1: however, the drivers have not been tested with these older versions, so the compatibility, or lack thereof, is unknown.&lt;br /&gt;
:{{note|c|}}Initially 2D only, then OpenGL only: no D3D.&lt;br /&gt;
:{{note|d|}}Initially OpenGL only, later Direct3D support was added. Beta only for NV3.&lt;br /&gt;
:{{note|e|}}2D only officially for NV3, although hooks to load the OpenGL drivers still exist; they do not load using the Windows 2000 drivers, but they can likely be patched to work.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=Software&amp;diff=1741</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=Software&amp;diff=1741"/>
		<updated>2026-09-05T20:14:00Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nvidia has produced many pieces of &#039;&#039;&#039;software&#039;&#039;&#039; for users of their graphics cards. The main piece of software required is their drivers: they are required to make the GPU function at all, beyond the very basic common level of 2D-only acceleration and software-rendered 3D (VGA, VESA, or Windows Advanced Rasterisation Platform - WARP in Windows 7 and later) level of compatibility assured for all forms of graphical hardware; any Nvidia-specific features require their drivers to be installed on the system. The first ever variant of the Nvidia driver set was the series of VxDs running under Windows 3.x that allowed the [[NV0]] to be simulated. There have historically been several sets of drivers for Nvidia hardware: initially, the first was Nvidia&#039;s drivers, based on their [[Resource Manager]], which started development in 1994, and the very early versions of the NT miniport driver which programmed the hardware directly rather than through the RM, as a stopgap measure until the real Resource Manager was ported over to NT, starting with the [[NV1]], in roughly 1996. There was also a semi-official, very basic &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; driver set for Linux, which was not judged sufficient for use of the card under Linux, was updated infrequently with few features and Nvidia required to be partially obfuscated (and was generally hard to deal with as a company){{ref|a}}: several driver projects started to provide a more complete emulation, with &amp;lt;code&amp;gt;nouveau&amp;lt;/code&amp;gt;, under the purview of the wider freedesktop project, being the most popular and long-lasting, although Utah GLX (which successfully achieved 3D acceleration on the Riva 128 at least) and RivaTV, aimed at using the TV-out functionality and [[PME|Mediaport]] of these cards, also existed; &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; was also ported to BeOS and several other operating systems to allow Nvidia GPUs to be used on their operating systems. Later on, most of these projects experienced sharp declines in development activity, or were discontinued entirely as Nvidia ported their full Resource Manager drivers to Linux and eventually partially open-sourced them, although parts of it were moved to the firmware running on modern nVidia GPUs&#039; on-die [[Falcon]] and [[RISC-V]] cores prior to this.&lt;br /&gt;
&lt;br /&gt;
Nvidia has also provided both industry-standard APIs (such as [[DirectX]], [[OpenGL]] and [[Vulkan]]) several custom APIs for their products for both graphics and non-graphics related applications, such as Cg (C for graphics) starting on the [[NV20]], and for GPGPU applications, CUDA (Compute Unified Device Architecture) starting on the [[G80]]. However, these are largely implemented as Resource Manager clients or otherwise as parts of their drivers: for example, the game physics API PhysX, the Nintendo Switch graphics API &amp;lt;code&amp;gt;nvn&amp;lt;/code&amp;gt; and its Switch 2 successor &amp;lt;code&amp;gt;nvn2&amp;lt;/code&amp;gt;, the &#039;&#039;extremely&#039;&#039; confusingly named &amp;quot;NVIDIA Riva&amp;quot; AI speech generation API, NeMo for generative AI, RAPIDS for data science, CUDA-X for general AI libraries, and many more are all implemented in a similar fashion.&lt;br /&gt;
&lt;br /&gt;
Presumably, the [[NV2]] did not use any form of drivers, or used a light vendor-supplied library (similar to the &amp;quot;OS&amp;quot; library for the Nintendo 64, per Goddard) and was intended to be programmed directly by the game developer while running on [[Saturn V08]], as was the style for consoles at that time.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
While Nvidia has changed their drivers&#039; design over time, at least for early models there are two pretty basic setups for the &amp;quot;full fat&amp;quot; Nvidia Resource Manager-based drivers, one which was used for [[NV1]] through [[NV3]] and a new design which was used starting with [[NV4]] (although there are obviously variations of both). &lt;br /&gt;
&lt;br /&gt;
In all cases, the [[Resource Manager]] implements the actual interaction with the hardware and is intended to abstract away the differences between different generations of Nvidia architecture and to provide a consistent interface for functionality implemented in both hardware and software. The RM initialises, controls and shuts down (if required) the graphics hardware; multiple types of APIs are provided in order to interact with the RM. The first model is the OS-provided IOCTL interface, which can be used for basic functionality (this model is used by Nvidia&#039;s GDI drivers). A second model is calling into APIs exposed by the Resource Manager through the NVAPI interface. In order to achieve this, a single function is exported a la Quake-based game engine, that takes a single parameter, which is a very large C struct with many function pointers for different functions, typically implemented via the mechanism of a stub DLL that forwards each function to the Resource Manager. This implementation makes the application a &amp;quot;client&amp;quot; of the Resource Manager. The implementation varies by driver version and intended operating system. For instance, in the case of NV3 drivers for Windows 9x, the 32-bit API &amp;lt;code&amp;gt;NV3API.DLL&amp;lt;/code&amp;gt; thunks into a 16-bit dll &amp;lt;code&amp;gt;NV3SYS.DLL&amp;lt;/code&amp;gt; by passing a large array of function pointers (which also exports, via traditional DLL exporting, the same API but for 16-bit apps) which then &#039;&#039;calls back into the 32-bit Resource Manager VxD&#039;&#039; to perform API calls. The interface to the GPU is implemented via a pseudo-C++ class system; classes are indicated by object IDs, with a large array of class structures providing &amp;quot;methods&amp;quot; - methods are assigned an ID, corresponding to the offset within a DMA channel that is written to in order to execute the method on hardware. There is no requirement for a method to have a unique offset. Some classes are [[PFIFO#Object submission|implemented in hardware]] using the &amp;lt;code&amp;gt;grHWMthd&amp;lt;/code&amp;gt; function, while others are implemented in software; if a class is implemented in hardware, it is simply stubbed out in software. Software methods are implemented by setting bit 23 of an object&#039;s [[NV3 RAMIN#Object context|context]] to 1 during submission. If this is set, the GPU will raise an interrupt and the graphical operation will be performed by sotware. This approach provided, and presumably continues to provide (since it is still used!) a range of benefits that other companies did not enjoy at the time. It allows rapid iteration (since support for new GPUs can be implemented without breaking software, especially as most Resource Manager clients), allows features that do not work or are not available in hardware to be easily emulated in software at a performance cost, allows easy support of any new graphical APIs that may appear (just write another RM client), and additionally allows hardware resources to be abstracted away from clients: for instance, there are only 8 channels in both NV1 and NV3 hardware, but this is virtualised away by RM to allow opening up to 128 channels. &lt;br /&gt;
&lt;br /&gt;
=== NV1 to NV3 ===&lt;br /&gt;
From [[NV1]] to [[NV3]] the Resource Manager is unique for each graphics card - it is a different branch in Nvidia&#039;s source control system. This is not shared for all parts of the drivers; the GDI drivers definitely are not set up like this, leading to NV3 resource managers with GDI drivers that support NV4 (starting around February 1998, several months before the release of the Riva TNT). It is unclear if this fact was realised at the time; it seems that it may have been discovered by the era of the [[NV15]] architecture.&lt;br /&gt;
&lt;br /&gt;
=== NV4 ===&lt;br /&gt;
&lt;br /&gt;
== Supported platforms ==&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; These are platforms that were supported for any length of time, not platforms that are currently supported, or which GPUs they can be used with.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Supported operating systems&lt;br /&gt;
|-&lt;br /&gt;
! Operating system !! Driver supported&lt;br /&gt;
|-&lt;br /&gt;
| Windows for Workgroups 3.11 || Full drivers{{ref|b}} &lt;br /&gt;
|-&lt;br /&gt;
| Windows 95 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 98/98SE || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows ME || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows NT 3.51 || Miniport driver only&lt;br /&gt;
|-&lt;br /&gt;
| Windows NT 4.0 || Miniport driver, later full Resource Manager-based driver{{ref|c}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows 2000 || Full drivers{{ref|d}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows XP || Full drivers{{ref|e}}&lt;br /&gt;
|-&lt;br /&gt;
| Windows Vista || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 7 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 8 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 8.1 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 10 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Windows 11 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Xbox (original) || Modified full drivers (&amp;quot;minix&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| macOS || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| Android || Full drivers, also &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Linux || Initially &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; or open-source project only, later full drivers.&lt;br /&gt;
|-&lt;br /&gt;
| BeOS, Haiku, EOS, AsusWRT (linux-based) || These OSes support the &amp;lt;code&amp;gt;nv&amp;lt;/code&amp;gt; driver only&lt;br /&gt;
|-&lt;br /&gt;
| OS/2 || Full drivers&lt;br /&gt;
|-&lt;br /&gt;
| PlayStation 3 (CellOS) || Custom&lt;br /&gt;
|-&lt;br /&gt;
| Horizon OS (Switch) || Full drivers (with custom API)&lt;br /&gt;
|-&lt;br /&gt;
| Horizon OS (Switch 2) || Full drivers (with custom API)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Known driver versions ==&lt;br /&gt;
&lt;br /&gt;
Each component of Nvidia&#039;s drivers has an official description (it used to be used in their control panel extension to list each driver file); for example &amp;quot;Resource Manager&amp;quot; or &amp;quot;OpenGL ICD&amp;quot;. Initially, these were simply described as being for &amp;quot;Nvidia&amp;quot; (e.g. &amp;quot;NVidia Resource Manager, Version 2.00 Beta&amp;quot;), later on the file descriptions were changed to be named after the specific GPU supported, e.g. &amp;quot;RIVA 128 Direct Draw/Direct 3D Driver, Version x.xx&amp;quot; or &amp;quot;Riva TNT Display Driver, Version x.xx&amp;quot;, however later when Nvidia refactored their GPU drivers to support multiple models of graphics hardware, they changed the description to simply read &amp;quot;NVIDIA Compatible&amp;quot;. This is still the case as of April 2025. &lt;br /&gt;
&lt;br /&gt;
There were certainly many other versions, if you have any other version, please contact me: you can check by checking the file properties of any file in the driver set.&lt;br /&gt;
&lt;br /&gt;
=== NV1 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Known driver versions&lt;br /&gt;
|-&lt;br /&gt;
! Date of driver files !! Version !! Known platforms&lt;br /&gt;
|-&lt;br /&gt;
| 25 October 1995 || 1.20 || MS-DOS, Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 2 February 1996 || 2.00 Beta || Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 11 February 1996 || FCS 2.00 || MS-DOS (CEK 1.22); Windows 95&lt;br /&gt;
|-&lt;br /&gt;
| 23 September 1996; some files rebuilt 19 March 1997 || 2.30 || Windows 95 &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== NV2 / NV3 QTM ===&lt;br /&gt;
There are no known drivers for [[NV2]] or [[NV3 (QTM)]]. Traditional drivers (although software certainly existed) for the former are not likely as it was intended to be used as part of a game, but driver development may have started for the latter.&lt;br /&gt;
&lt;br /&gt;
=== NV3 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Certain OEM-specific drivers may be missing; they are usually almost identical to reference driver versions, but may have certain minor feature differences. Few of these have notable changes (e.g. Diamond adding their InControl Tools, or the STB TwinView two/four head cards with custom &amp;quot;mp&amp;quot; functions to switch between different chips on the board - it is not clear if STB or Nvidia made these modifications). Additionally, the driver versions included in Windows 98 beta releases are not listed (they take the version of the Windows SDK they were compiled with, for instance &amp;lt;code&amp;gt;4.10.1635&amp;lt;/code&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
Early drivers for Windows 9x, the drivers included with Windows 98 pre-release builds and almost all NT 4.0 and 2000 drivers for NV3-based architectures have COFF or VxD symbols (depending on platform) for the resource manager and display driver, although not for the Direct3D or OpenGL drivers. Nvidia seems to have had issues turning off symbol generation, as at some point they wrote a header file that redefined every function name as &amp;lt;code&amp;gt;__nv_rmsym_\&amp;lt;number\&amp;gt;&amp;lt;/code&amp;gt; as some strange way of attempting to obfuscate their function names.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Known driver versions&lt;br /&gt;
|-&lt;br /&gt;
! Date of driver files !! Version !! Known platforms !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| December 1996 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| April 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| May 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| June 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| July 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 17 July 1997 || Unnumbered pre-release || Windows NT 4.0 || Accidentally released by STB Systems. Has NV1 support in display driver (even though NT was never officially supported on NV1), and only supports revision A of NV3.&lt;br /&gt;
|-&lt;br /&gt;
| 8 August 1997 || 0.73b || Windows NT 3.51, 4.0 || Pre-release&lt;br /&gt;
|-&lt;br /&gt;
| 15 August 1997 || 0.75 || Windows NT 4.0 || Possible launch drivers&lt;br /&gt;
|- &lt;br /&gt;
| 27 August 1997 || 0.75 || Windows NT 3.51 || No resource manager&lt;br /&gt;
|- &lt;br /&gt;
| August 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 1 September 1997 || 0.77 || Windows 9x || Possible launch drivers&lt;br /&gt;
|-&lt;br /&gt;
| 23 September 1997 (STB Systems) || 1.16 || Windows 9x || D3D drivers compiled with debug messages left on. PDB file names refer to STB products proving STB Systems had driver source code access (they were the first to license the Riva 128) and most likely from Nvidia&#039;s unstable branch. STB was later bought by 3dfx in 1998, so they may have been able to obtain access to Nvidia&#039;s driver sources?&lt;br /&gt;
|-&lt;br /&gt;
| 29 September 1997 || 1.04 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1997 || 1.05 || Windows 3.1 ||&lt;br /&gt;
|-&lt;br /&gt;
| 22 October 1997 || 1.06 || Windows 9x || &lt;br /&gt;
|-&lt;br /&gt;
| October 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 2 November 1997 || 1.07c || Windows NT 4.0 || &lt;br /&gt;
|-&lt;br /&gt;
| 14 November 1997 || 1.21 || Windows 9x || OpenGL Alpha 1 release (&amp;lt;code&amp;gt;nv3quake.zip&amp;lt;/code&amp;gt;). Also the Alpha 2 release with an updated OpenGL ICD from 2 December 1997&lt;br /&gt;
|-&lt;br /&gt;
| November 1997 || ??? || Lost STB source drop(s), only folder name remains&lt;br /&gt;
|-&lt;br /&gt;
| 10 December 1997 || 1.11 || Windows 9x || Yes, later than 1.21. The 1.21 was from a development branch for OpenGL support.&lt;br /&gt;
|-&lt;br /&gt;
| 15 January 1998 || 1.27 || Windows 9x || STB source drop (available; Resource Manager + Win9x GDI + D3D + OpenGL + NT4 GDI + NT4 MCD)&lt;br /&gt;
|-&lt;br /&gt;
| 31 January 1998 || 1.28 || Windows 9x || OpenGL Beta 1 release. &lt;br /&gt;
|- &lt;br /&gt;
| 1 February 1998 || 1.29 || Windows NT 4.0 || First driver with NV4-related functions in display driver (very basic support, simply initialisation and shutdown, to start with)&lt;br /&gt;
|-&lt;br /&gt;
| 26 February 1998 || 1.36 || Windows 9x || STB source drop (available; only Resource Manager and Win9x GDI drivers updated)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.41 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.42 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.43 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.45 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46 || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46a || Windows 9x || STB source drop (lost)&lt;br /&gt;
|-&lt;br /&gt;
| April 1998 || 1.46b || Windows 9x || STB source drop (mostly lost, partial Resman)&lt;br /&gt;
|-&lt;br /&gt;
| 9 April 1998 || 1.44 || Windows 9x ||&lt;br /&gt;
|-&lt;br /&gt;
| 17 April 1998 || 1.50 || Windows 9x || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 22 April 1998 || 1.50b || Windows 9x, NT 4.0 || Source code available (updated OpenGL + Win9x GDI)&lt;br /&gt;
|-&lt;br /&gt;
| 25 April 1998 || 1.50c || Windows 9x, NT 4.0 || Source code available (updated OpenGL + Win9x GDI)&lt;br /&gt;
|-&lt;br /&gt;
| 29 April 1998 || 1.50e || Windows 9x, Windows NT 4.0 || Source code availablee (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 5 May 1998 || 1.50h || Windows 9x, Windows NT 4.0 || Updated Win9x GDI + Direct3D from 1.50e - nvidia readme: &amp;quot;remove int 3&#039;s UGGHHHHH(the person that did this has been fired)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 5 May 1998 || 1.50k || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 4 August 1998 || 1.62 || Windows NT 4.0 || &lt;br /&gt;
|-&lt;br /&gt;
| 29 April 1998 || 1.50e || Windows 9x, Windows NT 4.0 || Source code availabee (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 14 July 1998 || 1.57 || Windows 9x, Windows NT 4.0 || Early multimonitor support for STB MVP&lt;br /&gt;
|-&lt;br /&gt;
| 23 July 1998 || 1.59 || Windows 9x, Windows NT 4.0 || Early multimonitor support for STB MVP&lt;br /&gt;
|-&lt;br /&gt;
| 5 August 1998 || 1.72a || Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D)&lt;br /&gt;
|-&lt;br /&gt;
| 23 August 1998 || 1.74 || Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D) &lt;br /&gt;
|-&lt;br /&gt;
| 27 August 1998 || 1.27 || Windows 3.1 || Final Win3.1 drivers; probably different branch; some files call themselves &amp;quot;RIVA TNT Resource Manager, Version 0.11&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
| 28 August 1998 || 1.75 || Windows 9x || nVIDIA SDK 0.81 &lt;br /&gt;
|- &lt;br /&gt;
| 14 September 1998 || 2.77 || Windows 9x, Windows NT 4.0 || NT: Display driver output name changed from &amp;lt;code&amp;gt;nv_disp&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;nv3_disp&amp;lt;/code&amp;gt; (probably due to NV4 driver development), also source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + VBIOS) &lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1998 || 2.79 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + NV3Tweak) &lt;br /&gt;
|-&lt;br /&gt;
| 2 October 1998 || 2.80 || Windows 9x, Windows NT 4.0 || nVIDIA SDK 0.83&lt;br /&gt;
|-&lt;br /&gt;
| 22 October 1998 || 2.83 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + NV3Tweak) &lt;br /&gt;
|-&lt;br /&gt;
| 9 November 1998 || 3.03 || Windows 9x ||&lt;br /&gt;
|- &lt;br /&gt;
| 10 December 1998 || 1.30, 2.79 (Diamond branch) || Windows 9x || Most likely a branch maintained by Diamond Multimedia for their &amp;quot;Viper&amp;quot; cards, released 21 January 1999 &lt;br /&gt;
|-&lt;br /&gt;
| 14 December 1998 (source) / 7 January 1999 (binary) || 3.12 || Windows 9x, Windows NT 4.0 || Source code available (OpenGL + NT4 GDI + NT4 MCD + Resource Manager + Win9x GDI + Direct3D + VBIOS) &lt;br /&gt;
|- &lt;br /&gt;
| 1 February 1999 || 3.22 || Windows 9x ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 February 1999 || 3.23 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 9 February 1999 || 3.25 || Windows 9x || &lt;br /&gt;
|-&lt;br /&gt;
| 18 February 1999 || 3.27 || Windows NT 4.0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3 March 1999 || Unknown version || OS/2 (Warp 3 Fixpak35+ &amp;amp; 4 Fixpak5+) || Very sloppily done. Batch file (well, Rexx script) setup. Unclear what GPU is even supported: it was posted on Nvidia&#039;s RIVA 128 download pages, but the readme file calls it &amp;quot;GRADD Driver for Nvidia NV4&amp;quot; (not even using a product name), despite being last modified on 25 February 1999.&lt;br /&gt;
|-&lt;br /&gt;
| 21 March 1999 || 3.37 || Windows 9x, NT 4.0, 2000 (beta) || Final driver for Windows 9x, only Win2000 driver with OpenGL support. Even though the driver was compiled against Windows 2000 build 1996, it works fine on the final Windows 2000, including Service Pack 4&lt;br /&gt;
|- &lt;br /&gt;
| 11 May 1999 || 3.41b || Windows NT 4.0 || Final NT 4.0 driver&lt;br /&gt;
|- &lt;br /&gt;
| 28 October 1999 || 3.43 || Windows 2000 || 2D-only driver bundled with Windows 2000. Still has OpenGL hooks; untested&lt;br /&gt;
|- &lt;br /&gt;
| 31 July 2001 || 3.43 || Windows XP || 2D-only driver bundled with Windows XP. Still has OpenGL hooks; tested, does not work on default, crashes late in OpenGL initialisation process (may be patchable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== NV4 and later shared drivers ==&lt;br /&gt;
&lt;br /&gt;
0.32 first released version, 0.20 first sent to STB (Source archive is dated July 14, 1998)&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
:{{note|a|}}These issues in the relationship eventually led to the infamous &amp;quot;Fuck you, Nvidia!&amp;quot; comment and middle finger by Linus Torvalds at a 2012 event.&lt;br /&gt;
:{{note|b|}}They are officially marked as being for 3.11, but unless they depend on the 32-bit File Access feature backported from Windows 95, or any other feature that was exclusively added in WfW 3.11, there should be no reason why they cannot work on any other version of Windows 3.1, such as the original 1992 release, standalone Windows 3.11, or Windows for Workgroups 3.1: however, the drivers have not been tested with these older versions, so the compatibility, or lack thereof, is unknown.&lt;br /&gt;
:{{note|c|}}Initially 2D only, then OpenGL only: no D3D.&lt;br /&gt;
:{{note|d|}}Initially OpenGL only, later Direct3D support was added. Beta only for NV3.&lt;br /&gt;
:{{note|e|}}2D only officially for NV3, although hooks to load the OpenGL drivers still exist; they do not load using the Windows 2000 drivers, but they can likely be patched to work.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=NV2&amp;diff=1740</id>
		<title>NV2</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NV2&amp;diff=1740"/>
		<updated>2026-09-05T19:57:15Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Infobox GPU&lt;br /&gt;
|title=&#039;&#039;&#039;NV2&#039;&#039;&#039;&lt;br /&gt;
|architecture=NV2&lt;br /&gt;
|branding=NV2; Mutara (codename); Mutara V08; Sega Saturn V08&lt;br /&gt;
|announcement_date=31 May 1995 (cancelled)&lt;br /&gt;
|release_date=7 February 1996 (nv2_ref.h date)&lt;br /&gt;
|pci_vendor_id=&amp;lt;code&amp;gt;10de&amp;lt;/code&amp;gt;&lt;br /&gt;
|pci_device_id=&amp;lt;code&amp;gt;0010&amp;lt;/code&amp;gt;&lt;br /&gt;
|buses_supported=VLB (never commercialised), PCI&lt;br /&gt;
|directx_version=2.0 (badly software emulated)&lt;br /&gt;
|opengl_version=Not supported&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Todo: Why does it have a PCI ID if it was meant for a game console with cartridges? Did they consider releasing it anyway? Mentioned in some MS games&#039; system requirements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GPUs}}&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=Timeline&amp;diff=1739</id>
		<title>Timeline</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=Timeline&amp;diff=1739"/>
		<updated>2026-09-04T01:45:54Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a timeline of the early history of Nvidia.&lt;br /&gt;
&lt;br /&gt;
== 1950s and earlier ==&lt;br /&gt;
* 1948: David S. H. Rosenthal (one of the NV1 designers) is born.&lt;br /&gt;
* March 6, 1950: John Nickolls is born.&lt;br /&gt;
* 1958 or 1959: [[Curtis Priem]] is born. For some reason, his exact birth year is not known.&lt;br /&gt;
* May 2, 1959: Chris Malachowsky is born.&lt;br /&gt;
* 1959: The revolutionary Sketchpad program is created on the MIT TX-2 computer by a team led by Ivan Sutherland (later of Evans and Sutherland). It allowed the drawing of objects using a light pen and was one of the first entirely graphical programs and a pioneer of human-computer interaction as a concept.&lt;br /&gt;
&lt;br /&gt;
== 1960s ==&lt;br /&gt;
* 1960: David Kirk (Nvidia&#039;s chief scientist from 1997 until 2009) is born.&lt;br /&gt;
* February 17, 1962: Jensen Huang is born in Taiwan.&lt;br /&gt;
* 1958-1962: The &amp;quot;perceptron&amp;quot; concept (the predecessor to modern artificial neural networks) is first explored by Frank Rosenblatt.&lt;br /&gt;
* 1964: The first 3D computer art is created, a three-dimensional hand.&lt;br /&gt;
* 1967: Jensen Huang&#039;s family moves to Thailand.&lt;br /&gt;
* 1969: Evans and Sutherland, Inc. releases the LDS-1 (Line Drawing System-1), the first commercial 3D graphics system.&lt;br /&gt;
* 1969: An extremely influential book on perceptrons by AI researchers Marvin Minsky and Seymour Papert causes  serious damage to the reputation of the perceptron concept and ends serious research into them for the next twenty years. This is despite the book acknowleging the strengths and setting out to be an overall evaluation of perceptrons rather than a debunking of their efficacy; this may be due to the small size and generally close-knit AI community of the time. However, even if this book had never been published, neural networks capable of serious learning ability were not plausible even on supercomputers until the 1990s, due to the very high resource use of these programs; nevertheless, it does not prevent the invention of backpropagation by a Finnish master&#039;s student in 1970.&lt;br /&gt;
* 1969: The Special Interest Group in Computer Graphics and Interactive Techniques (SIGGRAPH) is founded by the ACM (Association for Computing Machinery). It becomes one of the most prominent conferences for discussion of, and research into, computer graphics as a field.&lt;br /&gt;
 &lt;br /&gt;
== 1970s ==&lt;br /&gt;
* 1973: Jensen Huang is sent to the United States by his parents. They believed they were sending him to a prestigious private school, but they actually sent him to the Oneida Baptist Institute, a reform school for troubled children in Kentucky&lt;br /&gt;
* 1975: Huang&#039;s family move to the United States and he relocates to Oregon to live with them.&lt;br /&gt;
* 1977: Approximate birth date of Ian Buck (one of the inventors of GPGPU) based on his university records.&lt;br /&gt;
* 1978: Jensen Huang gets a job at Denny&#039;s as a dishwasher, eventually promoted to a busboy and then a waiter, to supplant his income while he studies at university. This era of his life later becomes a large part of his mythology, and the Denny&#039;s restaurants of Silicon Valley became a general hangout spot in later years. He was also apparently a nationally ranked table tennis player during this time.&lt;br /&gt;
&lt;br /&gt;
== 1980s ==&lt;br /&gt;
* 1980: As a part of a research project led by ex-E&amp;amp;S employee Jim Clark. the first integrated circuit specifically intended for 3D geometry processing is created, the Geometry Engine.&lt;br /&gt;
* 1980: Jensen Huang starts a course in electrical engineering at Oregon State University.&lt;br /&gt;
* August 12, 1981: IBM announces its Personal Computer, using an Intel CPU and Microsoft-supplied (via Seattle Computer Products) operating system. This is the start of the modern PC &amp;quot;Wintel&amp;quot; standard architecture and the products that Nvidia&#039;s add-on boards would be available for.&lt;br /&gt;
* 1981: [[Weitek]], designer of the Nvidia VGA cores, is founded, initially to develop floating-point units and other accelerator chips.&lt;br /&gt;
* 1982: SiliconGraphics Computer Systems, Inc. is founded. &lt;br /&gt;
* 1982: Microsoft starts working on an implementation of the obscure Graphical Kernel System (GKS) standard for device-independent graphics called GDI (Graphics Device Interface.)&lt;br /&gt;
* 1982: Possibly after seeing a demonstration of the &amp;quot;Visi On&amp;quot; preemptive OS for the PC, Microsoft merges the GDI with another project, Interface Manager, a standard interface library for Microsoft&#039;s apps division, to create the &amp;quot;Microsoft Window Manager&amp;quot; project, later renamed Microsoft Desktop and then simply to Windows. The project slowly becomes an almost complete operating system (except for disk I/O and filesystem services, which are still provided by MS-DOS).&lt;br /&gt;
* 1982: Priem is hired at a company called Vermont Microsystems, Inc. to develop graphics hardware in collaboration with IBM.&amp;lt;ref&amp;gt;The Nvidia Way (Kae, Tim; 2024), pp. 25. ISBN 9781324086710).&amp;lt;/ref&amp;gt;&lt;br /&gt;
* 1982: SGS-Thomson Microelectronics is founded from the merger of the French state-owned semiconductor company SGS and the Italian Thomson Microelectronics.&lt;br /&gt;
* 1984: The approximate birth date of Mark Harris (founder of GPGPU.org), based on his university records.&lt;br /&gt;
* Early-Mid 1980s: Chris Malachowsky is hired at HP to work on the HP 1000 line of computers while finishing his master&#039;s degree from Santa Clara University.&lt;br /&gt;
* 1984: Jensen Huang graduates alongside his future wife Lori Mills. He interviews at Texas Instruments, AMD and LSI Logic; he receives offers from the latter two and elects to join AMD as an engineer. &lt;br /&gt;
* 1984: The &amp;quot;IRIS 1000&amp;quot; terminal and workstation line is released by SGI at a mid-five figure cost; it is one of the most powerful graphics workstations of its era and the start of SGI&#039;s rise to cultural prominence.&lt;br /&gt;
* August 14, 1984: IBM announces its third-generation (or second depending on how the XT gets counted) PC - the Advanced Technology (PC/AT). One of the graphics options is the Professional Graphics Controller, a CGA-compatible three-board coprocessor with an 8Mhz 8088 that can do up to 640x480 at an 8bpp bit depth (256 colours), and provides a ROM to perform 2D and 3D graphics calculations via both assembly and a human-readable command set, including very advanced font rendering for the time. This was designed by Vermont Microsystems; Curtis Priem&#039;s name is included in the ROM, alongside two other programmers, one of whom now works at NVIDIA.&lt;br /&gt;
* 1984: Priem leaves Vermont Microsystems and moves to a company called GenRad, one of the largest manufacturers of electronic testing equipment at the time; however, unbeknowst to Priem, the company is in financial distress and suffering from poor management.&lt;br /&gt;
* December 1984: Jensen Huang and Lori Mills (a day after his proposal to her) almost die in a car crash in the Oregon mountains. He twisted his neck, requiring stitches and a neck brace.&amp;lt;ref&amp;gt;The Thinking Machine (Witt, Stephen; 2025), pp. 26. ISBN 9780593832691&amp;lt;/ref&amp;gt;&lt;br /&gt;
* 1985: One of Huang&#039;s coworkers convinces him to leave AMD and work for LSI Logic, then one of the most cutting-edge silicon design and fabrication companies, instead.&amp;lt;ref&amp;gt;The Thinking Machine (Witt, Stephen; 2025), pp. 29. ISBN 9780593832691&amp;lt;/ref&amp;gt;. He is later assigned to the Sun Microsystems account, where he meets Priem and Malachowsky.&amp;lt;ref&amp;gt;The Nvidia Way (Kae, Tim; 2024), pp. 22. ISBN 9781324086710).&amp;lt;/ref&amp;gt;&lt;br /&gt;
* 1985: Lori Mills is hired at SGI.&amp;lt;ref&amp;gt;The Thinking Machine (Witt, Stephen; 2025), pp. 30. ISBN 9780593832691&amp;lt;/ref&amp;gt;&lt;br /&gt;
* 1986: Pixar is founded; its first serious work, the &amp;quot;Luxo Jr.&amp;quot; animated spot, shown at SIGGRAPH in 1986, is one of the first 3D animated short films to be considered credible by the animation industry.&lt;br /&gt;
* 1986: The Texas Instruments Graphics Architecture (TIGA) line of 2D GPUs is released for the PC; it is one of the earliest attempts at proper PC graphics but fails due to the lack of a standardised operating system to write drivers for.&lt;br /&gt;
* 1986: Priem leaves GenRad and, due to his reputation as the designer of the IBM PGC, is shortly after hired at Sun Microsystems, to work on their next-generation graphics architecture alongside Chris Malachowsky.&lt;br /&gt;
* ~1986: Vermont Microsystems releases the IM-1024, the successor to the PGC. It swaps out the 8Mhz 8088 for a 10Mhz 80186 (much faster due to much more efficient operation) and allows up to 1024x768x8bpp rendering; this was delivered via a Windows 1.03 driver. It does not appear Priem was involved, as he left around the time of the completion of the PGC.&lt;br /&gt;
* 1986-1987: Chris Malachowsky is hired by Sun after finishing his master&#039;s degree, after considering both moving to the UK division of HP in Bristol and various other US-based tech companies, including Evans and Sutherland.&lt;br /&gt;
* October 1987: IBM releases the catchily named 8514/A, the first fixed-function PC graphics accelerator. It is later copied by many companies including ATi and S3 Graphics, becoming the basis of many early 1990s PC graphics accelerators.&lt;br /&gt;
* January 21, 1988: Curtis Priem produces several documents about the &amp;quot;CG6&amp;quot; architecture, which later became his second graphics card design, the Sun GX.&amp;lt;ref&amp;gt;&#039;&#039;Sun GX TEC Reference&#039;&#039; (Priem, Curtis; 21 January 1988) http://www.bitsavers.org/components/lsiLogic/sparc/GX/Sun_GX_TEC_Jan1988.pdf)&amp;lt;/ref&amp;gt; &amp;lt;ref&amp;gt;&#039;&#039;Sun GX FBC Reference&#039;&#039; (Priem, Curtis; 21 January 1988) http://www.bitsavers.org/components/lsiLogic/sparc/GX/Sun_GX_FBC_Jan1988.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
* 1988: Programmer&#039;s Hierarchical Interactive Graphics System (PHIGS), an early 3D graphics standard, is released; it is adopted by many companies.&lt;br /&gt;
* 1988: Namco releases the System 21 &amp;quot;Polygonizer&amp;quot;, the first 3D-capable arcade board, and the flat-shaded 3D game &amp;quot;Winning Run&amp;quot;; possibly the first time the average gamer could obtain access to reasonably fast 3D graphics. &lt;br /&gt;
* 1989: The Sun GX (possibly codenamed &amp;quot;CG6&amp;quot;), a primarily quadliateral based 2D/3D graphics card, is released as an option for Sun&#039;s line of workstations, designed by Priem. Priem and another Sun employee, Bruce Factor, releases a flight simulator, Aviator, for GX-based Sun workstations and continue to release updates for the next few years, eventually commercialising the program. Later on, Sun bundled the GX with various Sun-3 and SPARCstation workstations&amp;lt;ref&amp;gt;https://old.hotchips.org/wp-content/uploads/hc_archives/hc01/3_Tue/HC1.S8/HC1.8.2.pdf&amp;lt;/ref&amp;gt;. The manufacturing was handled by LSI Logic and hense Jensen Huang, as he was the person in charge of the Sun account.&amp;lt;ref&amp;gt;The Nvidia Way (Kae, Tim; 2024), pp. 32. ISBN 9781324086710).&amp;lt;/ref&amp;gt;. A PHIGS implementation is provided.&lt;br /&gt;
&lt;br /&gt;
== 1990-1992 ==&lt;br /&gt;
* 1990: SGI releases the IrisVision, a 3D GPU for the PC capable of flat and Gouraud shading. Only around 5,000 units are sold due to the exorbitantly high cost, and SGI eventually spins off the team responsible for it into another company called Pellucid.&lt;br /&gt;
* ~1990: After the success of the GX project, Huang is allowed by the founder and CEO of LSI Logic, Wolf Corrigan, to create a division that would sell SoCs combining multiple funcitons onto one chip.&amp;lt;ref&amp;gt;The Thinking Machine (Witt, Stephen; 2025), pp. 33. ISBN 9780593832691&amp;lt;/ref&amp;gt;&lt;br /&gt;
* 1991: Lori Mills leaves SGI to raise her and Jensen&#039;s two children. This seriously stretches their personal finances despite Jensen holding a secure and well paying job. Malachowsky&#039;s wife did a similar thing; later, Malachowsky conceded that both him and Huang&#039;s wives were &amp;quot;superior engineers&amp;quot; to them.&lt;br /&gt;
* Early 1990s: Due to the massively accelerating pace and performance of PCs, running texture mapped 3D games with a reasonable level of quality becomes an increasingly plausible and cheap option. By 1997, over 70 companies are founded to attempt to exploit this market. One of these attempts is made by Malachowsky and Priem, who proposed to Sun that they enter into the gaming graphics business - the proposal is rejected.&amp;lt;ref&amp;gt;The Thinking Machine (Witt, Stephen; 2025), pp. 35. ISBN 9780593832691&amp;lt;/ref&amp;gt;. &amp;lt;ref&amp;gt;The Nvidia Way (Kae, Tim; 2024), pp. 22. ISBN 9781324086710).&amp;lt;/ref&amp;gt;. Apparently, the dysfunctional work environment of Sun got so bad that he would regularly start crying in the various recreation areas of Sun&#039;s campus&amp;lt;ref&amp;gt;The Nvidia Way (Kae, Tim; 2024), pp. 37. ISBN 9781324086710).&amp;lt;/ref&amp;gt;&lt;br /&gt;
* 1992: SGI cleans up and renames IRIS GL (its graphics library) to OpenGL, turning it over to the OpenGL Architecture Review Board (ARB; later handed to Khronos Group in 2006) and releasing it as an open graphics API standard.&lt;br /&gt;
* Late 1992: After the failure of both their proposal to Sun and and a similar proposal to SGI to enter the PC consumer 3D graphics space, Malachowsky and Priem contact Huang to discuss the concept of founding a 3D graphics company; one version of this proposal, before Huang was involved, involved building a chip for the Korean &#039;&#039;chaebol&#039;&#039; Samsung. After he got involved in the project, Huang was assigned as the CEO of this hypothetical company due to his larger amount of business experience; additionally, the trio&#039;s coworkers at Sun were skeptical of Malachowsky and Priem&#039;s ability to work together. This may have been a wise observation, considering they often broke out into screaming matches against each other. After some time and many meetings in various seedy Denny&#039;s restaurants, Jensen accepts after determining that it was possible to make at least $50 million of revenue from the venture&amp;lt;ref&amp;gt;The Thinking Machine (Witt, Stephen; 2025), pp. 41. ISBN 9780593832691&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* December 31, 1992: Curtis Priem resigns from Sun Microsystems to jumpstart the new venture (the families of Malachowsky and Huang were demanding that they wait until the other resigned). Several Sun employees follow him despite the high risk and lack of any funding due to his reputation as the founder of the GX.&amp;lt;ref&amp;gt;The Nvidia Way (Kae, Tim; 2024), pp. 40. ISBN 9781324086710).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NV1 era: 1993-1995 ==&lt;br /&gt;
* Early 1993: The founders of Nvidia stop going to the Denny&#039;s where they were discussing the founding of Nvidia due to an outbreak of gang warfare near the restaurant leading to the windows being shot through.&amp;lt;ref&amp;gt;The Thinking Machine (Witt, Stephen; 2025), pp. 41. ISBN 9780593832691&amp;lt;/ref&amp;gt;. Later on, a plaque was inserted to commemorate the founding of Nvidia allegedly occurring within it, although in reality it was simply discussed there and formally founded inside Priem&#039;s townhouse.&lt;br /&gt;
* February 17, 1993: Jensen Huang resigns from LSI Logic after spending six weeks transferring his projects to other managers within the company.&amp;lt;ref&amp;gt;The Nvidia Way (Kae, Tim; 2024), pp. 42. ISBN 9781324086710).&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Early March 1993: Chris Malachowsky, after an attempt by his manager to convince him to move to work on the project that later became Java fails, resigns from Sun to join Nvidia. His manager let them take and upgrade their personal workstations at Sun for Nvidia&#039;s use.&lt;br /&gt;
* April 5, 1993: NVidia, Inc. is formally founded in Curtis Priem&#039;s townhouse with a $200 initial capitalisation. The equity is initially split equally between the three founders. The name is a pun on &amp;quot;New Venture&amp;quot; and also the &amp;quot;GX next version&amp;quot; project that Priem and Malachowsky initially proposed to Sun; Huang forced them to rename it to NV1 to prevent any possible copyright issues with their former employers. The first headquarters of the company were two of the three bedrooms of Priem&#039;s house; an impromptu bedroom was set up in the garage.&amp;lt;ref&amp;gt;The Thinking Machine (Witt, Stephen; 2025), pp. 43. ISBN 9780593832691&amp;lt;/ref&amp;gt;. Early employees included David Rosenthal (who had mvoed to the US from Britain at this point).&lt;br /&gt;
* April 8, 1993: Curtis Priem changes the description of his SPARCstation 1 UUCP server to read &amp;quot;Nvidia&amp;quot;&amp;lt;ref&amp;gt;UUCP Mapping Project: https://groups.google.com/g/comp.mail.maps/c/QmEyGC73D_c/m/34dhQKz4ZOYJ&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Mid 1993: Nvidia, despite a bad pitch involving a commodity PC being hacked to use a Sun GX, receives $4 million in seed funding from Sutter Hill Ventures and Sequoia Capital, mostly due to the founders&#039; reputation. Shortly after this, the company rented office space in Sunnyvale, California. &amp;lt;ref&amp;gt;The Nvidia Way (Kae, Tim; 2024), pp. 53. ISBN 9781324086710).&amp;lt;/ref&amp;gt;&lt;br /&gt;
* June 29, 1993: Nvidia refiles its articles of incorporation to allow the issuance of &amp;quot;Series A&amp;quot; stock shares to third parties other than the founders. This is most likely an approximate date to when Sutter Hill and Sequoia invested.&lt;br /&gt;
* October 20, 1993: Version 1.0 of the &amp;quot;NV Architecture Specification&amp;quot; document is produced; it is an overview of the architecture of the graphics accelerators that Nvidia intends to build.&amp;lt;ref&amp;gt;SGS-Thomson/Nvidia Strategic Collaboration Agreement (SEC filing), including 1996 and 1998 amendments. Available online at https://contracts.onecle.com/nvidia/sgs.collab.1993.11.10.shtml)&amp;lt;/ref&amp;gt;                   &lt;br /&gt;
* November 1993: Pellucid is taken over by another company called Media Vision to develop sound cards and 2D/3D graphics products.&lt;br /&gt;
* November 10, 1993: Nvidia signs an agreement with SGS-Thomson Microelectronics to develop a graphics accelerator which will be fabricated by SGS and jointly marketed by Nvidia and SGS.&amp;lt;ref&amp;gt;SGS-Thomson/Nvidia Strategic Collaboration Agreement (SEC filing), including 1996 and 1998 amendments. Available online at https://contracts.onecle.com/nvidia/sgs.collab.1993.11.10.shtml)&amp;lt;/ref&amp;gt;. The chip will be branded NV1 and split into two variants; a mid-range 64-bit bus DRAM variant (&amp;quot;NV1-D64&amp;quot;) and a high-end 32-bit bus variant using VRAM memory (&amp;quot;NV1-V32&amp;quot;). SGS paid Nvidia $500,000 in return for the rights to market the D64 variant only and brand it as the STG-2000; SGS also provided the RAMDAC and legacy VGA support for the NV1 (becoming the STG-1732/1764 chips) and deployed certain engineers to assist Nvidia with the NV1.                  &lt;br /&gt;
* November 19, 1993: According to code comments, development of the NVidia Hardware Simulator (NV0) and a dummy Resource Manager to simulate an Nvidia device under Windows 3.1 had started by this time.&lt;br /&gt;
* December 10, 1993: id Software releases DOOM. While technically not a 3D game, the BSP rendering method used removed almost all limitations of 2D and the game completed the popularisation of both 3D games and the first-person shooter genre. It also had a role in the early development of mods, the speedrunning community and online gaming.&lt;br /&gt;
* Early 1994: Several Media Vision employees, many of which had been around since the days of the IrisVision at SGI, leave out of frustration at the company&#039;s seeming unwillingness to pursue 3D graphics and create 3D/fx Interactive, Inc. (later shortened to 3Dfx) Initially it intended to build a motherboard but its funder, Gordon Campbell, requested an add-on card to be produced as well as arcade machines; the company was incorporated on February 24, 1994. &lt;br /&gt;
* May 17, 1994: The CEO of Media Vision, Paul Jain resigns due to the exposure of massive amounts of financial fraud by the company. The company enters into bankruptcy proceedings, shuts down its graphics business and is reorganised as Aureal Semiconductor. Jain is indicted, but never convicted, of 27 counts of various fraud charges by the US Department of Justice, although both him and the CFO of the company are eventually fined.&lt;br /&gt;
* Mid-1994: An initial version of the NV1 design is completed and revision A01 of the NV1 is taped out and sent to ST. A VHS tape exists of the chips being returned to Nvidia, but it is not available. Nvidia was paid $1 million for the milestone under the terms of the Strategic Collaboration Agreement.&amp;lt;ref&amp;gt;SGS-Thomson/Nvidia Strategic Collaboration Agreement (SEC filing), including 1996 and 1998 amendments. Available online at https://contracts.onecle.com/nvidia/sgs.collab.1993.11.10.shtml)&amp;lt;/ref&amp;gt;     &lt;br /&gt;
* June 15, 1994: Driver development for a real [[Software#Resource Manager]] running, presumably, under a real NV1 chip, had started by this time.               &lt;br /&gt;
* July 26, 1994: Nvidia reports some details of their architecture to the Jon Peddle Report, who had advised Huang not to found Nvidia.&amp;lt;ref&amp;gt;Nvidia&#039;s Quadratic Processor: The NV1 (available online at https://www.computer.org/publications/tech-news/chasing-pixels/nvidias-quadratic-processor-the-nv1)&amp;lt;/ref&amp;gt;. The company is also mentioned in the 25 July 1994 issue of InfoWorld.&lt;br /&gt;
* August 1, 1994: Under the terms of the Strategic Collaboration Agreement, Nvidia was paid another $500,000 by SGS-Thomson.&amp;lt;ref&amp;gt;SGS-Thomson/Nvidia Strategic Collaboration Agreement (SEC filing), including 1996 and 1998 amendments. Available online at https://contracts.onecle.com/nvidia/sgs.collab.1993.11.10.shtml)&amp;lt;/ref&amp;gt;                   &lt;br /&gt;
* October 30, 1994: nv1a_ref.h date&lt;br /&gt;
* November 1, 1994: Another $500,000 payment to Nvidia was made.&amp;lt;ref&amp;gt;SGS-Thomson/Nvidia Strategic Collaboration Agreement (SEC filing), including 1996 and 1998 amendments. Available online at https://contracts.onecle.com/nvidia/sgs.collab.1993.11.10.shtml)&amp;lt;/ref&amp;gt;       &lt;br /&gt;
* ~Late 1994: Revision A02 of the NV1, presumably fixing bugs with earlier revisions, is taped out.&lt;br /&gt;
* December 14, 1994: Nvidia again amends its articles of incorporation to allow Series B venture capitalists to receive shares. This is most likely indicative of an approximate date for Nvidia&#039;s Series B financing.&lt;br /&gt;
* December 24, 1994: Despite their public support for OpenGL, a skunkworks team within Microsoft starts development of Microsoft&#039;s proprietary standard graphical API for Windows, DirectX (initially called the &amp;quot;Windows 95 Game SDK&amp;quot;). Initially, only the 2D DirectDraw component was released, but a 3D API was released in early 1996 with version 2.0. This API is based on traditional triangle-based rendering with perspective-correct texture mapping, and the rapid standardisation of game develoeprs on this API, due to Microsoft&#039;s near-monopoly on the market, will cause Nvidia serious problems in the future.&lt;br /&gt;
* January 4, 1995: An Nvidia employee helps a Usenet user find Video for Windows 1.1d and the Indeo 3.2 codec&amp;lt;ref&amp;gt;&amp;quot;Info Request&amp;quot;; USENET comp.graphics; https://groups.google.com/g/comp.graphics/c/MZcpuy751l8/m/5fHqF3jUJUEJ&amp;lt;/ref&amp;gt;&lt;br /&gt;
* January 11, 1995: An Nvidia employee inquires about printing off a large number of CD-Rs (&amp;quot;initially 20, then 100, then a large number&amp;quot;). Possibly this means that the NV1 SDK was first released shortly after this time.&amp;lt;ref&amp;gt;&amp;quot;RECORDABLE CD--R advice sought; S.Page; USENET alt.cdrom; https://groups.google.com/g/comp.graphics/c/MZcpuy751l8/m/5fHqF3jUJUEJ)&amp;lt;/ref&amp;gt;&lt;br /&gt;
* January 16, 1995: By this point, some kind of website existed at https://nvidia.com.&lt;br /&gt;
* January-April 1995: An Nvidia employee posts many times about use of the FrameMaker software for writing program help on USENET; presumably documentation of the NV1 was already progressing at this stage.&lt;br /&gt;
* March 7, 1995: The &amp;quot;QUADTEX&amp;quot; SDK demo, demonstrating the utilisation of quadratic texture mapping to warp a 3D object, has started development by this time.&lt;br /&gt;
* May 23, 1995: The NV1 is officially announced via a press release on Nvidia&#039;s website and various SGS-Thomson marketing activities. The reaction appears to have been rather muted, with a few trade press articles published at the time and a rather enthusiastic declaration that the NV1 was the &amp;quot;NEXT GENERATION OF PC GAME PROGRAMMING&amp;quot; on USENET.&lt;br /&gt;
* May 1995: The [[NV2]] project is started by Nvidia and Sega.&amp;lt;ref&amp;gt;NVIDIA Notes to Financial Statements; SEC Form S1/A; available online at https://www.sec.gov/Archives/edgar/data/1045810/0001012870-98-001519.txt&amp;lt;/ref&amp;gt;&lt;br /&gt;
* June 1995: By this point, revision B01 of the NV1, including performance improvements for bilinear filtering, the [[NV1 DRM]] engine and various errata fixes, has been produced.&lt;br /&gt;
* June 15, 1995: Version 0.4 of the &amp;quot;Programming NV&amp;quot; document is produced. Nvidia amends its articles of incorporation to allow Series C venture capitalists to receive shares. This is most likely indicative of an approximate date for Nvidia&#039;s Series C financing.&lt;br /&gt;
* August 21, 1995: By this time Nvidia has created an adapter board that allows Sun Microsystems SBUS expansion boards to be inserted into slots intended for the VESA Local Bus used on some early 1990s (typically 486-based) computers; refer to [[SBus to VL Converter]] for further information. &lt;br /&gt;
* August 24, 1995: Windows 95 is released; Nvidia has already been working on porting their drivers to it for several months.  &lt;br /&gt;
* November 23, 1995: The NV1 is released.&lt;br /&gt;
&lt;br /&gt;
== 1996 ==&lt;br /&gt;
February 9, 1996: NVIDIA NV2 hardware reference file NV2_REF.H is compiled.&lt;br /&gt;
May 21, 1996: NVIDIA receives the source code to the cancelled WEITEK Power 9100 successor and starts modifying it to become the NV3 VBIOS.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=Main_Page&amp;diff=1738</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=Main_Page&amp;diff=1738"/>
		<updated>2026-09-04T01:05:05Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;= Welcome to nvwiki: A wiki about Nvidia graphics cards =&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now this damn wiki is outdated to shit because some guy leaked all the nv3 and nv4 source including the bios, even including NV2 hardware reference files&lt;br /&gt;
&lt;br /&gt;
=== References ===&lt;br /&gt;
&lt;br /&gt;
* [[NVPlay]]&lt;br /&gt;
* [[Emulation status]]&lt;br /&gt;
* [[Timeline]]&lt;br /&gt;
* [[List of GPUs]]&lt;br /&gt;
* [[Hardware errata]]&lt;br /&gt;
&lt;br /&gt;
{{GPUs}}&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=Main_Page&amp;diff=1737</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=Main_Page&amp;diff=1737"/>
		<updated>2026-07-12T00:11:02Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;= Welcome to nvwiki: A wiki about Nvidia graphics cards =&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== References ===&lt;br /&gt;
&lt;br /&gt;
* [[NVPlay]]&lt;br /&gt;
* [[Emulation status]]&lt;br /&gt;
* [[Timeline]]&lt;br /&gt;
* [[List of GPUs]]&lt;br /&gt;
* [[Hardware errata]]&lt;br /&gt;
&lt;br /&gt;
{{GPUs}}&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=GPU_Clocking&amp;diff=1736</id>
		<title>GPU Clocking</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=GPU_Clocking&amp;diff=1736"/>
		<updated>2026-03-27T17:18:22Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In early GPUs, the system of generating phase-locked loops (PLL) was a derivative of the system used by the SGS-Thomson (now STMicro) STG-1764 &amp;quot;Van Gogh&amp;quot;, which was used as the external RAMDAC on the NV1. Although which PLLs existed changed, the overall system implementation was very similar from [[NV1]] until [[NV20]]. A partial break from this system was introduced with the implementation of multi-stage clocks in [[NV30]] and a full break was achieved with [[NV40]]&#039;s implementation of clock domains{{ref|a}}. &lt;br /&gt;
&lt;br /&gt;
=== Initial clock system (1995-2002) ===&lt;br /&gt;
&lt;br /&gt;
The clock system in NV1 to NV2x is based in the external DAC (NV1) or on chip within in the &amp;lt;code&amp;gt;[[PRAMDAC]]&amp;lt;/code&amp;gt; functional block (NV3 or later). Where it is integrated onto the chip, it is exposed in all generations at the MMIO address range between &amp;lt;code&amp;gt;0x680300&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x680FFF&amp;lt;/code&amp;gt;. In most cases (and in all cases prior to [[NV10]]), the registers starting at MMIO address &amp;lt;code&amp;gt;0x680500&amp;lt;/code&amp;gt; and ending at &amp;lt;code&amp;gt;0x6805FF&amp;lt;/code&amp;gt; are used for PLL configuration; each PLL has a 32-bit{{ref|c}} register assigned to it, and there is a second 32-bit register (typically at &amp;lt;code&amp;gt;0x68050C&amp;lt;/code&amp;gt;) that is used to configure these PLLs. Each PLL register is split into three dividers{{ref|b}}, with the low 8 bits of the register making up &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;, bits 15 through 8 making up &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;, and a three-bit (bits 18 through 16) &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;. These are combined with a base clock speed - which can be simply the clock speed of the signal coming directly from the on-board clock crystal or configured via straps - in order to create the final clock speed using the following formula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(base_clock_speed * NDIV) / (MDIV &amp;lt;&amp;lt; PDIV)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, if the base clock speed is 10MHz, &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt; is 90, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt; is 10 and &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt; is 1, the formula resolves as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(10000000 * 90) / (10 &amp;lt;&amp;lt; 1)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which resolves to exactly 45,000,000 Hz (or 45 MHz).&lt;br /&gt;
&lt;br /&gt;
Additionally, via the configuration register at &amp;lt;code&amp;gt;0x60850C&amp;lt;/code&amp;gt;, various steps can be applied by the RAMDAC after this initial calculation. These settings are typically per-PLL; for example, a clock could be divided by a fixed divider, or its source can be changed. This aspect of the operation of the clock generators will be covered more in detail in the GPU-specific section. &lt;br /&gt;
&lt;br /&gt;
=== PLLs on the NV1 ===&lt;br /&gt;
The NV1 has three PLLs which are used for different purposes and are presented in this table. In the NV1, the organisation of the registers for the clock dividers is slightly different - since they are located within the STG-1764 DAC, they are not located within MMIO but are actually located inside the internal register space of the 1764, which uses 8-bit registers. This, as well as the ultimately never used OPLL, means that each PLL takes up a set of four 8-bit registers, one for each divider; the first register in the set is used to hold the &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;, the second the &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;, the third the &amp;lt;code&amp;gt;ODIV&amp;lt;/code&amp;gt; and the last is used to hold the &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Clock sources on the NV1&lt;br /&gt;
|-&lt;br /&gt;
! PLL !! Purpose !! MMIO address !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;MPLL&amp;lt;/code&amp;gt; || The name means &#039;&#039;&#039;M&#039;&#039;&#039;emory PLL, but actually clocks both the GPU core and the Video RAM || DAC space &amp;lt;code&amp;gt;0x18-0x1C&amp;lt;/code&amp;gt; ||&lt;br /&gt;
Set by [[VBIOS]] scripts by default, however the GPU drivers will clock the GPU themselves if the Video BIOS does not. Default values are: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Video BIOS&#039;&#039;&#039;: &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;=91, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;=11, &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;=1 (50.033454 MHz),&lt;br /&gt;
* &#039;&#039;&#039;Drivers&#039;&#039;&#039; (if PLL command cannot be found in Video BIOS): &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;=100, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;=14, &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;=1 (43.2 MHz),&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;APLL&amp;lt;/code&amp;gt; || Used to drive the audio system, although I am not sure exactly what it does - perhaps it drives the AD1845 SoundPort codec chip || DAC space &amp;lt;code&amp;gt;0x14-0x17&amp;lt;/code&amp;gt; || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;VPLL&amp;lt;/code&amp;gt; || Used to drive the video signal || DAC space &amp;lt;code&amp;gt;0x10-0x13&amp;lt;/code&amp;gt; || Clock speed dependent on chosen refresh rate and resolution. Typically within the range of 40 to a maximum of 170MHz.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
On NV1, there are only two configurations on the STG-1764 that directly correspond to controlling the operation of the PLLs is the low three bits of &amp;lt;code&amp;gt;SGS_DAC_POWER_MGMT_B&amp;lt;/code&amp;gt; (SGS DAC register &amp;lt;code&amp;gt;0x000D&amp;lt;/code&amp;gt;), which is used to switch off individual PLLs (who SGS-Thomson mysteriously misspelt as &amp;quot;PPLs&amp;quot;). The default state of these registers is off, which enables all PLLs - enabling bit 2 will disable APLL, bit 1 will disable VPLL and bit 0 disables VPLL. The base clock is always 12.096MHz, since this is the only one supported by the STG-1764 RAMDAC.&lt;br /&gt;
&lt;br /&gt;
The other set of configuration which is available is contained within the lower four bits of &amp;lt;code&amp;gt;SGS_DAC_CONFIG_1&amp;lt;/code&amp;gt; (SGS DAC register &amp;lt;code&amp;gt;0x0005&amp;lt;/code&amp;gt;). These exclusively deal with the VPLL, since the video clock needs much more configuration due to the variety of resolutions and refresh rates that the GPU and RAMDAC can output. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &amp;lt;code&amp;gt;SGS_DAC_CONFIG_1&amp;lt;/code&amp;gt; VPLL-related bits&lt;br /&gt;
|-&lt;br /&gt;
! Bit(s) !! Name !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Direction: &#039;&#039;&#039;off&#039;&#039;&#039; - output, &#039;&#039;&#039;on&#039;&#039;&#039; - input. || Not sure what this means. I don&#039;t know what reversing the &amp;quot;direction&amp;quot; of the VPLL would do.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Impedance: &#039;&#039;&#039;off&#039;&#039;&#039; - &amp;quot;low&amp;quot;, &#039;&#039;&#039;on&#039;&#039;&#039; - &amp;quot;high&amp;quot; || No exact ohmage is provided. Possibly intended for board&lt;br /&gt;
|-&lt;br /&gt;
| 2:0 || Video clock display ||&lt;br /&gt;
* 0x00 - Divide by 1 (don&#039;t do anything)&lt;br /&gt;
* 0x01 - Divide by 2&lt;br /&gt;
* 0x02 - Divide by 4&lt;br /&gt;
* 0x03 - Divide by 8&lt;br /&gt;
* 0x04 - Divide by 16&lt;br /&gt;
|| Applies a post-divider to the VCLK after it is calculated. Resource Manager version 2.3 only uses values of 1 and 2; these are used to get a finer-grained control over the exact video clock. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
{{note|a|}} Used to allow different parts of the GPU core to run at different clock frequencies.&amp;lt;br&amp;gt;&lt;br /&gt;
{{note|b|}} The NV1 technically has a fourth divider, &amp;lt;code&amp;gt;ODIV&amp;lt;/code&amp;gt;, but it is always set to a value of 1 and is effectively never used.&lt;br /&gt;
{{note|c|}} Only 19 bits are actually used by these registers (except in NV1)&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=GPU_Clocking&amp;diff=1735</id>
		<title>GPU Clocking</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=GPU_Clocking&amp;diff=1735"/>
		<updated>2026-03-25T21:15:46Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In early GPUs, the system of generating phase-locked loops (PLL) was a derivative of the system used by the SGS-Thomson (now STMicro) STG-1764 &amp;quot;Van Gogh&amp;quot;, which was used as the external RAMDAC on the NV1. Although which PLLs existed changed, the overall system implementation was very similar from [[NV1]] until [[NV20]]. A partial break from this system was introduced with the implementation of multi-stage clocks in [[NV30]] and a full break was achieved with [[NV40]]&#039;s implementation of clock domains{{ref|a}}. &lt;br /&gt;
&lt;br /&gt;
=== Initial clock system (1995-2002) ===&lt;br /&gt;
&lt;br /&gt;
The clock system in NV1 to NV2x is based in the external DAC (NV1) or on chip within in the &amp;lt;code&amp;gt;[[PRAMDAC]]&amp;lt;/code&amp;gt; functional block (NV3 or later). Where it is integrated onto the chip, it is exposed in all generations at the MMIO address range between &amp;lt;code&amp;gt;0x680300&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x680FFF&amp;lt;/code&amp;gt;. In most cases (and in all cases prior to [[NV10]]), the registers starting at MMIO address &amp;lt;code&amp;gt;0x680500&amp;lt;/code&amp;gt; and ending at &amp;lt;code&amp;gt;0x6805FF&amp;lt;/code&amp;gt; are used for PLL configuration; each PLL has a 32-bit{{ref|c}} register assigned to it, and there is a second 32-bit register (typically at &amp;lt;code&amp;gt;0x68050C&amp;lt;/code&amp;gt;) that is used to configure these PLLs. Each PLL register is split into three dividers{{ref|b}}, with the low 8 bits of the register making up &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;, bits 15 through 8 making up &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;, and a three-bit (bits 18 through 16) &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;. These are combined with a base clock speed - which can be simply the clock speed of the signal coming directly from the on-board clock crystal or configured via straps - in order to create the final clock speed using the following formula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(base_clock_speed * NDIV) / (MDIV &amp;lt;&amp;lt; PDIV)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, if the base clock speed is 10MHz, &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt; is 90, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt; is 10 and &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt; is 1, the formula resolves as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(10000000 * 90) / (10 &amp;lt;&amp;lt; 1)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which resolves to exactly 45,000,000 Hz (or 45 MHz).&lt;br /&gt;
&lt;br /&gt;
Additionally, via the configuration register at &amp;lt;code&amp;gt;0x60850C&amp;lt;/code&amp;gt;, various steps can be applied by the RAMDAC after this initial calculation. These settings are typically per-PLL; for example, a clock could be divided by a fixed divider, or its source can be changed. This aspect of the operation of the clock generators will be covered more in detail in the GPU-specific section. &lt;br /&gt;
&lt;br /&gt;
=== PLLs on the NV1 ===&lt;br /&gt;
The NV1 has three PLLs which are used for different purposes and are presented in this table. In the NV1, the organisation of the registers for the clock dividers is slightly different - since they are located within the STG-1764 DAC, they are not located within MMIO but are actually located inside the internal register space of the 1764, which uses 8-bit registers. This, as well as the ultimately never used OPLL, means that each PLL takes up a set of four 8-bit registers, one for each divider; the first register in the set is used to hold the &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;, the second the &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;, the third the &amp;lt;code&amp;gt;ODIV&amp;lt;/code&amp;gt; and the last is used to hold the &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Clock sources on the NV1&lt;br /&gt;
|-&lt;br /&gt;
! PLL !! Purpose !! MMIO address !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;MPLL&amp;lt;/code&amp;gt; || The name means &#039;&#039;&#039;M&#039;&#039;&#039;emory PLL, but actually clocks both the GPU core and the Video RAM || DAC space &amp;lt;code&amp;gt;0x18-0x1C&amp;lt;/code&amp;gt; ||&lt;br /&gt;
Set by [[VBIOS]] scripts by default, however the GPU drivers will clock the GPU themselves if the Video BIOS does not. Default values are: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Video BIOS&#039;&#039;&#039;: &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;=91, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;=11, &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;=1 (50.033454 MHz),&lt;br /&gt;
* &#039;&#039;&#039;Drivers&#039;&#039;&#039; (if PLL command cannot be found in Video BIOS): &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;=100, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;=14, &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;=1 (43.2 MHz),&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;APLL&amp;lt;/code&amp;gt; || Used to drive the audio system, although I am not sure exactly what it does - perhaps it drives the AD1845 SoundPort codec chip || DAC space &amp;lt;code&amp;gt;0x14-0x17&amp;lt;/code&amp;gt; || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;VPLL&amp;lt;/code&amp;gt; || Used to drive the video signal || DAC space &amp;lt;code&amp;gt;0x10-0x13&amp;lt;/code&amp;gt; || Clock speed dependent on chosen refresh rate and resolution. Typically within the range of 40 to a maximum of 170MHz.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
On NV1, there are only two configurations on the STG-1764 that directly correspond to controlling the operation of the PLLs is the low three bits of &amp;lt;code&amp;gt;SGS_DAC_POWER_MGMT_B&amp;lt;/code&amp;gt; (SGS DAC register &amp;lt;code&amp;gt;0x000D&amp;lt;/code&amp;gt;), which is used to switch off individual PLLs (who SGS-Thomson mysteriously misspelt as &amp;quot;PPLs&amp;quot;). The default state of these registers is off, which enables all PLLs - enabling bit 2 will disable APLL, bit 1 will disable VPLL and bit 0 disables VPLL. The base clock is always 12.096MHz, since this is the only one supported by the STG-1764 RAMDAC.&lt;br /&gt;
&lt;br /&gt;
The other set of configuration which is available is contained within the lower four bits of &amp;lt;code&amp;gt;SGS_DAC_CONFIG_1&amp;lt;/code&amp;gt; (SGS DAC register &amp;lt;code&amp;gt;0x0005&amp;lt;/code&amp;gt;). These exclusively deal with the VPLL, since the video clock needs much more configuration due to the variety of resolutions and refresh rates that the GPU and RAMDAC can output. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &amp;lt;code&amp;gt;SGS_DAC_CONFIG_1&amp;lt;/code&amp;gt; VPLL-related bits&lt;br /&gt;
|-&lt;br /&gt;
! Bit(s) !! Name !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Direction: &#039;&#039;&#039;off&#039;&#039;&#039; - output, &#039;&#039;&#039;on&#039;&#039;&#039; - input. || Not sure what this means. I don&#039;t know what reversing the &amp;quot;direction&amp;quot; of the VPLL would do.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Impedance: &#039;&#039;&#039;off&#039;&#039;&#039; - &amp;quot;low&amp;quot;, &#039;&#039;&#039;on&#039;&#039;&#039; - &amp;quot;high&amp;quot; || No exact ohmage is provided. Possibly intended for board&lt;br /&gt;
|-&lt;br /&gt;
| 2:0 || Video clock display ||&lt;br /&gt;
* 0x00 - Divide by 1 (don&#039;t do anything)&lt;br /&gt;
* 0x01 - Divide by 2&lt;br /&gt;
* 0x02 - Divide by 4&lt;br /&gt;
* 0x03 - Divide by 8&lt;br /&gt;
* 0x04 - Divide by 16&lt;br /&gt;
|| Applies a post-divider to the VCLK after it is calculated. Resource Manager version 2.3 only uses dividers of one and two.  &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
{{note|a|}} Used to allow different parts of the GPU core to run at different clock frequencies.&amp;lt;br&amp;gt;&lt;br /&gt;
{{note|b|}} The NV1 technically has a fourth divider, &amp;lt;code&amp;gt;ODIV&amp;lt;/code&amp;gt;, but it is always set to a value of 1 and is effectively never used.&lt;br /&gt;
{{note|c|}} Only 19 bits are actually used by these registers (except in NV1)&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=GPU_Clocking&amp;diff=1734</id>
		<title>GPU Clocking</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=GPU_Clocking&amp;diff=1734"/>
		<updated>2026-03-25T21:10:10Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Any electronic device needs a clock source to operate, and nVIDIA GPUs are no exception. In early GPUs, the system of generating phase-locked loops (PLL) was a derivative of the system used by the SGS-Thomson (now STMicro) STG-1764 &amp;quot;Van Gogh&amp;quot;, which was used as the external RAMDAC on the NV1. Although which PLLs existed changed, the overall system implementation was very similar from [[NV1]] until [[NV20]]. A partial break from this system was introduced with the implementation of multi-stage clocks in [[NV30]] and a full break was achieved with [[NV40]]&#039;s implementation of clock domains{{ref|a}}. &lt;br /&gt;
&lt;br /&gt;
=== Initial clock system (1995-2002) ===&lt;br /&gt;
&lt;br /&gt;
The clock system in NV1 to NV2x is based in the external DAC (NV1) or on chip within in the &amp;lt;code&amp;gt;[[PRAMDAC]]&amp;lt;/code&amp;gt; functional block (NV3 or later). Where it is integrated onto the chip, it is exposed in all generations at the MMIO address range between &amp;lt;code&amp;gt;0x680300&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x680FFF&amp;lt;/code&amp;gt;. In most cases (and in all cases prior to [[NV10]]), the registers starting at MMIO address &amp;lt;code&amp;gt;0x680500&amp;lt;/code&amp;gt; and ending at &amp;lt;code&amp;gt;0x6805FF&amp;lt;/code&amp;gt; are used for PLL configuration; each PLL has a 32-bit{{ref|c}} register assigned to it, and there is a second 32-bit register (typically at &amp;lt;code&amp;gt;0x68050C&amp;lt;/code&amp;gt;) that is used to configure these PLLs. Each PLL register is split into three dividers{{ref|b}}, with the low 8 bits of the register making up &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;, bits 15 through 8 making up &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;, and a three-bit (bits 18 through 16) &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;. These are combined with a base clock speed - which can be simply the clock speed of the signal coming directly from the on-board clock crystal or configured via straps - in order to create the final clock speed using the following formula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(base_clock_speed * NDIV) / (MDIV &amp;lt;&amp;lt; PDIV)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, if the base clock speed is 10MHz, &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt; is 90, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt; is 10 and &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt; is 1, the formula resolves as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(10000000 * 90) / (10 &amp;lt;&amp;lt; 1)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which resolves to exactly 45,000,000 Hz (or 45 MHz).&lt;br /&gt;
&lt;br /&gt;
Additionally, via the configuration register at &amp;lt;code&amp;gt;0x60850C&amp;lt;/code&amp;gt;, various steps can be applied by the RAMDAC after this initial calculation. These settings are typically per-PLL; for example, a clock could be divided by a fixed divider, or its source can be changed. This aspect of the operation of the clock generators will be covered more in detail in the GPU-specific section. &lt;br /&gt;
&lt;br /&gt;
=== PLLs on the NV1 ===&lt;br /&gt;
The NV1 has three PLLs which are used for different purposes and are presented in this table. In the NV1, the organisation of the registers for the clock dividers is slightly different - since they are located within the STG-1764 DAC, they are not located within MMIO but are actually located inside the internal register space of the 1764, which uses 8-bit registers. This, as well as the ultimately never used OPLL, means that each PLL takes up four 8-bit registers, one for each divider; the first register is used to hold the &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;, the second the &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;, the third the &amp;lt;code&amp;gt;ODIV&amp;lt;/code&amp;gt; and the last the &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Clock sources on the NV1&lt;br /&gt;
|-&lt;br /&gt;
! PLL !! Purpose !! MMIO address !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;MPLL&amp;lt;/code&amp;gt; || The name means &#039;&#039;&#039;M&#039;&#039;&#039;emory PLL, but actually clocks both the GPU core and the Video RAM || DAC space &amp;lt;code&amp;gt;0x18-0x1C&amp;lt;/code&amp;gt; ||&lt;br /&gt;
Set by [[VBIOS]] scripts by default, however the GPU drivers will clock the GPU themselves if the Video BIOS does not. Default values are: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Video BIOS&#039;&#039;&#039;: &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;=91, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;=11, &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;=1 (50.033454 MHz),&lt;br /&gt;
* &#039;&#039;&#039;Drivers&#039;&#039;&#039; (if PLL command cannot be found in Video BIOS): &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;=100, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;=14, &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;=1 (43.2 MHz),&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;APLL&amp;lt;/code&amp;gt; || Used to drive the audio system, although I am not sure exactly what it does - perhaps it drives the AD1845 SoundPort codec chip || DAC space &amp;lt;code&amp;gt;0x14-0x17&amp;lt;/code&amp;gt; || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;VPLL&amp;lt;/code&amp;gt; || Used to drive the video signal || DAC space &amp;lt;code&amp;gt;0x10-0x13&amp;lt;/code&amp;gt; || Clock speed dependent on chosen refresh rate and resolution. Typically within the range of 40 to a maximum of 170MHz.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
On NV1, there are only two configurations on the STG-1764 that directly correspond to controlling the operation of the PLLs is the low three bits of &amp;lt;code&amp;gt;SGS_DAC_POWER_MGMT_B&amp;lt;/code&amp;gt; (SGS DAC register &amp;lt;code&amp;gt;0x000D&amp;lt;/code&amp;gt;), which is used to switch off individual PLLs (who SGS-Thomson mysteriously misspelt as &amp;quot;PPLs&amp;quot;). The default state of these registers is off, which enables all PLLs - enabling bit 2 will disable APLL, bit 1 will disable VPLL and bit 0 disables VPLL. The base clock is always 12.096MHz, since this is the only one supported by the STG-1764 RAMDAC.&lt;br /&gt;
&lt;br /&gt;
The other set of configuration which is available is contained within the lower four bits of &amp;lt;code&amp;gt;SGS_DAC_CONFIG_1&amp;lt;/code&amp;gt; (SGS DAC register &amp;lt;code&amp;gt;0x0005&amp;lt;/code&amp;gt;). These exclusively deal with the VPLL, since the video clock needs much more configuration due to the variety of resolutions and refresh rates that the GPU can run at. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &amp;lt;code&amp;gt;SGS_DAC_CONFIG_1&amp;lt;/code&amp;gt; V PLL-related bits&lt;br /&gt;
|-&lt;br /&gt;
! Bit(s) !! Name !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Direction: &#039;&#039;&#039;off&#039;&#039;&#039; - output, &#039;&#039;&#039;on&#039;&#039;&#039; - input. || Not sure what this means. I don&#039;t know what reversing the &amp;quot;direction&amp;quot; of the VPLL would do.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Impedance: &#039;&#039;&#039;off&#039;&#039;&#039; - &amp;quot;low&amp;quot;, &#039;&#039;&#039;on&#039;&#039;&#039; - &amp;quot;high&amp;quot; || No exact ohmage is provided. Possibly intended for board&lt;br /&gt;
|-&lt;br /&gt;
| 2:0 || Video clock display ||&lt;br /&gt;
* 0x00 - Divide by 1 (don&#039;t do anything)&lt;br /&gt;
* 0x01 - Divide by 2&lt;br /&gt;
* 0x02 - Divide by 4&lt;br /&gt;
* 0x03 - Divide by 8&lt;br /&gt;
* 0x04 - Divide by 16&lt;br /&gt;
|| Applies a post-divider to the VCLK after it is calculated. Resource Manager version 2.3 only uses dividers of one and two.  &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
{{note|a|}} Used to allow different parts of the GPU core to run at different clock frequencies.&amp;lt;br&amp;gt;&lt;br /&gt;
{{note|b|}} The NV1 technically has a fourth divider, &amp;lt;code&amp;gt;ODIV&amp;lt;/code&amp;gt;, but it is always set to a value of 1 and is effectively never used.&lt;br /&gt;
{{note|c|}} Only 19 bits are actually used by these registers (except in NV1)&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=GPU_Clocking&amp;diff=1733</id>
		<title>GPU Clocking</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=GPU_Clocking&amp;diff=1733"/>
		<updated>2026-03-25T21:08:07Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Any electronic device needs a clock source to operate, and nVIDIA GPUs are no exception. In early GPUs, the system of generating phase-locked loops (PLL) was a derivative of the system used by the SGS-Thomson (now STMicro) STG-1764 &amp;quot;Van Gogh&amp;quot;, which was used as the external RAMDAC on the NV1. Although which PLLs existed changed, the overall system implementation was very similar from [[NV1]] until [[NV20]]. A partial break from this system was introduced with the implementation of multi-stage clocks in [[NV30]] and a full break was achieved with [[NV40]]&#039;s implementation of clock domains{{ref|a}}. &lt;br /&gt;
&lt;br /&gt;
=== Initial clock system (1995-2002) ===&lt;br /&gt;
&lt;br /&gt;
The clock system in NV1 to NV2x is based in the external DAC (NV1) or on chip within in the &amp;lt;code&amp;gt;[[PRAMDAC]]&amp;lt;/code&amp;gt; functional block (NV3 or later). Where it is integrated onto the chip, it is exposed in all generations at the MMIO address range between &amp;lt;code&amp;gt;0x680300&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x680FFF&amp;lt;/code&amp;gt;. In most cases (and in all cases prior to [[NV10]]), the registers starting at MMIO address &amp;lt;code&amp;gt;0x680500&amp;lt;/code&amp;gt; and ending at &amp;lt;code&amp;gt;0x6805FF&amp;lt;/code&amp;gt; are used for PLL configuration; each PLL has a 32-bit{{ref|c}} register assigned to it, and there is a second 32-bit register (typically at &amp;lt;code&amp;gt;0x68050C&amp;lt;/code&amp;gt;) that is used to configure these PLLs. Each PLL register is split into three dividers{{ref|b}}, with the low 8 bits of the register making up &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;, bits 15 through 8 making up &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;, and a three-bit (bits 18 through 16) &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;. These are combined with a base clock speed - which can be simply the clock speed of the signal coming directly from the on-board clock crystal or configured via straps - in order to create the final clock speed using the following formula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(base_clock_speed * NDIV) / (MDIV &amp;lt;&amp;lt; PDIV)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, if the base clock speed is 10MHz, &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt; is 90, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt; is 10 and &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt; is 1, the formula resolves as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(10000000 * 90) / (10 &amp;lt;&amp;lt; 1)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which resolves to exactly 45,000,000 Hz (or 45 MHz).&lt;br /&gt;
&lt;br /&gt;
Additionally, via the configuration register at &amp;lt;code&amp;gt;0x60850C&amp;lt;/code&amp;gt;, various steps can be applied by the RAMDAC after this initial calculation. These settings are typically per-PLL; for example, a clock could be divided by a fixed divider, or its source can be changed. This aspect of the operation of the clock generators will be covered more in detail in the GPU-specific section. &lt;br /&gt;
&lt;br /&gt;
=== PLLs on the NV1 ===&lt;br /&gt;
The NV1 has three PLLs which are used for different purposes and are presented in this table. In the NV1, the organisation of the registers for the clock dividers is slightly different - since they are located within the STG-1764 DAC, they are not located within MMIO but are actually located inside the internal register space of the 1764, which uses 8-bit registers. This, as well as the ultimately never used OPLL, means that each PLL takes up four 8-bit registers, one for each divider; the first register is used to hold the &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;, the second the &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;, the third the &amp;lt;code&amp;gt;ODIV&amp;lt;/code&amp;gt; and the last the &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Clock sources on the NV1&lt;br /&gt;
|-&lt;br /&gt;
! PLL !! Purpose !! MMIO address !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;MPLL&amp;lt;/code&amp;gt; || The name means &#039;&#039;&#039;M&#039;&#039;&#039;emory PLL, but actually clocks both the GPU core and the Video RAM || DAC space &amp;lt;code&amp;gt;0x18-0x1C&amp;lt;/code&amp;gt; ||&lt;br /&gt;
Set by [[VBIOS]] scripts by default, however the GPU drivers will clock the GPU themselves if the Video BIOS does not. Default values are: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Video BIOS&#039;&#039;&#039;: &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;=91, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;=11, &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;=1 (50.033454 MHz),&lt;br /&gt;
* &#039;&#039;&#039;Drivers&#039;&#039;&#039; (if PLL command cannot be found in Video BIOS): &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;=100, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;=14, &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;=1 (43.2 MHz),&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;APLL&amp;lt;/code&amp;gt; || Used to drive the audio system, although I am not sure exactly what it does - perhaps it drives the AD1845 SoundPort codec chip || DAC space &amp;lt;code&amp;gt;0x14-0x17&amp;lt;/code&amp;gt; || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;VPLL&amp;lt;/code&amp;gt; || Used to drive the video signal || DAC space &amp;lt;code&amp;gt;0x10-0x13&amp;lt;/code&amp;gt; || Clock speed dependent on chosen refresh rate and resolution. Typically within the range of 40 to a maximum of 170MHz.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
On NV1, there are only two configurations on the STG-1764 that directly correspond to controlling the operation of the PLLs is the low three bits of &amp;lt;code&amp;gt;SGS_DAC_POWER_MGMT_B&amp;lt;/code&amp;gt; (SGS DAC register &amp;lt;code&amp;gt;0x000D&amp;lt;/code&amp;gt;), which is used to switch off individual PLLs (who SGS-Thomson mysteriously misspelt as &amp;quot;PPLs&amp;quot;). The default state of these registers is off, which enables all PLLs - enabling bit 2 will disable APLL, bit 1 will disable VPLL and bit 0 disables VPLL.&lt;br /&gt;
&lt;br /&gt;
The other set of configuration which is available is contained within the lower four bits of &amp;lt;code&amp;gt;SGS_DAC_CONFIG_1&amp;lt;/code&amp;gt; (SGS DAC register &amp;lt;code&amp;gt;0x0005&amp;lt;/code&amp;gt;). These exclusively deal with the VPLL, since the video clock needs much more configuration due to the variety of resolutions and refresh rates that the GPU can run at. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &amp;lt;code&amp;gt;SGS_DAC_CONFIG_1&amp;lt;/code&amp;gt; V PLL-related bits&lt;br /&gt;
|-&lt;br /&gt;
! Bit(s) !! Name !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Direction: &#039;&#039;&#039;off&#039;&#039;&#039; - output, &#039;&#039;&#039;on&#039;&#039;&#039; - input. || Not sure what this means. I don&#039;t know what reversing the &amp;quot;direction&amp;quot; of the VPLL would do.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Impedance: &#039;&#039;&#039;off&#039;&#039;&#039; - &amp;quot;low&amp;quot;, &#039;&#039;&#039;on&#039;&#039;&#039; - &amp;quot;high&amp;quot; || No exact ohmage is provided. Possibly intended for board&lt;br /&gt;
|-&lt;br /&gt;
| 2:0 || Video clock display ||&lt;br /&gt;
* 0x00 - Divide by 1 (don&#039;t do anything)&lt;br /&gt;
* 0x01 - Divide by 2&lt;br /&gt;
* 0x02 - Divide by 4&lt;br /&gt;
* 0x03 - Divide by 8&lt;br /&gt;
* 0x04 - Divide by 16&lt;br /&gt;
|| Applies a post-divider to the VCLK after it is calculated. Resource Manager version 2.3 only uses dividers of one and two.  &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
{{note|a|}} Used to allow different parts of the GPU core to run at different clock frequencies.&amp;lt;br&amp;gt;&lt;br /&gt;
{{note|b|}} The NV1 technically has a fourth divider, &amp;lt;code&amp;gt;ODIV&amp;lt;/code&amp;gt;, but it is always set to a value of 1 and is effectively never used.&lt;br /&gt;
{{note|c|}} Only 19 bits are actually used by these registers (except in NV1)&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=GPU_Clocking&amp;diff=1732</id>
		<title>GPU Clocking</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=GPU_Clocking&amp;diff=1732"/>
		<updated>2026-03-25T19:54:38Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: Add PLL config 000d 2:0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Any electronic device needs a clock source to operate, and nVIDIA GPUs are no exception. In early GPUs, the system of generating phase-locked loops (PLL) was a derivative of the system used by the SGS-Thomson (now STMicro) STG-1764 &amp;quot;Van Gogh&amp;quot;, which was used as the external RAMDAC on the NV1. Although which PLLs existed changed, the overall system implementation was very similar from [[NV1]] until [[NV20]]. A partial break from this system was introduced with the implementation of multi-stage clocks in [[NV30]] and a full break was achieved with [[NV40]]&#039;s implementation of clock domains{{ref|a}}. &lt;br /&gt;
&lt;br /&gt;
=== Initial clock system (1995-2002) ===&lt;br /&gt;
&lt;br /&gt;
The clock system in NV1 to NV2x is based in the external DAC (NV1) or on chip within in the &amp;lt;code&amp;gt;[[PRAMDAC]]&amp;lt;/code&amp;gt; functional block (NV3 or later). Where it is integrated onto the chip, it is exposed in all generations at the MMIO address range between &amp;lt;code&amp;gt;0x680300&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x680FFF&amp;lt;/code&amp;gt;. In most cases (and in all cases prior to [[NV10]]), the registers starting at MMIO address &amp;lt;code&amp;gt;0x680500&amp;lt;/code&amp;gt; and ending at &amp;lt;code&amp;gt;0x6805FF&amp;lt;/code&amp;gt; are used for PLL configuration; each PLL has a 32-bit{{ref|c}} register assigned to it, and there is a second 32-bit register (typically at &amp;lt;code&amp;gt;0x68050C&amp;lt;/code&amp;gt;) that is used to configure these PLLs. Each PLL register is split into three dividers{{ref|b}}, with the low 8 bits of the register making up &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;, bits 15 through 8 making up &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;, and a three-bit (bits 18 through 16) &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;. These are combined with a base clock speed - which can be simply the clock speed of the signal coming directly from the on-board clock crystal or configured via straps - in order to create the final clock speed using the following formula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(base_clock_speed * NDIV) / (MDIV &amp;lt;&amp;lt; PDIV)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, if the base clock speed is 10MHz, &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt; is 90, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt; is 10 and &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt; is 1, the formula resolves as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(10000000 * 90) / (10 &amp;lt;&amp;lt; 1)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which resolves to exactly 45,000,000 Hz (or 45 MHz).&lt;br /&gt;
&lt;br /&gt;
Additionally, via the configuration register at &amp;lt;code&amp;gt;0x60850C&amp;lt;/code&amp;gt;, various steps can be applied by the RAMDAC after this initial calculation. These settings are typically per-PLL; for example, a clock could be divided by a fixed divider, or its source can be changed. This aspect of the operation of the clock generators will be covered more in detail in the GPU-specific section. &lt;br /&gt;
&lt;br /&gt;
=== PLLs on the NV1 ===&lt;br /&gt;
The NV1 has three PLLs which are used for different purposes and are presented in this table. In the NV1, the organisation of the registers for the clock dividers is slightly different - since they are located within the STG-1764 DAC, they are not located within MMIO but are actually located inside the internal register space of the 1764, which uses 8-bit registers. This, as well as the ultimately never used OPLL, means that each PLL takes up four 8-bit registers, one for each divider; the first register is used to hold the &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;, the second the &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;, the third the &amp;lt;code&amp;gt;ODIV&amp;lt;/code&amp;gt; and the last the &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Clock sources on the NV1&lt;br /&gt;
|-&lt;br /&gt;
! PLL !! Purpose !! MMIO address !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;MPLL&amp;lt;/code&amp;gt; || The name means &#039;&#039;&#039;M&#039;&#039;&#039;emory PLL, but actually clocks both the GPU core and the Video RAM || DAC space &amp;lt;code&amp;gt;0x18-0x1C&amp;lt;/code&amp;gt; ||&lt;br /&gt;
Set by [[VBIOS]] scripts by default, however the GPU drivers will clock the GPU themselves if the Video BIOS does not. Default values are: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Video BIOS&#039;&#039;&#039;: &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;=91, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;=11, &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;=1 (50.033454 MHz),&lt;br /&gt;
* &#039;&#039;&#039;Drivers&#039;&#039;&#039; (if PLL command cannot be found in Video BIOS): &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;=100, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;=14, &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;=1 (43.2 MHz),&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;APLL&amp;lt;/code&amp;gt; || Used to drive the audio system, although I am not sure exactly what it does - perhaps it drives the AD1845 SoundPort codec chip || DAC space &amp;lt;code&amp;gt;0x14-0x17&amp;lt;/code&amp;gt; || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;VPLL&amp;lt;/code&amp;gt; || Used to drive the video signal || DAC space &amp;lt;code&amp;gt;0x10-0x13&amp;lt;/code&amp;gt; || Clock speed dependent on chosen refresh rate and resolution. Typically within the range of 40 to a maximum of 170MHz.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
On NV1, the only configuration on the STG-1764 that directly corresponds to controlling the operation of the PLLs is the low three bits of &amp;lt;code&amp;gt;SGS_DAC_POWER_MGMT_B&amp;lt;/code&amp;gt; (SGS DAC register &amp;lt;code&amp;gt;0x000D&amp;lt;/code&amp;gt;), which are used to switch off individual PLLs (mysteriously misspelt as &amp;quot;PPLs&amp;quot;); enabling bit 2 will disable APLL, bit 1 will disable VPLL and bit 0 would disable VPLL.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
{{note|a|}} Used to allow different parts of the GPU core to run at different clock frequencies.&amp;lt;br&amp;gt;&lt;br /&gt;
{{note|b|}} The NV1 technically has a fourth divider, &amp;lt;code&amp;gt;ODIV&amp;lt;/code&amp;gt;, but it is always set to a value of 1 and is effectively never used.&lt;br /&gt;
{{note|c|}} Only 19 bits are actually used by these registers (except in NV1)&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=GPU_Clocking&amp;diff=1731</id>
		<title>GPU Clocking</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=GPU_Clocking&amp;diff=1731"/>
		<updated>2026-03-25T17:23:28Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Any electronic device needs a clock source to operate, and nVIDIA GPUs are no exception. In early GPUs, the system of generating phase-locked loops (PLL) was a derivative of the system used by the SGS-Thomson (now STMicro) STG-1764 &amp;quot;Van Gogh&amp;quot;, which was used as the external RAMDAC on the NV1. Although which PLLs existed changed, the overall system implementation was very similar from [[NV1]] until [[NV20]]. A partial break from this system was introduced with the implementation of multi-stage clocks in [[NV30]] and a full break was achieved with [[NV40]]&#039;s implementation of clock domains{{ref|a}}. &lt;br /&gt;
&lt;br /&gt;
=== Initial clock system (1995-2002) ===&lt;br /&gt;
&lt;br /&gt;
The clock system in NV1 to NV2x is based in the external DAC (NV1) or on chip within in the &amp;lt;code&amp;gt;[[PRAMDAC]]&amp;lt;/code&amp;gt; functional block (NV3 or later). Where it is integrated onto the chip, it is exposed in all generations at the MMIO address range between &amp;lt;code&amp;gt;0x680300&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x680FFF&amp;lt;/code&amp;gt;. In most cases (and in all cases prior to [[NV10]]), the registers starting at MMIO address &amp;lt;code&amp;gt;0x680500&amp;lt;/code&amp;gt; and ending at &amp;lt;code&amp;gt;0x6805FF&amp;lt;/code&amp;gt; are used for PLL configuration; each PLL has a 32-bit{{ref|c}} register assigned to it, and there is a second 32-bit register (typically at &amp;lt;code&amp;gt;0x68050C&amp;lt;/code&amp;gt;) that is used to configure these PLLs. Each PLL register is split into three dividers{{ref|b}}, with the low 8 bits of the register making up &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;, bits 15 through 8 making up &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;, and a three-bit (bits 18 through 16) &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;. These are combined with a base clock speed - which can be simply the clock speed of the signal coming directly from the on-board clock crystal or configured via straps - in order to create the final clock speed using the following formula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(base_clock_speed * NDIV) / (MDIV &amp;lt;&amp;lt; PDIV)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, if the base clock speed is 10MHz, &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt; is 90, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt; is 10 and &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt; is 1, the formula resolves as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(10000000 * 90) / (10 &amp;lt;&amp;lt; 1)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which resolves to exactly 45,000,000 Hz (or 45 MHz).&lt;br /&gt;
&lt;br /&gt;
Additionally, via the configuration register at &amp;lt;code&amp;gt;0x60850C&amp;lt;/code&amp;gt;, various steps can be applied by the RAMDAC after this initial calculation. These settings are typically per-PLL; for example, a clock could be divided by a fixed divider, or its source can be changed. This aspect of the operation of the clock generators will be covered more in detail in the GPU-specific section. &lt;br /&gt;
&lt;br /&gt;
=== PLLs on the NV1 ===&lt;br /&gt;
The NV1 has three PLLs which are used for different purposes and are presented in this table. In the NV1, the organisation of the registers for the clock dividers is slightly different - since they are located within the STG-1764 DAC, they are not located within MMIO but are actually located inside the internal register space of the 1764, which uses 8-bit registers. This, as well as the ultimately never used OPLL, means that each PLL takes up four 8-bit registers, one for each divider; the first register is used to hold the &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;, the second the &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;, the third the &amp;lt;code&amp;gt;ODIV&amp;lt;/code&amp;gt; and the last the &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Clock sources on the NV1&lt;br /&gt;
|-&lt;br /&gt;
! PLL !! Purpose !! MMIO address !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;MPLL&amp;lt;/code&amp;gt; || The name means &#039;&#039;&#039;M&#039;&#039;&#039;emory PLL, but actually clocks both the GPU core and the Video RAM || DAC space &amp;lt;code&amp;gt;0x18-0x1C&amp;lt;/code&amp;gt; ||&lt;br /&gt;
Set by [[VBIOS]] scripts by default, however the GPU drivers will clock the GPU themselves if the Video BIOS does not. Default values are: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Video BIOS&#039;&#039;&#039;: &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;=91, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;=11, &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;=1 (50.033454 MHz),&lt;br /&gt;
* &#039;&#039;&#039;Drivers&#039;&#039;&#039; (if PLL command cannot be found in Video BIOS): &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;=100, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;=14, &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;=1 (43.2 MHz),&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;APLL&amp;lt;/code&amp;gt; || Used to drive the audio system, although I am not sure exactly what it does - perhaps it drives the AD1845 SoundPort codec chip || DAC space &amp;lt;code&amp;gt;0x14-0x17&amp;lt;/code&amp;gt; || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;VPLL&amp;lt;/code&amp;gt; || Used to drive the video signal || DAC space &amp;lt;code&amp;gt;0x10-0x13&amp;lt;/code&amp;gt; || Clock speed dependent on chosen refresh rate and resolution. Typically within the range of 40 to a maximum of 170MHz.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
{{note|a|}} Used to allow different parts of the GPU core to run at different clock frequencies.&amp;lt;br&amp;gt;&lt;br /&gt;
{{note|b|}} The NV1 technically has a fourth divider, &amp;lt;code&amp;gt;ODIV&amp;lt;/code&amp;gt;, but it is always set to a value of 1 and is effectively never used.&lt;br /&gt;
{{note|c|}} Only 19 bits are actually used by these registers (except in NV1)&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=GPU_Clocking&amp;diff=1730</id>
		<title>GPU Clocking</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=GPU_Clocking&amp;diff=1730"/>
		<updated>2026-03-25T17:15:59Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Any electronic device needs a clock source to operate, and nVIDIA GPUs are no exception. In early GPUs, the system of generating phase-locked loops (PLL) was a derivative of the system used by the SGS-Thomson (now STMicro) STG-1764 &amp;quot;Van Gogh&amp;quot;, which was used as the external RAMDAC on the NV1. Although which PLLs existed changed, the overall system implementation was very similar from [[NV1]] until [[NV20]]. A partial break from this system was introduced with the implementation of multi-stage clocks in [[NV30]] and a full break was achieved with [[NV40]]&#039;s implementation of clock domains{{ref|a}}. &lt;br /&gt;
&lt;br /&gt;
=== Initial clock system (1995-2002) ===&lt;br /&gt;
&lt;br /&gt;
The clock system in NV1 to NV2x is based in the external DAC (NV1) or on chip within in the &amp;lt;code&amp;gt;[[PRAMDAC]]&amp;lt;/code&amp;gt; functional block (NV3 or later). Where it is integrated onto the chip, it is exposed in all generations at the MMIO address range between &amp;lt;code&amp;gt;0x680300&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x680FFF&amp;lt;/code&amp;gt;. In most cases (and in all cases prior to [[NV10]]), the registers starting at MMIO address &amp;lt;code&amp;gt;0x680500&amp;lt;/code&amp;gt; and ending at &amp;lt;code&amp;gt;0x6805FF&amp;lt;/code&amp;gt; are used for PLL configuration; each PLL has a 32-bit{{ref|c}} register assigned to it, and there is a second 32-bit register (typically at &amp;lt;code&amp;gt;0x68050C&amp;lt;/code&amp;gt;) that is used to configure these PLLs. Each PLL register is split into three dividers{{ref|b}}, with the low 8 bits of the register making up &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;, bits 15 through 8 making up &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;, and a three-bit (bits 18 through 16) &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;. These are combined with a base clock speed - which can be simply the clock speed of the signal coming directly from the on-board clock crystal or configured via straps - in order to create the final clock speed using the following formula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(base_clock_speed * NDIV) / (MDIV &amp;lt;&amp;lt; PDIV)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, if the base clock speed is 10MHz, &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt; is 90, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt; is 10 and &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt; is 1, the formula resolves as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(10000000 * 90) / (10 &amp;lt;&amp;lt; 1)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which resolves to exactly 45,000,000 Hz (or 45 MHz).&lt;br /&gt;
&lt;br /&gt;
Additionally, via the configuration register at &amp;lt;code&amp;gt;0x60850C&amp;lt;/code&amp;gt;, various steps can be applied by the RAMDAC after this initial calculation. These settings are typically per-PLL; for example, a clock could be divided by a fixed divider, or its source can be changed. This aspect of the operation of the clock generators will be covered more in detail in the GPU-specific section. &lt;br /&gt;
&lt;br /&gt;
=== PLLs on the NV1 ===&lt;br /&gt;
The NV1 has three PLLs which are used for different purposes and are presented in this table. In the NV1, the organisation of the registers for the clock dividers is slightly different - since they are located within the STG-1764 DAC, they are not located within MMIO but are actually located inside the internal register space of the 1764, which uses 8-bit registers. This, as well as the ultimately never used OPLL, means that each PLL takes up four 8-bit registers, one for each divier&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Clock sources on the NV1&lt;br /&gt;
|-&lt;br /&gt;
! PLL !! Purpose !! MMIO address !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;MPLL&amp;lt;/code&amp;gt; || The name means &#039;&#039;&#039;M&#039;&#039;&#039;emory PLL, but actually clocks both the GPU core and the Video RAM || DAC space &amp;lt;code&amp;gt;0x18-0x1C&amp;lt;/code&amp;gt; ||&lt;br /&gt;
Set by [[VBIOS]] scripts by default, however the GPU drivers will clock the GPU themselves if the Video BIOS does not. Default values are: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Video BIOS&#039;&#039;&#039;: &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;=91, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;=11, &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;=1 (50.033454 MHz),&lt;br /&gt;
* &#039;&#039;&#039;Drivers&#039;&#039;&#039; (if PLL command cannot be found in Video BIOS): &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;=100, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;=14, &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;=1 (43.2 MHz),&lt;br /&gt;
|-&lt;br /&gt;
| Example || Example || || Example&lt;br /&gt;
|-&lt;br /&gt;
| Example || Example || Example || Example&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
{{note|a|}} Used to allow different parts of the GPU core to run at different clock frequencies.&amp;lt;br&amp;gt;&lt;br /&gt;
{{note|b|}} The NV1 technically has a fourth divider, &amp;lt;code&amp;gt;ODIV&amp;lt;/code&amp;gt;, but it is always set to a value of 1 and is effectively never used.&lt;br /&gt;
{{note|c|}} Only 19 bits are actually used&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=GPU_Clocking&amp;diff=1729</id>
		<title>GPU Clocking</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=GPU_Clocking&amp;diff=1729"/>
		<updated>2026-03-25T17:06:42Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Any electronic device needs a clock source to operate, and nVIDIA GPUs are no exception. In early GPUs, the system of generating phase-locked loops (PLL) was a derivative of the system used by the SGS-Thomson (now STMicro) STG-1764 &amp;quot;Van Gogh&amp;quot;, which was used as the external RAMDAC on the NV1. Although which PLLs existed changed, the overall system implementation was very similar from [[NV1]] until [[NV20]]. A partial break from this system was introduced with the implementation of multi-stage clocks in [[NV30]] and a full break was achieved with [[NV40]]&#039;s implementation of clock domains{{ref|a}}. &lt;br /&gt;
&lt;br /&gt;
=== Initial clock system (1995-2002) ===&lt;br /&gt;
&lt;br /&gt;
The clock system in NV1 to NV2x is based in the external DAC (NV1) or on chip within in the &amp;lt;code&amp;gt;[[PRAMDAC]]&amp;lt;/code&amp;gt; functional block (NV3 or later). Where it is integrated onto the chip, it is exposed in all generations at the MMIO address range between &amp;lt;code&amp;gt;0x680300&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x680FFF&amp;lt;/code&amp;gt;. In most cases (and in all cases prior to [[NV10]]), the registers starting at MMIO address &amp;lt;code&amp;gt;0x680500&amp;lt;/code&amp;gt; and ending at &amp;lt;code&amp;gt;0x6805FF&amp;lt;/code&amp;gt; are used for PLL configuration; each PLL has a 32-bit{{ref|c}} register assigned to it, and there is a second 32-bit register (typically at &amp;lt;code&amp;gt;0x68050C&amp;lt;/code&amp;gt;) that is used to configure these PLLs. Each PLL register is split into three dividers{{ref|b}}, with the low 8 bits of the register making up &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;, bits 15 through 8 making up &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;, and a three-bit (bits 18 through 16) &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;. These are combined with a base clock speed - which can be simply the clock speed of the signal coming directly from the on-board clock crystal or configured via straps - in order to create the final clock speed using the following formula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(base_clock_speed * NDIV) / (MDIV &amp;lt;&amp;lt; PDIV)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, if the base clock speed is 10MHz, &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt; is 90, &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt; is 10 and &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt; is 1, the formula resolves as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(10000000 * 90) / (10 &amp;lt;&amp;lt; 1)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which resolves to exactly 45,000,000 Hz (or 45 MHz).&lt;br /&gt;
&lt;br /&gt;
Additionally, via the configuration register at &amp;lt;code&amp;gt;0x60850C&amp;lt;/code&amp;gt;, various steps can be applied by the RAMDAC after this initial calculation. These settings are typically per-PLL; for example, a clock could be divided by a fixed divider, or its source can be changed. This aspect of the operation of the clock generators will be covered more in detail in the GPU-specific section. &lt;br /&gt;
&lt;br /&gt;
=== PLLs on the NV1 ===&lt;br /&gt;
The NV1 has three PLLs. &lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
{{note|a|}} Used to allow different parts of the GPU core to run at different clock frequencies.&amp;lt;br&amp;gt;&lt;br /&gt;
{{note|b|}} The NV1 technically has a fourth divider, &amp;lt;code&amp;gt;ODIV&amp;lt;/code&amp;gt;, but it is always set to a value of 1 and is effectively never used.&lt;br /&gt;
{{note|c|}} Only 19 bits are actually used&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=GPU_Clocking&amp;diff=1728</id>
		<title>GPU Clocking</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=GPU_Clocking&amp;diff=1728"/>
		<updated>2026-03-25T17:02:21Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Any electronic device needs a clock source to operate, and nVIDIA GPUs are no exception. In early GPUs, the system of generating phase-locked loops (PLL) was a derivative of the system used by the SGS-Thomson (now STMicro) STG-1764 &amp;quot;Van Gogh&amp;quot;, which was used as the external RAMDAC on the NV1. Although which PLLs existed changed, the overall system implementation was very similar from [[NV1]] until [[NV20]]. A partial break from this system was introduced with the implementation of multi-stage clocks in [[NV30]] and a full break was achieved with [[NV40]]&#039;s implementation of clock domains{{ref|a}}. &lt;br /&gt;
&lt;br /&gt;
=== Initial clock system (1995-2002) ===&lt;br /&gt;
&lt;br /&gt;
The clock system in NV1 to NV2x is based in the external DAC (NV1) or on chip within in the &amp;lt;code&amp;gt;[[PRAMDAC]]&amp;lt;/code&amp;gt; functional block (NV3 or later). Where it is integrated onto the chip, it is exposed in all generations at MMIO address ranges between &amp;lt;code&amp;gt;0x680300&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;0x680FFF&amp;lt;/code&amp;gt;. In most cases (and in all cases prior to [[NV10]]), the registers staring at &amp;lt;code&amp;gt;0x680500&amp;lt;/code&amp;gt; and ending at &amp;lt;code&amp;gt;0x6805FF&amp;lt;/code&amp;gt; are used for PLL configuration; each PLL has a 32-bit{{ref|c}} register assigned to it, and there is a second 32-bit register (typically at &amp;lt;code&amp;gt;0x68050C&amp;lt;/code&amp;gt;) that is used to configure these PLLs. Each PLL register is split into three dividers{{ref|b}}, with the low 8 bits making up &amp;lt;code&amp;gt;MDIV&amp;lt;/code&amp;gt;, bits 15 through 8 making up &amp;lt;code&amp;gt;NDIV&amp;lt;/code&amp;gt;, and a three-bit (bits 18 through 16) &amp;lt;code&amp;gt;PDIV&amp;lt;/code&amp;gt;. These are combined with a base clock speed - which can be hardcoded by simply taking the signal coming directly from the on-board clock crystal, or configured via straps - in order to create the final clock speed using the following formula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(base_clock_speed * NDIV) / (MDIV &amp;lt;&amp;lt; PDIV)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PLLs on the NV1 ===&lt;br /&gt;
The NV1 has three PLLs. &lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
{{note|a|}} Used to allow different parts of the GPU core to run at different clock frequencies.&amp;lt;br&amp;gt;&lt;br /&gt;
{{note|b|}} The NV1 technically has a fourth divider, &amp;lt;code&amp;gt;ODIV&amp;lt;/code&amp;gt;, but it is always set to a value of 1 and is effectively never used.&lt;br /&gt;
{{note|c|}} Only 19 bits are actually used&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=GPU_Clocking&amp;diff=1727</id>
		<title>GPU Clocking</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=GPU_Clocking&amp;diff=1727"/>
		<updated>2026-03-25T14:47:27Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: Created page with &amp;quot;Any electronic device needs a clock source to operate, and Nvidia GPUs are no exception. In early nVIDIA GPU&amp;#039;s, the system of generating phase-locked loops (PLL) was a derivative that used by the SGS-Thomson STG-1764 &amp;quot;Van Gogh&amp;quot;, which was used as the external RAMDAC on the NV1. Although which PLLs existed changed, the overall system implementation was very similar from NV1 until NV20. A partial break from this system was introduced with the implementation of mult...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Any electronic device needs a clock source to operate, and Nvidia GPUs are no exception. In early nVIDIA GPU&#039;s, the system of generating phase-locked loops (PLL) was a derivative that used by the SGS-Thomson STG-1764 &amp;quot;Van Gogh&amp;quot;, which was used as the external RAMDAC on the NV1. Although which PLLs existed changed, the overall system implementation was very similar from [[NV1]] until [[NV20]]. A partial break from this system was introduced with the implementation of multi-stage clocks in [[NV30]] and a full break was achieved with [[NV40]]&#039;s implementation of clock domains{{ref|a}},&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
{{note|a|}} Used to allow different parts of the GPU core to run at different clock frequencies.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=NV1_known_models&amp;diff=1726</id>
		<title>NV1 known models</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NV1_known_models&amp;diff=1726"/>
		<updated>2026-03-19T23:07:11Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of known card models of the NVidia NV1. Attempts have been made to sort the companies by number of units sold.&lt;br /&gt;
&lt;br /&gt;
=== Diamond Multimedia ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Model information&lt;br /&gt;
|-&lt;br /&gt;
! Brand name !! RAM type !! RAM amount !! Chip branding&lt;br /&gt;
|-&lt;br /&gt;
| Edge 3D 2120 || DRAM || 1 MB || STG2000X&lt;br /&gt;
|-&lt;br /&gt;
| Edge 3D 2200 || DRAM || 2 MB || STG2000X (usually)&lt;br /&gt;
|-&lt;br /&gt;
| Edge 3D 3240 || VRAM || 2 MB || NV1&lt;br /&gt;
|-&lt;br /&gt;
| Edge 3D 3400 || VRAM || 4 MB (2MB on &amp;quot;3D Memory Module&amp;quot;) || NV1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Videoforte ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Model information&lt;br /&gt;
|-&lt;br /&gt;
! Brand name !! RAM type !! RAM amount !! Chip branding&lt;br /&gt;
|-&lt;br /&gt;
| VF64-3DG-01 || DRAM || 2 MB || NV1&lt;br /&gt;
|-&lt;br /&gt;
| VF64-3DG-02 || DRAM || 4 MB || NV1&lt;br /&gt;
|-&lt;br /&gt;
| MAG Japan MultimediaCard MAG-8000 || EDO DRAM || 4 MB || NV1 (Seems to be a rebranded version of the 3DG-02, since the driver CD has a &amp;quot;VF64-3DG&amp;quot; folder. Serial number on listing was 000081, so very few were ever produced)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Jazz Multimedia ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Model information&lt;br /&gt;
|-&lt;br /&gt;
! Brand name !! RAM type !! RAM amount !! Chip branding&lt;br /&gt;
|-&lt;br /&gt;
| 3D Magic || DRAM || 2 MB || NV1&lt;br /&gt;
|-&lt;br /&gt;
| 3D Magic VRAM (cancelled) || VRAM || Unknown || Unknown&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Leadtek ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Model information&lt;br /&gt;
|-&lt;br /&gt;
! Brand name !! RAM type !! RAM amount !! Chip branding&lt;br /&gt;
|-&lt;br /&gt;
| Proview GD400 (very few produced - all 9547) || DRAM || 1 MB || STG-2000X&lt;br /&gt;
|-&lt;br /&gt;
| Proview GV500 (cancelled) || VRAM || 2 MB || NV1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Unknown ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Model information&lt;br /&gt;
|-&lt;br /&gt;
! Brand name !! RAM type !! RAM amount !! Chip branding&lt;br /&gt;
|-&lt;br /&gt;
| Turbo 2000B || DRAM || 1 MB or 2 MB || NV1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== YUAN ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Model information&lt;br /&gt;
|-&lt;br /&gt;
! Brand name !! RAM type !! RAM amount !! Chip branding&lt;br /&gt;
|-&lt;br /&gt;
| JRS-3DS-100 (v3.0, v6.0, v6.9 known) || DRAM  || 2 MB || STG-2000X&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=NV1_known_models&amp;diff=1725</id>
		<title>NV1 known models</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NV1_known_models&amp;diff=1725"/>
		<updated>2026-03-19T23:06:52Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of known card models of the NVidia NV1. Attempts have been made to sort the companies by number of units sold.&lt;br /&gt;
&lt;br /&gt;
=== Diamond Multimedia ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Model information&lt;br /&gt;
|-&lt;br /&gt;
! Brand name !! RAM type !! RAM amount !! Chip branding&lt;br /&gt;
|-&lt;br /&gt;
| Edge 3D 2120 || DRAM || 1 MB || STG2000X&lt;br /&gt;
|-&lt;br /&gt;
| Edge 3D 2200 || DRAM || 2 MB || STG2000X (usually)&lt;br /&gt;
|-&lt;br /&gt;
| Edge 3D 3240 || VRAM || 2 MB || NV1&lt;br /&gt;
|-&lt;br /&gt;
| Edge 3D 3400 || VRAM || 4 MB (2MB on &amp;quot;3D Memory Module&amp;quot;) || NV1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Videoforte ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Model information&lt;br /&gt;
|-&lt;br /&gt;
! Brand name !! RAM type !! RAM amount !! Chip branding&lt;br /&gt;
|-&lt;br /&gt;
| VF64-3DG-01 || DRAM || 2 MB || NV1&lt;br /&gt;
|-&lt;br /&gt;
| VF64-3DG-02 || DRAM || 4 MB || NV1&lt;br /&gt;
|-&lt;br /&gt;
| MAG Japan MultimediaCard MAG-8000 || EDO DRAM || 4 MB || NV1 (Seems to be a rebranded version of the 3DG-02, since the driver CD has a &amp;quot;VF64-3DG&amp;quot; folder)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Jazz Multimedia ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Model information&lt;br /&gt;
|-&lt;br /&gt;
! Brand name !! RAM type !! RAM amount !! Chip branding&lt;br /&gt;
|-&lt;br /&gt;
| 3D Magic || DRAM || 2 MB || NV1&lt;br /&gt;
|-&lt;br /&gt;
| 3D Magic VRAM (cancelled) || VRAM || Unknown || Unknown&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Leadtek ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Model information&lt;br /&gt;
|-&lt;br /&gt;
! Brand name !! RAM type !! RAM amount !! Chip branding&lt;br /&gt;
|-&lt;br /&gt;
| Proview GD400 (very few produced - all 9547) || DRAM || 1 MB || STG-2000X&lt;br /&gt;
|-&lt;br /&gt;
| Proview GV500 (cancelled) || VRAM || 2 MB || NV1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Unknown ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Model information&lt;br /&gt;
|-&lt;br /&gt;
! Brand name !! RAM type !! RAM amount !! Chip branding&lt;br /&gt;
|-&lt;br /&gt;
| Turbo 2000B || DRAM || 1 MB or 2 MB || NV1&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== YUAN ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Model information&lt;br /&gt;
|-&lt;br /&gt;
! Brand name !! RAM type !! RAM amount !! Chip branding&lt;br /&gt;
|-&lt;br /&gt;
| JRS-3DS-100 (v3.0, v6.0, v6.9 known) || DRAM  || 2 MB || STG-2000X&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=NV1&amp;diff=1724</id>
		<title>NV1</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NV1&amp;diff=1724"/>
		<updated>2026-02-03T23:55:49Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Infobox GPU&lt;br /&gt;
|title=&#039;&#039;&#039;NV1&#039;&#039;&#039;&lt;br /&gt;
|architecture=NV1&lt;br /&gt;
|branding=SGS-Thomson STG2000; NV1; OEM cards: Diamond Edge 3D; Jazz Multimedia 3D Magic&lt;br /&gt;
|announcement_date=22 May 1995&lt;br /&gt;
|release_date=Q3 1995&lt;br /&gt;
|end_of_production=Likely between February 26, 1996 and March 3, 1996&lt;br /&gt;
|pci_vendor_id=&amp;lt;code&amp;gt;104a&amp;lt;/code&amp;gt; (SGS-Thomson; DRAM version); &amp;lt;code&amp;gt;10de&amp;lt;/code&amp;gt; (NVidia; VRAM version)&lt;br /&gt;
|pci_device_id=&amp;lt;code&amp;gt;0008&amp;lt;/code&amp;gt; (main GPU)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;0009&amp;lt;/code&amp;gt; (VGA emulation layer)&lt;br /&gt;
|buses_supported=VLB (never commercialised), PCI&lt;br /&gt;
|directx_version=2.0 (badly software emulated)&lt;br /&gt;
|opengl_version=Not supported&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==Architecture reference==&lt;br /&gt;
* [[NV1 RMC]]&lt;br /&gt;
* [[NV1 known units]]&lt;br /&gt;
* [[PTIMER]]&lt;br /&gt;
* [[VBIOS]]&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
* 644 registers, plus some extra that function as arrays&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[NV1 known models]]&lt;br /&gt;
* [[NV1 known units]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GPUs}}&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=Hardware_errata&amp;diff=1723</id>
		<title>Hardware errata</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=Hardware_errata&amp;diff=1723"/>
		<updated>2026-01-19T20:09:02Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of known hardware errata in Nvidia graphics cards&lt;br /&gt;
&lt;br /&gt;
== Shared across multiple GPUs ==&lt;br /&gt;
&lt;br /&gt;
== NV3 ==&lt;br /&gt;
&lt;br /&gt;
=== Early VBIOS bugs ===&lt;br /&gt;
While not technically a hardware errata, due to an unknown issue with the video BIOS code in certain very early NVidia RIVA 128 units, certain VGA functions are broken. This causes garbage characters to appear inside of the Windows 98 Startup menu while trying to boot from CD-ROM. &lt;br /&gt;
&lt;br /&gt;
This bug is known to exist in very early STB Velocity 128 units with VBIOS version 1.60, dated 8 August 1997, with GPUs manufactured in July 1997; this behaviour was discovered on a chip manufactured in week 33 of 1997, VRAM manufactured week 25, a 1.60 Velocity 128 VBIOS with a label on top reading &amp;lt;code&amp;gt;9/17/97&amp;lt;/code&amp;gt; and a final board manufacture date of 10 October 1997, and was later confirmed when this VBIOS was dumped and emulated. This behaviour does not appear to exist on VBIOSes dated 3 September 1997 and later, although it is currently unknown whether this behaviour exists in older VBIOS versions, with VBIOS versions as old as 1.40 being known to exist (however this VBIOS may have only been present in engineering samples). There is no workaround for this bug other than potentially updating the VBIOS, although using a method that involves mashing the down arrow key you can still get into Windows 98 Setup with no problems. &lt;br /&gt;
&lt;br /&gt;
It is unclear if this issue originates from Nvidia, or any modifications STB Systems may have made to the VBIOS code. While bitrot of the VBIOS flash chip was considered as a possibility, dumping the VBIOS multiple times and via multiple methods (both by reading out the &amp;lt;code&amp;gt;PROM&amp;lt;/code&amp;gt; region and reading directly from the below-1 MB area reserved for the VBIOS) proved that it was fully intact.&lt;br /&gt;
&lt;br /&gt;
=== Extremely strange behaviour on turning off interrupts ===&lt;br /&gt;
On a NV3T (RIVA 128 ZX) stepping A2 card, turning off interrupts did not turn off interrupts, but instead caused all areas of MMIO not to be mapped to a register to endlessly decrement, wrapping over to &amp;lt;code&amp;gt;0xFF&amp;lt;/code&amp;gt; when they reached zero. The card showed no outward symptoms of this extremely strange behaviour and otherwise continued to operate normally. &lt;br /&gt;
&lt;br /&gt;
=== CRTC scanline counter needs to be read twice ===&lt;br /&gt;
Under some circumstances, the CRTC scanline counter needs to be read twice to get an accurate result.&lt;br /&gt;
&lt;br /&gt;
=== NV3 DMA submission error ===&lt;br /&gt;
In the following circumstances: &lt;br /&gt;
&lt;br /&gt;
* A 16 or 32-bit blit is occurring via the DMA method;&lt;br /&gt;
* the source area has a width of less than 16 pixels;&lt;br /&gt;
* the format of the blit has alpha transparency;&lt;br /&gt;
* the blit needs to be stretched during transfer;&lt;br /&gt;
* the source of the blit is in the GPU local VRAM;&lt;br /&gt;
* the NV3 card is Revision A or B (i.e. an original RIVA 128 rather than a ZX).&lt;br /&gt;
&lt;br /&gt;
The data may be transferred incorrectly, although the mechanism of such is not known. The drivers work around this by sending the pitch of the data to be sent in bytes, rather than the width in pixels. The older hardware revisions may not account for the pitch not being the same as the width (this is further suggested by the same code not being in the 8bpp blitting code) in this case.&lt;br /&gt;
&lt;br /&gt;
== NV4 ==&lt;br /&gt;
&lt;br /&gt;
=== Random VRAM corruption at pixel clocks above 160MHz using 64-bit bus ===&lt;br /&gt;
Due to a bug in the NV4 bus arbitration hardware to do with both memory refreshes and pagetable TLB misses, random VRAM corruption may occur if the [[PSTRAPS|straps]] are set such that the card is configured to use a 64-bit bus (used in many lower-end NV3, NV4 and NV5 configurations), and the pixel clock is above 160Mhz. This, in practice, requires a refresh rate of above 60Hz, a framebuffer configured to use 32 bits per pixel mode (which 24 bits per pixel is internally considered to be as well), and a resolution of 1600x1200 or higher. Nvidia worked around this in their drivers by simply preventing the selection of any video mode where the resolution is 1600x1200x32 and the refresh rate is above 60Hz.&lt;br /&gt;
&lt;br /&gt;
=== [[VBIOS]] mapped to wrong location ===&lt;br /&gt;
Official documentation for NV4-based products states that the VBIOS should be mapped to &amp;lt;code&amp;gt;0x300000-0x300FFF&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;PROM&amp;lt;/code&amp;gt;) in BAR0. However, in practice, according to dumps on multiple revision A5 NV4 chips, it is actually mapped to &amp;lt;code&amp;gt;0x700000-0x70FFFF&amp;lt;/code&amp;gt;, which clashes with the first &amp;lt;code&amp;gt;0xFFFF&amp;lt;/code&amp;gt; bytes of [[NV4 PRAMIN|PRAMIN]] and makes that range of RAMIN unusavble (unless the ROM is disabled using PCI configuration space register 0x31?); the area that NVIDIA seemingly intended the Video BIOS to be mapepd to instead simply returns &amp;lt;code&amp;gt;0xFF&amp;lt;/code&amp;gt; for all bytes. However, this is not a problem in practice since only the areas of RAMIN starting at an offset &amp;lt;code&amp;gt;0x10000&amp;lt;/code&amp;gt; are actually used by Nvidia&#039;s drivers due to where the location of [[NV4 RAMHT|RAMHT]] is initialised to. However, it is of concern to emulator developers and those individuals hoping to program the GPU registers directly.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;PCRTC_CONFIG&amp;lt;/code&amp;gt; cannot be accessed unless another CRTC register is accessed first ===&lt;br /&gt;
The NV4 CRTC config register (configuring the [[Weitek]] licensed CRTC) cannot be accessed (for read or write) unless another CRTC register is read first on NV4 revision A. This was fixed in revision B of the NV4.&lt;br /&gt;
&lt;br /&gt;
=== TV mode: Cursor &amp;amp; overlay position inaccuracies ===&lt;br /&gt;
The cursor, as well as the overlay position may have a slightly inaccurate position if an NV4-based card is connected to a TV and the straps are configured for TV Mode. This is worked around in the drivers by Nvidia by adding an adjust value - &amp;lt;code&amp;gt;0x00010400&amp;lt;/code&amp;gt; in the case of the overlay position and &amp;lt;code&amp;gt;0x00010004&amp;lt;/code&amp;gt; for the window start position.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=Hardware_errata&amp;diff=1722</id>
		<title>Hardware errata</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=Hardware_errata&amp;diff=1722"/>
		<updated>2026-01-19T20:08:38Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of known hardware errata in Nvidia graphics cards&lt;br /&gt;
&lt;br /&gt;
== Shared across multiple GPUs ==&lt;br /&gt;
&lt;br /&gt;
== NV3 ==&lt;br /&gt;
&lt;br /&gt;
=== Early VBIOS bugs ===&lt;br /&gt;
While not technically a hardware errata, due to an unknown issue with the video BIOS code in certain very early NVidia RIVA 128 units, certain VGA functions are broken. This causes garbage characters to appear inside of the Windows 98 Startup menu while trying to boot from CD-ROM. &lt;br /&gt;
&lt;br /&gt;
This bug is known to exist in very early STB Velocity 128 units with VBIOS version 1.60, dated 8 August 1997, with GPUs manufactured in July 1997; this behaviour was discovered on a chip manufactured in week 33 of 1997, VRAM manufactured week 25, a 1.60 Velocity 128 VBIOS with a label on top reading &amp;lt;code&amp;gt;9/17/97&amp;lt;/code&amp;gt; and a final board manufacture date of 10 October 1997, and was later confirmed when this VBIOS was dumped and emulated. This behaviour does not appear to exist on VBIOSes dated 3 September 1997 and later, although it is currently unknown whether this behaviour exists in older VBIOS versions, with VBIOS versions as old as 1.40 being known to exist (however this VBIOS may have only been present in engineering samples). There is no workaround for this bug other than potentially updating the VBIOS, although using a method that involves mashing the down arrow key you can still get into Windows 98 Setup with no problems. &lt;br /&gt;
&lt;br /&gt;
It is unclear if this issue originates from Nvidia, or any modifications STB Systems may have made to the VBIOS code. While bitrot of the VBIOS flash chip was considered as a possibility, dumping the VBIOS multiple times and via multiple methods (both by reading out the &amp;lt;code&amp;gt;PROM&amp;lt;/code&amp;gt; region and reading directly from the below-1 MB area reserved for the VBIOS) proved that it was fully intact.&lt;br /&gt;
&lt;br /&gt;
=== Extremely strange behaviour on turning off interrupts ===&lt;br /&gt;
On a NV3T (RIVA 128 ZX) stepping A2 card, turning off interrupts did not turn off interrupts, but instead caused all areas of MMIO not to be mapped to a register to endlessly decrement, wrapping over to &amp;lt;code&amp;gt;0xFF&amp;lt;/code&amp;gt; when they reached zero. The card showed no outward symptoms of this extremely strange behaviour and otherwise continued to operate normally. &lt;br /&gt;
&lt;br /&gt;
=== CRTC scanline counter needs to be read twice ===&lt;br /&gt;
Under some circumstances, the CRTC scanline counter needs to be read twice to get an accurate result.&lt;br /&gt;
&lt;br /&gt;
=== NV3 DMA submission error ===&lt;br /&gt;
In the following circumstances: &lt;br /&gt;
&lt;br /&gt;
* A 16 or 32-bit blit is occurring via the DMA method;&lt;br /&gt;
* the source area has a width of less than 16 pixels;&lt;br /&gt;
* the format of the blit has alpha transparency;&lt;br /&gt;
* the blit needs to be stretched during transfer;&lt;br /&gt;
* the source of the blit is in the GPU local VRAM;&lt;br /&gt;
* the NV3 card is Revision A or B (i.e. an original RIVA 128 rather than a ZX).&lt;br /&gt;
&lt;br /&gt;
The data may be transferred incorrectly, although the mechanism of such is not known. The drivers work around this by sending the pitch of the data to be sent in bytes, rather than the width in pixels. The older hardware revisions may not account for the pitch not being the same as the width (this is further suggested by the same code not being in the 8bpp blitting code) in this case.&lt;br /&gt;
&lt;br /&gt;
== NV4 ==&lt;br /&gt;
&lt;br /&gt;
=== Random VRAM corruption at pixel clocks above 160MHz using 64-bit bus ===&lt;br /&gt;
Due to a bug in the NV4 bus arbitration hardware to do with both memory refreshes and pagetable TLB misses, random VRAM corruption may occur if the [[PSTRAPS|straps]] are set such that the card is configured to use a 64-bit bus (used in many lower-end NV3, NV4 and NV5 configurations), and the pixel clock is above 160Mhz. This, in practice, requires a refresh rate of above 60Hz, a framebuffer configured to use 32 bits per pixel mode (which 24 bits per pixel is internally considered to be as well), and a resolution of 1600x1200 or higher. Nvidia worked around this in their drivers by simply preventing the selection of any video mode where the resolution is 1600x1200x32 and the refresh rate is above 60Hz.&lt;br /&gt;
&lt;br /&gt;
=== [[VBIOS]] mapped to wrong location ===&lt;br /&gt;
Official documentation for NV4-based products states that the VBIOS should be mapped to &amp;lt;code&amp;gt;0x300000-0x300FFF&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;PROM&amp;lt;/code&amp;gt;) in BAR0. However, in practice, according to dumps on multiple revision A5 NV4 chips, it is actually mapped to &amp;lt;code&amp;gt;0x700000-0x70FFFF&amp;lt;/code&amp;gt;, which clashes with the first &amp;lt;code&amp;gt;0xFFFF&amp;lt;/code&amp;gt; bytes of [[NV4 PRAMIN|PRAMIN]] and makes that range of RAMIN unusavble (unless the ROM is disabled using PCI configuration space register 0x31?); the area that NVIDIA seemingly intended the Video BIOS to be mapepd to instead simply returns &amp;lt;code&amp;gt;0xFF&amp;lt;/code&amp;gt; for all bytes. However, this is not a problem in practice since only the areas of RAMIN starting at an offset &amp;lt;code&amp;gt;0x10000&amp;lt;/code&amp;gt; are actually used by Nvidia&#039;s drivers due to where the location of [[NV4 RAMHT|RAMHT]] is initialised to. However, it is of concern to emulator developers and those individuals hoping to program the GPU registers directly.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;PCRTC_CONFIG&amp;lt;/code&amp;gt; cannot be accessed unless another CRTC register is accessed first ===&lt;br /&gt;
The NV4 CRTC config register (configuring the [[Weitek]] licensed CRTC) cannot be accessed (for read or write) unless another CRTC is read first on NV4 revision A. This was fixed in revision B of the NV4.&lt;br /&gt;
&lt;br /&gt;
=== TV mode: Cursor &amp;amp; overlay position inaccuracies ===&lt;br /&gt;
The cursor, as well as the overlay position may have a slightly inaccurate position if an NV4-based card is connected to a TV and the straps are configured for TV Mode. This is worked around in the drivers by Nvidia by adding an adjust value - &amp;lt;code&amp;gt;0x00010400&amp;lt;/code&amp;gt; in the case of the overlay position and &amp;lt;code&amp;gt;0x00010004&amp;lt;/code&amp;gt; for the window start position.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
	<entry>
		<id>https://nvwiki.org/index.php?title=NVPlay&amp;diff=1721</id>
		<title>NVPlay</title>
		<link rel="alternate" type="text/html" href="https://nvwiki.org/index.php?title=NVPlay&amp;diff=1721"/>
		<updated>2026-01-13T16:57:19Z</updated>

		<summary type="html">&lt;p&gt;Starfrost: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| screenshot = Nvplay_6.png&lt;br /&gt;
| caption = A screenshot of NVPlay after completing some tests on an Nvidia Riva 128&lt;br /&gt;
| developer = [https://github.com/starfrost013/ Connor Hyde (starfrost)]&lt;br /&gt;
| released = {{Start date and age|2025|04|14|df=y}}&lt;br /&gt;
| latest release version = 1.0.1&lt;br /&gt;
| latest release date = {{Start date and age|2026|01|05|df=y}}&lt;br /&gt;
| latest preview version = 2.0.0.103; 1.1.0.102&lt;br /&gt;
| latest preview date = {{Start date and age|2026|01|13|df=y}}&lt;br /&gt;
| repo = {{URL|https://github.com/starfrost013/nvplayground/}}&lt;br /&gt;
| operating system = [[wikipedia:MS-DOS|MS-DOS]], [[wikipedia:Windows 3.x|Windows 3.x]] and [[wikipedia:Windows 9x|Windows 9x]]&lt;br /&gt;
| programming language = [[wikipedia:C (programming language)|C]]&lt;br /&gt;
| genre = [[wikipedia:Device driver|Driver]], [[wikipedia:Read-eval-print loop|REPL]], [[wikipedia:Diagnostic program|Diagnostic program]]&lt;br /&gt;
| license = [[wikipedia:MIT License | MIT License]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NVPlay&#039;&#039;&#039; is a tool designed to allow low-level communication with and control of graphics hardware, focusing on early Nvidia GPUs from the mid to late 1990s. It is a tool intended for developers to aid emulation efforts. The program will initialise your installed GPU in an entirely freestanding way without any drivers and has several modes that allow different methods to control your graphics hardware; it can run in a Windows 9x DOSbox, and has also been tested on Windows 3.1 and even 3.0, so can be run at the same time as NVIDIA&#039;s drivers. &lt;br /&gt;
&lt;br /&gt;
By default, NVPlay runs in a REPL loop that lets you run a set of commands that do register-level GPU I/O.&lt;/div&gt;</summary>
		<author><name>Starfrost</name></author>
	</entry>
</feed>