frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

They Thought They Were Free (1955)

https://press.uchicago.edu/Misc/Chicago/511928.html
132•nataliste•1h ago•36 comments

Spectral Labs releases SGS-1: the first generative model for structured CAD

https://www.spectrallabs.ai/research/SGS-1
189•JumpCrisscross•8h ago•26 comments

iFixit iPhone Air teardown

https://www.ifixit.com/News/113171/iphone-air-teardown
175•zdw•9h ago•82 comments

Writing a competitive BZip2 encoder in Ada from scratch in a few days – part 3

https://gautiersblog.blogspot.com/2025/09/writing-competitive-bzip2-encoder-in.html
52•etrez•1d ago•0 comments

Meta exposé author faces bankruptcy after ban on criticising company

https://www.theguardian.com/technology/2025/sep/21/meta-expose-author-sarah-wynn-williams-faces-b...
9•mindracer•16m ago•1 comments

Universities should be more than toll gates

https://www.waliddib.com/posts/universities-should-be-more-than-toll-gates/
78•wdib•5h ago•43 comments

$2 WeAct Display FS adds a 0.96-inch USB information display to your computer

https://www.cnx-software.com/2025/09/18/2-weact-display-fs-adds-a-0-96-inch-usb-information-displ...
302•smartmic•15h ago•138 comments

Ultrasonic Chef's Knife

https://seattleultrasonics.com/
637•hemloc_io•20h ago•510 comments

AI was supposed to help juniors shine. why does it mostly make seniors stronger?

https://elma.dev/notes/ai-makes-seniors-stronger/
112•elmsec•11h ago•123 comments

The bloat of edge-case first libraries

https://43081j.com/2025/09/bloat-of-edge-case-libraries
78•PaulHoule•10h ago•97 comments

Ask HN: How were graphics card drivers programmed back in the 90s?

21•ferguess_k•2d ago•18 comments

Teardown of Apple 40W dynamic power adapter with 60W max

https://www.chargerlab.com/teardown-of-apple-40w-dynamic-power-adapter-with-60w-max-a3365/
166•givinguflac•2d ago•132 comments

Vibe coding cleanup as a service

https://donado.co/en/articles/2025-09-16-vibe-coding-cleanup-as-a-service/
133•sjdonado•6h ago•78 comments

Why, as a responsible adult, SimCity 2000 hits differently

https://arstechnica.com/gaming/2025/09/thirty-years-later-simcity-2000-hasnt-changed-but-i-have/
76•doppp•3d ago•85 comments

Designing NotebookLM

https://jasonspielman.com/notebooklm
250•vinhnx•19h ago•83 comments

That DEA agent's 'credit card' could be eavesdropping on you

https://www.independent.co.uk/news/world/americas/dea-surveillance-hidden-cameras-federal-law-enf...
3•toss1•7m ago•0 comments

In defence of swap: common misconceptions (2018)

https://chrisdown.name/2018/01/02/in-defence-of-swap.html
80•jitl•12h ago•71 comments

Newton for Ladies (1737) – Newtonianism vs. Cartesianism

https://www.whipplelib.hps.cam.ac.uk/special/exhibitions-and-displays/exhibitions-archive/newton-...
5•bgilroy26•2d ago•2 comments

Lidar, optical distance and time of flight sensors

https://ams-osram.com/innovation/technology/depth-and-3d-sensing/lidar-optical-distance-and-time-...
30•mahirsaid•2d ago•5 comments

Learning Languages with the Help of Algorithms

https://www.johndcook.com/blog/2025/09/17/learning-languages-with-the-help-of-algorithms/
43•ibobev•3d ago•19 comments

FLX1s phone is launched

https://furilabs.com/flx1s-is-launched/
274•slau•1d ago•196 comments

Scream cipher

https://sethmlarson.dev/scream-cipher
274•alexmolas•3d ago•96 comments

Knitted Anatomy

https://www.knitted-anatomy.at/cardiovascular-system/
98•blikstiender•3d ago•5 comments

Hololuminescent Display

https://lookingglassfactory.com/hld-overview
32•geox•3d ago•18 comments

Were RNNs all we needed? A GPU programming perspective

https://dhruvmsheth.github.io/projects/gpu_pogramming_curnn/
79•omegablues•2d ago•22 comments

Escapee pregnancy test frogs colonised Wales for 50 years (2019)

https://www.bbc.com/news/uk-wales-44886585
124•Luc•4d ago•53 comments

Yangwang U9 Xtreme hits 308mph(496km/h), becomes fastest production car

