Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
vga_setmode(3)		      Svgalib User Manual		vga_setmode(3)

NAME
       vga_setmode - sets a video mode

SYNOPSIS
       #include	<vga.h>

       int vga_setmode(int mode);

DESCRIPTION
       vga_setmode(int	mode)  selects	the  video  mode  given	and clears the
       screen (if it was a graphics mode).  Basically this should be the first
       action of your application after	calling	vga_init(3)  and  finding  out
       which  mode  to	use.   Prior  to  exiting your application should call
       vga_setmode(TEXT).

       vga_setmode() returns 0 on success and -1 if this mode  is  not	avail-
       able.

       From  svgalib-1.4.1,  if	mode is	-1 then	vga_setmode() returns the cur-
       rent svgalib version, in	BCD format, so svgalib 1.4.1 returns 0x1410.

       mode should be one of the following, predefined values, or generally  a
       value  in range 1 <= mode <= vga_lastmodenumber() where vga_modeinfo(3)
       returned	details	about this mode. Instead of trying to  set  the	 mode,
       vga_hasmode(3)  determines  if the mode would actually be supported. It
       is also possible	to use the numeric values given	below though  this  is
       discouraged.  They  are	commonly  used	as  values for the SVGALIB_DE-
       FAULT_MODE environment variable to set the vga_getdefaultmode(3).

       Here are	the predefined values for mode.

   Text	mode
       TEXT(0) restores	textmode and falls back	to ordinary text console  han-
       dling.  All  other calls	switch to a graphics mode. You should set this
       mode prior to exiting an	svgalib	application.

   VGA compatible graphics modes
       In general, for all modes following, the	first number is	the amount  of
       x  pixels,  the	second the amount of y pixels, the third the number of
       colors, with shortcuts 32K,  64K,  16M,	16M4  for  32768,  65536,  and
       1677721.	 Those with 2 or more than 256 colors use fixed	color mappings
       (either black and white or some RGB true/high color)  the  others  make
       use of a	color lookup table.

       Memory  layout  for  the	 VGA modes is weird. Too weird to be explained
       here, but you can check the usual VGA literature.  vga_setmodeX(3)  has
       a short explanation which is valid for all 256 color modes.

       G320x200x16(1),	  G640x200x16(2),    G640x350x16(3),   G640x480x16(4),
       G320x200x256(5),	G320x240x256(6), G320x400x256(7), G360x480x256(8), and
       G640x480x2(9)

   Basic SVGA modes
       These use linear	256 color memory layouts similar to G320x200x256.

       G640x480x256(10),     G800x600x256(11),	   G1024x768x256(12),	   and
       G1280x1024x256(13)

   High	color SVGA modes
       These  also use linear memory layouts, but for 32K & 64K	each pixel oc-
       cupies two bytes	and three for 16M. For 32K, each 16 bit	 word  is  di-
       vided  into  555	 bit portions refering to 5 bit	red, green, blue part.
       The most	significant bit	is ignored by the card.	For 64K	 the  division
       is  565	allowing  to  specify green in a little	bit more detail	(Human
       eyes are	more sensitive to green. People	joke this is because  our  an-
       cestors lived in	trees where light was filtered through green leaves).

       For the 16M modes, from low to high addresses the 3 bytes are named BGR
       and specify the blue, green, red	parts of the pixel value.

       G320x200x32K(14), G320x200x64K(15), G320x200x16M(16), G640x480x32K(17),
       G640x480x64K(18), G640x480x16M(19), G800x600x32K(20), G800x600x64K(21),
       G800x600x16M(22),	 G1024x768x32K(23),	    G1024x768x64K(24),
       G1024x768x16M(25),    G1280x1024x32K(26),    G1280x1024x64K(27),	   and
       G1280x1024x16M(28)

   High	resolutions with less color numbers.
       Memory  layout is probably one nibble per pixel,	two pixels per byte in
       a linear	fashion	where the most significant nibble  is  the  left  most
       pixel.

       G800x600x16(29),	G1024x768x16(30), and G1280x1024x16(31)

   Hercules emulation mode
       Again check out the ordinary VGA	literature for the memory layout.

       G720x348x2(32)

   32-bit per pixel modes
       These  are  similar  to	16M  but each pixel uses four bytes. The first
       three are similar to 16M	but the	fourth is left empty  and  ignored  by
       the VGA card (you can store own status there).

       This  eases pixel address calculations on the screen and	drawing	opera-
       tions. However, 1/3 more	data has to be moved to	 the  screen.  Experi-
       ments  show that	usually	the higher memory bandwidth used outweighs the
       effects of the simplified algorithms by far.

       G320x200x16M32(33),	 G640x480x16M32(34),	   G800x600x16M32(35),
       G1024x768x16M32(36), and	G1280x1024x16M32(37)

   Some	more resolutions
       It should by now	be clear how the modes will look.

       G1152x864x16(38),	 G1152x864x256(39),	    G1152x864x32K(40),
       G1152x864x64K(41),	G1152x864x16M(42),	  G1152x864x16M32(43),
       G1600x1200x16(44),	 G1600x1200x256(45),	   G1600x1200x32K(46),
       G1600x1200x64K(47), G1600x1200x16M(48), and G1600x1200x16M32(49)

       The vgatest(6) produces a list of supported modes  for  your  hardware,
       prints some info	on the modes and allows	you to try each	of them.

SEE ALSO
       svgalib(7),  vgagl(7),  libvga.config(5),  vgatest(6),  vga_hasmode(3),
       vga_init(3),  vga_modeinfo(3),  vga_getcurrentmode(3),  vga_getdefault-
       mode(3),	  vga_lastmodenumber(3),  vga_getmodename(3),  vga_getmodenum-
       ber(3)

AUTHOR
       This manual page	was edited by Michael Weller  <eowmob@exp-math.uni-es-
       sen.de>.	 The exact source of the referenced function as	well as	of the
       original	documentation is unknown.

       It is very likely that both are at least	to some	extent are due to Harm
       Hanemaayer <H.Hanemaayer@inter.nl.net>.

       Occasionally this might be wrong. I hereby asked	to be excused  by  the
       original	author and will	happily	accept any additions or	corrections to
       this first version of the svgalib manual.

Svgalib	1.4.1			  28 Jul 1999			vga_setmode(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=vga_setmode&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help