Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1901 serge 1
/*
2
 * Mesa 3-D graphics library
3
 * Version:  7.7
4
 *
5
 * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
6
 * Copyright (c) 2008-2009  VMware, Inc.
7
 *
8
 * Permission is hereby granted, free of charge, to any person obtaining a
9
 * copy of this software and associated documentation files (the "Software"),
10
 * to deal in the Software without restriction, including without limitation
11
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12
 * and/or sell copies of the Software, and to permit persons to whom the
13
 * Software is furnished to do so, subject to the following conditions:
14
 *
15
 * The above copyright notice and this permission notice shall be included
16
 * in all copies or substantial portions of the Software.
17
 *
18
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
21
 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
22
 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
 */
25
 
26
/*
27
 * Authors:
28
 *   Brian Paul
29
 */
30
 
31
 
32
#ifndef FORMATS_H
33
#define FORMATS_H
34
 
35
 
36
#include 
37
 
38
 
39
 
40
/**
41
 * Mesa texture/renderbuffer image formats.
42
 */
43
typedef enum
44
{
45
   MESA_FORMAT_NONE = 0,
46
 
47
   /**
48
    * \name Basic hardware formats
49
    */
50
   /*@{*/
51
				/* msb <------ TEXEL BITS -----------> lsb */
52
				/* ---- ---- ---- ---- ---- ---- ---- ---- */
53
   MESA_FORMAT_RGBA8888,	/* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */
54
   MESA_FORMAT_RGBA8888_REV,	/* AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */
55
   MESA_FORMAT_ARGB8888,	/* AAAA AAAA RRRR RRRR GGGG GGGG BBBB BBBB */
56
   MESA_FORMAT_ARGB8888_REV,	/* BBBB BBBB GGGG GGGG RRRR RRRR AAAA AAAA */
57
   MESA_FORMAT_XRGB8888,	/* xxxx xxxx RRRR RRRR GGGG GGGG BBBB BBBB */
58
   MESA_FORMAT_XRGB8888_REV,	/* BBBB BBBB GGGG GGGG RRRR RRRR xxxx xxxx */
59
   MESA_FORMAT_RGB888,		/*           RRRR RRRR GGGG GGGG BBBB BBBB */
60
   MESA_FORMAT_BGR888,		/*           BBBB BBBB GGGG GGGG RRRR RRRR */
61
   MESA_FORMAT_RGB565,		/*                     RRRR RGGG GGGB BBBB */
62
   MESA_FORMAT_RGB565_REV,	/*                     GGGB BBBB RRRR RGGG */
63
   MESA_FORMAT_ARGB4444,	/*                     AAAA RRRR GGGG BBBB */
64
   MESA_FORMAT_ARGB4444_REV,	/*                     GGGG BBBB AAAA RRRR */
65
   MESA_FORMAT_RGBA5551,        /*                     RRRR RGGG GGBB BBBA */
66
   MESA_FORMAT_ARGB1555,	/*                     ARRR RRGG GGGB BBBB */
67
   MESA_FORMAT_ARGB1555_REV,	/*                     GGGB BBBB ARRR RRGG */
68
   MESA_FORMAT_AL88,		/*                     AAAA AAAA LLLL LLLL */
69
   MESA_FORMAT_AL88_REV,	/*                     LLLL LLLL AAAA AAAA */
70
   MESA_FORMAT_AL1616,          /* AAAA AAAA AAAA AAAA LLLL LLLL LLLL LLLL */
71
   MESA_FORMAT_AL1616_REV,      /* LLLL LLLL LLLL LLLL AAAA AAAA AAAA AAAA */
72
   MESA_FORMAT_RGB332,		/*                               RRRG GGBB */
73
   MESA_FORMAT_A8,		/*                               AAAA AAAA */
74
   MESA_FORMAT_L8,		/*                               LLLL LLLL */
75
   MESA_FORMAT_I8,		/*                               IIII IIII */
76
   MESA_FORMAT_CI8,		/*                               CCCC CCCC */
77
   MESA_FORMAT_YCBCR,		/*                     YYYY YYYY UorV UorV */
78
   MESA_FORMAT_YCBCR_REV,	/*                     UorV UorV YYYY YYYY */
79
   MESA_FORMAT_R8,		/*                               RRRR RRRR */
80
   MESA_FORMAT_RG88,		/*                     RRRR RRRR GGGG GGGG */
81
   MESA_FORMAT_RG88_REV,	/*                     GGGG GGGG RRRR RRRR */
82
   MESA_FORMAT_R16,		/*                     RRRR RRRR RRRR RRRR */
83
   MESA_FORMAT_RG1616,		/* RRRR RRRR RRRR RRRR GGGG GGGG GGGG GGGG */
84
   MESA_FORMAT_RG1616_REV,	/* GGGG GGGG GGGG GGGG RRRR RRRR RRRR RRRR */
85
   MESA_FORMAT_Z24_S8,          /* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ SSSS SSSS */
86
   MESA_FORMAT_S8_Z24,          /* SSSS SSSS ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ */
87
   MESA_FORMAT_Z16,             /*                     ZZZZ ZZZZ ZZZZ ZZZZ */
88
   MESA_FORMAT_X8_Z24,          /* xxxx xxxx ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ */
89
   MESA_FORMAT_Z24_X8,          /* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ xxxx xxxx */
90
   MESA_FORMAT_Z32,             /* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ */
91
   MESA_FORMAT_S8,              /*                               SSSS SSSS */
92
   /*@}*/
93
 
94
   /**
95
    * \name 8-bit/channel sRGB formats
96
    */
97
   /*@{*/
98
   MESA_FORMAT_SRGB8,
99
   MESA_FORMAT_SRGBA8,
100
   MESA_FORMAT_SARGB8,
101
   MESA_FORMAT_SL8,
102
   MESA_FORMAT_SLA8,
103
   MESA_FORMAT_SRGB_DXT1,
104
   MESA_FORMAT_SRGBA_DXT1,
105
   MESA_FORMAT_SRGBA_DXT3,
106
   MESA_FORMAT_SRGBA_DXT5,
107
   /*@}*/
108
 
109
   /**
110
    * \name Compressed texture formats.
111
    */
112
   /*@{*/
113
   MESA_FORMAT_RGB_FXT1,
114
   MESA_FORMAT_RGBA_FXT1,
115
   MESA_FORMAT_RGB_DXT1,
116
   MESA_FORMAT_RGBA_DXT1,
117
   MESA_FORMAT_RGBA_DXT3,
118
   MESA_FORMAT_RGBA_DXT5,
119
   /*@}*/
120
 
121
   /**
122
    * \name Floating point texture formats.
123
    */
124
   /*@{*/
125
   MESA_FORMAT_RGBA_FLOAT32,
126
   MESA_FORMAT_RGBA_FLOAT16,
127
   MESA_FORMAT_RGB_FLOAT32,
128
   MESA_FORMAT_RGB_FLOAT16,
129
   MESA_FORMAT_ALPHA_FLOAT32,
130
   MESA_FORMAT_ALPHA_FLOAT16,
131
   MESA_FORMAT_LUMINANCE_FLOAT32,
132
   MESA_FORMAT_LUMINANCE_FLOAT16,
133
   MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32,
134
   MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16,
135
   MESA_FORMAT_INTENSITY_FLOAT32,
136
   MESA_FORMAT_INTENSITY_FLOAT16,
137
   /*@}*/
138
 
139
   /**
140
    * \name Non-normalized signed integer formats.
141
    * XXX Note: these are just stand-ins for some better hardware
142
    * formats TBD such as BGRA or ARGB.
143
    */
144
   MESA_FORMAT_RGBA_INT8,
145
   MESA_FORMAT_RGBA_INT16,
146
   MESA_FORMAT_RGBA_INT32,
147
 
148
   /**
149
    * \name Non-normalized unsigned integer formats.
150
    */
151
   MESA_FORMAT_RGBA_UINT8,
152
   MESA_FORMAT_RGBA_UINT16,
153
   MESA_FORMAT_RGBA_UINT32,
154
 
155
                                  /* msb <------ TEXEL BITS -----------> lsb */
156
                                  /* ---- ---- ---- ---- ---- ---- ---- ---- */
157
   /**
158
    * \name Signed fixed point texture formats.
159
    */
160
   /*@{*/
161
   MESA_FORMAT_DUDV8,             /*                     DUDU DUDU DVDV DVDV */
162
   MESA_FORMAT_SIGNED_R8,         /*                               RRRR RRRR */
163
   MESA_FORMAT_SIGNED_RG88,       /*                     RRRR RRRR GGGG GGGG */
164
   MESA_FORMAT_SIGNED_RGBX8888,   /* RRRR RRRR GGGG GGGG BBBB BBBB xxxx xxxx */
165
   MESA_FORMAT_SIGNED_RGBA8888,   /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */
166
   MESA_FORMAT_SIGNED_RGBA8888_REV,/*AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */
167
   MESA_FORMAT_SIGNED_R_16,       /* ushort[0]=R */
168
   MESA_FORMAT_SIGNED_RG_16,      /* ushort[0]=R, ushort[1]=G */
169
   MESA_FORMAT_SIGNED_RGB_16,     /* ushort[0]=R, ushort[1]=G, ushort[2]=B */
170
   MESA_FORMAT_SIGNED_RGBA_16,    /* ... */
171
   MESA_FORMAT_RGBA_16,           /* ... */
172
   /*@}*/
173
 
174
   MESA_FORMAT_COUNT
175
} gl_format;
176
 
