NV1 object classes

From NvWiki
Revision as of 00:12, 23 October 2025 by Starfrost (talk | contribs)
Jump to navigation Jump to search

This is the list of object classes that can be submitted via PFIFO on NV1.

Note: This is the internal class interface. The Resource Manager provides a different class interface before NV4. These are the class IDs required to actually submit objects to the GPU hardware - the IDs must be shifted right by 12 bits to be submitted (in effect, they show up as 0x40-0x5F while viewing RAMHT in a hex editor, like on NV3)

Objects must first be submitted (see NV1 Object Submission and NV1 PFIFO). As many methods can be submitted as possible (methods are defined as offsets within the PIO subchannel allocated to the object), but methods need to be submitted in the right order for rendering to occur. There is no mapping between the number of objects rendered and the number of objects submiteted

It appears that PIO subchannels get mapped to write-only registers at (0x400000 + (0x10000 * class_id)) in MMIO - e.g. UBETA is at 0x410000.

UBETA (0x01 / 0x40)

UROP (0x02 / 0x41)

UCHROMA (0x03 / 0x43)

UPLANE (0x04 / 0x44)

UCLIP (0x05 / 0x45)

UPATT (0x06 / 0x46)

UPOINT (0x08 / 0x48)

ULINE (0x09 / 0x49)

ULIN (0x0A / 0x4A)

UTRI (0x0B / 0x4B)

URECT (0x0C / 0x4C)

UBTM (0x0D / 0x4D)

UQTM (0x0E / 0x4E)

UBLIT (0x10 / 0x50)

UIMAGE (0x11 / 0x51)

UBITMAP (0x12 / 0x52)

UFROMEM (0x13 / 0x53)

UTOMEM (0x14 / 0x54)

UBTMB (0x1D / 0x5D)

UQTMB (0x1E / 0x5E)