I designed a color graphics card for the Z80 ECB bus back in 1984 or so, based on the 6845.
The 6845 was "just" a timing and addressing generator. It was meant for character-based displays. So it divided the display area in character cells. Each character cell could span some horizontal pixels (to be serialized outside of the 6845) and some vertical scan lines. So it had:
the horizontal character number
the vertical text line number
the vertical pixel-in-character number.
This chip could easily be used for graphics as well as the necessary RAMs became available:
A character was e.g. defined to be 8 pixels wide and 8 pixels high.
The horizontal character number became the higher bits of the x pixel coordinate (the lower 3 bits generated by additional hardware clocked at 8 times the 6845 speed)
The vertical pixel-in-character number made the lower 3 bits of the y pixel coordinate.
The line number gave the higher bits of y.
My card was a 768*512 8-color RGB, memory-mapped occupying 384 KByte of address space (only the lower three bits of the byte used), with hardware zoom by 2 or 4 (reprogramming the 6845 and using a slower clock speed), resulting in 384*256 resp. 192*128, making it easier to see details on a "big" 14-inch CRT screen.