8.0 What this chapter gives you#
- You will be able to say what light is, and why your eye sees a slice of it.
- You will be able to explain why three colours can fake millions.
- You will be able to say what a pixel is, and why it is not one dot.
- You will be able to work out the PPI of any screen from two numbers.
- You will be able to say when extra pixels stop helping.
- You will be able to explain how an LCD blocks light and an OLED makes it.
- You will be able to describe a framebuffer, its stride and double
buffering.
- You will be able to do the bandwidth sum for 4K at 60 Hz and 120 Hz.
- You will be able to explain tearing, vsync and adaptive sync.
- You will be able to explain how a finger becomes two numbers.
Drawing the picture, by the graphics chip, is Chapter 22. This chapter runs
from light, through the panel, to the pixels in memory and out to your eye.
8.1 Light and the eye#
PLAIN8.1.1 in simple words#
- Light travels as a wave, and the distance from one crest to the next is its
wavelength.
- Your eye reacts to about 380 to 700 nanometres, a nanometre being a
billionth of a metre. Short waves look violet, long waves red.
- At the back of the eye sits the retina. Rods work in dim light and report
no colour; cones report colour.
- You have only three kinds of cone, so every colour you see is your brain
comparing three numbers.
PLAIN8.1.2 a picture in your head#
- Imagine three people watching one lamp through tinted glasses, one bluish,
one greenish, one reddish.
- None can name a colour. Each shouts one number: how bright it looks.
- Those three numbers are the whole message your brain gets.
- So a different lamp giving the same three numbers cannot be told apart.
Where this comparison breaks: the glasses overlap heavily, since green and
red cones peak only about 30 nanometres apart, and the retina turns the three
numbers into difference signals before they leave the eye.
PLAIN8.1.3 a worked example#
- A pure beam at 580 nanometres looks yellow. Red at 630 plus green at 530 on
one spot can look identical, though physically they differ.
- Below are illustrative cone responses scaled to 100, not measurements.
| Light source |
S cone |
M cone |
L cone |
| Pure 580 nm |
0 |
60 |
85 |
| 630 nm + 530 nm |
0 |
60 |
85 |
- Two lights matching this way are metamers. Not an illusion: it follows
from having only three sensors.
PLAIN8.1.4 what is really happening inside#
- A photon strikes a cone, a molecule changes shape, and the cell’s voltage
changes. That is the signal.
- Whether a photon is caught depends on wavelength, and each cone type has
its own catching curve.
- Once caught, the wavelength is forgotten. The cell only says “I caught
one”. This is univariance.
- The retina combines the three into light-dark, red-green and blue-yellow
channels.
- About 6 million cones feed about 1 million nerve fibres per eye, so heavy
compression happens inside the eye.
TECHNICAL8.1.5 the engineer’s version#
- The CIE, the international body for light measurement, quotes 380 nm to
780 nm; useful sensitivity is roughly 400 nm to 700 nm.
- The honest version: there is no hard edge. Sensitivity falls smoothly, and
at high intensity people detect out to about 310 nm and 1100 nm. Any stated
boundary is a convention.
| Cone |
Name |
Peak (nm) |
Share of cones |
| S |
Short wave |
about 420 |
about 2% |
| M |
Medium |
about 530 |
roughly 30% |
| L |
Long wave |
about 560 |
roughly 65% |
- The L to M ratio ranges from about 1.1:1 to 16:1 with no difference in
colour naming. Rods number 90 to 120 million per retina and cones 6 to 7
million; sources differ, so treat these as approximate.
- The CIE 1931 standard observer defines colour matching over 2 degrees, the
1964 supplementary observer over 10. The CIE 1924 photopic curve peaks at
555 nm and the scotopic curve at 507 nm, a shift called the Purkinje
effect.
- Trichromatic theory came from Thomas Young in 1802 and Hermann von
Helmholtz in the 1850s; cone pigments were measured directly only in the
1960s.
- Tools: a spectroradiometer measures the full spectral power distribution,
while a colorimeter such as an X-Rite i1Display measures only tristimulus
values, which is why cheap meters get fooled by new panel types.
WORDS8.1.6 remember these#
- Wavelength — how long one wave is — crest-to-crest distance in nanometres.
- Retina — the light-sensing sheet in the eye — neural tissue holding the
photoreceptors.
- Rod — the dim-light cell — scotopic photoreceptor, peak 507 nm, no colour.
- Cone — the colour cell — photopic photoreceptor in S, M and L types.
- Metamerism — different lights looking identical — distinct spectra, equal
tristimulus values.
- Tristimulus — three numbers for a colour — CIE X, Y, Z from the standard
observer.
8.2 What a pixel actually is#
PLAIN8.2.1 in simple words#
- A pixel is the smallest part of a picture the screen controls separately.
The word is short for picture element.
- It is not one dot but a group of separate lights, called sub-pixels,
usually one red, one green and one blue.
- Yellow means red on, green on, blue off. White is all on, black is all off.
- Your eye cannot separate them, so it blends them into one colour. A pixel
is a control unit, not an object you could pick up.
PLAIN8.2.2 a picture in your head#
- Think of a stadium crowd holding coloured cards to make a giant picture.
- On the pitch you see individual people with red, green and blue cards.
- From the far end the people vanish and one smooth image appears. Only your
ability to separate the parts changed.
- Each block of three neighbours is one pixel.
Where this comparison breaks: cards are up or down, but sub-pixels have
hundreds of brightness levels, and in some layouts a pixel borrows a
sub-pixel from its neighbour.
PLAIN8.2.3 a worked example#
- Look closely at white on a monitor, through a drop of water acting as a
lens. You see repeating vertical stripes.
one pixel one pixel one pixel
+---+---+---+ +---+---+---+ +---+---+---+
| R | G | B | | R | G | B | | R | G | B |
+---+---+---+ +---+---+---+ +---+---+---+
RGB stripe: 3 sub-pixels per pixel, side by side
- A 1920 by 1080 monitor has 2,073,600 pixels, so 6,220,800 driven
sub-pixels.
- On a 24-inch 1080p panel one pixel is about 0.277 mm wide, so one sub-pixel
is about 0.092 mm. Thinner than a hair.
PLAIN8.2.4 what is really happening inside#
- Each sub-pixel has its own switch, and drivers set a voltage deciding how
much light passes or is emitted.
- The three land on the same tiny patch of retina, and your cones add up all
light in that patch without reporting where it came from.
- Software can exploit this. Lighting only the red sub-pixel puts a sliver of
edge one third of a pixel to the left.
- That is sub-pixel anti-aliasing. Anti-aliasing means smoothing a jagged
staircase edge with in-between brightness levels.
- It triples horizontal text accuracy at the cost of faint colour fringes.
TECHNICAL8.2.5 the engineer’s version#
| Layout |
Sub-pixels per pixel |
Typical use |
| RGB stripe |
3 full |
Monitors, TVs |
| RGBW |
4, W adds brightness |
LG WOLED TVs |
| PenTile RGBG |
2 per pixel, shared |
AMOLED phones |
| QD-OLED |
3 in a triangle |
Samsung panels |
- PenTile came from Clairvoyante, founded by Candice Brown Elliott; Samsung
bought the intellectual property in 2008 and formed Nouvoyance.
- PenTile RGBG uses one red and one blue per two greens, exploiting peak
luminance sensitivity near green, so a “2560 by 1440” PenTile panel has
fewer than 2560 x 1440 x 3 sub-pixels.
- The honest version: makers count PenTile panels by pixel address, not
sub-pixel count. Both are defensible; marketing picks the larger.
- Sub-pixel rendering was announced by Microsoft as ClearType at COMDEX in
1998. It needs the physical stripe order, so it fails on rotated monitors
and on PenTile.
- Apple removed it in macOS 10.14 Mojave, September 2018, arguing Retina
panels no longer need it. Users on non-Retina external monitors disagreed,
and that disagreement is still live.
- Fill factor is the pixel area that actually emits or transmits; the rest is
transistors, wiring and black matrix. LCDs are typically 50% to 70%.
- Tools: a 200x USB microscope resolves sub-pixels,
xrandr --verbose
reports geometry, and fontconfig’s rgba setting selects the stripe order.
WORDS8.2.6 remember these#
- Pixel — the smallest controllable picture part — one addressable sample in
the framebuffer and panel matrix.
- Sub-pixel — one coloured light inside a pixel — an individually driven cell
with its own transistor.
- RGB stripe — red, green, blue side by side — the conventional vertical
geometry of desktop LCDs.
- PenTile — a layout that shares sub-pixels — RGBG or RGBW with under three
sub-pixels per address.
- Anti-aliasing — smoothing jagged edges — filtering to reduce spatial
aliasing.
- Fill factor — how much of a pixel lights up — emissive area over total
pixel area.
8.3 Resolution and PPI#
PLAIN8.3.1 in simple words#
- Resolution is a count. “1920 by 1080” means 1920 columns and 1080 rows, so
2,073,600 pixels. It says nothing about sharpness.
- PPI is a density: pixels per inch. It says how tightly packed they are.
- A phone and a television can share a resolution and look nothing alike, one
packing it into 6 inches and the other over 55.
- What decides sharpness is neither alone. It is how big one pixel looks from
where you sit.
PLAIN8.3.2 a picture in your head#
- Think of a mosaic of square tiles. Resolution is the number of tiles;
density is how small each one is.
- Nose against the wall, you see every tile edge. Walk back and the edges
disappear.
- That distance depends on tile size, not on how many tiles the mural has.
- A billboard of huge tiles looks perfect from the road and terrible from
arm’s length. Nothing about it changed.
Where this comparison breaks: tiles have grout lines and pixels usually do
not, and your eye blurs slightly from its own lens imperfections, hiding the
grid before your neurons get involved.
PLAIN8.3.3 a worked example#
- Take the diagonal in pixels, then divide by the diagonal in inches.
diagonal_px = sqrt(width_px^2 + height_px^2)
PPI = diagonal_px / diagonal_inches
24 in 1080p : sqrt(1920^2+1080^2)=2202.9 ; /24 = 91.8 PPI
27 in 1440p : sqrt(2560^2+1440^2)=2937.2 ; /27 = 108.8 PPI
6.8 in phone: sqrt(3120^2+1440^2)=3436.3 ; /6.8= 505.3 PPI
- Samsung publishes 505 PPI for the Galaxy S24 Ultra, which matches.
| Screen |
Resolution |
Size |
PPI |
| Office monitor |
1920 x 1080 |
24 in |
91.8 |
| 4K monitor |
3840 x 2160 |
27 in |
163.2 |
| 4K television |
3840 x 2160 |
55 in |
80.1 |
| Galaxy S24 Ultra |
3120 x 1440 |
6.8 in |
505.3 |
- The television has four times the pixels of the office monitor and a lower
density.
PLAIN8.3.4 what is really happening inside#
- Your eye measures angle, not size.
- A good eye just separates two lines about one arcminute apart. An arcminute
is one sixtieth of a degree, the definition behind 20/20 vision.
- So the question is whether one pixel covers less than one arcminute of your
view.
- Shortcut: the PPI you need is about 3438 divided by viewing distance in
inches, so 287 PPI at 12 inches, 143 at 24 inches, 34 at 100 inches.
- This is why a 505 PPI phone and an 80 PPI television both look sharp. Each
beats the requirement at its own distance.
TECHNICAL8.3.5 the engineer’s version#
- Angular density is measured in pixels per degree, PPD. The classical
1 arcminute limit corresponds to 60 PPD.
PPD = PPI * distance_inches * tan(1 degree)
= PPI * distance_inches * 0.017455
| Display |
PPI |
Distance |
PPD |
| 24 in 1080p |
91.8 |
24 in |
38.5 |
| 27 in 1440p |
108.8 |
24 in |
45.6 |
| 27 in 4K |
163.2 |
24 in |
68.4 |
| Phone at 505 PPI |
505.3 |
12 in |
105.8 |
- Apple introduced the term Retina with the iPhone 4 on 7 June 2010: 960 by
640 on 3.5 inches, 326 PPI, claiming 300 PPI at 10 to 12 inches beats the
eye’s limit.
- Raymond Soneira of DisplayMate argued the limit is nearer 0.6 arcminute,
implying about 477 PPI at 12 inches. Others defended 1 arcminute. Experts
genuinely disagree, and acuity varies between people.
- Ashraf, Chapiro and Mantiuk published in Nature Communications on
27 October 2025 a measured foveal achromatic limit of 94 PPD, individuals
reaching 120 PPD, with chromatic limits lower at 89 PPD red-green and
53 PPD yellow-violet. So 60 PPD is a floor, not a ceiling.
- PPI is display pixel density; DPI is printer ink dot density. Printer dots
are binary, so a 1200 DPI inkjet needs many dots per halftone cell and
delivers perhaps 200 to 300 PPI of real detail.
- The honest version: software calls display scaling “DPI” anyway. Windows
does, and CSS fixes one inch at 96 CSS pixels. That is a convention, not a
measurement.
- Tools:
xdpyinfo | grep resolution on X11, system_profiler SPDisplaysDataType on macOS, and edid-decode for the panel’s physical
size.
WORDS8.3.6 remember these#
- Resolution — how many pixels — horizontal and vertical sample counts of a
raster.
- PPI — how tightly packed the pixels are — pixels per linear inch of
diagonal.
- PPD — how big a pixel looks from where you sit — pixels per degree of
visual angle.
- Arcminute — one sixtieth of a degree — the unit of visual acuity, the 20/20
reference.
- DPI — printer dot density — dots per inch of binary ink, not the same as
PPI.
- EDID — the panel’s identity card — Extended Display Identification Data,
giving size and timings.
8.4 Colour#
PLAIN8.4.1 in simple words#
- A screen stores each pixel as three numbers: red, green, blue. Most use
8 bits each, giving 256 levels from 0 for off to 255 for full.
- 256 x 256 x 256 = 16,777,216 combinations, the famous 16.7 million colours.
- Better screens use 10 bits each, about 1.07 billion combinations. More
levels does not mean more colourful; it means smoother steps.
- A colour space is a written agreement on exactly which red, green and blue
you meant. Without it the same numbers look different everywhere.
PLAIN8.4.2 a picture in your head#
- Think of three paint taps, red, green and blue, each with 256 notches.
- But “red” only helps if we both own the same tin of red paint.
- A colour space is the label on the tin. sRGB is the small tin everybody
has, DCI-P3 is bigger and more vivid, Rec.2020 is huge and no consumer
screen fully owns it.
- Sending sRGB numbers to a P3 screen without saying so is like following a
recipe written for another tin. Everything comes out too strong.
Where this comparison breaks: paint mixes by subtracting light and screens by
adding it. The notches are also not evenly spaced in brightness, which is the
next idea.
PLAIN8.4.3 a worked example#
- Mid grey is written 128, 128, 128. You would expect half of white’s
brightness. It emits about 21%.
- The reason is gamma: light out is roughly (value / 255) to the power 2.2,
and 0.502 to the power 2.2 = 0.216.
- This is deliberate. Your eye sees differences in dark tones far better than
bright ones, so gamma spends the 256 codes where you can see them.
3840 x 2160 pixels = 8,294,400 pixels
8,294,400 x 3 bytes (24 bpp) = 24,883,200 B = 23.7 MiB
at 60 frames per second = 1.49 GB per second
at 4 bytes per pixel = 33,177,600 B = 31.6 MiB
- One second of raw 4K at 60 Hz is about 1.5 gigabytes. That is why every
video file you have opened is compressed.
PLAIN8.4.4 what is really happening inside#
- Each number becomes a voltage on one sub-pixel through a lookup table,
because the panel’s own response is not a straight line either.
- Gamma appears twice: encoding gamma when the image is stored, decoding
gamma at the display. They are meant to cancel.
- White point sets what 255, 255, 255 looks like, stated as colour
temperature in kelvin. Lower is warmer and oranger, higher is bluer.
- If white is wrong, every colour is wrong, because everything is measured
relative to white.
- HDR changes the deal: instead of “255 is as bright as this screen goes”, a
code means an absolute number of candelas per square metre.
TECHNICAL8.4.5 the engineer’s version#
| Space |
Standard |
Year |
Note |
| sRGB |
IEC 61966-2-1 |
1999 |
HP and MS, 1996 |
| Rec.709 |
ITU-R BT.709 |
1990 |
Same primaries |
| Adobe RGB |
Adobe de facto |
1998 |
Wider green |
| DCI-P3 |
SMPTE RP 431-2 |
2011 |
Cinema projection |
| Rec.2020 |
ITU-R BT.2020 |
2012 |
UHD, very wide |
- sRGB primaries in CIE 1931 xy: red (0.6400, 0.3300), green (0.3000,
0.6000), blue (0.1500, 0.0600), white D65 at (0.3127, 0.3290), whose
nominal correlated colour temperature is 6504 K.
- The sRGB transfer function is piecewise, not a pure power law:
if C_srgb <= 0.04045: C_lin = C_srgb / 12.92
else: C_lin = ((C_srgb + 0.055) / 1.055) ^ 2.4
- The exponent is 2.4, but the linear toe near black makes the whole curve
approximate 2.2. “sRGB gamma is 2.2” is a useful lie, not the
specification.
- Bit depths give 16,777,216 codes at 8-bit and 1,073,741,824 at 10-bit. Many
consumer “10-bit” panels are 8-bit plus frame rate control, which dithers
over time.
- HDR curves: PQ, standardized as SMPTE ST 2084 in 2014, is absolute and
defined to 10,000 cd/m2. HLG, from ARIB STD-B67 and ITU-R BT.2100, is
relative and backward compatible with SDR broadcast.
- VESA DisplayHDR tiers state peak luminance: 400, 600, 1000, 1400, plus True
Black 400, 500 and 600. Marketing claim to distrust: an “HDR” badge with no
tier number promises only that the panel accepts an HDR signal.
- Tools: ArgyllCMS
dispcal and colprof build ICC profiles and dispwin
loads them; ColorSync Utility inspects them on macOS.
WORDS8.4.6 remember these#
- Colour space — which red you meant — defined primaries, white point and
transfer function.
- Gamma — the bend between stored number and light — a nonlinear transfer
function, nominally 2.2.
- White point — the agreed shade of white — a chromaticity coordinate,
usually D65 at 6504 K.
- Bit depth — how many steps per colour — bits per component, 8, 10 or 12.
- Gamut — the colours a screen can hit — the triangle enclosed by the display
primaries.
- PQ — the HDR curve with absolute brightness — the Perceptual Quantizer of
SMPTE ST 2084.
8.5 How a display makes light, part 1: LCD#
PLAIN8.5.1 in simple words#
- An LCD does not make light. It blocks light. Behind the screen is a flat
lamp that is always on: the backlight.
- Liquid crystal flows like a liquid but its molecules line up like a
crystal.
- A voltage twists or untwists them, so light either passes or is stopped,
and a coloured filter then makes it red, green or blue.
- Because the lamp is always on, LCD black is a lamp behind a nearly closed
shutter. Some light always leaks.
PLAIN8.5.2 a picture in your head#
- Picture a window with two polarizing sunglass lenses, one rotated 90
degrees from the other. Together they block almost everything.
- Now put a twisting layer between them that can rotate light by 90 degrees.
- Twist on: light passes the first lens, is rotated, and lines up with the
second. Bright.
- Twist off: light passes the first unchanged and is stopped by the second.
Dark. That twisting layer is the liquid crystal.
Where this comparison breaks: crossed polarizers reject far more than
sunglasses, and the twist is not on or off but varies smoothly, which is how
you get 256 grey levels instead of two.
PLAIN8.5.3 a worked example#
- Here is the stack, from lamp to eye.
backlight (LED bar or sheet)
|
diffuser + brightness films
|
rear polarizer (passes vertical waves only)
|
glass + TFT layer (one transistor per sub-pixel)
|
liquid crystal (twist set by voltage)
|
colour filter (R, G or B dye)
|
front polarizer (passes horizontal waves only)
|
v your eye
- Blocking is never perfect. A good IPS panel leaks about 1 part in 1000, a
contrast ratio near 1000:1, so if white is 300 candelas per square metre,
black is about 0.3, not zero.
- In a dark room that leak looks dark grey. It is the biggest weakness of
LCD.
PLAIN8.5.4 what is really happening inside#
- Every sub-pixel has its own thin-film transistor, a TFT, and a small
storage capacitor.
- The panel is driven one row at a time: a gate line switches on that row’s
transistors while source drivers put the right voltage on every column.
- Each capacitor holds its voltage until that row comes round again, one
frame later. This is active matrix addressing.
- The molecules take time to rotate, and that settling time is the panel’s
response time.
- Drive voltage is reversed in polarity every frame, because constant DC
would chemically damage the liquid crystal.
- Local dimming attacks black level from behind, splitting the backlight into
independently dimmed zones.
TECHNICAL8.5.5 the engineer’s version#
- Liquid crystals were discovered by the Austrian botanist Friedrich
Reinitzer in 1888 in cholesteryl benzoate; Otto Lehmann named the phase.
- George Heilmeier, Louis Zanoni and Lucian Barton at RCA Laboratories
demonstrated dynamic scattering in 1964, and RCA announced the first liquid
crystal displays in 1968.
- The twisted nematic effect was patented by Wolfgang Helfrich and Martin
Schadt at Hoffmann-La Roche, filed 4 December 1970 and published in Applied
Physics Letters on 15 February 1971. James Fergason filed independently in
the United States and the dispute ended in shared royalties.
| Type |
Contrast |
Response |
Viewing angle |
| TN |
700-1000:1 |
fastest |
poor, 170/160 |
| IPS |
1000-1500:1 |
medium |
178/178 |
| VA |
2000-5000:1 |
slowest |
178/178 |
- TechSpot’s aggregate measurements across many models give average contrast
of about 872:1 for TN, 1037:1 for IPS and 2898:1 for VA.
- TN is twisted nematic, IPS in-plane switching, VA vertical alignment. IPS
rotates crystals in the panel plane, so off-axis colour shift is small. VA
has black crush, IPS has off-angle glow, TN has vertical gamma shift.
- Mini-LED shrinks the backlight LEDs so hundreds to thousands of dimming
zones fit; high-end 2025 and 2026 monitors quote 1,000 to 5,000 zones.
- The limit is blooming. With 2,000 zones on a 3840 by 2160 panel each zone
covers about 4,000 pixels, so a white cursor on black lights a halo.
- Tools:
ddcutil detect and ddcutil getvcp 10 read and set backlight
level over DDC/CI.
WORDS8.5.6 remember these#
- Backlight — the lamp behind the picture — edge-lit or direct-lit LED array
with diffuser films.
- Polarizer — a filter passing light waving one way — a film selecting one
linear polarization state.
- Liquid crystal — a material that twists light under voltage — a nematic
phase, field-controlled.
- TFT — the tiny switch at each sub-pixel — thin-film transistor in amorphous
silicon, LTPS or IGZO.
- Contrast ratio — how much brighter white is than black — white luminance
over black luminance.
- Local dimming — dimming the lamp behind dark parts — zone-wise backlight
modulation.
8.6 How a display makes light, part 2: OLED#
PLAIN8.6.1 in simple words#
- An OLED has no backlight. Every sub-pixel is its own tiny lamp of organic,
meaning carbon-based, material that glows when current flows.
- For black, the sub-pixel switches off and emits nothing. That is true
black, so contrast is effectively unlimited.
- Switching a light on beats rotating a molecule, so OLED reacts far faster
than LCD.
- The cost is wear. Areas showing the same bright thing for years dim faster
than the rest, and that uneven wear is burn-in.
PLAIN8.6.2 a picture in your head#
- An LCD is a stage lit by one floodlight, each actor holding a shutter.
- An OLED is a stage where every actor carries their own torch, and switches
it off to be invisible; on the LCD stage the floodlight still spills.
- But every torch has a battery that runs down with use.
- An actor lit in the same spot every night grows dimmer, and you see their
outline even in dark scenes.
Where this comparison breaks: the sub-pixel does not run out like a battery.
It degrades chemically, and blue degrades fastest, so worn areas shift colour
as well as dimming.
PLAIN8.6.3 a worked example#
- Show full-screen black in a dark room. The LCD shows a faint grey
rectangle; the OLED is indistinguishable from the wall.
- Contrast ratio: LCD 300 / 0.3 = 1000:1. OLED 300 / 0.0005 = 600,000:1, and
instruments often just report infinity.
- Now show a small white square at full brightness. The OLED pushes it to
1000 candelas per square metre or more.
- Make the square fill the screen and brightness drops sharply, often to a
quarter. That is the automatic brightness limiter protecting the panel from
heat and current. LCDs do not do this.
PLAIN8.6.4 what is really happening inside#
- Each OLED sub-pixel is a sandwich: a cathode, several thin organic layers
and a transparent anode.
- Current injects electrons from one side and holes, meaning missing
electrons, from the other; they meet in the emissive layer and release a
photon whose colour depends on that layer’s chemistry.
- Brightness follows current, so OLED circuits control current, not voltage.
That is a real design difference from LCD.
- Lowering current shifts colour slightly, so many phones instead flash the
panel on and off very fast and vary how long it stays on. That is PWM,
pulse width modulation.
- Averaged over time your eye reads that flicker as lower brightness. Some
people are sensitive to it and report headaches.
- Panels also track use per sub-pixel, quietly boost worn ones, and run pixel
refresh cycles when idle.
TECHNICAL8.6.5 the engineer’s version#
- The efficient thin-film OLED was demonstrated by Ching Wan Tang and Steven
Van Slyke at Eastman Kodak, published as “Organic Electroluminescent
Diodes” in Applied Physics Letters volume 51, pages 913 to 915, in 1987.
Both entered the National Inventors Hall of Fame in 2018.
| Variant |
How colour is made |
Typical use |
| RGB OLED |
Separate R, G, B |
Phones, tablets |
| WOLED |
White stack + filters |
LG TVs |
| QD-OLED |
Blue stack + QD layer |
Samsung panels |
| Tandem |
Stacked emitter decks |
2024+ tablets |
- QD-OLED uses a blue emitter with quantum dots, nanocrystals that convert
blue photons to pure red or green by size, avoiding WOLED’s filter losses.
- Tandem OLED stacks two or more emissive units in series, roughly doubling
brightness at the same current density; Apple shipped it in the iPad Pro in
May 2024.
- Micro-LED replaces organics with inorganic LEDs, giving OLED blacks without
burn-in. As of 2026 it is confined to very large modular walls and small
wearables, because transferring millions of dice remains unsolved at cost.
Treat consumer micro-LED as active engineering, not a shipping product.
- PWM frequency is an implementation detail: older AMOLED phones used 240 Hz
or 480 Hz, while 2024 and 2025 models advertise 1440 Hz, 2160 Hz and
3840 Hz. Whether PWM causes harm is contested: flicker below about 100 Hz
has established effects, but evidence above 1000 Hz is weak and mostly
self-reported.
| Property |
LCD (IPS/VA) |
OLED |
| Black level |
0.1-0.3 cd/m2 |
0.0000 cd/m2 |
| Contrast |
1000-5000:1 |
effectively inf. |
| Response |
1-8 ms |
0.03-0.2 ms |
| Full white |
holds brightness |
limiter kicks in |
| Burn-in risk |
none |
real, cumulative |
| Viewing angle |
good to poor |
excellent |
- Tools: a phone camera at 960 fps is the cheapest PWM detector; an
oscilloscope with a photodiode is the correct one.
WORDS8.6.6 remember these#
- OLED — a screen where each dot makes its own light — organic light emitting
diode, current-driven.
- Burn-in — a permanent ghost of an old image — differential luminance
degradation, worst in blue.
- PWM — flashing fast to look dimmer — pulse width modulation of drive
current.
- Quantum dot — a nanocrystal that converts colour — emission wavelength set
by particle diameter.
- ABL — the brightness limiter — automatic brightness limiter, cutting output
as lit area grows.
- Tandem OLED — two emitter stacks in one pixel — series units sharing a
charge generation layer.
8.7 The older ways#
PLAIN8.7.1 in simple words#
- Before flat screens there was the cathode ray tube, or CRT: a glass vacuum
bottle with a gun firing electrons at a phosphor coating that glows.
- Magnets bend the beam so it sweeps in lines, left to right, top to bottom.
- Each spot fades fast, so the picture is redrawn many times a second. Colour
tubes use three guns and three phosphors.
- Plasma screens later used tiny gas cells that glow when excited, and e-ink
moves coloured particles and leaves them, holding an image with no power.
PLAIN8.7.2 a picture in your head#
- Imagine writing on a wall with a torch whose trail fades in a fraction of a
second.
- To keep a picture visible you must run the torch over every line again and
again, faster than the glow fades.
- One sweep across is a scanline; switching off to return to the left edge is
horizontal blanking.
- Switching off to return to the top is vertical blanking, and complete
sweeps per second is the refresh rate.
Where this comparison breaks: flat panels have no beam and nothing fades.
They keep the same words and blanking gaps only because every cable, timing
standard and driver was written around the sweeping beam.
PLAIN8.7.3 a worked example#
- Take VGA: 640 by 480 at 60 Hz. The real signal is 800 by 525, the extra
160 columns and 45 rows being blanking.
- 800 x 525 x 60 = 25,200,000, and the published pixel clock is 25.175 MHz.
| Field |
Active |
Total |
Blanking |
| Horizontal (px) |
640 |
800 |
160 |
| Vertical (lines) |
480 |
525 |
45 |
- Modern links still carry blanking. Even DisplayPort to an OLED sends those
empty periods, though reduced blanking timings shrink them.
PLAIN8.7.4 what is really happening inside#
- In a colour CRT a metal sheet full of holes, the shadow mask, sits behind
the phosphor so the red gun can only reach red phosphor. It absorbs most of
the beam energy, which is why CRTs ran hot.
- In a plasma panel each cell holds a noble gas that voltage ionizes into
plasma, emitting ultraviolet light.
- That ultraviolet strikes phosphor inside the cell, which emits visible red,
green or blue. Plasma is an array of tiny fluorescent tubes.
- Plasma cells are on or off, so grey comes from switching them many times
per frame, which some viewers saw as flicker.
- In e-ink each capsule holds white particles with one charge and black ones
with the opposite, in clear fluid. Voltage pulls one colour to the top, and
removing it leaves them held by friction.
- That is bistability, and it is why an e-reader holds a page on a flat
battery.
TECHNICAL8.7.5 the engineer’s version#
- The cathode ray tube was built by Karl Ferdinand Braun at the University of
Strasbourg in 1897, and was long called the Braun tube.
- The plasma display panel was invented in 1964 by Donald Bitzer, H. Gene
Slottow and Robert Willson at the University of Illinois, for the PLATO
education system.
- E Ink Corporation was spun out of the MIT Media Lab in 1997 from work by
Joseph Jacobson with Barrett Comiskey and J. D. Albert; the founding paper,
“An electrophoretic ink for all-printed reflective electronic displays”,
appeared in Nature in 1998.
- IBM introduced VGA in 1987 with the PS/2 line, fixing 640 by 480 at 60 Hz
on a 25.175 MHz pixel clock as a floor that still appears in boot screens.
- Vocabulary inherited from CRTs and still in every specification: scanline,
horizontal and vertical blanking interval, front porch, back porch, sync
pulse, interlacing, overscan.
- Overscan is the clearest fossil: CRT televisions drew beyond the visible
glass, so many televisions still crop about 2.5% of an HDMI input in 2026
unless you find the 1:1 pixel mapping setting.
- Plasma manufacturing ended in the 2010s: Panasonic stopped in 2014, LG and
Samsung in 2014 and 2015.
- Tools:
cvt 1920 1080 60 generates timings including blanking, and
xrandr --verbose prints the active modeline.
WORDS8.7.6 remember these#
- CRT — the old glass tube screen — deflected electron beam exciting
phosphor.
- Scanline — one horizontal sweep — one raster row, still the unit of display
timing.
- Blanking — the gap when nothing is drawn — retrace intervals, now carrying
control data.
- Phosphor — the powder that glows — a luminescent coating with a decay time.
- Bistable — holds its image without power — a display whose two states are
both stable.
- Overscan — cropping the picture edges — legacy CRT television margin, worth
switching off.
8.8 The framebuffer#
PLAIN8.8.1 in simple words#
- Before a picture can be shown it must exist as numbers in memory. That
block of memory is the framebuffer.
- It holds one complete picture, row by row from the top-left corner, each
pixel taking a fixed number of bytes, usually four.
- So finding any pixel is arithmetic, not searching.
- One thing writes into this block and another reads out of it, at different
speeds and without agreeing, which causes most of the trouble that follows.
PLAIN8.8.2 a picture in your head#
- Think of a long shelf of numbered boxes. The first 1920 are the top row,
the next 1920 the second row, and so on.
- To find column 100 of row 50, count 50 full rows then 100 more boxes.
- Now suppose the shelf is built in sections of 64 boxes and each row must
start at a section boundary, leaving a few boxes empty at the end.
- Those wasted boxes are padding, and the distance from one row’s start to
the next is the stride.
Where this comparison breaks: real memory is not one flat shelf. It has
caches, pages and interleaved banks, and the padding exists to line those up,
not for tidiness.
PLAIN8.8.3 a worked example#
- A tiny image: 5 pixels wide, 3 tall, 4 bytes per pixel. A row of real data
is 20 bytes, but rows must start on 32-byte boundaries, so the stride is 32
with 12 bytes of padding.
addr contents
0x1000 px(0,0) px(1,0) px(2,0) px(3,0) px(4,0) 20 bytes
0x1014 pad pad pad 12 bytes
0x1020 px(0,1) px(1,1) px(2,1) px(3,1) px(4,1)
0x1034 pad pad pad
0x1040 px(0,2) px(1,2) px(2,2) px(3,2) px(4,2)
0x1054 pad pad pad
total: 3 rows x 32 bytes = 96 bytes
- The address formula, and one 32-bit pixel in memory:
addr = base + (y * stride) + (x * bytes_per_pixel);
/* pixel (3,1): 0x1000 + (1*32) + (3*4) = 0x102C */
/* orange, R=255 G=128 B=0 A=255, little-endian BGRA */
/* bytes in memory: 00 80 FF FF */
/* B G R A */
/* read as a word: 0xFFFF8000 */
- The byte order in memory is the reverse of the number you would print, a
permanent source of bugs.
PLAIN8.8.4 what is really happening inside#
- The display controller reads the framebuffer continuously at the rate the
panel needs. At 60 Hz it starts a full read every 16.67 milliseconds
whether new content exists or not.
- If your program writes into the buffer while the controller reads it, the
controller sends a mixture of old and new.
- On screen that is a horizontal line with one frame above and another below.
That is tearing.
- The fix is two buffers: the controller reads A while the program writes B,
then they swap. That is double buffering.
- The swap must happen during vertical blanking, the gap between frames, or
you tear anyway.
- Triple buffering adds a third so the program can start another frame
instead of stalling, at the cost of memory and about one frame of delay.
TECHNICAL8.8.5 the engineer’s version#
| Resolution |
One buffer |
Triple buffered |
| 1920 x 1080 |
7.91 MiB |
23.7 MiB |
| 2560 x 1440 |
14.06 MiB |
42.2 MiB |
| 3840 x 2160 |
31.64 MiB |
94.9 MiB |
| 7680 x 4320 |
126.6 MiB |
379.7 MiB |
- Common pixel formats: XRGB8888 and ARGB8888 at 32 bits, RGB565 at 16 bits,
XRGB2101010 for 10-bit HDR, and NV12 for 4:2:0 video planes.
- Stride, also called pitch, is in bytes and is always at least width times
bytes per pixel. Alignment of 64 or 256 bytes is common; some GPUs demand
far more.
- Modern GPUs rarely store the framebuffer in simple row order. They use
tiled or swizzled layouts so a 2D block of pixels lands in one cache line;
linear layout is what gets exported for scanout.
- The Linux DRM/KMS model exposes this directly: a
drm_framebuffer wraps
GEM buffer objects, and drmModePageFlip requests a swap at the next
vertical blank, returning a DRM_EVENT_FLIP_COMPLETE event.
- Legacy interfaces survive:
/dev/fb0 with FBIOGET_VSCREENINFO, and on
many boards a linear framebuffer set up by UEFI GOP before any driver
loads.
- Tearing without vsync is not a bug in the strict sense. It is the defined
behaviour of an unsynchronized page flip; calling it a bug is a convention
of user expectation.
- Tools:
modetest lists planes, CRTCs and connectors; wayland-info
reports buffer formats; sudo fbset -i prints stride and pixel format.
WORDS8.8.6 remember these#
- Framebuffer — memory holding one full picture — a pixel buffer scanned out
by the display engine.
- Stride — bytes from one row start to the next — the row pitch including
alignment padding.
- Double buffering — draw in one, show the other — front and back buffers
swapped by a page flip.
- Page flip — the swap itself — changing the scanout base address at vertical
blank.
- Tearing — two frames visible at once — scanout crossing a mid-frame buffer
change.
- Vertical blank — the gap between frames — the safe window for atomic
updates.
8.9 Getting the picture out#
PLAIN8.9.1 in simple words#
- The display controller reads the framebuffer and turns it into a signal, in
the same order the old CRT beam moved. That is scanout.
- The signal goes down a cable carrying not a picture but a stream of numbers
plus timing marks saying “new line here” and “new frame here”.
- How much data must flow depends on pixel count, bits per pixel and
refreshes per second. Multiply them for the bandwidth.
- If that is bigger than the cable can carry, you lower one of the three or
squeeze the data.
PLAIN8.9.2 a picture in your head#
- Think of a conveyor belt feeding a machine that must never stop.
- The belt must deliver at a fixed rate; too slow and the machine stalls,
because there is no store to draw on.
- Every part is one pixel, and belt speed is bandwidth.
- A wider belt is more lanes in the cable, a faster belt is a higher rate per
lane, and packing parts tighter is compression.
Where this comparison breaks: the link has a small buffer at the receiving
end, and it does stop and restart during blanking and link training. The
“never stops” rule is about display timing, not literally the wire.
PLAIN8.9.3 a worked example#
- Work out 4K at 60 Hz with 8 bits per colour, then at 120 Hz with 10 bits.
4K60, 8-bit:
3840 x 2160 = 8,294,400 pixels
x 60 refreshes = 497,664,000 pixels/s
x 24 bits per pixel = 11.94 Gbit/s
4K120, 10-bit:
8,294,400 x 120 = 995,328,000 pixels/s
x 30 bits per pixel = 29.86 Gbit/s
- Those are active pixels only. Blanking adds about 5% with reduced blanking
and about 20% with old broadcast timings, so 4K at 60 Hz needs a 594 MHz
pixel clock, giving 14.26 Gbit/s on the wire.
- HDMI 2.0 has 18 Gbit/s raw, but 8b/10b encoding leaves 14.4 Gbit/s of
payload. 14.26 fits, barely. Add 10-bit colour and it does not, which is
why early HDR televisions dropped to 4:2:0 chroma.
PLAIN8.9.4 what is really happening inside#
- The controller keeps a small FIFO buffer topped up from memory; if memory
is too busy the FIFO empties and you see a glitch line, an underrun.
- Pixels are serialized: parallel bytes become a fast stream of ones and
zeros on a few differential wire pairs.
- The encoding scheme adds extra bits so the receiver can recover the clock
and detect errors, which is why raw and useful speed differ.
- Before any picture flows, the source reads the display’s EDID capability
block, then trains the link by trying speeds until one works reliably.
- The cable carries pixel lanes, a clock, an auxiliary control channel,
hot-plug detect and power, all at once.
- If the picture will not fit, DSC is switched on: Display Stream Compression
squeezes each line with a fixed small delay and a fixed output size, so
timing stays predictable.
TECHNICAL8.9.5 the engineer’s version#
| Interface |
Raw Gbit/s |
Payload |
Year |
| HDMI 2.0 |
18 |
14.4 |
2013 |
| HDMI 2.1 |
48 |
42.67 |
2017 |
| HDMI 2.2 |
96 |
85.3 |
2025 |
| DP 1.4 HBR3 |
32.4 |
25.92 |
2016 |
| DP 2.1 UHBR20 |
80 |
77.37 |
2022 |
- Encoding efficiency explains those pairs. HDMI 2.0 TMDS uses 8b/10b at 80%;
HDMI 2.1 and 2.2 use FRL with 16b/18b at 88.9%; DisplayPort to 1.4 uses
8b/10b at 80%, and DisplayPort 2.x uses 128b/132b at about 96.9%.
- HDMI 1.0 was released on 9 December 2002 by a founder group including
Hitachi, Matsushita, Philips, Silicon Image, Sony, Thomson and Toshiba.
DVI 1.0 came from the Digital Display Working Group in April 1999, and
DisplayPort 1.0 was approved by VESA in May 2006.
- The HDMI Forum released version 2.2 in June 2025 with a new Ultra96 cable
category. Important caveat: the higher rates are optional, so an HDMI 2.2
label does not guarantee 96 Gbit/s.
- DisplayPort 2.1 was announced on 17 October 2022, and DP 2.1b followed with
the DP80LL low-loss cable category, announced alongside HDMI 2.2 in
January 2025.
- eDP, embedded DisplayPort, is the internal laptop link; version 1.5 was
published by VESA in October 2021. Its distinguishing feature is Panel Self
Refresh, which lets the source stop sending frames for a static image.
- DSC is VESA Display Stream Compression, current version 1.2a: line-based,
fixed-rate and low-latency, typically 8 to 12 bits per pixel against a
24 or 30 bit source, so roughly 2:1 to 3:1. VESA calls it visually
lossless, verified under ISO/IEC 29170 testing; it is not mathematically
lossless, which matters for medical and reference work.
- The journey from memory to eye:
framebuffer in RAM
| scanout read, row by row
display controller (CRTC) -> colour pipeline, gamma LUT
|
optional DSC encoder
|
serializer -> 4 differential lane pairs + AUX channel
|
cable (HDMI / DisplayPort / eDP)
|
timing controller (TCON) in the panel
|
source and gate drivers -> sub-pixel voltages
|
light -> your retina
- Tools:
xrandr --listmonitors, drm_info and get-edid | parse-edid on
Linux; dmesg | grep -i drm reveals link training failures.
WORDS8.9.6 remember these#
- Scanout — reading the picture out in order — the display engine’s fixed
rate raster read.
- Bandwidth — data per second on the link — bits per second, raw or payload
after encoding.
- TMDS and FRL — the two HDMI signalling schemes — Transition Minimized
Differential Signalling and Fixed Rate Link.
- DSC — squeezing the picture to fit the cable — VESA Display Stream
Compression, fixed-rate.
- Link training — the handshake before the picture — negotiating lane count,
rate and equalization.
- TCON — the chip inside the panel — timing controller driving the row and
column drivers.
8.10 Refresh rate, frame rate and smoothness#
PLAIN8.10.1 in simple words#
- Refresh rate is how many times a second the screen redraws itself, in
hertz. Frame rate is how many new pictures a second your software makes.
- These are two different numbers and are usually not equal.
- A 60 Hz screen redraws 60 times a second even if a game is stuck at 17 FPS.
It just shows the same picture again.
- When the two do not line up you get a torn image or uneven motion, and
adaptive sync fixes it by letting the screen wait for the software.
PLAIN8.10.2 a picture in your head#
- A photographer takes one picture every second, on the second, no matter
what. A dancer moves through poses at her own irregular pace.
- If she changes pose halfway through a shot, the photo catches half of each.
That is tearing.
- If she holds some poses for two shots and others for one, the series looks
jerky even though every photo is sharp. That is stutter.
- Adaptive sync is the photographer agreeing to shoot whenever she settles.
Where this comparison breaks: real adaptive sync works only inside a stated
range, such as 48 to 144 Hz, and outside it the display repeats frames
instead.
PLAIN8.10.3 a worked example#
- A 60 Hz screen has a frame period of 1000 / 60 = 16.67 milliseconds; at
120 Hz it is 8.33 ms, at 240 Hz 4.17 ms.
- Suppose a game takes 20 ms per frame, 50 FPS, with vsync on at 60 Hz. It
misses the deadline, waits for the next one at 33.3 ms, and the effective
rate collapses to 30 FPS.
- A 20% overrun caused a 40% drop. That cliff is why vsync feels bad near a
game’s limit.
| Refresh |
Frame period |
Missed deadline |
| 60 Hz |
16.67 ms |
falls to 30 FPS |
| 120 Hz |
8.33 ms |
falls to 60 FPS |
| 144 Hz |
6.94 ms |
falls to 72 FPS |
| 240 Hz |
4.17 ms |
falls to 120 FPS |
- With adaptive sync the screen simply refreshes at 50 Hz to match, and there
is no cliff.
PLAIN8.10.4 what is really happening inside#
- Adaptive sync works by stretching the vertical blanking interval, the gap
between frames. The display holds the last line and waits.
- A panel can only wait so long before its pixels drift, so there is a
minimum rate; below it, drivers send the same frame two or three times.
- Response time is a panel property: how long a pixel takes to change colour.
- Input lag is a system property: the whole time from your action to a change
on screen, across device, operating system, engine, queue, cable and panel.
- Motion blur on a sample-and-hold display is not slow pixels. It is your eye
tracking a moving object while that object sits still on screen for the
whole frame period.
- That is why black frame insertion and backlight strobing reduce blur: they
shorten how long each frame is visible, at the cost of brightness.
TECHNICAL8.10.5 the engineer’s version#
- Nvidia announced G-Sync on 18 October 2013, using a proprietary FPGA module
inside the monitor in place of the normal scaler; early modules used an
Altera Arria V GX FPGA with 768 MB of DDR3L.
- VESA added Adaptive-Sync as an optional part of DisplayPort 1.2a in
May 2014, and AMD’s FreeSync branding built on it with monitors shipping
from 2015. Nvidia began certifying such monitors as “G-Sync Compatible” at
CES in January 2019. HDMI added its own variable refresh rate in HDMI 2.1
in 2017, which is the path consoles use.
- VESA introduced AdaptiveSync Display certification in 2022, with tested
tiers such as AdaptiveSync Display 144, plus MediaSync Display for
judder-free video.
- Response time reporting is a mess. “1 ms” is usually grey-to-grey with
maximum overdrive, measured between the 10% and 90% points, often with
visible overshoot. GtG, MPRT and black-to-white numbers are not comparable.
| Stage |
Typical time |
| USB mouse poll, 1 kHz |
1 ms |
| Render + present queue |
5-30 ms |
| Scanout of full frame |
frame period |
| LCD pixel transition |
1-8 ms |
| OLED pixel transition |
under 0.2 ms |
- Persistence blur is roughly the frame period times motion speed, a rule of
thumb popularized by Blur Busters: an object moving 1000 pixels per second
on a 60 Hz sample-and-hold display smears about 16.7 pixels wide.
- So 60 Hz to 120 Hz is not mainly “more frames”. It halves persistence blur
and halves the worst-case wait for a new frame, both visible in ordinary
scrolling.
- Tools:
vblank_mode=0 and __GL_SYNC_TO_VBLANK=0 disable vsync on Linux;
presentmon on Windows measures real present intervals and latency.
WORDS8.10.6 remember these#
- Refresh rate — how often the screen redraws — the vertical scan frequency
in hertz.
- Frame rate — how many pictures the software makes — presents per second.
- Vsync — waiting for the screen before swapping — syncing page flips to the
vertical blank.
- Adaptive sync — the screen waits for the software — variable refresh by
extending blanking.
- Input lag — total delay from action to picture — end-to-end latency across
the whole chain.
- Persistence — how long a frame stays lit — hold time of a sample-and-hold
display.
8.11 Touchscreens#
PLAIN8.11.1 in simple words#
- A touchscreen is a separate sensor on or inside the display. Resistive
screens feel a press; capacitive screens feel a conductive object.
- A resistive screen is two flexible conductive sheets with a tiny gap: press
hard enough and they touch, completing a circuit at that spot.
- Resistive works with gloves and pens but needs pressure and reliably senses
only one point.
- A capacitive screen has an invisible grid of transparent wires that your
finger disturbs, needing no pressure and sensing many fingers at once.
- A dedicated chip scans the grid many times a second and hands the operating
system a list of contact points as coordinates.
PLAIN8.11.2 a picture in your head#
- Picture a chessboard with a wire under every row and over every column.
- At each crossing the wires are close but not touching, and a small amount
of charge passes between them.
- Put a finger near one crossing and some of that charge takes a shortcut
through your body, so less arrives.
- The controller pulses each row in turn, measures every column, and builds a
grid of numbers. Wherever the numbers dip, there is a finger.
Where this comparison breaks: your finger is not a hole that swallows charge.
It is a conductor tied to a large body acting as a weak ground, and the dip
spreads over several crossings, which is what allows sub-cell accuracy.
PLAIN8.11.3 a worked example#
- A small 6 by 4 sensor grid reports these values, where higher means more
disturbance.
c0 c1 c2 c3 c4 c5
r0 0 0 0 0 0 0
r1 0 2 14 22 6 0
r2 0 3 28 45 11 0
r3 0 1 10 16 4 0
- The peak is row 2, column 3, value 45, but whole-cell accuracy is far too
coarse, so the controller interpolates across row 2:
(2 x 28 + 3 x 45 + 4 x 11) / (28 + 45 + 11) = 235 / 84 = 2.80.
- If the panel is 1080 pixels wide over 6 columns, each column is 180 pixels,
so x = 2.80 x 180 + 90 = 594 pixels. That number, a matching y and a
contact identifier are what the operating system receives.
PLAIN8.11.4 what is really happening inside#
- The touch controller runs its own scan loop, independent of the display and
usually faster, because tracking a fast swipe needs more samples than
showing it does.
- Each scan gives a raw grid, and the controller subtracts a stored baseline
to remove the effect of the case, temperature and water film.
- It finds peaks, interpolates centres, and matches each to a contact from
the previous frame, so a finger keeps its identifier while it moves.
- It rejects blobs that are too large, which is how a phone ignores your palm
and your cheek during a call.
- Coordinates go to the main processor over I2C or SPI, with a separate
interrupt line saying “new data ready”.
- The operating system’s input stack turns that stream into gestures: tap,
long press, drag, pinch, fling.
TECHNICAL8.11.5 the engineer’s version#
- The capacitive touchscreen was described by E. A. Johnson at the Royal
Radar Establishment in Malvern, England, in 1965, for air traffic control.
Resistive touch came from Samuel Hurst, whose Elographics was founded in
1971.
- Two capacitive modes exist. Self capacitance measures each electrode
against ground, is very sensitive, but ghosts with more than two fingers.
Mutual capacitance measures each row-column intersection and is the basis
of true multi-touch.
- The transparent conductor is traditionally indium tin oxide, ITO; metal
mesh and silver nanowire are used on larger and flexible panels because
ITO’s sheet resistance scales badly.
| Parameter |
Typical value |
| Sensor pitch |
4 to 5 mm |
| Scan/report rate |
120 to 480 Hz |
| Capacitance change |
around 1 picofarad |
| Host bus |
I2C or SPI plus IRQ |
| Reported contacts |
5 to 10 simultaneous |
- High report rates are a measurable latency win: 240 Hz or 480 Hz sampling
shortens the sensing step to 4.2 ms or 2.1 ms, though the rest of the
pipeline usually dominates.
- On Linux, multi-touch reaches userspace through evdev as type B events:
ABS_MT_SLOT, ABS_MT_TRACKING_ID, ABS_MT_POSITION_X and ABS_MT_POSITION_Y.
Windows uses HID digitizer usage pages; Android uses the same evdev events.
- In-cell and on-cell integration put the touch electrodes inside or directly
on the display stack instead of a separate glass layer, saving thickness
and an air gap. In-cell is standard on flagship phones.
- Tools:
evtest on Linux prints raw touch events live; getevent -lt does
the same on Android over adb.
WORDS8.11.6 remember these#
- Resistive touch — two sheets pressed together — a voltage-divider scheme
needing deflection.
- Capacitive touch — sensing a conductive finger — measuring capacitance
change on an electrode array.
- Mutual capacitance — measuring each crossing — the row-column method
enabling multi-touch.
- Baseline — the no-touch reference reading — a slowly adapting per-node
value.
- Report rate — how often touch positions are sent — contact reporting
frequency, not panel refresh.
- In-cell — touch sensing built into the panel — electrodes integrated in the
display stack.
8.12 Scaling and sharpness#
PLAIN8.12.1 in simple words#
- Every flat panel has exactly one real pixel grid, its native resolution.
Unlike a CRT it cannot change that grid, because it is physical.
- Send it a picture of a different size and something must stretch or shrink
it. That is scaling, and it always guesses.
- One output pixel usually falls between input pixels, so its colour is
invented from the neighbours, which is why non-native looks soft.
- Doubling exactly is special: each input pixel becomes a clean 2 by 2 block
with no guessing, which is why 1080p looks clean on a 4K panel and poor on
a 1440p one.
PLAIN8.12.2 a picture in your head#
- Think of copying a drawing from squared paper onto paper with differently
sized squares.
- If the new squares are exactly half the size, each old square becomes four
new ones. Perfect copy, no decisions.
- If they are 1.33 times smaller, most old squares straddle two new ones and
you must decide how to split the colour.
- Pick the nearest and you get hard, uneven edges; blend the neighbours and
you get smooth but blurry edges. Neither is wrong, because the information
was never there.
Where this comparison breaks: real scalers work on gamma-encoded values, so
naive averaging darkens the result. Correct scaling converts to linear light
first, which many cheap scalers skip.
PLAIN8.12.3 a worked example#
- Scale one row of 4 pixels up to 8.
input index: 0 1 2 3
input value: 10 20 30 40
nearest : 10 10 20 20 30 30 40 40
bilinear : 10 12.5 17.5 22.5 27.5 32.5 37.5 40
- Nearest keeps original values exactly but shows visible steps; bilinear
gives a smooth ramp where no output pixel except the ends matches any
original value.
- Bicubic uses four neighbours and a smoother curve, sharper than bilinear at
the cost of slight overshoot, a faint bright halo beside hard edges.
| Method |
Neighbours used |
Look |
| Nearest |
1 |
blocky, exact |
| Bilinear |
2 per axis |
soft, no halo |
| Bicubic |
4 per axis |
sharp, mild halo |
| Lanczos |
6 or 8 per axis |
sharpest, ringing |
PLAIN8.12.4 what is really happening inside#
- Scaling can happen in three places, and it matters which.
- The application can render lower and scale up itself, choosing a good
method; the graphics chip can scale during output, fast and usually
bilinear; the monitor’s own scaler is often worst and adds lag.
- Integer scaling is the case where the ratio is a whole number, so each
input pixel becomes an exact block and nothing is invented.
- High-DPI operating system scaling is a different problem: not how to
stretch an image, but how big to draw the interface in the first place.
- The right approach is to tell applications “one logical point is now two
physical pixels” and let them draw text and vectors at full detail.
- The fallback, for applications that do not understand this, is to let them
draw small and stretch the window. That is what a blurry old application on
a modern laptop looks like.
TECHNICAL8.12.5 the engineer’s version#
| Platform |
Mechanism |
Typical factors |
| macOS |
Backing scale |
1x, 2x |
| Windows |
Per-monitor DPI |
100% to 350% |
| GNOME |
Wayland fractional |
100% to 300% |
| Android |
Density buckets |
mdpi to xxxhdpi |
- Apple’s approach at non-integer settings is to render the desktop at 2x
into an offscreen buffer and downscale to the panel. It looks correct and
costs memory bandwidth; that is an implementation detail of macOS, not a
general rule.
- Wayland fractional scaling was standardized with the
wp_fractional_scale_v1 protocol, merged in 2022, letting a client render
at the exact fractional scale instead of the next integer and down.
- Android density buckets are nominal: mdpi is 160 dpi and defines 1 dp equal
to 1 px, hdpi 240, xhdpi 320, xxhdpi 480, xxxhdpi 640. Devices are assigned
to the nearest bucket, so dp is not a physical unit.
- CSS fixes the reference pixel at 1/96 inch, and
devicePixelRatio reports
the ratio to physical pixels. That specification is why a “1px” border can
be 3 physical pixels on a phone.
- Scaling should be done in linear light. Scaling gamma-encoded sRGB values
directly darkens fine detail, worst on high-contrast text, and many
hardware scalers do it wrong for speed.
- Reconstruction is moving past fixed filters. Temporal upscalers such as
Nvidia DLSS, AMD FSR and Intel XeSS combine previous frames plus motion
vectors, and learned variants use neural networks. Established fact: they
beat bilinear at equal cost. Active research: removing ghosting and
temporal instability. Marketing claim: output indistinguishable from
native. Chapter 22 covers this properly.
- Tools:
xrandr --output DP-1 --scale 1.5x1.5 applies GPU scaling on X11;
on Windows, SetProcessDpiAwarenessContext declares whether an application
handles scaling itself.
WORDS8.12.6 remember these#
- Native resolution — the panel’s real pixel grid — the fixed physical
addressable matrix.
- Scaling — resizing a picture to fit — resampling to a different sample
grid.
- Nearest neighbour — copy the closest pixel — zero-order hold resampling,
exact but aliased.
- Bilinear and bicubic — blend nearby pixels — interpolation over 2 or 4 taps
per axis.
- Integer scaling — exact whole-number blocks — resampling at 2:1 or 3:1 with
no interpolation.
- devicePixelRatio — real pixels per logical one — CSS reference pixels
against device pixels.
8.98 Common wrong ideas#
- Wrong: more pixels always looks better. Right: beyond about 60 pixels per
degree at your actual viewing distance, extra pixels cost power, bandwidth
and frame time while adding very little you can see. The 2025 Nature
Communications figure of 94 PPD raises that ceiling but does not remove it.
- Wrong: 4K on a phone matters. Right: at 12 inches you need about 287 PPI to
pass the 1 arcminute test, and a 6.8-inch flagship is already over 500 PPI,
so 4K at that size mostly costs battery.
- Wrong: OLED and LED are different backlights. Right: an “LED TV” is an LCD
with an LED backlight, so it has one, while an OLED has no backlight at all
because every sub-pixel is its own light source. The names are marketing
and they are actively misleading.
- Wrong: a bigger screen has better quality. Right: size and quality are
independent, and making a panel bigger at the same resolution lowers PPI.
What matters is resolution, density, contrast, colour accuracy and viewing
distance together.
- Wrong: a pixel is a single coloured dot. Right: it is a control unit of
two, three or four separately driven sub-pixels, and on PenTile layouts
some are shared with the neighbouring pixel.
- Wrong: 1 ms response time means no lag. Right: response time is only the
pixel transition, while input lag also covers polling, rendering, queueing,
scanout and panel processing, usually ten to fifty times larger.
- Wrong: a higher refresh rate only matters for games. Right: persistence
blur scales with frame period, so 120 Hz makes ordinary text scrolling
measurably clearer whatever the application is.
- Wrong: HDR means brighter. Right: HDR means code values carry absolute
luminance under a defined transfer function. A panel that accepts HDR but
peaks at 350 candelas per square metre often looks worse than in standard
mode.
- Wrong: DSC is lossy so it degrades my picture. Right: it is lossy
mathematically and visually lossless under ISO/IEC 29170 testing, a real
trade-off for reference work and a non-issue for desktop and gaming use.
- Wrong: running below native resolution is like having a smaller monitor.
Right: it forces a resampling step that invents pixel values, which is why
text goes soft. Only exact integer ratios avoid it.
8.99 Chapter summary in 20 lines#
- Light is a wave, and your eye reacts to roughly 380 to 700 nanometres of
it, with no hard boundary at either end.
- Three cone types peaking near 420, 530 and 560 nanometres reduce every
spectrum to three numbers.
- Because only three numbers survive, different spectra can look identical.
That is metamerism, and it makes RGB screens possible.
- A pixel is not a dot. It is a group of separately driven sub-pixels, most
often a red, green and blue vertical stripe.
- Resolution is a count of pixels; PPI is a density, the diagonal pixel count
divided by the diagonal in inches.
- Sharpness is decided by angular density: about 60 pixels per degree meets
the 1 arcminute limit, and the PPI needed is about 3438 divided by viewing
distance in inches.
- A 24-inch 1080p panel is 91.8 PPI, a 27-inch 1440p is 108.8 PPI and a
6.8-inch phone is 505 PPI, and all can look correct at their own distances.
- Colour is three numbers per pixel: 8 bits each gives 16.7 million
combinations, 10 bits each about 1.07 billion.
- A colour space such as sRGB, DCI-P3 or Rec.2020 states which exact red,
green, blue and white those numbers mean.
- Gamma exists because perception is not linear: mid grey code 128 emits
about 21% of white, and that is deliberate.
- One uncompressed 4K frame at 24 bits per pixel is 23.7 MiB, so 60 per
second is about 1.49 GB.
- An LCD blocks light from a permanent backlight, so its black is never
truly black, and TN, VA and IPS trade speed, contrast and viewing angle.
- An OLED emits its own light per sub-pixel, giving true black and very fast
transitions, at the cost of burn-in and brightness limiting.
- CRTs gave us the vocabulary every modern display standard still uses:
scanline, blanking, refresh rate and overscan.
- E-ink is bistable: once the pigment particles move, they hold position
with no power at all.
- A framebuffer stores pixels row by row, and the stride is the byte
distance between row starts, including alignment padding.
- Double buffering exists because scanout never stops; swapping during the
vertical blank is what prevents tearing.
- Bandwidth is pixels times bits times refresh rate: 4K at 60 Hz 8-bit is
11.94 Gbit/s and 4K at 120 Hz 10-bit is 29.86 Gbit/s, which is why
HDMI 2.1, DisplayPort 2.1 and DSC exist.
- Refresh rate and frame rate are separate numbers; vsync couples them
harshly, while adaptive sync lets the panel wait for the frame.
- Scaling always invents pixel values except at exact integer ratios, which
is why non-native resolutions look soft and 1080p is clean on a 4K panel.