https://www.topgear.com/car-news/electric/yangwang-u9-xtreme-hits-308mph-becomes-worlds-fastest-e...
5•SoKamil•35m ago•1 comments

MapSCII – World map in terminal

https://github.com/rastapasta/mapscii
191•_august•2d ago•20 comments

Vapor chamber tech keeps iPhone 17 Pro cool

https://spectrum.ieee.org/iphone-17-pro-vapor-chamber
118•rbanffy•22h ago•253 comments

Images over DNS

https://dgl.cx/2025/09/images-over-dns
186•dgl•1d ago•49 comments
Open in hackernews

Ask HN: How were graphics card drivers programmed back in the 90s?

21•ferguess_k•2d ago
I read this doc and it completely blew my mind.

https://www.haiku-os.org/legacy-docs/benewsletter/Issue4-8.html

I have done a few simple embedded driver development but graphic cards, even in the 90s, look like beasts to me.

I don't think there is any books on this topic -- the best thing we have is Linux Device Driver, and I don't think any book is going to dive deep into graphic card driver development. If I want to know the details, I'll probably read the source code of OSS drivers.

I'm wondering if there are more stories or blogs like this (maybe in the 80s too, remember those Hercules cards?). It really warms me up thinking about sitting in a cube, writing code for device drivers, reading docs everywhere, banging my head on every solid wall until I start to see code in air, quaffing coffee one by one, going into deep night...I know it's way more romantic than the real story but I can't keep myself wondering about it.

Comments

PaulHoule•2d ago
These were pretty proprietary I remember.
ferguess_k•2d ago
Yeah I think that was the case and still the case for many companies (nVidia). From what I briefly looked up, good thing that we can now develop drivers for virtual graphic card, and there are OSS drivers from both Intel and AMD.
JohnFen•2d ago
During that time, I had a job for a major games company doing nothing but developing Windows graphics card drivers. They were moderately complex beasts (enormously complex compared to other device drivers), but not really that huge of a thing.

The biggest effort about them was reverse-engineering certain cards. The games often used very strange video settings, and the card manufacturers had poor, sometimes no, documentation about their operation at a low level.

ferguess_k•2d ago
Thanks for sharing. I'm surprised that game companies would do that. Is it the Voodoo era or slightly earlier (S3)? Does that mean you actually ship drivers with games? What did the card manufacturers say about this?
JohnFen•2d ago
Earlier. The standard video drivers didn't support video modes needed for more advanced video game graphics, making custom drivers necessary. The card manufacturers didn't mind. Why would they? If a hit video game supported their card, they sell more cards. Even better when they didn't have to put any substantial resources into that support.
prox•41m ago
Do you still write video drivers or is it mostly covered like with Nvidia drivers?
JohnFen•9m ago
It was a long time ago. The trajectory of my career took me in an entirely different direction.
Lumoscore•2d ago
From what I’ve seen, a lot of 90s driver work was exactly that mix of partial docs, trial-and-error with registers, and mailing some engineer at the card vendor hoping they’d admit to a bug. It wasn’t glamorous, but it’s kind of wild how much of it came down to persistence and a bit of luck
ferguess_k•2d ago
Thanks. I bet there were a lot of battle stories like what I read. Alas most of those went into history's garbage bin :/

I was even thinking about getting my hand on a few cheap physical cards (not sure which ones are cheaper), a Pentium box, and see if I can do anything -- even displaying some colors is fun enough.

MisterTea•2d ago
You can download the Voodoo 2 programming manual which is only around 250-something pages long. The Voodoo2 was fixed function; you loaded assets into the voodoo memory then called functions to operate on those assets. The driver takes care of those two roles by loading and managing the assets in the voodoo memory and an API to program the registers on the card to execute functions on the loaded assets. There were more steps involved with geometry processing which happened in the driver but I am unsure if those were handled in user space by the libraries the application called or the driver code itself.

This isn't 250 something pages, only 132 so maybe I was wrong, but its a good look into how the Voodoo2 worked: https://www.dosdays.co.uk/media/3dfx/voodoo2.pdf

See also: https://3dfxarchive.com/reference.htm

A fun tidbit is the voodoo2 has a 2D mode but was not VESA compliant so it could not be used in a PC without being tied to a VESA card for 2D graphics. I believe that ability was there for custom and non-pc platforms.

markus_zhang•2d ago
Thanks, that’s interesting. I never owned a Voodoo card but I was definitely drooling over it when I saw a demo machine running Unreal on it.

And the second link definitely has everything one needs to do everything with those cards.

