S3TC Texture Extension In OpenGL
Version 1.0
Date: 6/26/98

Extends glTexImage2D to accept S3TC compressed texture format.

I. Changes to glTexImage2D

The general form of glTexImage2D is:

glTexImage2D(	Glenum        target,
		Glint         level,
		Glint         internalformat,
		Glsizei       width,
		Glsizei       height,
		Glint         border,
		Glenum        format,
		Glenum        type,
		Const Glvoid *pixels )

1. Changes to the format Parameter

GL_RGB_S3TC   (0x83A0)
GL_RGB4_S3TC  (0x83A1)
GL_RGBA_S3TC  (0x83A2)  (currently not used)
GL_RGBA4_S3TC (0x83A3)  (currently not used)

2. Changes to the internalformat Parameter

GL_RGB_S3TC   (0x83A0)
GL_RGB4_S3TC  (0x83A1)
GL_RGBA_S3TC  (0x83A2)  (currently not used)
GL_RGBA4_S3TC (0x83A3)  (currently not used)

GL_RGB_S3TC and GL_RGBA_S3TC let the driver pick the type -- for now just GL_RGB4_S3TC and GL_RGBA4_S3TC respectively.

3. Changes to the level Parameter

Level takes negative numbers for GL_RGB_S3TC and GL_RGBA_S3TC formats only. Any other formats will generate an error.

The negative number indicates the pixels contain 0 to abs(level) mipmaps.

4. Pixels

For GL_RGB_S3TC, GL_RGB4_S3TC, GL_RGBA_S3TC, and GL_RGBA4_S3TC formats, pixels must be linear, and contain the untiled compressed image.

II. Other Changes

1. glGetString

GL_S3_s3tc is included in the string returned by GL_EXTENSIONS argument.

III. Limitations for the First Release

1. glTexSubImage2D

glTexSubImage2D will be supported (though not in this version), but requires the starting position (x, y) of an input image be at a 16 texel boundary, i.e.

	x = 4 * n, 
	y = 4 * m

where m and n are some positive integer.

The width and height of a sub-image needs to be following:

	Width  = 4 * i,
	Height = 4 * j

Where i > = 1 and j > = 1.

2. Format

The driver currently handle the formats and internalformats GL_RGB_S3TC and GL_RGB4_S3TC. The formats GL_RGB, GL_RGBA, GL_BGR_EXT, and GL_BGRA_EXT and the internalformats GL_RGB_S3TC and GL_RGB4_S3TC are supported as well. Any mixing of other formats is not handled.

3. glCopyTexImage2D

glCopyTexImage2D() is not supported.

IV. Permanent Limitations

GL_RGB_S3TC, GL_RGB4_S3TC, GL_RGBA_S3TC, and GL_RGBA4_S3TC are useful only for texture functions.

Copyright 1998, 1999 S3 Incorporated. All rights reserved.