VGA terminology

From Hackerspace ACKspace
Jump to: navigation, search


The resolution of a screen is the amount of distinct pixels that can be shown horizontally and vertically;

A resolution of 1024x768 means that the display is showing 1024 pixels wide and 768 pixels high.

Native resolution

The native resolution of a screen is the amount of physical pixels there are in the width times the ones in the height.

It is common to find the maximum resolution a screen can display to be equal to it's native resolution


A pixel is a unit which can output light of a chosen wavelength with a chosen amplitude(intensity).

In case of colour displays, a pixel is a collection of 3 subpixels each responsible for either Red, Green or Blue (RGB). (alternatives exist but won't be discussed)

Refresh Rate

The refresh rate of a display tells us how often the entire display gets updated per second (Hertz).

It is necessary to update the display periodically as displays expect this. (60Hz - 100Hz is typical nowadays)

A clocked signal is responsible for letting the display know it's time to refresh, this signal is referred to as vertical sync or VSYNC.

Horizontal Sync

Horizontal Sync or HSYNC is a clocked signal which tells the display that we want to start sending pixel data at the start of the next line.

To show what I mean, here is an example: (Resolution: 3x3)

[1][2][3] HSYNC!

[4][5][6] HSYNC!

[7][8][9] VSYNC & HSYNC! (simultaneously)

The numbers display the order in which the pixels get updated.

Bits per pixel

The bits per pixel or BPP tells us how many different (colour) shades a single pixel can display.

The gameboy for example has 2 BPP which tells us that every pixel can have 4 different shades. (00, 01, 10, 11 -> white, light grey, dark grey, black)

To calculate the amount of shades (/colours), we simply calculate 2^BPP.

Pixel clock

This clock is responsible for sending the pixels to the display in a timely fashion so that the display will position the pixels correctly.

Double buffer


The easiest way to explain how multiple buffering works is to take a real world example. It is a nice sunny day and you have decided to get the paddling pool out, only you can not find your garden hose. You'll have to fill the pool with buckets. So you fill one bucket (or buffer) from the tap (or faucet), turn the tap off, walk over to the pool, pour the water in, walk back to the tap to repeat the exercise. This is analogous to single buffering. The tap has to be turned off while you "process" the bucket of water.

Now consider how you would do it if you had two buckets. You would fill the first bucket and then swap the second in under the running tap. You then have the length of time it takes for the second bucket to fill in order to empty the first into the paddling pool. When you return you can simply swap the buckets so that the first is now filling again, during which time you can empty the second into the pool. This can be repeated until the pool is full. It is clear to see that this technique will fill the pool far faster as there is much less time spent waiting, doing nothing, while buckets fill. This is analogous to double buffering. The tap can be on all the time and does not have to wait while the processing is done.