177
 
178
extern const char *
179
_mesa_get_format_name(gl_format format);
180
 
181
extern GLuint
182
_mesa_get_format_bytes(gl_format format);
183
 
184
extern GLint
185
_mesa_get_format_bits(gl_format format, GLenum pname);
186
 
187
extern GLenum
188
_mesa_get_format_datatype(gl_format format);
189
 
190
extern GLenum
191
_mesa_get_format_base_format(gl_format format);
192
 
193
extern void
194
_mesa_get_format_block_size(gl_format format, GLuint *bw, GLuint *bh);
195
 
196
extern GLboolean
197
_mesa_is_format_compressed(gl_format format);
198
 
199
extern GLboolean
200
_mesa_is_format_packed_depth_stencil(gl_format format);
201
 
202
extern GLboolean
203
_mesa_is_format_integer_color(gl_format format);
204
 
205
extern GLenum
206
_mesa_get_format_color_encoding(gl_format format);
207
 
208
extern GLuint
209
_mesa_format_image_size(gl_format format, GLsizei width,
210
                        GLsizei height, GLsizei depth);
211
 
212
extern uint64_t
213
_mesa_format_image_size64(gl_format format, GLsizei width,
214
                          GLsizei height, GLsizei depth);
215
 
216
extern GLint
217
_mesa_format_row_stride(gl_format format, GLsizei width);
218
 
219
extern void
220
_mesa_format_to_type_and_comps(gl_format format,
221
                               GLenum *datatype, GLuint *comps);
222
 
223
extern void
224
_mesa_test_formats(void);
225
 
226
#endif /* FORMATS_H */