The PVR can handle compressed non-square textures if you don't use mipmaps. If there's a requirement that a non-mipmapped texture must be square when compressed, that's an engine/file format problem. I know the official .PVR texture file format has very limited support for small codebook compressed textures, so maybe it has other problems. Only mipmapped textures (compressed or not) are required by the hardware to be square, but you REALLY want mipmaps for anything that's minified. I did a test a while ago to see how texture format (bit depth, compression, mips) affects rendering speed (the scene I used was the first image
here), I got these timings:
Code:
36.22 ms (16 bit VQ no mips 2x SSAA)
19.70 ms (16 bit uncompressed no mips)
19.69 ms (16 bit VQ no mips)
16.83 ms (16 bit small codebook VQ no mips)
15.92 ms (4 bit uncompressed no mips)
13.52 ms (4 bit VQ no mips)
12.78 ms (16 bit VQ with mips 2x SSAA)
11.85 ms (4 bit VQ with mips 2x SSAA)
11.24 ms (4 bit small codebook VQ no mips)
11.13 ms (Untextured 2x SSAA)
9.49 ms (16 bit uncompressed with mips)
9.20 ms (16 bit VQ with mips)
8.80 ms (8 bit VQ with mips)
8.61 ms (16 bit small codebook VQ with mips)
8.53 ms (4 bit uncompressed with mips)
8.53 ms (4 bit VQ with mips)
7.91 ms (4 bit small codebook VQ with mips)
7.81 ms (Untextured)
(Small codebook means using a 512 byte codebook instead of 2048, to reduce texture cache misses on compressed textures.)
The timing would be very dependent on the scene, but for this one, no mips 640x480 was 19.7 ms and adding mips dropped the render time to 9.2 ms. 1280x480 with mipmaps (12.78 ms) was faster than 640x480 without mipmaps.
Also, an uncompressed 1024x1024 16-bit texture without mips is 2MB, not 1MB. Compressed would be 258 KB. Adding mips would be 344 KB.
If you want to know how large a compressed texture is, use these formulas:
Code:
No mips: size_bytes = w * h * bytes_per_pixel / 8 + codebook_size
With mips: size_bytes = w * w * bytes_per_pixel * 4/3 / 8 + codebook_size + 1
Codebook_size is typically 2048, but can be less to help compression ratio or performance at the cost of texture quality.
The arcade version of VF1 was also 30 FPS, so the 32X version was arcade accurate in that area. If you made a DC version of SC2, you'd want lower poly models to keep 60 FPS.