MFC vt(4) work from ray@:

r269188: [Rework vb_buffer and vb_rows assignment]

r269192: Remove special handling of console window size.

  It's done in vt_upgrade() for all windows.

r269193: Update comments.

r269194: Revise font initialization handling.

Sponsored by:	The FreeBSD Foundation
MFC r269437 by nwhitehorn:

  Don't assume that the framebuffer driver is using vt_fb_blank() when
  blanking the screen during init.
MFC r270265 by dumbbell:

  vt(4): Fix an inconsistency between the mouse cursor bitmap and its mask
MFC vt(4) mouse cursor improvements from dumbbell:

r270269:

  vt(4): Handle global and per-window mouse cursor toggle in one place

  Before the global flag was set/unset using the CONS_MOUSECTL ioctl,
  and the per-window flag through the MOUSE_SETLEVEL or MOUSE_SETMODE
  ioctls.

  Also, if the cursor is already enabled/disabled, return immediatly.
  This avoids to reset the cursor's position to the center of the
  screen.

  This matches syscons' behavior.

  While here, remove a trailing space and a redundant variable
  declaration.

r270271:

  vt(4): Mark cursor old position as dirty before reading the dirty area

  Otherwise, the redraw is done during the next vt_flush run.

r270272:

  vt(4): If the cursor is globally disabled, don't mark its position as dirty

  This avoids unnecessary redraw. In particular, during boot, where the
  cursor is disabled and its fake position is [0;0], this triggered a
  refresh of the whole screen each time vt_flush() is called.

r270273:

  vt(4): If the cursor didn't move, don't mark its position as dirty

  Currently, this has no effect, because the cursor is always redrawn
  anyway. But this will be useful after improvements to the
  vd_bitbltchr_t callback API.

  The vt_device structure members used to store the position of the
  cursor as of the last redraw are renamed from vd_mdirty{x,y} to
  vd_mold{x,y}.  The associated comment is fixed too. Also, their value
  is now expressed in pixels, not in character columns/row.

r270275:

  vt(4): Mark the current cursor position as dirty

  Like r270273, this has no effect for now, because the cursor is always
  drawn. This is in preparation of future changes to vd_bitbltchr_t API.

r270278:

  vt(4): Mark cursor position as dirty when we enable/disable it

Sponsored by:	The FreeBSD Foundation
MFC r270280 by dumbbell: vt(4): Pause the flush timer while swithing window

  This fixes bad looking refresh when switching window: squares instead
  of text, flashing screen, and so on. In the worst case, vt_flush() came
  at a very inappropriate timing and the screen was not refreshed at all
  (leaving squares all over the place).

  This doesn't fix the flickering of the screen with vt_vga, because the
  sync signal is temporarily stopped and the video memory is cleared.

Sponsored by:	The FreeBSD Foundation
MFC r270288 by dumbbell: vt(4): Constify vt_buf argument of vtbuf_iscursor()

Sponsored by:	The FreeBSD Foundation