And don't forget the z-buffer!
Oh yes, that too! So... VRAM for screen, backbuffer and z-buffer. It goes like this (1024*768 screen as an example):
16-bit:
(1024[w] * 768[h] * 2[color bytes-per-pixel]) * 3[screen,back,z] = 4.72 megs
32-bit:
(1024[w] * 768[h] * 4[color bytes-per-pixel]) * 3[screen,back,z] = 9.44 megs
And you have other stuff there in the VRAM too, like vertexes, indexes and geometry which take variable amount of space. You should reserve some VRAM for those, maybe 5-10 megs... which means that using 1024*768*32 screen you have already used basically ALL the memory on the 16 meg 3D-card!
Here's how to calculate texture usage... let's use 512*512 sized texture as an example.
16-bit:
(512[w] * 512[h] * 2[color bytes-per-pixel]) * 1.33[mipmaps] = 0.697 megs.
32-bit:
(512[w] * 512[h] * 4[color bytes-per-pixel]) * 1.33[mipmaps] = 1.395 megs.
...And for those ppl who wonder why I (still) would like to get DXTC/S3TC, here's how much it saves texture memory...
-DXTC1 (color[16-bit], no alpha) 512*512 example would take this much:
(512[w] * 512[h] * 0.5[bytes-per-pixel]) * 1.33[mipmaps] = 0.174 megs.
-DXTC3 (color[16-bit] + alpha[4-bit]), 512*512 example would take this much:
(512[w] * 512[h] * 1[bytes-per-pixel]) * 1.33[mipmaps] = 0.349 megs.
...So if you compare this to the 16/32-bit unpacked textures you'll get either 4 or 8 times more texture using the same amount of VRAM. Pretty good savings, especially if you look at how much space the screens alone take, not to mention geometry etc.
DXTC/S3TC is NOT well suited for gradients, like skyboxes, and the alpha is coarse, so in the best case you should have an ability to use both packed and unpacked 16/32-bits mixed together (using flags or something).