ferguess_k•2d ago
Thanks a lot! I'll take a look. It's really a treasure trove. But I probably need to purchase some Voodoo card to do real work on it.
dapperdrake•2d ago
Most of the math and most of the problem domain are essentially the same as today. Just hardware got many magnitudes more capable. That makes all the difference.

As always: talk to hardware engineers about their hardware. Drivers are involved, because they are all about the hardware. The way that software wants to view the world doesn’t really matter there. (You probably already knew most or all of this.)

Disclaimer: Didn’t program drivers back then. But I do go deeply into that field of math.

contingencies•1h ago
In that era I remember I had one computer with a particular Oak(?) VGA card and it ran Heretic at something like 2x the framerate of any other system. No idea why. Might have been the motherboard or the memory speed or something. Never got to the bottom of it. Total mystery.
david-gpu•45m ago
I began writing GPU drivers in 2006 and had to support some legacy fixed-function chips from the late 90s at one point.

I think you and other commenters pretty much summarized what it was like. Documentation was often poor, so you would sometimes have to reach out to the folks who had actually written the hardware (or the simulator) for guidance.

That is the easy part of writing a driver, even today. Just follow the specification. The code in a GPU driver is relatively simple, and doesn't vary that much from one generation to the next. In the 90s some features didn't have hardware support, so the driver would do a bunch of math in the CPU instead, which was slow.

I'm contrast, the fun part are the times when the hardware deviates from he specification, or where the specification left things out and different people filled in the blanks with their own ideas. This is less common nowadays, as the design process has become more refined.

But yeah, debugging hardware bugs essentially boils down to:

(1) writing the simplest test that triggers the unexpected behavior that you had observed in a more complex application, then

(2) providing traces of it to the folks who wrote that part of the hardware or simulator,

(3) wait a few days for them to painstakingly figure out what is going wrong, clock by clock, and

(4) implement the workaround that they suggest, often something like "when X condition happens on chips {1.23, 1.24 and 1.25}, then program Y register to Z value, or insert a command to wait for module to complete before sending new commands".

It was more tedious than anything. Coming up with the simplest way to trigger the behavior could take weeks.

Well, that's what it was like to write user mode drivers. The kernel side was rather different and I wasn't directly exposed to it. Kernel drivers are conceptually simpler and significantly smaller in terms of lines of code, but much harder to debug.

TapamN•37m ago
I created a (currently not publicly released) driver for the 1998 Sega Dreamcast's video hardware from scratch. It supports additional features over the driver in the open source homebrew OS, KallistiOS (KOS), like better render-to-texture support (the KOS driver only supports rendering to framebuffer sized textures), tile multipass (which allows for accumulation buffer style effects or soft shadows), and dynamically toggling anti-aliasing on the fly (with KOS it's fixed after init). Some screenshots of my driver can do are here: https://imgur.com/a/DyaqzZD

I used publicly available documentation (like https://www.ludd.ltu.se/~jlo/dc/ and the now defunct dcdev Yahoo Group), looked at the existing open source KOS driver, and looked at the source for Dreamcast emulators to figure out how things worked.

The GPU in the Dreamcast is a bit more complicated than PSX/PS2/GC since it doesn't accept polygons and draw them directly to the framebuffer. It's a tile-based deferred renderer, like many mobile GPUs, so it instead writes the polygons to a buffer in video RAM, then later walks through the polygons and renders the scene in tiles to an on-chip 32x32 pixel buffer, which finally gets written to RAM once.

This allows the Dreamcast to have a depth-only fillrate close to the 360 and PS3 (DC is 3.2 GPix/s vs 360/PS3 4.0 GPix/s), and it basically preforms a depth-only prepass to avoid doing texture reads for obscured texels. It can also preform per-pixel transparency sorting (order-independent transparency) with effectively no limit to the number of overlapping pixels (but the sorter is O(n^2), so a lot of overlap can become very expensive).

To get a working driver for the Dreamcast, you have to set up some structures in video RAM so that the hardware knows what polygons are in what tile. Another thing the driver needs to do is coordinate the part of the hardware that takes polygon commands and writes them to video RAM, and the part that actually does rendering. You typically double buffer the polygons, so that while the hardware is rendering one frame, user code can submit polygons in parallel for the next frame to another buffer.

My driver started as just code in "int main()" to get stuff on the screen, then I gradually separated stuff out from that into a real driver.

justincormack•31m ago
SGI ran OpenGL in hardware on their cards.
Eisenstein•2m ago
[delayed]