Pokun wrote:
Oh I remember hearing about hardware scrolling in VGA video cards, only in one axis though.
Not only one axis.
They are split across multiple registers, one for sub-tile* horizontal scrolling ("3C0h index 13h (R/W): Attribute: Horizontal PEL Panning Register"), one for sub-tile vertical scrolling ("3d4h index 8 (R/W): CRTC: Preset Row Scan Register"), and two for coarse scrolling ("3d4h index {C,D}h (R/W): CRTC: Start Address {High,Low} Register").
The sub-tile vertical scrolling register is only used in text or vertically stretched ("3d4h index 9 (R/W): CRTC: Maximum Scan Line Register") modes. Because of how the VGA works, fine horizontal scrolling requires sub-tile scrolling.
The coarse scrolling registers are present in the 6845 that was used in the CGA/MDA card too.
* A tile is 4, 8, or 9 pixels wide, depending on configuration. Kinda similar to the SNES, the VGA could either use a single 32-bit-wide RAM at 3MHz to generate four 8-bit pixels every 3MHz (→ pixel clock of 12.6MHz, 320 pixel mode); eight 4-bit pixels (25.2MHz), or split it in two for text modes (fetching a tile and attribute in one 16-bit slice, and then using that to look up a scanline's contents in the other 16-bit slice). A tile is anywhere between 1 to 32 pixels tall, and can additionally be doublescanned. The master pixel clock could either be 25 or 28MHz, and all cards seemed to consistently support a mild overclock (running at 3.5MHz instead of 3.15MHz)
The reference I used when VGA programming still mattered:
https://pdos.csail.mit.edu/6.828/2006/r ... GAREGS.TXTNewRisingSun wrote:
The Tseng ET3000 for example had the hardware cursor; for the more popular successor model ET4000, Tseng Labs apparently grew tired of that toy and removed it.
Newer SVGA cards seemed to consistently have one. Xfree86 called it "hardware mouse", and the majority of drivers seemed to support it. Only talking about "2d" cards,
(edit) I don't know about anything from the past fifteen years.
edit: the ET4000 with the weitek32 accelerator
did support a hardware cursor but it was strictly bilevel. There's a bit of other cruft in xfree86's driver that makes it hard to tell which cards supported what. Certainly in the final release, they dummied out support for everything but the hardware cursor on the ET6000.