OpenGL 1.2 addresses this issue by introducing a rich set of new data types which are recognized by imaging operations including glTexImage2D() and glDrawPixels(). At the time this document is being written, there are no implementations of OpenGL 1.2 available in the consumer space. However, many implementations support an extension called EXT_packed_pixels which, while less flexible than the OpenGL 1.2 equivalent, offers much of the same functionality. The following types are particularly noteworthy (others are supported; see the spec for details):
GL_UNSIGNED_SHORT_4_4_4_4_EXTThese enumerants, when supplied as the type parameter, indicates that the data is a packed 16-bit per pixel/texel. This setting is independent of the "internalformat" parameter, but is most commonly used with the corresponding internal formats GL_RGBA5 and GL_RGB5_A1, respectively.
GL_UNSIGNED_SHORT_5_5_5_1_EXT
If your data is store in 16-bit format, this extension may simplify the work needed to download a texture both by the application and the driver, hence improving texture download performance.