Difference between revisions of "GPU Textures"
Jump to navigation
Jump to search
(Remove now redundant content) |
(Rewrote format section - most of the prior content was wrong or misleading) |
||
Line 139: | Line 139: | ||
| 0x0 | | 0x0 | ||
| RGBA8888 | | RGBA8888 | ||
− | | GL_RGBA | + | | GL_RGBA |
| GL_UNSIGNED_BYTE | | GL_UNSIGNED_BYTE | ||
|- | |- | ||
| 0x1 | | 0x1 | ||
− | | | + | | RGB888 |
− | | GL_RGB | + | | GL_RGB |
| GL_UNSIGNED_BYTE | | GL_UNSIGNED_BYTE | ||
|- | |- | ||
| 0x2 | | 0x2 | ||
| RGBA5551 | | RGBA5551 | ||
− | | GL_RGBA | + | | GL_RGBA |
| GL_UNSIGNED_SHORT_5_5_5_1 | | GL_UNSIGNED_SHORT_5_5_5_1 | ||
|- | |- | ||
| 0x3 | | 0x3 | ||
− | | | + | | RGB565 |
− | | GL_RGB | + | | GL_RGB |
| GL_UNSIGNED_SHORT_5_6_5 | | GL_UNSIGNED_SHORT_5_6_5 | ||
|- | |- | ||
| 0x4 | | 0x4 | ||
| RGBA4444 | | RGBA4444 | ||
− | | GL_RGBA | + | | GL_RGBA |
| GL_UNSIGNED_SHORT_4_4_4_4 | | GL_UNSIGNED_SHORT_4_4_4_4 | ||
|- | |- | ||
| 0x5 | | 0x5 | ||
− | | | + | | IA8 |
− | | GL_LUMINANCE_ALPHA | + | | GL_LUMINANCE_ALPHA |
− | | GL_UNSIGNED_BYTE | + | | GL_UNSIGNED_BYTE |
|- | |- | ||
| 0x6 | | 0x6 | ||
− | | | + | | |
− | | | + | | |
− | | | + | | |
|- | |- | ||
| 0x7 | | 0x7 | ||
− | | | + | | I8 |
− | | GL_LUMINANCE | + | | GL_LUMINANCE |
| GL_UNSIGNED_BYTE | | GL_UNSIGNED_BYTE | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
− | | | + | | A8 |
− | | GL_ALPHA | + | | GL_ALPHA |
| GL_UNSIGNED_BYTE | | GL_UNSIGNED_BYTE | ||
|- | |- | ||
| 0x9 | | 0x9 | ||
− | | | + | | IA44 |
− | | GL_LUMINANCE_ALPHA | + | | GL_LUMINANCE_ALPHA |
− | | | + | | GL_UNSIGNED_BYTE_4_4_EXT |
|- | |- | ||
| 0xA | | 0xA | ||
− | | | + | | |
− | | | + | | |
− | | | + | | |
|- | |- | ||
| 0xB | | 0xB | ||
− | | | + | | A4 |
− | | GL_ALPHA | + | | GL_ALPHA |
− | | | + | | GL_UNSIGNED_NIBBLE_EXT |
|- | |- | ||
| 0xC | | 0xC | ||
− | | | + | | ETC1 |
− | | | + | | GL_ETC1_RGB8_OES |
| | | | ||
|- | |- | ||
| 0xD | | 0xD | ||
− | | | + | | ETC1A4 |
− | | | + | | |
| | | | ||
|} | |} |
Revision as of 15:44, 11 April 2015
This page describes the GPU commands used for textures.
Texture unit setup: Register 0x80
Register 0x80 is used to enable individual texture units.
Bit | Description |
---|---|
0 | Enable texture unit 0. |
1 | Enable texture unit 1. |
2 | Enable texture unit 2. |
Configuration of texture unit 0
Register ID | Description |
---|---|
0x0081 | Border color (unverified) |
0x0082 | Bits 16-31 are the texture width. Bits 0-15 are the texture height. The maximum texture size in either direction is 1024. |
0x0083 | Texture parameters (filtering, wrapping), see below. |
0x0084 | LOD setup? |
0x0085 | Physical address of texture data (divided by 8). |
0x0086 | Physical address of texture data for cube mapping? |
0x0087 | Physical address of texture data for cube mapping? |
0x0088 | Physical address of texture data for cube mapping? |
0x0089 | Physical address of texture data for cube mapping? |
0x008A | Physical address of texture data for cube mapping? |
0x008B | Shadow related? |
0x008E | Texture format (see below) |
Configuration of texture units 1 and 2
Texture units 1 and 2 use a configuration block similar to the one of texture unit 0. They are based at registers 0x0091 and 0x0099.
Index word | Description |
---|---|
0-4 | Same as for texture unit 0 |
5 | Texture format (see below) |
Configuration of texture unit 3
The configuration block for texture unit 3 seems to be vastly different from the other texture units. Instead, registers 0x00A8 through 0x00B7 are used to configure procedural texturing features.
Texture parameters
Bit | Description | GL parameter name |
---|---|---|
0 | Normally this is value 0. | |
1 | 0 = GL_NEAREST, 1 = GL_LINEAR. | GL_TEXTURE_MAG_FILTER |
2 | 1 = GL_LINEAR, GL_LINEAR_MIPMAP_NEAREST, or GL_LINEAR_MIPMAP_LINEAR. Value zero otherwise. | GL_TEXTURE_MIN_FILTER |
3 | Unused? | ? |
5-4 | 2 = texture color type 0xC, 0 otherwise.(Enable/disable texture data compression?) 0 = unknown, 1 = unknown, 3 = same effect as value 2. | |
7-6 | Unused | |
11-8 | 0 = GL_CLAMP_TO_EDGE, 1=unknown, 2=GL_REPEAT, 3=unknown. | GL_TEXTURE_WRAP_S |
15-12 | Same values as GL_TEXTURE_WRAP_S. | GL_TEXTURE_WRAP_T |
24 | 1 = GL_NEAREST_MIPMAP_LINEAR, or GL_LINEAR_MIPMAP_LINEAR. Value zero otherwise. | GL_TEXTURE_MIN_FILTER |
27-25 | Unused? | |
30-28 | When some flag=1: value1=GL_TEXTURE_2D, value0 when the input parameter is not GL_TEXTURE_2D. When some flag=0: 0=GL_TEXTURE_2D, 1-4=unknown. | ? |
31 | Unused? | ? |
Texture color types
Value | Description | GL Format | GL Data Type |
---|---|---|---|
0x0 | RGBA8888 | GL_RGBA | GL_UNSIGNED_BYTE |
0x1 | RGB888 | GL_RGB | GL_UNSIGNED_BYTE |
0x2 | RGBA5551 | GL_RGBA | GL_UNSIGNED_SHORT_5_5_5_1 |
0x3 | RGB565 | GL_RGB | GL_UNSIGNED_SHORT_5_6_5 |
0x4 | RGBA4444 | GL_RGBA | GL_UNSIGNED_SHORT_4_4_4_4 |
0x5 | IA8 | GL_LUMINANCE_ALPHA | GL_UNSIGNED_BYTE |
0x6 | |||
0x7 | I8 | GL_LUMINANCE | GL_UNSIGNED_BYTE |
0x8 | A8 | GL_ALPHA | GL_UNSIGNED_BYTE |
0x9 | IA44 | GL_LUMINANCE_ALPHA | GL_UNSIGNED_BYTE_4_4_EXT |
0xA | |||
0xB | A4 | GL_ALPHA | GL_UNSIGNED_NIBBLE_EXT |
0xC | ETC1 | GL_ETC1_RGB8_OES | |
0xD | ETC1A4 |