And that was an evolution of earlier 2D cards where you had a potential mixture of CPU-addressable framebuffer and various I/O ports to switch modes between text and raster graphics, adjust video modes in DACs, adjust color palette lookup tables, load fonts for text modes, and maybe address some 2D coprocessors for things like "blitting" (kind of like rectangular 2D DMA), line drawing, or even some basic polygonal rendering with funny options like dithering or stipple shading...
Ah yes, I remember helping to beta test XFree86 drivers with my Hercules Graphite Pro (?) video card which I believe was some 8514/A or AGX compatible accelerator.
It was great to be able to turn on "opaque window moves" and be in the future...